xserver: Branch 'xwayland' - 356 commits

Kristian Høgsberg krh at kemper.freedesktop.org
Thu Jan 2 15:14:51 PST 2014


Rebased ref, commits from common ancestor:
commit 534f97ea5d55bb051a5bbd612d3125a48e55c0fb
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Thu Jan 2 15:08:19 2014 -0800

    xwayland: Track DamageUnregister API change

diff --git a/hw/xfree86/xwayland/xwayland-window.c b/hw/xfree86/xwayland/xwayland-window.c
index ee95371..a2a8206 100644
--- a/hw/xfree86/xwayland/xwayland-window.c
+++ b/hw/xfree86/xwayland/xwayland-window.c
@@ -190,7 +190,7 @@ xwl_unrealize_window(WindowPtr window)
     xorg_list_del(&xwl_window->link);
     if (RegionNotEmpty(DamageRegion(xwl_window->damage)))
 	xorg_list_del(&xwl_window->link_damage);
-    DamageUnregister(&window->drawable, xwl_window->damage);
+    DamageUnregister(xwl_window->damage);
     DamageDestroy(xwl_window->damage);
     free(xwl_window);
     dixSetPrivate(&window->devPrivates, &xwl_window_private_key, NULL);
commit 38432f72bfc94a9e838c9e670f20a70b9c649340
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Thu Jan 2 14:18:42 2014 -0800

    xwayland: Convert wayland integer mHz to float Hz expected by xf86CVTMode()
    
    We now calculate correct modelines and xrandr thus reports accurate
    geometry.

diff --git a/hw/xfree86/xwayland/xwayland-output.c b/hw/xfree86/xwayland/xwayland-output.c
index 7004b9b..a45e213 100644
--- a/hw/xfree86/xwayland/xwayland-output.c
+++ b/hw/xfree86/xwayland/xwayland-output.c
@@ -355,7 +355,7 @@ display_handle_mode(void *data, struct wl_output *wl_output, uint32_t flags,
     }
 
     xwl_output->xf86crtc->enabled = TRUE;
-    mode = xf86CVTMode(width, height, refresh, TRUE, FALSE);
+    mode = xf86CVTMode(width, height, (float) refresh / 1000, TRUE, FALSE);
     xf86CrtcSetModeTransform(xwl_output->xf86crtc, mode, xwl_output->rotation,
                              NULL, xwl_output->x, xwl_output->y);
 }
commit d1a9a596c479dd3e39b7c6264866dd4feb46d369
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Wed Dec 4 10:27:07 2013 -0800

    xwayland: Fix re-wrapping of RealizeWindow

diff --git a/hw/xfree86/xwayland/xwayland-window.c b/hw/xfree86/xwayland/xwayland-window.c
index c03855c..ee95371 100644
--- a/hw/xfree86/xwayland/xwayland-window.c
+++ b/hw/xfree86/xwayland/xwayland-window.c
@@ -110,7 +110,7 @@ xwl_realize_window(WindowPtr window)
 
     screen->RealizeWindow = xwl_screen->RealizeWindow;
     ret = (*screen->RealizeWindow)(window);
-    xwl_screen->RealizeWindow = xwl_screen->RealizeWindow;
+    xwl_screen->RealizeWindow = screen->RealizeWindow;
     screen->RealizeWindow = xwl_realize_window;
 
     if (xwl_screen->flags & XWL_FLAGS_ROOTLESS) {
commit 1762a0d853a847f07964de13ab5595f715a36e69
Author: Rui Matos <tiagomatos at gmail.com>
Date:   Mon Oct 21 14:41:54 2013 +0200

    xwayland: Handle keymap changes

diff --git a/hw/xfree86/xwayland/xwayland-input.c b/hw/xfree86/xwayland/xwayland-input.c
index d031b34..ebf1af1 100644
--- a/hw/xfree86/xwayland/xwayland-input.c
+++ b/hw/xfree86/xwayland/xwayland-input.c
@@ -143,7 +143,10 @@ xwl_keyboard_proc(DeviceIntPtr device, int what)
     switch (what) {
     case DEVICE_INIT:
 	device->public.on = FALSE;
-	len = strnlen(xwl_seat->keymap, xwl_seat->keymap_size);
+        if (xwl_seat->keymap)
+            len = strnlen(xwl_seat->keymap, xwl_seat->keymap_size);
+        else
+            len = 0;
         if (!InitKeyboardDeviceStructFromString(device, xwl_seat->keymap,
 						len,
 						NULL, xwl_keyboard_control))
@@ -453,12 +456,42 @@ keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard,
 		       uint32_t format, int fd, uint32_t size)
 {
     struct xwl_seat *xwl_seat = data;
+    DeviceIntPtr master;
+    XkbDescPtr xkb;
+    XkbChangesRec changes = { 0 };
+
+    if (xwl_seat->keymap)
+        munmap(xwl_seat->keymap, xwl_seat->keymap_size);
 
     xwl_seat->keymap_size = size;
     xwl_seat->keymap = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
-    if (xwl_seat->keymap == MAP_FAILED)
-	;	/* wah wah */
+    if (xwl_seat->keymap == MAP_FAILED) {
+        xwl_seat->keymap_size = 0;
+        xwl_seat->keymap = NULL;
+        goto out;
+    }
+
+    if (!xwl_seat->keyboard)
+        goto out;
+
+    xkb = XkbCompileKeymapFromString(xwl_seat->keyboard, xwl_seat->keymap,
+                                     strnlen(xwl_seat->keymap, xwl_seat->keymap_size));
+    if (!xkb)
+        goto out;
+
+    XkbUpdateDescActions(xkb, xkb->min_key_code, XkbNumKeys(xkb), &changes);
+    /* Keep the current controls */
+    XkbCopyControls(xkb, xwl_seat->keyboard->key->xkbInfo->desc);
+
+    XkbDeviceApplyKeymap(xwl_seat->keyboard, xkb);
+
+    master = GetMaster(xwl_seat->keyboard, MASTER_KEYBOARD);
+    if (master && master->lastSlave == xwl_seat->keyboard)
+        XkbDeviceApplyKeymap(master, xkb);
+
+    XkbFreeKeyboard(xkb, XkbAllComponentsMask, TRUE);
 
+ out:
     close(fd);
 }
 
diff --git a/include/input.h b/include/input.h
index b1cc3ff..6a814c2 100644
--- a/include/input.h
+++ b/include/input.h
@@ -508,7 +508,7 @@ extern int AttachDevice(ClientPtr client,
                         DeviceIntPtr slave, DeviceIntPtr master);
 
 extern _X_EXPORT DeviceIntPtr GetPairedDevice(DeviceIntPtr kbd);
-extern DeviceIntPtr GetMaster(DeviceIntPtr dev, int type);
+extern _X_EXPORT DeviceIntPtr GetMaster(DeviceIntPtr dev, int type);
 
 extern _X_EXPORT int AllocDevicePair(ClientPtr client,
                                      const char *name,
commit 0b83bf73130ead0144c063fdaf8b57df36c63a8f
Author: Rui Matos <tiagomatos at gmail.com>
Date:   Mon Oct 21 14:41:53 2013 +0200

    xkb: Factor out a function to copy a keymap's controls unto another

diff --git a/include/xkbsrv.h b/include/xkbsrv.h
index 83ee1d0..6a2e96e 100644
--- a/include/xkbsrv.h
+++ b/include/xkbsrv.h
@@ -829,6 +829,9 @@ extern void XkbFakeDeviceButton(DeviceIntPtr /* dev */ ,
                                 int /* press */ ,
                                 int /* button */ );
 
+extern _X_EXPORT void XkbCopyControls(XkbDescPtr /* dst */ ,
+                                      XkbDescPtr /* src */ );
+
 #include "xkbfile.h"
 #include "xkbrules.h"
 
diff --git a/xkb/xkb.c b/xkb/xkb.c
index 7a631b8..6a68e81 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -5950,25 +5950,13 @@ ProcXkbGetKbdByName(ClientPtr client)
     if (rep.loaded) {
         XkbDescPtr old_xkb;
         xkbNewKeyboardNotify nkn;
-        int i, nG, nTG;
 
         old_xkb = xkb;
         xkb = new;
         dev->key->xkbInfo->desc = xkb;
         new = old_xkb;          /* so it'll get freed automatically */
 
-        *xkb->ctrls = *old_xkb->ctrls;
-        for (nG = nTG = 0, i = xkb->min_key_code; i <= xkb->max_key_code; i++) {
-            nG = XkbKeyNumGroups(xkb, i);
-            if (nG >= XkbNumKbdGroups) {
-                nTG = XkbNumKbdGroups;
-                break;
-            }
-            if (nG > nTG) {
-                nTG = nG;
-            }
-        }
-        xkb->ctrls->num_groups = nTG;
+        XkbCopyControls(xkb, old_xkb);
 
         nkn.deviceID = nkn.oldDeviceID = dev->id;
         nkn.minKeyCode = new->min_key_code;
diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index 1f8a839..6cf6e79 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -2090,3 +2090,26 @@ XkbMergeLockedPtrBtns(DeviceIntPtr master)
         xkbi->lockedPtrButtons |= d->key->xkbInfo->lockedPtrButtons;
     }
 }
+
+void
+XkbCopyControls(XkbDescPtr dst, XkbDescPtr src)
+{
+    int i, nG, nTG;
+
+    if (!dst || !src)
+        return;
+
+    *dst->ctrls = *src->ctrls;
+
+    for (nG = nTG = 0, i = dst->min_key_code; i <= dst->max_key_code; i++) {
+        nG = XkbKeyNumGroups(dst, i);
+        if (nG >= XkbNumKbdGroups) {
+            nTG = XkbNumKbdGroups;
+            break;
+        }
+        if (nG > nTG) {
+            nTG = nG;
+        }
+    }
+    dst->ctrls->num_groups = nTG;
+}
commit 5964b6f9a71886cb231c1eaf7f860c25e7564d62
Author: Rui Matos <tiagomatos at gmail.com>
Date:   Tue Oct 22 16:50:29 2013 +0200

    xkb: Repurpose XkbCopyDeviceKeymap to apply a given keymap to a device
    
    This will also make it useful for cases when we have a new keymap to
    apply to a device but don't have a source device.

diff --git a/Xi/exevents.c b/Xi/exevents.c
index 44f8cb0..ed6dc36 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -230,7 +230,7 @@ CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master)
 
     mk->sourceid = device->id;
 
-    if (!XkbCopyDeviceKeymap(master, device))
+    if (!XkbDeviceApplyKeymap(master, device->key->xkbInfo->desc))
         FatalError("Couldn't pivot keymap from device to core!\n");
 }
 
diff --git a/include/xkbsrv.h b/include/xkbsrv.h
index bef98ef..83ee1d0 100644
--- a/include/xkbsrv.h
+++ b/include/xkbsrv.h
@@ -812,8 +812,8 @@ extern _X_EXPORT void XkbSendNewKeyboardNotify(DeviceIntPtr /* kbd */ ,
 extern Bool XkbCopyKeymap(XkbDescPtr /* dst */ ,
                           XkbDescPtr /* src */ );
 
-extern _X_EXPORT Bool XkbCopyDeviceKeymap(DeviceIntPtr /* dst */ ,
-                                          DeviceIntPtr /* src */ );
+extern _X_EXPORT Bool XkbDeviceApplyKeymap(DeviceIntPtr /* dst */ ,
+                                           XkbDescPtr /* src */ );
 
 extern void XkbFilterEvents(ClientPtr /* pClient */ ,
                             int /* nEvents */ ,
diff --git a/xkb/xkb.c b/xkb/xkb.c
index c78aceb..7a631b8 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -5991,7 +5991,7 @@ ProcXkbGetKbdByName(ClientPtr client)
                 continue;
 
             if (tmpd != dev)
-                XkbCopyDeviceKeymap(tmpd, dev);
+                XkbDeviceApplyKeymap(tmpd, xkb);
 
             if (tmpd->kbdfeed && tmpd->kbdfeed->xkb_sli) {
                 old_sli = tmpd->kbdfeed->xkb_sli;
diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index 6c6af60..1f8a839 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -1999,28 +1999,28 @@ XkbCopyKeymap(XkbDescPtr dst, XkbDescPtr src)
 }
 
 Bool
-XkbCopyDeviceKeymap(DeviceIntPtr dst, DeviceIntPtr src)
+XkbDeviceApplyKeymap(DeviceIntPtr dst, XkbDescPtr desc)
 {
     xkbNewKeyboardNotify nkn;
     Bool ret;
 
-    if (!dst->key || !src->key)
+    if (!dst->key || !desc)
         return FALSE;
 
     memset(&nkn, 0, sizeof(xkbNewKeyboardNotify));
     nkn.oldMinKeyCode = dst->key->xkbInfo->desc->min_key_code;
     nkn.oldMaxKeyCode = dst->key->xkbInfo->desc->max_key_code;
     nkn.deviceID = dst->id;
-    nkn.oldDeviceID = dst->id;  /* maybe src->id? */
-    nkn.minKeyCode = src->key->xkbInfo->desc->min_key_code;
-    nkn.maxKeyCode = src->key->xkbInfo->desc->max_key_code;
+    nkn.oldDeviceID = dst->id;
+    nkn.minKeyCode = desc->min_key_code;
+    nkn.maxKeyCode = desc->max_key_code;
     nkn.requestMajor = XkbReqCode;
     nkn.requestMinor = X_kbSetMap;      /* Near enough's good enough. */
     nkn.changed = XkbNKN_KeycodesMask;
-    if (src->key->xkbInfo->desc->geom)
+    if (desc->geom)
         nkn.changed |= XkbNKN_GeometryMask;
 
-    ret = XkbCopyKeymap(dst->key->xkbInfo->desc, src->key->xkbInfo->desc);
+    ret = XkbCopyKeymap(dst->key->xkbInfo->desc, desc);
     if (ret)
         XkbSendNewKeyboardNotify(dst, &nkn);
 
commit e7d38ea2c40c9a721e494de6662dc2fb93726487
Author: Trevor McCort <tjmccort at gmail.com>
Date:   Tue Oct 15 19:41:12 2013 -0500

    xwayland: Fix hidden cursor
    
    If a cursor is set when bits->emptyMask is true, the xserver
    sets a NULL cursor instead.
    
    Signed-off-by: Trevor McCort <tjmccort at gmail.com>

diff --git a/hw/xfree86/xwayland/xwayland-cursor.c b/hw/xfree86/xwayland/xwayland-cursor.c
index 2cdd248..2b3cb5e 100644
--- a/hw/xfree86/xwayland/xwayland-cursor.c
+++ b/hw/xfree86/xwayland/xwayland-cursor.c
@@ -153,9 +153,16 @@ xwl_seat_set_cursor(struct xwl_seat *xwl_seat)
 {
     struct wl_buffer *buffer;
 
-    if (!xwl_seat->x_cursor || !xwl_seat->wl_pointer)
+    if (!xwl_seat->wl_pointer)
         return;
 
+    if (!xwl_seat->x_cursor) {
+        wl_pointer_set_cursor(xwl_seat->wl_pointer,
+                              xwl_seat->pointer_enter_serial,
+                              NULL, 0, 0);
+        return;
+    }
+
     buffer = dixGetPrivate(&xwl_seat->x_cursor->devPrivates,
                            &xwl_seat->xwl_screen->cursor_private_key);
 
commit 807e0837e02190e2043e11d2a5f0a260eea267fe
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Fri Oct 11 16:40:39 2013 -0700

    Revert "Export CompositeRedirectSubwindows and CompositeUnRedirectSubwindows"
    
    This reverts commit 15a7e62a9848f2089180c49b02887565d29bb896.
    
    Now that we don't redirect windows on behalf of the wm, we don't need this.

diff --git a/composite/compalloc.c b/composite/compalloc.c
index 98b27b1..b7d731e 100644
--- a/composite/compalloc.c
+++ b/composite/compalloc.c
@@ -46,7 +46,6 @@
 #endif
 
 #include "compint.h"
-#include "compositeext.h"
 
 static void
 compScreenUpdate(ScreenPtr pScreen)
@@ -412,11 +411,6 @@ compRedirectSubwindows(ClientPtr pClient, WindowPtr pWin, int update)
     return Success;
 }
 
-int CompositeRedirectSubwindows (WindowPtr pWin, int update)
-{
-    return compRedirectSubwindows (serverClient, pWin, update);
-}
-
 /*
  * Free one of the per-client per-subwindows resources,
  * which frees one redirect per subwindow
@@ -488,11 +482,6 @@ compUnredirectSubwindows(ClientPtr pClient, WindowPtr pWin, int update)
     return BadValue;
 }
 
-int CompositeUnRedirectSubwindows (WindowPtr pWin, int update)
-{
-    return compUnredirectSubwindows (serverClient, pWin, update);
-}
-
 /*
  * Add redirection information for one subwindow (during reparent)
  */
diff --git a/composite/compositeext.h b/composite/compositeext.h
index a072966..0b148f0 100644
--- a/composite/compositeext.h
+++ b/composite/compositeext.h
@@ -34,10 +34,6 @@
 extern _X_EXPORT Bool CompositeRegisterAlternateVisuals(ScreenPtr pScreen,
                                                         VisualID * vids,
                                                         int nVisuals);
-extern _X_EXPORT int CompositeRedirectSubwindows(WindowPtr pWin,
-						 int update);
-extern _X_EXPORT int CompositeUnRedirectSubwindows (WindowPtr pWin,
-						    int update);
 
 extern _X_EXPORT RESTYPE CompositeClientWindowType;
 
commit f7786c3062152523f88e60d81caec7b3bd36f14f
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Fri Oct 11 15:41:59 2013 -0700

    xwayland: Don't redirect windows, leave it to the wm

diff --git a/hw/xfree86/xwayland/xwayland-window.c b/hw/xfree86/xwayland/xwayland-window.c
index 5045e65..c03855c 100644
--- a/hw/xfree86/xwayland/xwayland-window.c
+++ b/hw/xfree86/xwayland/xwayland-window.c
@@ -31,11 +31,9 @@
 #include <errno.h>
 #include <sys/mman.h>
 #include <wayland-client.h>
-#include <X11/extensions/compositeproto.h>
 
 #include <xf86Crtc.h>
 #include <selection.h>
-#include <compositeext.h>
 #include <exevents.h>
 
 #include "xwayland.h"
@@ -86,49 +84,6 @@ xwl_window_attach(struct xwl_window *xwl_window, PixmapPtr pixmap)
     pixmap->refcnt++;
 }
 
-static Bool
-xwl_create_window(WindowPtr window)
-{
-    ScreenPtr screen = window->drawable.pScreen;
-    struct xwl_screen *xwl_screen;
-    Bool ret;
-
-    xwl_screen = xwl_screen_get(screen);
-
-    screen->CreateWindow = xwl_screen->CreateWindow;
-    ret = (*screen->CreateWindow)(window);
-    xwl_screen->CreateWindow = screen->CreateWindow;
-    screen->CreateWindow = xwl_create_window;
-
-    if (!(xwl_screen->flags & XWL_FLAGS_ROOTLESS) ||
-	window->parent != NULL)
-	return ret;
-
-    CompositeRedirectSubwindows(window, CompositeRedirectManual);
-
-    return ret;
-}
-
-static int
-xwl_destroy_window (WindowPtr window)
-{
-    ScreenPtr screen = window->drawable.pScreen;
-    struct xwl_screen *xwl_screen;
-    Bool ret;
-
-    if (window->parent == NULL)
-	CompositeUnRedirectSubwindows (window, CompositeRedirectManual);
-
-    xwl_screen = xwl_screen_get(screen);
-
-    screen->DestroyWindow = xwl_screen->DestroyWindow;
-    ret = (*screen->DestroyWindow)(window);
-    xwl_screen->DestroyWindow = screen->DestroyWindow;
-    screen->DestroyWindow = xwl_destroy_window;
-
-    return ret;
-}
-
 static void
 damage_report(DamagePtr pDamage, RegionPtr pRegion, void *data)
 {
@@ -290,12 +245,6 @@ xwl_screen_init_window(struct xwl_screen *xwl_screen, ScreenPtr screen)
     if (!dixRegisterPrivateKey(&xwl_window_private_key, PRIVATE_WINDOW, 0))
 	return BadAlloc;
 
-    xwl_screen->CreateWindow = screen->CreateWindow;
-    screen->CreateWindow = xwl_create_window;
-
-    xwl_screen->DestroyWindow = screen->DestroyWindow;
-    screen->DestroyWindow = xwl_destroy_window;
-
     xwl_screen->RealizeWindow = screen->RealizeWindow;
     screen->RealizeWindow = xwl_realize_window;
 
commit 431e3e4e89ca36c85a4d2fa635964275ce88d8d3
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Fri Oct 11 16:29:02 2013 -0700

    xwayland: Add wlglamor the right way
    
    Defeated by #ifdefs.

diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
index 523ddb7..4c5d1d5 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -274,12 +274,12 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
 
 #if !defined(sun)
     /* Fallback to platform default frame buffer driver */
-    if (i < (nmatches - 1)) {
+    if (i < (nmatches - 2)) {
 #ifdef XORG_WAYLAND
-        if (xorgWayland)
+        if (xorgWayland) {
             matches[i++] = xnfstrdup("wlglamor");
             matches[i++] = xnfstrdup("wayland");
-        else
+        } else
 #endif
 #if !defined(__linux__) && defined(__sparc__)
             matches[i++] = xnfstrdup("wsfb");
commit 1a4ba421ef8ee7a4bb15b25dba4961f2708d8a5b
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Fri Oct 11 16:14:54 2013 -0700

    xwayland: Also look for wlglamor

diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
index 51a7960..523ddb7 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -277,6 +277,7 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
     if (i < (nmatches - 1)) {
 #ifdef XORG_WAYLAND
         if (xorgWayland)
+            matches[i++] = xnfstrdup("wlglamor");
             matches[i++] = xnfstrdup("wayland");
         else
 #endif
commit 69f99082dc58eb13be090298e420d043a05e65a5
Author: Daniel Stone <daniels at collabora.com>
Date:   Thu Sep 12 16:58:00 2013 -0400

    XWayland: Don't commit empty surfaces
    
    Instead of attaching, damaging and then committing a new buffer as soon
    as we allocate a pixmap, just attach and damage the entire buffer.  When
    the buffer is changed, we'll commit the changes.
    
    This avoids an ugly black (on SHM) flash when a window is mapped or
    resized.
    
    Signed-off-by: Daniel Stone <daniels at collabora.com>

diff --git a/hw/xfree86/xwayland/xwayland-window.c b/hw/xfree86/xwayland/xwayland-window.c
index 20db80c..5045e65 100644
--- a/hw/xfree86/xwayland/xwayland-window.c
+++ b/hw/xfree86/xwayland/xwayland-window.c
@@ -80,7 +80,6 @@ xwl_window_attach(struct xwl_window *xwl_window, PixmapPtr pixmap)
     wl_surface_damage(xwl_window->surface, 0, 0,
 		      pixmap->drawable.width,
 		      pixmap->drawable.height);
-    wl_surface_commit(xwl_window->surface);
 
     callback = wl_display_sync(xwl_screen->display);
     wl_callback_add_listener(callback, &free_pixmap_listener, pixmap);
commit 18c9f946e4ab1e163890d9b2d8ba7770c4c98c7c
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Mon Sep 16 12:05:19 2013 -0700

    xwayland: Use a per-screen private key for cursor privates
    
    The cursor is a per-display object, so we need to set private data on it
    using a per-screen private key to avoid stepping on privates from other
    screens.

diff --git a/hw/xfree86/xwayland/xwayland-cursor.c b/hw/xfree86/xwayland/xwayland-cursor.c
index 1cd6457..2cdd248 100644
--- a/hw/xfree86/xwayland/xwayland-cursor.c
+++ b/hw/xfree86/xwayland/xwayland-cursor.c
@@ -40,8 +40,6 @@
 #include "xwayland-private.h"
 #include "xserver-client-protocol.h"
 
-static DevPrivateKeyRec xwl_cursor_private_key;
-
 static void
 expand_source_and_mask(CursorPtr cursor, void *data)
 {
@@ -129,7 +127,8 @@ xwl_realize_cursor(DeviceIntPtr device, ScreenPtr screen, CursorPtr cursor)
 				  WL_SHM_FORMAT_ARGB8888);
     wl_shm_pool_destroy(pool);
 
-    dixSetPrivate(&cursor->devPrivates, &xwl_cursor_private_key, buffer);
+    dixSetPrivate(&cursor->devPrivates,
+                  &xwl_screen->cursor_private_key, buffer);
 
     return TRUE;
 }
@@ -139,8 +138,11 @@ xwl_unrealize_cursor(DeviceIntPtr device,
 			ScreenPtr screen, CursorPtr cursor)
 {
     struct wl_buffer *buffer;
+    struct xwl_screen *xwl_screen;
 
-    buffer = dixGetPrivate(&cursor->devPrivates, &xwl_cursor_private_key);
+    xwl_screen = xwl_screen_get(screen);
+    buffer = dixGetPrivate(&cursor->devPrivates,
+                           &xwl_screen->cursor_private_key);
     wl_buffer_destroy(buffer);
 
     return TRUE;
@@ -155,7 +157,7 @@ xwl_seat_set_cursor(struct xwl_seat *xwl_seat)
         return;
 
     buffer = dixGetPrivate(&xwl_seat->x_cursor->devPrivates,
-                           &xwl_cursor_private_key);
+                           &xwl_seat->xwl_screen->cursor_private_key);
 
     wl_pointer_set_cursor(xwl_seat->wl_pointer,
 			  xwl_seat->pointer_enter_serial,
@@ -229,7 +231,8 @@ xwl_screen_init_cursor(struct xwl_screen *xwl_screen, ScreenPtr screen)
 {
     miPointerScreenPtr pointer_priv;
 
-    if (!dixRegisterPrivateKey(&xwl_cursor_private_key, PRIVATE_CURSOR, 0))
+    if (!dixRegisterPrivateKey(&xwl_screen->cursor_private_key,
+                               PRIVATE_CURSOR, 0))
 	return BadAlloc;
 
     pointer_priv = dixLookupPrivate(&screen->devPrivates, miPointerScreenKey);
diff --git a/hw/xfree86/xwayland/xwayland-private.h b/hw/xfree86/xwayland/xwayland-private.h
index b0b2201..aa9fc03 100644
--- a/hw/xfree86/xwayland/xwayland-private.h
+++ b/hw/xfree86/xwayland/xwayland-private.h
@@ -65,6 +65,8 @@ struct xwl_screen {
     uint32_t			 serial;
     Bool                         outputs_initialized;
 
+    DevPrivateKeyRec             cursor_private_key;
+
     CreateWindowProcPtr		 CreateWindow;
     DestroyWindowProcPtr	 DestroyWindow;
     RealizeWindowProcPtr	 RealizeWindow;
commit 40fccca0d72786ff9c000249b1b1fb926ee59063
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Mon Sep 16 11:51:57 2013 -0700

    xwayland: Remove unused variables

diff --git a/hw/xfree86/xwayland/xwayland-window.c b/hw/xfree86/xwayland/xwayland-window.c
index 88f57ce..20db80c 100644
--- a/hw/xfree86/xwayland/xwayland-window.c
+++ b/hw/xfree86/xwayland/xwayland-window.c
@@ -92,9 +92,6 @@ xwl_create_window(WindowPtr window)
 {
     ScreenPtr screen = window->drawable.pScreen;
     struct xwl_screen *xwl_screen;
-    char buffer[32];
-    int len, rc;
-    Atom name;
     Bool ret;
 
     xwl_screen = xwl_screen_get(screen);
commit 2b2e6a0fa8de0531b52e17dfb6f7c44200116dae
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Fri Sep 13 15:16:31 2013 -0700

    os: Also define ListenOnOpenFD and AddClientOnOpenFD unconditionally
    
    Remove the #ifdef from the header file as well.

diff --git a/include/os.h b/include/os.h
index c36d09a..8deb413 100644
--- a/include/os.h
+++ b/include/os.h
@@ -166,10 +166,9 @@ extern _X_EXPORT void MakeClientGrabImpervious(ClientPtr /*client */ );
 
 extern _X_EXPORT void MakeClientGrabPervious(ClientPtr /*client */ );
 
-#if defined(XQUARTZ) || defined(XORG_WAYLAND)
 extern _X_EXPORT void ListenOnOpenFD(int /* fd */ , int /* noxauth */ );
+
 extern _X_EXPORT void AddClientOnOpenFD(int /* fd */ );
-#endif
 
 extern _X_EXPORT CARD32 GetTimeInMillis(void);
 extern _X_EXPORT CARD64 GetTimeInMicros(void);
commit 8631b6ac046e1480ec50139fc23acb9d47c1dc9b
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Fri Sep 13 14:53:16 2013 -0700

    os: Don't include xorg-server.h
    
    Just always compile in ListenOnOpenFD and AddClientOnOpenFD, they
    don't depend on anything from Quartz or Wayland.

diff --git a/os/connection.c b/os/connection.c
index a95e7da..0a858b7 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -64,7 +64,6 @@ SOFTWARE.
 #include <dix-config.h>
 #endif
 
-#include <xorg-server.h>
 #ifdef WIN32
 #include <X11/Xwinsock.h>
 #endif
@@ -1259,7 +1258,6 @@ MakeClientGrabPervious(ClientPtr client)
     }
 }
 
-#if defined(XQUARTZ) || defined(XORG_WAYLAND)
 /* Add a fd (from launchd) to our listeners */
 void
 ListenOnOpenFD(int fd, int noxauth)
@@ -1334,5 +1332,3 @@ AddClientOnOpenFD(int fd)
         return;
     }
 }
-
-#endif
commit a3ef2902cb7c2da7b733bb14b127ded1cefb7377
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Fri Sep 13 14:52:13 2013 -0700

    xwayland: Don't include xorg-server.h
    
    xorg-config.h now has the XORG_WAYLAND define.

diff --git a/hw/xfree86/xwayland/xwayland-cursor.c b/hw/xfree86/xwayland/xwayland-cursor.c
index f8860bd..1cd6457 100644
--- a/hw/xfree86/xwayland/xwayland-cursor.c
+++ b/hw/xfree86/xwayland/xwayland-cursor.c
@@ -32,7 +32,6 @@
 #include <sys/mman.h>
 #include <wayland-client.h>
 
-#include <xorg-server.h>
 #include <cursorstr.h>
 #include <xf86Crtc.h>
 #include <mipointrst.h>
diff --git a/hw/xfree86/xwayland/xwayland-output.c b/hw/xfree86/xwayland/xwayland-output.c
index 691b5f0..7004b9b 100644
--- a/hw/xfree86/xwayland/xwayland-output.c
+++ b/hw/xfree86/xwayland/xwayland-output.c
@@ -32,7 +32,6 @@
 #include <sys/mman.h>
 #include <wayland-client.h>
 
-#include <xorg-server.h>
 #include <cursorstr.h>
 #include <xf86Crtc.h>
 #include <mipointrst.h>
diff --git a/hw/xfree86/xwayland/xwayland-window.c b/hw/xfree86/xwayland/xwayland-window.c
index d56e0d0..88f57ce 100644
--- a/hw/xfree86/xwayland/xwayland-window.c
+++ b/hw/xfree86/xwayland/xwayland-window.c
@@ -33,7 +33,6 @@
 #include <wayland-client.h>
 #include <X11/extensions/compositeproto.h>
 
-#include <xorg-server.h>
 #include <xf86Crtc.h>
 #include <selection.h>
 #include <compositeext.h>
diff --git a/hw/xfree86/xwayland/xwayland.c b/hw/xfree86/xwayland/xwayland.c
index e8c58fd..c70a52d 100644
--- a/hw/xfree86/xwayland/xwayland.c
+++ b/hw/xfree86/xwayland/xwayland.c
@@ -34,7 +34,6 @@
 #include <wayland-util.h>
 #include <wayland-client.h>
 
-#include <xorg-server.h>
 #include <extinit.h>
 
 #include <xf86Xinput.h>
commit d58a36787b6ce1547bca564077702662c136c096
Author: Giovanni Campagna <gcampagn at redhat.com>
Date:   Fri Sep 13 15:52:30 2013 +0200

    Fix fallback loading of the wayland driver
    
    Fix the array name to actually compile, and fix the driver name
    with the new upstream.

diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
index a3e1fa7..51a7960 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -277,7 +277,7 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
     if (i < (nmatches - 1)) {
 #ifdef XORG_WAYLAND
         if (xorgWayland)
-            matches[i++] = xnfstrdup("wlshm");
+            matches[i++] = xnfstrdup("wayland");
         else
 #endif
 #if !defined(__linux__) && defined(__sparc__)
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index aebfc1b..66f98b2 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -521,7 +521,7 @@ fixup_video_driver_list(char **drivers)
 {
     static const char *fallback_hw[4] = { "fbdev", "vesa", "wsfb", NULL };
 #ifdef XORG_WAYLAND
-    static const char *fallback_wayland[2] = { "wlshm", NULL };
+    static const char *fallback_wl[2] = { "wayland", NULL };
 #endif
     const char **fallbacks;
     char **end, **drv;
commit 9c80189b657723dd6076a539b3b9efda4af2cd6f
Author: Giovanni Campagna <gcampagn at redhat.com>
Date:   Fri Sep 13 15:52:29 2013 +0200

    Add XORG_WAYLAND symbol to xorg-config.h.in
    
    We manually duplicate symbols that we want in both xorg-server.h and
    xorg-config.h.  XORG_WAYLAND is one such symbol, but it was missing from
    xorg-config.h.in.

diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in
index 487d7ad..b5b0ed4 100644
--- a/include/xorg-config.h.in
+++ b/include/xorg-config.h.in
@@ -145,4 +145,7 @@
 /* Support APM/ACPI power management in the server */
 #undef XF86PM
 
+/* Building Xorg server. */
+#undef XORG_WAYLAND
+
 #endif /* _XORG_CONFIG_H_ */
commit b60299aff70aa4aff26017345a7423cbb1edeaf3
Author: Ray Strode <rstrode at redhat.com>
Date:   Fri Sep 13 17:17:16 2013 -0400

    xf86Init: trim out non-wayland capable servers from drive list
    
    Otherwise they'll cause the server to crash when run in wayland mode.

diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 2d3bb01..6282252 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -558,6 +558,15 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
 	    }
         }
 
+        for (i = 0; i < xf86NumDrivers; i++) {
+                if (xf86DriverList[i] == NULL) {
+                        for (j = i; j < xf86NumDrivers; j++) {
+                            xf86DriverList[j] = xf86DriverList[j + 1];
+                        }
+                        xf86NumDrivers--;
+                }
+        }
+
         if (xorgHWOpenConsole)
             xf86OpenConsole();
         else
commit 5c571b8cc9c662079bdbb81bbf016928a289f115
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Wed Sep 11 11:15:18 2013 -0700

    xwayland: Remove Xdnd selection watching code
    
    We don't need this in the server, the wm can manage dnd proxying.

diff --git a/hw/xfree86/xwayland/xwayland.c b/hw/xfree86/xwayland/xwayland.c
index 36f7cbf..e8c58fd 100644
--- a/hw/xfree86/xwayland/xwayland.c
+++ b/hw/xfree86/xwayland/xwayland.c
@@ -54,7 +54,6 @@
  */
 
 static DevPrivateKeyRec xwl_screen_private_key;
-static Atom xdnd_atom;
 
 static void
 xserver_client(void *data, struct xserver *xserver, int fd)
@@ -178,31 +177,6 @@ xwl_screen_get(ScreenPtr screen)
     return dixLookupPrivate(&screen->devPrivates, &xwl_screen_private_key);
 }
 
-static void
-xwayland_selection_callback(CallbackListPtr *callbacks,
-			    pointer data, pointer args)
-{
-    SelectionInfoRec *info = (SelectionInfoRec *) args;
-    Selection *selection = info->selection;
-
-    switch (info->kind) {
-    case SelectionSetOwner:
-	if (selection->selection == xdnd_atom) {
-	    if (selection->window != None)
-		ErrorF("client %p starts dnd\n", info->client);
-	    else
-		ErrorF("client %p stops dnd\n", info->client);
-	}
-	break;
-    case SelectionWindowDestroy:
-	ErrorF("selection window destroy\n");
-	break;
-    case SelectionClientClose:
-	ErrorF("selection client close\n");
-	break;
-    }
-}
-
 struct xwl_screen *
 xwl_screen_create(void)
 {
@@ -231,12 +205,6 @@ xwl_screen_pre_init(ScrnInfoPtr scrninfo, struct xwl_screen *xwl_screen,
 
     noScreenSaverExtension = TRUE;
 
-    xdnd_atom = MakeAtom("XdndSelection", 13, 1);
-    if (!AddCallback(&SelectionCallback,
-		     xwayland_selection_callback, xwl_screen)) {
-	return FALSE;
-    }
-
     xorg_list_init(&xwl_screen->output_list);
     xorg_list_init(&xwl_screen->seat_list);
     xorg_list_init(&xwl_screen->damage_window_list);
commit 066ccb03a2dea45b43cddda1a9383e13a4eb3e6f
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Fri Aug 16 13:51:08 2013 +0100

    XWayland: Support 16bpp X surfaces in DRM/SHM
    
    Properly look at the window's visual to determine which format we should
    use for allocation.
    
    Signed-off-by: Daniel Stone <daniel at fooishbar.org>

diff --git a/hw/xfree86/xwayland/xwayland-drm.c b/hw/xfree86/xwayland/xwayland-drm.c
index 6e4c778..5250857 100644
--- a/hw/xfree86/xwayland/xwayland-drm.c
+++ b/hw/xfree86/xwayland/xwayland-drm.c
@@ -225,10 +225,18 @@ xwl_create_window_buffer_drm(struct xwl_window *xwl_window,
 	if (screen->visuals[i].vid == visual)
 	    break;
 
-    if (screen->visuals[i].nplanes == 32)
+    switch (screen->visuals[i].nplanes) {
+    case 32:
 	format = WL_DRM_FORMAT_ARGB8888;
-    else
+        break;
+    case 24:
+    default:
 	format = WL_DRM_FORMAT_XRGB8888;
+        break;
+    case 16:
+        format = WL_DRM_FORMAT_RGB565;
+        break;
+    }
 
     xwl_window->buffer =
       wl_drm_create_buffer(xwl_window->xwl_screen->drm,
diff --git a/hw/xfree86/xwayland/xwayland.c b/hw/xfree86/xwayland/xwayland.c
index 6a515f5..36f7cbf 100644
--- a/hw/xfree86/xwayland/xwayland.c
+++ b/hw/xfree86/xwayland/xwayland.c
@@ -277,19 +277,43 @@ xwl_create_window_buffer_shm(struct xwl_window *xwl_window,
 			     PixmapPtr pixmap, int fd)
 {
     struct wl_shm_pool *pool;
-    int size, stride;
+    WindowPtr window = xwl_window->window;
+    ScreenPtr screen = window->drawable.pScreen;
+    VisualID visual = wVisual(window);
+    uint32_t format;
+    int size, stride, bpp, i;
+
+    for (i = 0; i < screen->numVisuals; i++)
+        if (screen->visuals[i].vid == visual)
+            break;
+
+    switch (screen->visuals[i].nplanes) {
+    case 32:
+        format = WL_SHM_FORMAT_ARGB8888;
+        bpp = 4;
+        break;
+    case 24:
+    default:
+        format = WL_SHM_FORMAT_XRGB8888;
+        bpp = 4;
+        break;
+#ifdef WL_SHM_FORMAT_RGB565
+    case 16:
+        /* XXX: Check run-time protocol version too */
+        format = WL_SHM_FORMAT_RGB565;
+        bpp = 2;
+        break;
+#endif
+    }
 
-    stride = pixmap->drawable.width * 4;
+    stride = pixmap->drawable.width * bpp;
+    size = stride * pixmap->drawable.height;
 
-    size = pixmap->drawable.width * pixmap->drawable.height * 4;
     pool = wl_shm_create_pool(xwl_window->xwl_screen->shm, fd, size);
     xwl_window->buffer =  wl_shm_pool_create_buffer(pool, 0,
 			   pixmap->drawable.width,
 			   pixmap->drawable.height,
-			   stride,
-			   pixmap->drawable.depth == 32 ?
-			   WL_SHM_FORMAT_ARGB8888 :
-			   WL_SHM_FORMAT_XRGB8888);
+			   stride, format);
     wl_shm_pool_destroy(pool);
 
     return xwl_window->buffer ? Success : BadDrawable;
commit 62343231a7df482d7ac8fa39298a4cf07eb13e2f
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Wed Nov 7 17:15:13 2012 +1100

    XWayland: Don't hardcode DRM libs and -lwayland-client
    
    Take -lwayland-client from configure.ac, and only use DRM if we've
    actually asked for it.
    
    Signed-off-by: Daniel Stone <daniel at fooishbar.org>

diff --git a/hw/xfree86/xwayland/Makefile.am b/hw/xfree86/xwayland/Makefile.am
index b739145..22ab154 100644
--- a/hw/xfree86/xwayland/Makefile.am
+++ b/hw/xfree86/xwayland/Makefile.am
@@ -7,13 +7,13 @@ AM_CPPFLAGS =					\
 	-I$(srcdir)/../modes
 
 libxwayland_la_LTLIBRARIES = libxwayland.la
-libxwayland_la_CFLAGS = \
+AM_CFLAGS = \
 	-DHAVE_XORG_CONFIG_H \
-	@DIX_CFLAGS@ @XORG_CFLAGS@ @LIBDRM_CFLAGS@ \
+	@DIX_CFLAGS@ @XORG_CFLAGS@ @XWAYLAND_CFLAGS@ \
 	-I$(top_srcdir)/hw/xfree86/common \
 	-I$(top_srcdir)/hw/xfree86/os-support/bus
 
-libxwayland_la_LDFLAGS = -module -avoid-version @LIBDRM_LIBS@ -lwayland-client
+libxwayland_la_LDFLAGS = -module -avoid-version @XWAYLAND_LIBS@
 libxwayland_ladir = $(moduledir)/extensions
 libxwayland_la_SOURCES =			\
 	xwayland.c				\
@@ -28,6 +28,8 @@ libxwayland_la_SOURCES =			\
 	xserver-protocol.c
 
 if DRM
+AM_CFLAGS += @LIBDRM_CFLAGS@
+libxwayland_la_LDFLAGS += @LIBDRM_LIBS@
 libxwayland_la_SOURCES += xwayland-drm.c
 endif
 
commit 47303bcc9d257d089de038fc7d59d114ff49b6f0
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Tue Oct 16 17:14:01 2012 +1100

    xwayland: Introduce an auto mode for --enable-wayland
    
    Signed-off-by: Daniel Stone <daniel at fooishbar.org>

diff --git a/configure.ac b/configure.ac
index fd4d466..052a557 100644
--- a/configure.ac
+++ b/configure.ac
@@ -629,7 +629,7 @@ AC_ARG_ENABLE(clientids,      AS_HELP_STRING([--disable-clientids], [Build Xorg
 AC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess], [Build Xorg with pciaccess library (default: enabled)]), [PCI=$enableval], [PCI=yes])
 AC_ARG_ENABLE(linux_acpi, AC_HELP_STRING([--disable-linux-acpi], [Disable building ACPI support on Linux (if available).]), [enable_linux_acpi=$enableval], [enable_linux_acpi=yes])
 AC_ARG_ENABLE(linux_apm, AC_HELP_STRING([--disable-linux-apm], [Disable building APM support on Linux (if available).]), [enable_linux_apm=$enableval], [enable_linux_apm=yes])
-AC_ARG_ENABLE(wayland,      AS_HELP_STRING([--disable-wayland], [Build Wayland extension (default: enabled)]), [WAYLAND=$enableval], [WAYLAND=yes])
+AC_ARG_ENABLE(wayland,      AS_HELP_STRING([--disable-wayland], [Build Wayland extension (default: auto)]), [WAYLAND=$enableval], [WAYLAND=auto])
 
 dnl DDXes.
 AC_ARG_ENABLE(xorg,    	      AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
@@ -1020,12 +1020,16 @@ if test "x$MITSHM" = xauto; then
 	MITSHM="$ac_cv_sysv_ipc"
 fi
 
-AM_CONDITIONAL(WAYLAND, [test "x$WAYLAND" = xyes])
+WAYLAND_MODULES="wayland-client libdrm"
+if test "x$WAYLAND" = xauto; then
+        PKG_CHECK_MODULES(XWAYLAND, $WAYLAND_MODULES, [WAYLAND=yes], [WAYLAND=no])
+fi
 if test "x$WAYLAND" = xyes; then
+        PKG_CHECK_MODULES(XWAYLAND, $WAYLAND_MODULES)
 	AC_DEFINE(XORG_WAYLAND, 1, [Support wayland mode])
-	REQUIRED_MODULES="$REQUIRED_MODULES wayland-client"
 	WAYLAND_SCANNER_RULES(['$(top_srcdir)/hw/xfree86/xwayland'])
 fi
+AM_CONDITIONAL(WAYLAND, [test "x$WAYLAND" = xyes])
 
 AM_CONDITIONAL(MITSHM, [test "x$MITSHM" = xyes])
 if test "x$MITSHM" = xyes; then
commit ad1c0328ccc9621a022673a16a190c3a2fa1e6b9
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Wed Nov 7 17:22:42 2012 +1100

    XWayland: Don't send out-of-bounds damage co-ordinates
    
    Make sure we don't send damage regions larger than the buffer.
    
    Signed-off-by: Daniel Stone <daniel at fooishbar.org>

diff --git a/hw/xfree86/xwayland/xwayland.c b/hw/xfree86/xwayland/xwayland.c
index 2047a85..6a515f5 100644
--- a/hw/xfree86/xwayland/xwayland.c
+++ b/hw/xfree86/xwayland/xwayland.c
@@ -346,15 +346,14 @@ void xwl_screen_post_damage(struct xwl_screen *xwl_screen)
 
     xorg_list_for_each_entry(xwl_window, &xwl_screen->damage_window_list,
 			     link_damage) {
-
 	region = DamageRegion(xwl_window->damage);
 	count = RegionNumRects(region);
 	for (i = 0; i < count; i++) {
 	    box = &RegionRects(region)[i];
 	    wl_surface_damage(xwl_window->surface,
 			      box->x1, box->y1,
-			      box->x2 - box->x1 + 1,
-			      box->y2 - box->y1 + 1);
+			      box->x2 - box->x1,
+			      box->y2 - box->y1);
 	}
 	wl_surface_attach(xwl_window->surface,
 			  xwl_window->buffer,
commit 38cb4019c3473b2a411d36b30b1a0e5da80e2c67
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Fri Aug 16 13:21:21 2013 +0100

    XFree86: Load wlshm driver as fallback for Wayland
    
    Since fbdev or vesa are unlikely to be too useful there ...
    
    Signed-off-by: Daniel Stone <daniel at fooishbar.org>

diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
index af2b7f8..a3e1fa7 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -275,10 +275,15 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
 #if !defined(sun)
     /* Fallback to platform default frame buffer driver */
     if (i < (nmatches - 1)) {
+#ifdef XORG_WAYLAND
+        if (xorgWayland)
+            matches[i++] = xnfstrdup("wlshm");
+        else
+#endif
 #if !defined(__linux__) && defined(__sparc__)
-        matches[i++] = xnfstrdup("wsfb");
+            matches[i++] = xnfstrdup("wsfb");
 #else
-        matches[i++] = xnfstrdup("fbdev");
+            matches[i++] = xnfstrdup("fbdev");
 #endif
     }
 #endif                          /* !sun */
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 3b0bb89..aebfc1b 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -519,7 +519,11 @@ xf86InputDriverlistFromConfig(void)
 static void
 fixup_video_driver_list(char **drivers)
 {
-    static const char *fallback[4] = { "fbdev", "vesa", "wsfb", NULL };
+    static const char *fallback_hw[4] = { "fbdev", "vesa", "wsfb", NULL };
+#ifdef XORG_WAYLAND
+    static const char *fallback_wayland[2] = { "wlshm", NULL };
+#endif
+    const char **fallbacks;
     char **end, **drv;
     char *x;
     int i;
@@ -532,9 +536,15 @@ fixup_video_driver_list(char **drivers)
      * for each of the fallback drivers, if we find it in the list,
      * swap it with the last available non-fallback driver.
      */
-    for (i = 0; fallback[i]; i++) {
+#ifdef XORG_WAYLAND
+    if (xorgWayland)
+        fallbacks = fallback_wl;
+    else
+#endif
+        fallbacks = fallback_hw;
+    for (i = 0; fallbacks[i]; i++) {
         for (drv = drivers; drv != end; drv++) {
-            if (strstr(*drv, fallback[i])) {
+            if (strstr(*drv, fallbacks[i])) {
                 x = *drv;
                 *drv = *end;
                 *end = x;
commit cc68cef452163f2f96ecefb89702d1fd89800f21
Author: Jonas Ã…dahl <jadahl at gmail.com>
Date:   Sun Sep 1 23:14:43 2013 +0200

    xwayland: Probe outputs on preinit
    
    When running xwayland, calls to xf86SetDesiredModes() would fail due to
    the probed modes list not being populated. This was previously done
    indirectly by calling xf86InitialConfiguration() and now needs to be
    done explicitly instead.
    
    Signed-off-by: Jonas Ã…dahl <jadahl at gmail.com>

diff --git a/hw/xfree86/xwayland/xwayland-output.c b/hw/xfree86/xwayland/xwayland-output.c
index 66c7d48..691b5f0 100644
--- a/hw/xfree86/xwayland/xwayland-output.c
+++ b/hw/xfree86/xwayland/xwayland-output.c
@@ -431,6 +431,8 @@ xwayland_screen_preinit_output(struct xwl_screen *xwl_screen, ScrnInfoPtr scrnin
             FatalError("failed to dispatch Wayland events: %s\n", strerror(errno));
     }
 
+    xf86ProbeOutputModes(scrninfo, 0, 0);
+
     xwl_screen->outputs_initialized = TRUE;
 
     xf86SetScrnInfoModes(scrninfo);
commit 3084cefa0f6d4789b76c3ca616b97efe13573e92
Author: Giovanni Campagna <gcampagn at redhat.com>
Date:   Thu Aug 22 16:23:48 2013 +0200

    xwayland: add support for multiple outputs
    
    Drop xf86InitialConfiguration, which just gets in the way
    of the compositor doing its own output arrangement, and transform
    wayland events into the appropriate low-level xf86 calls to
    keep the screen size updated.
    
    Kristian: after the rebase it was crashing for me too, had to fix
    the patch a bit. This one should work, and also gives sensible (though
    not perfect) results for xrandr clients.
    Tested with weston/x11 and mutter-wayland/kms.

diff --git a/hw/xfree86/xwayland/xwayland-output.c b/hw/xfree86/xwayland/xwayland-output.c
index 46238f4..66c7d48 100644
--- a/hw/xfree86/xwayland/xwayland-output.c
+++ b/hw/xfree86/xwayland/xwayland-output.c
@@ -36,6 +36,7 @@
 #include <cursorstr.h>
 #include <xf86Crtc.h>
 #include <mipointrst.h>
+#include <randrstr.h>
 
 #include "xwayland.h"
 #include "xwayland-private.h"
@@ -182,6 +183,10 @@ xwl_output_create(struct xwl_screen *xwl_screen)
     struct xwl_output *xwl_output;
     xf86OutputPtr xf86output;
     xf86CrtcPtr xf86crtc;
+    xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(xwl_screen->scrninfo);
+    int crtcId, outputId;
+    static int nameId;
+    char *name;
 
     xwl_output = calloc(sizeof *xwl_output, 1);
     if (xwl_output == NULL) {
@@ -189,19 +194,41 @@ xwl_output_create(struct xwl_screen *xwl_screen)
 	return NULL;
     }
 
+    nameId++;
+    if (asprintf(&name, "XWAYLAND-%d", nameId) < 0) {
+        ErrorF("create_output ENOMEM");
+        free(xwl_output);
+        return NULL;
+    }
+
     xwl_output->xwl_screen = xwl_screen;
 
+    xf86crtc = xf86CrtcCreate(xwl_screen->scrninfo, &crtc_funcs);
+    xf86crtc->enabled = TRUE;
+    xf86crtc->driver_private = xwl_output;
+
+    for (crtcId = 0; crtcId < xf86_config->num_crtc; crtcId++) {
+        if (xf86_config->crtc[crtcId] == xf86crtc)
+            break;
+    }
+
     xf86output = xf86OutputCreate(xwl_screen->scrninfo,
-				  &output_funcs, "XWAYLAND-1");
+				  &output_funcs, name);
     xf86output->driver_private = xwl_output;
-    xf86output->possible_crtcs = 1;
-    xf86output->possible_clones = 1;
+    xf86output->possible_crtcs = 1 << crtcId;
 
-    xf86crtc = xf86CrtcCreate(xwl_screen->scrninfo, &crtc_funcs);
-    xf86crtc->driver_private = xwl_output;
+    for (outputId = 0; outputId < xf86_config->num_output; outputId++) {
+        if (xf86_config->output[outputId] == xf86output)
+            break;
+    }
+
+    xf86output->possible_clones = 1 << outputId;
 
     xwl_output->xf86output = xf86output;
     xwl_output->xf86crtc = xf86crtc;
+    xwl_output->xf86output->crtc = xf86crtc;
+
+    free(name);
 
     return xwl_output;
 }
@@ -219,6 +246,32 @@ static const xf86CrtcConfigFuncsRec config_funcs = {
     resize
 };
 
+static Rotation
+wl_transform_to_xrandr (enum wl_output_transform transform)
+{
+  switch (transform)
+    {
+    case WL_OUTPUT_TRANSFORM_NORMAL:
+      return RR_Rotate_0;
+    case WL_OUTPUT_TRANSFORM_90:
+      return RR_Rotate_90;
+    case WL_OUTPUT_TRANSFORM_180:
+      return RR_Rotate_180;
+    case WL_OUTPUT_TRANSFORM_270:
+      return RR_Rotate_270;
+    case WL_OUTPUT_TRANSFORM_FLIPPED:
+      return RR_Reflect_X | RR_Rotate_0;
+    case WL_OUTPUT_TRANSFORM_FLIPPED_90:
+      return RR_Reflect_X | RR_Rotate_90;
+    case WL_OUTPUT_TRANSFORM_FLIPPED_180:
+      return RR_Reflect_X | RR_Rotate_180;
+    case WL_OUTPUT_TRANSFORM_FLIPPED_270:
+      return RR_Reflect_X | RR_Rotate_270;
+    }
+
+  return RR_Rotate_0;
+}
+
 static void
 display_handle_geometry(void *data, struct wl_output *wl_output, int x, int y,
 			int physical_width, int physical_height, int subpixel,
@@ -253,6 +306,7 @@ display_handle_geometry(void *data, struct wl_output *wl_output, int x, int y,
 
     xwl_output->x = x;
     xwl_output->y = y;
+    xwl_output->rotation = wl_transform_to_xrandr (transform);
 
     xorg_list_append (&xwl_output->link, &xwl_screen->output_list);
 }
@@ -262,11 +316,49 @@ display_handle_mode(void *data, struct wl_output *wl_output, uint32_t flags,
 		    int width, int height, int refresh)
 {
     struct xwl_output *xwl_output = data;
+    struct xwl_screen *xwl_screen = xwl_output->xwl_screen;
+    ScreenPtr pScreen = xwl_screen->screen;
+    ScrnInfoPtr scrn = xwl_screen->scrninfo;
+    CARD16 width_mm, height_mm;
+    DisplayModePtr mode;
+    rrScrPrivPtr rp;
 
-    if (flags & WL_OUTPUT_MODE_CURRENT) {
-	xwl_output->width = width;
-	xwl_output->height = height;
+    if (!(flags & WL_OUTPUT_MODE_CURRENT))
+	return;
+
+    xwl_output->width = width;
+    xwl_output->height = height;
+
+    if (xwl_output->x + xwl_output->width > scrn->virtualX ||
+	xwl_output->y + xwl_output->height > scrn->virtualY) {
+	/* Fake a RandR request to resize the screen. It will bounce
+	   back to our crtc_resize, which does nothing.
+	*/
+	/* Preupdate virtualX / virtualY, so that crtc_resize returns TRUE */
+	scrn->virtualX = xwl_output->x + xwl_output->width;
+	scrn->virtualY = xwl_output->y + xwl_output->height;
+
+	/* Ignore the compositor provided values for mm_width/mm_height,
+	   as it doesn't make sense to sum the values of different outputs.
+	   Just make the DPI 96 */
+	width_mm = (scrn->virtualX / 96.0) * 25.4 + 0.5;
+	height_mm = (scrn->virtualY / 96.0) * 25.4 + 0.5;
+
+	/* But! When the server starts, the RandR stuff is not initialized,
+	   so we can't call rrGetScrPriv. We updated virtualX/Y anyway, let's
+	   hope it's enough.
+	*/
+	if (xwl_screen->outputs_initialized) {
+	    rp = rrGetScrPriv(pScreen);
+	    if (rp->rrScreenSetSize)
+		rp->rrScreenSetSize(pScreen, scrn->virtualX, scrn->virtualY, width_mm, height_mm);
+	}
     }
+
+    xwl_output->xf86crtc->enabled = TRUE;
+    mode = xf86CVTMode(width, height, refresh, TRUE, FALSE);
+    xf86CrtcSetModeTransform(xwl_output->xf86crtc, mode, xwl_output->rotation,
+                             NULL, xwl_output->x, xwl_output->y);
 }
 
 static const struct wl_output_listener output_listener = {
@@ -339,5 +431,7 @@ xwayland_screen_preinit_output(struct xwl_screen *xwl_screen, ScrnInfoPtr scrnin
             FatalError("failed to dispatch Wayland events: %s\n", strerror(errno));
     }
 
-    xf86InitialConfiguration(scrninfo, TRUE);
+    xwl_screen->outputs_initialized = TRUE;
+
+    xf86SetScrnInfoModes(scrninfo);
 }
diff --git a/hw/xfree86/xwayland/xwayland-private.h b/hw/xfree86/xwayland/xwayland-private.h
index 7005db2..b0b2201 100644
--- a/hw/xfree86/xwayland/xwayland-private.h
+++ b/hw/xfree86/xwayland/xwayland-private.h
@@ -63,6 +63,7 @@ struct xwl_screen {
     struct xorg_list		 window_list;
     struct xorg_list		 authenticate_client_list;
     uint32_t			 serial;
+    Bool                         outputs_initialized;
 
     CreateWindowProcPtr		 CreateWindow;
     DestroyWindowProcPtr	 DestroyWindow;
@@ -82,6 +83,7 @@ struct xwl_output {
     xf86OutputPtr		 xf86output;
     xf86CrtcPtr			 xf86crtc;
     int32_t                      name;
+    Rotation                     rotation;
 };
 
 
commit 0af6483bbb02078b74d3f2091c44799a205da3f0
Author: Giovanni Campagna <gcampagn at redhat.com>
Date:   Wed Aug 21 09:53:26 2013 +0200

    xwayland: handle global object destruction
    
    Certain global objects, such as outputs, can be destroyed during
    the session. We must handle that and not crash.

diff --git a/hw/xfree86/xwayland/xwayland-drm.c b/hw/xfree86/xwayland/xwayland-drm.c
index ce56e4c..6e4c778 100644
--- a/hw/xfree86/xwayland/xwayland-drm.c
+++ b/hw/xfree86/xwayland/xwayland-drm.c
@@ -119,8 +119,15 @@ drm_handler(void *data, struct wl_registry *registry, uint32_t id,
     }
 }
 
+static void
+global_remove(void *data, struct wl_registry *registry, uint32_t name)
+{
+    /* Nothing to do here, wl_drm should not be removed */
+}
+
 static const struct wl_registry_listener drm_listener = {
     drm_handler,
+    global_remove
 };
 
 int
diff --git a/hw/xfree86/xwayland/xwayland-input.c b/hw/xfree86/xwayland/xwayland-input.c
index 2f8e0c7..d031b34 100644
--- a/hw/xfree86/xwayland/xwayland-input.c
+++ b/hw/xfree86/xwayland/xwayland-input.c
@@ -597,8 +597,15 @@ input_handler(void *data, struct wl_registry *registry, uint32_t id,
     }
 }
 
+static void
+global_remove(void *data, struct wl_registry *registry, uint32_t name)
+{
+    /* FIXME */
+}
+
 static const struct wl_registry_listener input_listener = {
     input_handler,
+    global_remove,
 };
 
 void
diff --git a/hw/xfree86/xwayland/xwayland-output.c b/hw/xfree86/xwayland/xwayland-output.c
index 8f087f6..46238f4 100644
--- a/hw/xfree86/xwayland/xwayland-output.c
+++ b/hw/xfree86/xwayland/xwayland-output.c
@@ -95,6 +95,14 @@ crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr rotate_pixmap, void *data)
 {
 }
 
+static void
+crtc_destroy(xf86CrtcPtr crtc)
+{
+    /* Nothing to do here, we only destroy CRTCs when instructed to do
+       so by wl_output changes
+    */
+}
+
 static const xf86CrtcFuncsRec crtc_funcs = {
     .dpms                = crtc_dpms,
     .set_mode_major      = crtc_set_mode_major,
@@ -106,7 +114,7 @@ static const xf86CrtcFuncsRec crtc_funcs = {
     .shadow_create       = crtc_shadow_create,
     .shadow_allocate     = crtc_shadow_allocate,
     .shadow_destroy      = crtc_shadow_destroy,
-    .destroy		 = NULL, /* XXX */
+    .destroy		 = crtc_destroy,
 };
 
 static void
@@ -246,7 +254,7 @@ display_handle_geometry(void *data, struct wl_output *wl_output, int x, int y,
     xwl_output->x = x;
     xwl_output->y = y;
 
-    xwl_screen->xwl_output = xwl_output;
+    xorg_list_append (&xwl_output->link, &xwl_screen->output_list);
 }
 
 static void
@@ -277,13 +285,39 @@ global_handler(void *data, struct wl_registry *registry, uint32_t id,
 	xwl_output = xwl_output_create(xwl_screen);
 	xwl_output->output = wl_registry_bind(registry, id,
 	                                      &wl_output_interface, 1);
+	xwl_output->name = id;
 	wl_output_add_listener(xwl_output->output,
 			       &output_listener, xwl_output);
     }
 }
 
+void
+xwl_output_remove(struct xwl_output *xwl_output)
+{
+    xorg_list_del (&xwl_output->link);
+    xf86OutputDestroy (xwl_output->xf86output);
+    xf86CrtcDestroy (xwl_output->xf86crtc);
+
+    wl_output_destroy (xwl_output->output);
+}
+
+static void
+global_remove(void *data, struct wl_registry *registry, uint32_t name)
+{
+    struct xwl_screen *xwl_screen = data;
+    struct xwl_output *xwl_output, *tmp;
+
+    xorg_list_for_each_entry_safe (xwl_output, tmp, &xwl_screen->output_list, link) {
+	if (xwl_output->name == name) {
+	    xwl_output_remove(xwl_output);
+	    break;
+	}
+    }
+}
+
 static const struct wl_registry_listener global_listener = {
     global_handler,
+    global_remove
 };
 
 void
@@ -299,7 +333,7 @@ xwayland_screen_preinit_output(struct xwl_screen *xwl_screen, ScrnInfoPtr scrnin
     wl_registry_add_listener(xwl_screen->output_registry, &global_listener,
                              xwl_screen);
 
-    while (!xwl_screen->xwl_output) {
+    while (xwl_screen->output_list.next == &xwl_screen->output_list) {
         ret = wl_display_roundtrip(xwl_screen->display);
         if (ret == -1)
             FatalError("failed to dispatch Wayland events: %s\n", strerror(errno));
diff --git a/hw/xfree86/xwayland/xwayland-private.h b/hw/xfree86/xwayland/xwayland-private.h
index e427316..7005db2 100644
--- a/hw/xfree86/xwayland/xwayland-private.h
+++ b/hw/xfree86/xwayland/xwayland-private.h
@@ -44,7 +44,6 @@ struct xwl_screen {
     ScrnInfoPtr			 scrninfo;
     int				 drm_fd;
     int				 wayland_fd;
-    struct xwl_output		*xwl_output;
     struct wl_display		*display;
     struct wl_registry          *registry;
     struct wl_registry          *drm_registry;
@@ -58,6 +57,7 @@ struct xwl_screen {
     uint32_t			 flags;
     char			*device_name;
     uint32_t			 authenticated;
+    struct xorg_list		 output_list;
     struct xorg_list		 seat_list;
     struct xorg_list		 damage_window_list;
     struct xorg_list		 window_list;
@@ -74,12 +74,14 @@ struct xwl_screen {
 };
 
 struct xwl_output {
+    struct xorg_list             link;
     struct wl_output		*output;
     struct xwl_screen		*xwl_screen;
     int32_t			 x, y, width, height;
     xf86Monitor			 xf86monitor;
     xf86OutputPtr		 xf86output;
     xf86CrtcPtr			 xf86crtc;
+    int32_t                      name;
 };
 
 
@@ -127,6 +129,8 @@ Bool xwl_drm_initialised(struct xwl_screen *screen);
 
 void xwl_seat_set_cursor(struct xwl_seat *xwl_seat);
 
+void xwl_output_remove(struct xwl_output *output);
+
 extern const struct xserver_listener xwl_server_listener;
 
 #endif /* _XWAYLAND_PRIVATE_H_ */
diff --git a/hw/xfree86/xwayland/xwayland.c b/hw/xfree86/xwayland/xwayland.c
index 880b7ec..2047a85 100644
--- a/hw/xfree86/xwayland/xwayland.c
+++ b/hw/xfree86/xwayland/xwayland.c
@@ -103,8 +103,15 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
     }
 }
 
+static void
+global_remove(void *data, struct wl_registry *registry, uint32_t name)
+{
+    /* Nothing to do here, wl_compositor and wl_shm should not be removed */
+}
+
 static const struct wl_registry_listener registry_listener = {
     registry_global,
+    global_remove
 };
 
 static void
@@ -230,6 +237,7 @@ xwl_screen_pre_init(ScrnInfoPtr scrninfo, struct xwl_screen *xwl_screen,
 	return FALSE;
     }
 
+    xorg_list_init(&xwl_screen->output_list);
     xorg_list_init(&xwl_screen->seat_list);
     xorg_list_init(&xwl_screen->damage_window_list);
     xorg_list_init(&xwl_screen->window_list);
@@ -318,12 +326,13 @@ void xwl_screen_close(struct xwl_screen *xwl_screen)
 
 void xwl_screen_destroy(struct xwl_screen *xwl_screen)
 {
-    if (xwl_screen->xwl_output) {
-	xf86OutputDestroy(xwl_screen->xwl_output->xf86output);
-	xf86CrtcDestroy(xwl_screen->xwl_output->xf86crtc);
+    struct xwl_output *xwl_output, *tmp;
+
+    xorg_list_for_each_entry_safe (xwl_output, tmp, &xwl_screen->output_list, link) {
+	xwl_output_remove(xwl_output);
+	break;
     }
 
-    free(xwl_screen->xwl_output);
     free(xwl_screen);
 }
 
commit d1d49cdb24a3e0f9ca668b344581389903b3e43e
Author: Giovanni Campagna <gcampagn at redhat.com>
Date:   Wed Aug 21 09:53:25 2013 +0200

    xwayland-shm: don't create alpha buffers if the window doesn't have alpha
    
    If the window is using a 24 bit visual, we must request a buffer
    format without alpha, or garbage is rendered.

diff --git a/hw/xfree86/xwayland/xwayland.c b/hw/xfree86/xwayland/xwayland.c
index f59bfe4..880b7ec 100644
--- a/hw/xfree86/xwayland/xwayland.c
+++ b/hw/xfree86/xwayland/xwayland.c
@@ -278,7 +278,10 @@ xwl_create_window_buffer_shm(struct xwl_window *xwl_window,
     xwl_window->buffer =  wl_shm_pool_create_buffer(pool, 0,
 			   pixmap->drawable.width,
 			   pixmap->drawable.height,
-			   stride, WL_SHM_FORMAT_ARGB8888);
+			   stride,
+			   pixmap->drawable.depth == 32 ?
+			   WL_SHM_FORMAT_ARGB8888 :
+			   WL_SHM_FORMAT_XRGB8888);
     wl_shm_pool_destroy(pool);
 
     return xwl_window->buffer ? Success : BadDrawable;
commit 9bad3d1bc626b5fb612ddf98aaf721686c5f657b
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Wed Aug 21 23:02:58 2013 -0700

    xwayland: Add a HW_WAYLAND flag to let drivers explicitly opt-in

diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 98adaab..2d3bb01 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -547,11 +547,14 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
             if (!(flags & HW_SKIP_CONSOLE))
                 xorgHWOpenConsole = TRUE;
 
-	    if (xorgWayland &&
-		(NEED_IO_ENABLED(flags) || !(flags & HW_SKIP_CONSOLE))) {
+	    if (xorgWayland) {
+                if (flags != HW_WAYLAND) {
+                    xf86DeleteDriver(i);
+                    continue;
+                }
 
-		xf86DeleteDriver(i);
-		continue;
+                want_hw_access = FALSE;
+                xorgHWOpenConsole = FALSE;
 	    }
         }
 
diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h
index 4c2d147..976fa30 100644
--- a/hw/xfree86/common/xf86str.h
+++ b/hw/xfree86/common/xf86str.h
@@ -288,6 +288,7 @@ typedef struct {
 #define HW_MMIO 2
 #define HW_SKIP_CONSOLE 4
 #define NEED_IO_ENABLED(x) (x & HW_IO)
+#define HW_WAYLAND 8
 
 typedef CARD32 xorgHWFlags;
 
commit bc6b79a6c4cbea59b283b3de6dc832f8e2b6d2b4
Author: Kristian Høgsberg <krh at redhat.com>
Date:   Fri Sep 18 22:08:16 2009 -0400

    Add xwayland module
    
    Squashed and rebased from the xwayland-1.12 branch.  Contributions from
    
      Christopher James Halse Rogers <christopher.halse.rogers at canonical.com>
      Corentin Chary <corentin.chary at gmail.com>
      Daniel Stone <daniel at fooishbar.org>
      Kristian Høgsberg <krh at bitplanet.net>
      Robert Bragg <robert at linux.intel.com>
      Scott Moreau <oreaus at gmail.com>
      Tiago Vignatti <tiago.vignatti at intel.com>

diff --git a/configure.ac b/configure.ac
index 8f82386..fd4d466 100644
--- a/configure.ac
+++ b/configure.ac
@@ -629,6 +629,7 @@ AC_ARG_ENABLE(clientids,      AS_HELP_STRING([--disable-clientids], [Build Xorg
 AC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess], [Build Xorg with pciaccess library (default: enabled)]), [PCI=$enableval], [PCI=yes])
 AC_ARG_ENABLE(linux_acpi, AC_HELP_STRING([--disable-linux-acpi], [Disable building ACPI support on Linux (if available).]), [enable_linux_acpi=$enableval], [enable_linux_acpi=yes])
 AC_ARG_ENABLE(linux_apm, AC_HELP_STRING([--disable-linux-apm], [Disable building APM support on Linux (if available).]), [enable_linux_apm=$enableval], [enable_linux_apm=yes])
+AC_ARG_ENABLE(wayland,      AS_HELP_STRING([--disable-wayland], [Build Wayland extension (default: enabled)]), [WAYLAND=$enableval], [WAYLAND=yes])
 
 dnl DDXes.
 AC_ARG_ENABLE(xorg,    	      AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
@@ -1018,6 +1019,14 @@ fi
 if test "x$MITSHM" = xauto; then
 	MITSHM="$ac_cv_sysv_ipc"
 fi
+
+AM_CONDITIONAL(WAYLAND, [test "x$WAYLAND" = xyes])
+if test "x$WAYLAND" = xyes; then
+	AC_DEFINE(XORG_WAYLAND, 1, [Support wayland mode])
+	REQUIRED_MODULES="$REQUIRED_MODULES wayland-client"
+	WAYLAND_SCANNER_RULES(['$(top_srcdir)/hw/xfree86/xwayland'])
+fi
+
 AM_CONDITIONAL(MITSHM, [test "x$MITSHM" = xyes])
 if test "x$MITSHM" = xyes; then
 	AC_DEFINE(MITSHM, 1, [Support MIT-SHM extension])
@@ -1247,6 +1256,7 @@ if test "x$DRI" = xyes || test "x$DRI2" = xyes || test "x$DRI3" = xyes || test "
 		PKG_CHECK_MODULES([LIBDRM], $LIBDRM)
 	fi
 fi
+AM_CONDITIONAL(DRM, test "x$DRM" = xyes)
 
 if test "x$DRI2" = xyes; then
 	save_CFLAGS=$CFLAGS
@@ -2462,6 +2472,7 @@ hw/xfree86/dixmods/Makefile
 hw/xfree86/doc/Makefile
 hw/xfree86/dri/Makefile
 hw/xfree86/dri2/Makefile
+hw/xfree86/xwayland/Makefile
 hw/xfree86/exa/Makefile
 hw/xfree86/exa/man/Makefile
 hw/xfree86/fbdevhw/Makefile
diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index 15670d0..cf60196 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -14,6 +14,10 @@ DRI3_BUILDDIR = $(top_builddir)/dri3
 DRI3_LIB = $(DRI3_BUILDDIR)/libdri3.la
 endif
 
+if WAYLAND
+WAYLAND_SUBDIR = xwayland
+endif
+
 if XF86UTILS
 XF86UTILS_SUBDIR = utils
 endif
@@ -32,12 +36,12 @@ endif
 
 SUBDIRS = common ddc x86emu $(INT10_SUBDIR) os-support parser \
 	  ramdac $(VGAHW_SUBDIR) loader modes $(DRI_SUBDIR) \
-	  $(DRI2_SUBDIR) . $(VBE_SUBDIR) i2c dixmods \
+	  $(DRI2_SUBDIR)  $(WAYLAND_SUBDIR) . $(VBE_SUBDIR) i2c dixmods \
 	  fbdevhw shadowfb exa $(XF86UTILS_SUBDIR) doc man
 
 DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
                parser ramdac shadowfb vbe vgahw \
-               loader dixmods dri dri2 exa modes \
+               loader dixmods dri dri2 exa modes xwayland \
 	       utils doc man
 
 bin_PROGRAMS = Xorg
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index b5efc02..3b0bb89 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -118,7 +118,8 @@ static ModuleDefault ModuleDefaults[] = {
     {.name = "fb",.toLoad = TRUE,.load_opt = NULL},
     {.name = "shadow",.toLoad = TRUE,.load_opt = NULL},
 #endif
-    {.name = NULL,.toLoad = FALSE,.load_opt = NULL}
+    {.name = "xwayland",.toLoad = FALSE,.load_opt=NULL},
+    {.name = NULL,.toLoad = FALSE,.load_opt=NULL}
 };
 
 /* Forward declarations */
@@ -260,6 +261,17 @@ xf86ModulelistFromConfig(pointer **optlist)
         return NULL;
     }
 
+    /*
+     * Set the xwayland module to autoload if requested.
+     */
+    if (xorgWayland) {
+        for (i=0 ; ModuleDefaults[i].name != NULL ; i++) {
+            if (strcmp(ModuleDefaults[i].name, "xwayland") == 0) {
+                ModuleDefaults[i].toLoad = TRUE;
+            }
+        }
+    }
+
     if (xf86configptr->conf_modules) {
         /* Walk the disable list and let people know what we've parsed to
          * not be loaded 
@@ -863,6 +875,13 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
     }
     xf86Msg(from, "%sutomatically adding GPU devices\n",
             xf86Info.autoAddGPU ? "A" : "Not a");
+
+    /* FIXME: Do that at the right place (before xf86Msg). */
+    if (xorgWayland) {
+            xf86Info.autoAddDevices = FALSE;
+            xf86Info.autoEnableDevices = FALSE;
+    }
+
     /*
      * Set things up based on the config file information.  Some of these
      * settings may be overridden later when the command line options are
@@ -953,9 +972,10 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
     }
 #endif
 
-    /* if we're not hotplugging, force some input devices to exist */
-    xf86Info.forceInputDevices = !(xf86Info.autoAddDevices &&
-                                   xf86Info.autoEnableDevices);
+    if (xorgWayland) /* Don't force input devices */
+	xf86Info.forceInputDevices = FALSE;
+    else /* if we're not hotplugging, force some input devices to exist */
+	xf86Info.forceInputDevices = !(xf86Info.autoAddDevices && xf86Info.autoEnableDevices);
 
     /* when forcing input devices, we use kbd. otherwise evdev, so use the
      * evdev rules set. */
diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c
index 7df7a80..b41d2cc 100644
--- a/hw/xfree86/common/xf86Globals.c
+++ b/hw/xfree86/common/xf86Globals.c
@@ -204,3 +204,5 @@ Bool xf86VidModeAllowNonLocal = FALSE;
 #endif
 RootWinPropPtr *xf86RegisteredPropertiesTable = NULL;
 Bool xorgHWAccess = FALSE;
+Bool xorgWayland = FALSE;
+Bool xorgRootless = FALSE;
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 91ec4c8..98adaab 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -546,6 +546,13 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
 
             if (!(flags & HW_SKIP_CONSOLE))
                 xorgHWOpenConsole = TRUE;
+
+	    if (xorgWayland &&
+		(NEED_IO_ENABLED(flags) || !(flags & HW_SKIP_CONSOLE))) {
+
+		xf86DeleteDriver(i);
+		continue;
+	    }
         }
 
         if (xorgHWOpenConsole)
@@ -957,6 +964,9 @@ InitInput(int argc, char **argv)
 
     mieqInit();
 
+    if (xorgWayland)
+	return;
+
     /* Initialize all configured input devices */
     for (pInfo = xf86ConfigLayout.inputs; pInfo && *pInfo; pInfo++) {
         (*pInfo)->options =
@@ -1455,6 +1465,16 @@ ddxProcessArgument(int argc, char **argv, int i)
         return 1;
     }
 
+    if (!strcmp(argv[i], "-wayland")) {
+        xorgWayland = TRUE;
+        return 1;
+    }
+
+    if (!strcmp(argv[i], "-rootless")) {
+        xorgRootless = TRUE;
+        return 1;
+    }
+
     /* OS-specific processing */
     return xf86ProcessArgument(argc, argv, i);
 }
diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h
index 58cfe0a..3dd2697 100644
--- a/hw/xfree86/common/xf86Priv.h
+++ b/hw/xfree86/common/xf86Priv.h
@@ -91,6 +91,8 @@ extern _X_EXPORT int xf86NumScreens;
 extern _X_EXPORT const char *xf86VisualNames[];
 extern _X_EXPORT int xf86Verbose;       /* verbosity level */
 extern _X_EXPORT int xf86LogVerbose;    /* log file verbosity level */
+extern _X_EXPORT Bool xorgWayland;
+extern _X_EXPORT Bool xorgRootless;
 
 extern _X_EXPORT RootWinPropPtr *xf86RegisteredPropertiesTable;
 
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index efdcd66..483d630 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -1332,13 +1332,16 @@ DRI2Connect(ClientPtr client, ScreenPtr pScreen,
 }
 
 static int
-DRI2AuthMagic (ScreenPtr pScreen, uint32_t magic)
+DRI2AuthMagic (ClientPtr client, ScreenPtr pScreen, uint32_t magic)
 {
     DRI2ScreenPtr ds = DRI2GetScreen(pScreen);
     if (ds == NULL)
         return -EINVAL;
 
-    return (*ds->LegacyAuthMagic) (ds->fd, magic);
+    if (ds->LegacyAuthMagic2)
+        return (*ds->LegacyAuthMagic2) (pScreen, magic);
+    else
+        return (*ds->LegacyAuthMagic) (ds->fd, magic);
 }
 
 Bool
diff --git a/hw/xfree86/dri2/dri2.h b/hw/xfree86/dri2/dri2.h
index 38b4f58..ed67d01 100644
--- a/hw/xfree86/dri2/dri2.h
+++ b/hw/xfree86/dri2/dri2.h
@@ -207,7 +207,7 @@ typedef int (*DRI2GetParamProcPtr) (ClientPtr client,
 /**
  * Version of the DRI2InfoRec structure defined in this header
  */
-#define DRI2INFOREC_VERSION 9
+#define DRI2INFOREC_VERSION 10
 
 typedef struct {
     unsigned int version;       /**< Version of this struct */
diff --git a/hw/xfree86/xwayland/Makefile.am b/hw/xfree86/xwayland/Makefile.am
new file mode 100644
index 0000000..b739145
--- /dev/null
+++ b/hw/xfree86/xwayland/Makefile.am
@@ -0,0 +1,44 @@
+AM_CPPFLAGS =					\
+	$(XORG_INCS)				\
+	-I$(srcdir)/../ddc			\
+	-I$(srcdir)/../ramdac			\
+	-I$(srcdir)/../i2c			\
+	-I$(srcdir)/../parser			\
+	-I$(srcdir)/../modes
+
+libxwayland_la_LTLIBRARIES = libxwayland.la
+libxwayland_la_CFLAGS = \
+	-DHAVE_XORG_CONFIG_H \
+	@DIX_CFLAGS@ @XORG_CFLAGS@ @LIBDRM_CFLAGS@ \
+	-I$(top_srcdir)/hw/xfree86/common \
+	-I$(top_srcdir)/hw/xfree86/os-support/bus
+
+libxwayland_la_LDFLAGS = -module -avoid-version @LIBDRM_LIBS@ -lwayland-client
+libxwayland_ladir = $(moduledir)/extensions
+libxwayland_la_SOURCES =			\
+	xwayland.c				\
+	xwayland-input.c			\
+	xwayland-output.c			\
+	xwayland-cursor.c			\
+	xwayland-window.c			\
+	xwayland-private.h			\
+	drm-client-protocol.h			\
+	drm-protocol.c				\
+	xserver-client-protocol.h		\
+	xserver-protocol.c
+
+if DRM
+libxwayland_la_SOURCES += xwayland-drm.c
+endif
+
+sdk_HEADERS = xwayland.h
+
+BUILT_SOURCES =					\
+	drm-client-protocol.h			\
+	drm-protocol.c				\
+	xserver-client-protocol.h		\
+	xserver-protocol.c
+
+CLEANFILES = $(BUILT_SOURCES)
+
+ at wayland_scanner_rules@
diff --git a/hw/xfree86/xwayland/drm.xml b/hw/xfree86/xwayland/drm.xml
new file mode 100644
index 0000000..89fd8f0
--- /dev/null
+++ b/hw/xfree86/xwayland/drm.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="drm">
+
+  <copyright>
+    Copyright © 2008-2011 Kristian Høgsberg
+    Copyright © 2010-2011 Intel Corporation
+
+    Permission to use, copy, modify, distribute, and sell this
+    software and its documentation for any purpose is hereby granted
+    without fee, provided that\n the above copyright notice appear in
+    all copies and that both that copyright notice and this permission
+    notice appear in supporting documentation, and that the name of
+    the copyright holders not be used in advertising or publicity
+    pertaining to distribution of the software without specific,
+    written prior permission.  The copyright holders make no
+    representations about the suitability of this software for any
+    purpose.  It is provided "as is" without express or implied
+    warranty.
+
+    THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+    SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+    FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+    SPECIAL, INDIRECT OR CONSEQUENTIAL 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 PERFORMANCE OF
+    THIS SOFTWARE.
+  </copyright>
+
+  <!-- drm support. This object is created by the server and published
+       using the display's global event. -->
+  <interface name="wl_drm" version="1">
+    <enum name="error">
+      <entry name="authenticate_fail" value="0"/>
+      <entry name="invalid_format" value="1"/>
+      <entry name="invalid_name" value="2"/>
+    </enum>
+
+    <enum name="format">
+      <!-- The drm format codes match the #defines in drm_fourcc.h.
+           The formats actually supported by the compositor will be
+           reported by the format event. -->
+      <entry name="c8" value="0x20203843"/>
+      <entry name="rgb332" value="0x38424752"/>
+      <entry name="bgr233" value="0x38524742"/>
+      <entry name="xrgb4444" value="0x32315258"/>
+      <entry name="xbgr4444" value="0x32314258"/>
+      <entry name="rgbx4444" value="0x32315852"/>
+      <entry name="bgrx4444" value="0x32315842"/>
+      <entry name="argb4444" value="0x32315241"/>
+      <entry name="abgr4444" value="0x32314241"/>
+      <entry name="rgba4444" value="0x32314152"/>
+      <entry name="bgra4444" value="0x32314142"/>
+      <entry name="xrgb1555" value="0x35315258"/>
+      <entry name="xbgr1555" value="0x35314258"/>
+      <entry name="rgbx5551" value="0x35315852"/>
+      <entry name="bgrx5551" value="0x35315842"/>
+      <entry name="argb1555" value="0x35315241"/>
+      <entry name="abgr1555" value="0x35314241"/>
+      <entry name="rgba5551" value="0x35314152"/>
+      <entry name="bgra5551" value="0x35314142"/>
+      <entry name="rgb565" value="0x36314752"/>
+      <entry name="bgr565" value="0x36314742"/>
+      <entry name="rgb888" value="0x34324752"/>
+      <entry name="bgr888" value="0x34324742"/>
+      <entry name="xrgb8888" value="0x34325258"/>
+      <entry name="xbgr8888" value="0x34324258"/>
+      <entry name="rgbx8888" value="0x34325852"/>
+      <entry name="bgrx8888" value="0x34325842"/>
+      <entry name="argb8888" value="0x34325241"/>
+      <entry name="abgr8888" value="0x34324241"/>
+      <entry name="rgba8888" value="0x34324152"/>
+      <entry name="bgra8888" value="0x34324142"/>
+      <entry name="xrgb2101010" value="0x30335258"/>
+      <entry name="xbgr2101010" value="0x30334258"/>
+      <entry name="rgbx1010102" value="0x30335852"/>
+      <entry name="bgrx1010102" value="0x30335842"/>
+      <entry name="argb2101010" value="0x30335241"/>
+      <entry name="abgr2101010" value="0x30334241"/>
+      <entry name="rgba1010102" value="0x30334152"/>
+      <entry name="bgra1010102" value="0x30334142"/>
+      <entry name="yuyv" value="0x56595559"/>
+      <entry name="yvyu" value="0x55595659"/>
+      <entry name="uyvy" value="0x59565955"/>
+      <entry name="vyuy" value="0x59555956"/>
+      <entry name="ayuv" value="0x56555941"/>
+      <entry name="nv12" value="0x3231564e"/>
+      <entry name="nv21" value="0x3132564e"/>
+      <entry name="nv16" value="0x3631564e"/>
+      <entry name="nv61" value="0x3136564e"/>
+      <entry name="yuv410" value="0x39565559"/>
+      <entry name="yvu410" value="0x39555659"/>
+      <entry name="yuv411" value="0x31315559"/>
+      <entry name="yvu411" value="0x31315659"/>
+      <entry name="yuv420" value="0x32315559"/>
+      <entry name="yvu420" value="0x32315659"/>
+      <entry name="yuv422" value="0x36315559"/>
+      <entry name="yvu422" value="0x36315659"/>
+      <entry name="yuv444" value="0x34325559"/>
+      <entry name="yvu444" value="0x34325659"/>
+    </enum>
+
+    <!-- Call this request with the magic received from drmGetMagic().
+         It will be passed on to the drmAuthMagic() or
+         DRIAuthConnection() call.  This authentication must be
+         completed before create_buffer could be used. -->
+    <request name="authenticate">
+      <arg name="id" type="uint"/>
+    </request>
+
+    <!-- Create a wayland buffer for the named DRM buffer.  The DRM
+         surface must have a name using the flink ioctl -->
+    <request name="create_buffer">
+      <arg name="id" type="new_id" interface="wl_buffer"/>
+      <arg name="name" type="uint"/>
+      <arg name="width" type="int"/>
+      <arg name="height" type="int"/>
+      <arg name="stride" type="uint"/>
+      <arg name="format" type="uint"/>
+    </request>
+
+    <!-- Notification of the path of the drm device which is used by
+         the server.  The client should use this device for creating
+         local buffers.  Only buffers created from this device should
+         be be passed to the server using this drm object's
+         create_buffer request. -->
+    <event name="device">
+      <arg name="name" type="string"/>
+    </event>
+
+    <event name="format">
+      <arg name="format" type="uint"/>
+    </event>
+
+    <!-- Raised if the authenticate request succeeded -->
+    <event name="authenticated"/>
+  </interface>
+
+</protocol>
diff --git a/hw/xfree86/xwayland/xserver.xml b/hw/xfree86/xwayland/xserver.xml
new file mode 100644
index 0000000..9e25f5c
--- /dev/null
+++ b/hw/xfree86/xwayland/xserver.xml
@@ -0,0 +1,18 @@
+<protocol name="xserver">
+
+  <interface name="xserver" version="1">
+    <request name="set_window_id">
+      <arg name="surface" type="object" interface="wl_surface"/>
+      <arg name="id" type="uint"/>
+    </request>
+
+    <event name="client">
+      <arg name="fd" type="fd"/>
+    </event>
+
+    <event name="listen_socket">
+      <arg name="fd" type="fd"/>
+    </event>
+  </interface>
+
+</protocol>
diff --git a/hw/xfree86/xwayland/xwayland-cursor.c b/hw/xfree86/xwayland/xwayland-cursor.c
new file mode 100644
index 0000000..f8860bd
--- /dev/null
+++ b/hw/xfree86/xwayland/xwayland-cursor.c
@@ -0,0 +1,241 @@
+/*
+ * Copyright © 2011 Kristian Høgsberg
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of the
+ * copyright holders not be used in advertising or publicity
+ * pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL 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 PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include "xorg-config.h"
+#endif
+
+#include <unistd.h>
+#include <errno.h>
+#include <sys/mman.h>
+#include <wayland-client.h>
+
+#include <xorg-server.h>
+#include <cursorstr.h>
+#include <xf86Crtc.h>
+#include <mipointrst.h>
+
+#include "xwayland.h"
+#include "xwayland-private.h"
+#include "xserver-client-protocol.h"
+
+static DevPrivateKeyRec xwl_cursor_private_key;
+
+static void
+expand_source_and_mask(CursorPtr cursor, void *data)
+{
+    CARD32 *argb, *p, d, fg, bg;
+    CursorBitsPtr bits = cursor->bits;
+    int size;
+    int x, y, stride, i, bit;
+
+    size = bits->width * bits->height * 4;
+    argb = malloc(size);
+    if (argb == NULL)
+	return;
+
+    p = argb;
+    fg = ((cursor->foreRed & 0xff00) << 8) |
+	(cursor->foreGreen & 0xff00) | (cursor->foreGreen >> 8);
+    bg = ((cursor->backRed & 0xff00) << 8) |
+	(cursor->backGreen & 0xff00) | (cursor->backGreen >> 8);
+    stride = (bits->width / 8 + 3) & ~3;
+    for (y = 0; y < bits->height; y++)
+	for (x = 0; x < bits->width; x++) {
+	    i = y * stride + x / 8;
+	    bit = 1 << (x & 7);
+	    if (bits->source[i] & bit)
+		d = fg;
+	    else
+		d = bg;
+	    if (bits->mask[i] & bit)
+		d |= 0xff000000;
+	    else
+		d = 0x00000000;
+
+	    *p++ = d;
+	}
+
+    memcpy(data, argb, size);
+    free(argb);
+}
+
+static Bool
+xwl_realize_cursor(DeviceIntPtr device, ScreenPtr screen, CursorPtr cursor)
+{
+    struct xwl_screen *xwl_screen;
+    int size;
+    char filename[] = "/tmp/wayland-shm-XXXXXX";
+    int fd;
+    struct wl_shm_pool *pool;
+    struct wl_buffer *buffer;
+    void *data;
+
+    xwl_screen = xwl_screen_get(screen);
+    size = cursor->bits->width * cursor->bits->height * 4;
+
+    fd = mkstemp(filename);
+    if (fd < 0) {
+	ErrorF("open %s failed: %s", filename, strerror(errno));
+	return FALSE;
+    }
+    if (ftruncate(fd, size) < 0) {
+	ErrorF("ftruncate failed: %s", strerror(errno));
+	close(fd);
+	return FALSE;
+    }
+
+    data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+    unlink(filename);
+
+    if (data == MAP_FAILED) {
+	ErrorF("mmap failed: %s", strerror(errno));
+	close(fd);
+	return FALSE;
+    }
+
+    if (cursor->bits->argb)
+	memcpy(data, cursor->bits->argb, size);
+    else
+	expand_source_and_mask(cursor, data);
+    munmap(data, size);
+
+    pool = wl_shm_create_pool(xwl_screen->shm, fd, size);
+    close(fd);
+    buffer = wl_shm_pool_create_buffer(pool, 0,
+				  cursor->bits->width, cursor->bits->height,
+				  cursor->bits->width * 4,
+				  WL_SHM_FORMAT_ARGB8888);
+    wl_shm_pool_destroy(pool);
+
+    dixSetPrivate(&cursor->devPrivates, &xwl_cursor_private_key, buffer);
+
+    return TRUE;
+}
+
+static Bool
+xwl_unrealize_cursor(DeviceIntPtr device,
+			ScreenPtr screen, CursorPtr cursor)
+{
+    struct wl_buffer *buffer;
+
+    buffer = dixGetPrivate(&cursor->devPrivates, &xwl_cursor_private_key);
+    wl_buffer_destroy(buffer);
+
+    return TRUE;
+}
+
+void
+xwl_seat_set_cursor(struct xwl_seat *xwl_seat)
+{
+    struct wl_buffer *buffer;
+
+    if (!xwl_seat->x_cursor || !xwl_seat->wl_pointer)
+        return;
+
+    buffer = dixGetPrivate(&xwl_seat->x_cursor->devPrivates,
+                           &xwl_cursor_private_key);
+
+    wl_pointer_set_cursor(xwl_seat->wl_pointer,
+			  xwl_seat->pointer_enter_serial,
+			  xwl_seat->cursor,
+			  xwl_seat->x_cursor->bits->xhot,
+			  xwl_seat->x_cursor->bits->yhot);
+    wl_surface_attach(xwl_seat->cursor, buffer, 0, 0);
+    wl_surface_damage(xwl_seat->cursor, 0, 0,
+		      xwl_seat->x_cursor->bits->width,
+		      xwl_seat->x_cursor->bits->height);
+    wl_surface_commit(xwl_seat->cursor);
+}
+
+static void
+xwl_set_cursor(DeviceIntPtr device,
+	       ScreenPtr screen, CursorPtr cursor, int x, int y)
+{
+    struct xwl_screen *xwl_screen;
+    struct xwl_seat *xwl_seat;
+
+    xwl_screen = xwl_screen_get(screen);
+
+    if (!xwl_screen || xorg_list_is_empty(&xwl_screen->seat_list))
+	return;
+
+    xwl_seat = xorg_list_first_entry(&xwl_screen->seat_list,
+		                     struct xwl_seat, link);
+
+    xwl_seat->x_cursor = cursor;
+    xwl_seat_set_cursor(xwl_seat);
+}
+
+static void
+xwl_move_cursor(DeviceIntPtr device, ScreenPtr screen, int x, int y)
+{
+}
+
+static Bool
+xwl_device_cursor_initialize(DeviceIntPtr device, ScreenPtr screen)
+{
+    struct xwl_screen *xwl_screen;
+
+    xwl_screen = xwl_screen_get(screen);
+
+    return xwl_screen->sprite_funcs->DeviceCursorInitialize(device,
+							       screen);
+}
+
+static void
+xwl_device_cursor_cleanup(DeviceIntPtr device, ScreenPtr screen)
+{
+    struct xwl_screen *xwl_screen;
+
+    xwl_screen = xwl_screen_get(screen);
+
+    xwl_screen->sprite_funcs->DeviceCursorCleanup(device, screen);
+}
+
+static miPointerSpriteFuncRec xwl_pointer_sprite_funcs =
+{
+    xwl_realize_cursor,
+    xwl_unrealize_cursor,
+    xwl_set_cursor,
+    xwl_move_cursor,
+    xwl_device_cursor_initialize,
+    xwl_device_cursor_cleanup
+};
+
+int
+xwl_screen_init_cursor(struct xwl_screen *xwl_screen, ScreenPtr screen)
+{
+    miPointerScreenPtr pointer_priv;
+
+    if (!dixRegisterPrivateKey(&xwl_cursor_private_key, PRIVATE_CURSOR, 0))
+	return BadAlloc;
+
+    pointer_priv = dixLookupPrivate(&screen->devPrivates, miPointerScreenKey);
+    xwl_screen->sprite_funcs = pointer_priv->spriteFuncs;
+    pointer_priv->spriteFuncs = &xwl_pointer_sprite_funcs;
+
+    return Success;
+}
diff --git a/hw/xfree86/xwayland/xwayland-drm.c b/hw/xfree86/xwayland/xwayland-drm.c
new file mode 100644
index 0000000..ce56e4c
--- /dev/null
+++ b/hw/xfree86/xwayland/xwayland-drm.c
@@ -0,0 +1,235 @@
+/*
+ * Copyright © 2011 Kristian Høgsberg
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of the
+ * copyright holders not be used in advertising or publicity
+ * pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL 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 PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include "xorg-config.h"
+#endif
+
+#include <unistd.h>
+#include <fcntl.h>
+
+#include <xf86drm.h>
+#include <wayland-util.h>
+#include <wayland-client.h>
+#include <drm-client-protocol.h>
+
+#include <xf86Xinput.h>
+#include <xf86Crtc.h>
+#include <xf86str.h>
+#include <windowstr.h>
+#include <input.h>
+#include <inputstr.h>
+#include <exevents.h>
+
+#include "xwayland.h"
+#include "xwayland-private.h"
+#include "../dri2/dri2.h"
+
+struct xwl_auth_req {
+    struct xorg_list link;
+
+    ClientPtr client;
+    struct xwl_screen *xwl_screen;
+    uint32_t magic;
+};
+
+static void
+drm_handle_device (void *data, struct wl_drm *drm, const char *device)
+{
+    struct xwl_screen *xwl_screen = data;
+
+    xwl_screen->device_name = strdup (device);
+}
+
+static void
+drm_handle_format(void *data, struct wl_drm *wl_drm, uint32_t format)
+{
+}
+
+static void
+drm_handle_authenticated (void *data, struct wl_drm *drm)
+{
+    struct xwl_screen *xwl_screen = data;
+    struct xwl_auth_req *req;
+
+    xwl_screen->authenticated = 1;
+
+    /* it does one authentication transaction at a time, so if there's an
+     * element in the list, we call DRI2SendAuthReply for that client, remove
+     * the head and free the struct. If there are still elements in the list,
+     * it means that we have one or more clients waiting to be authenticated
+     * and we send out a wl_drm authenticate request for the first client in
+     * the list */
+    if (xorg_list_is_empty(&xwl_screen->authenticate_client_list))
+	return;
+
+    req = xorg_list_first_entry(&xwl_screen->authenticate_client_list,
+	                        struct xwl_auth_req, link);
+    DRI2SendAuthReply(req->client, TRUE);
+    AttendClient(req->client);
+    xorg_list_del(&req->link);
+    free(req);
+
+    xorg_list_for_each_entry(req, &xwl_screen->authenticate_client_list,
+	                     link) {
+	wl_drm_authenticate (xwl_screen->drm, req->magic);
+	return;
+    }
+}
+
+static const struct wl_drm_listener xwl_drm_listener =
+{
+    drm_handle_device,
+    drm_handle_format,
+    drm_handle_authenticated
+};
+
+static void
+drm_handler(void *data, struct wl_registry *registry, uint32_t id,
+	    const char *interface, uint32_t version)
+{
+    struct xwl_screen *xwl_screen = data;
+
+    if (strcmp (interface, "wl_drm") == 0) {
+	xwl_screen->drm = wl_registry_bind(xwl_screen->registry, id,
+                                           &wl_drm_interface, 1);
+	wl_drm_add_listener(xwl_screen->drm, &xwl_drm_listener, xwl_screen);
+    }
+}
+
+static const struct wl_registry_listener drm_listener = {
+    drm_handler,
+};
+
+int
+xwl_drm_pre_init(struct xwl_screen *xwl_screen)
+{
+    uint32_t magic;
+
+    xwl_screen->drm_registry = wl_display_get_registry(xwl_screen->display);
+    wl_registry_add_listener(xwl_screen->drm_registry, &drm_listener,
+                             xwl_screen);
+
+    /* Ensure drm_handler has seen all the interfaces */
+    wl_display_roundtrip(xwl_screen->display);
+    /* Ensure the xwl_drm_listener has seen the drm device, if any */
+    wl_display_roundtrip(xwl_screen->display);
+
+    ErrorF("wayland_drm_screen_init, device name %s\n",
+	   xwl_screen->device_name);
+
+    xwl_screen->drm_fd = open(xwl_screen->device_name, O_RDWR);
+    if (xwl_screen->drm_fd < 0) {
+	ErrorF("failed to open the drm fd\n");
+	return BadAccess;
+    }
+
+    if (drmGetMagic(xwl_screen->drm_fd, &magic)) {
+	ErrorF("failed to get drm magic");
+	return BadAccess;
+    }
+
+    wl_drm_authenticate(xwl_screen->drm, magic);
+
+    wl_display_roundtrip(xwl_screen->display);
+
+    ErrorF("opened drm fd: %d\n", xwl_screen->drm_fd);
+
+    if (!xwl_screen->authenticated) {
+	ErrorF("Failed to auth drm fd\n");
+	return BadAccess;
+    }
+
+    return Success;
+}
+
+Bool xwl_drm_initialised(struct xwl_screen *xwl_screen)
+{
+    return xwl_screen->authenticated;
+}
+
+int xwl_screen_get_drm_fd(struct xwl_screen *xwl_screen)
+{
+    return xwl_screen->drm_fd;
+}
+
+int xwl_drm_authenticate(ClientPtr client, struct xwl_screen *xwl_screen,
+			    uint32_t magic)
+{
+    struct xwl_auth_req *req;
+
+    if (!xwl_screen->drm)
+	return BadAccess;
+
+    req = malloc (sizeof *req);
+    if (req == NULL)
+	return BadAlloc;
+
+    req->client = client;
+    req->xwl_screen = xwl_screen;
+    req->magic = magic;
+
+    if (xorg_list_is_empty(&xwl_screen->authenticate_client_list))
+	wl_drm_authenticate (xwl_screen->drm, magic);
+
+    xorg_list_append(&req->link, &xwl_screen->authenticate_client_list);
+
+    IgnoreClient(req->client);
+    xwl_screen->authenticated = 0;
+
+    return Success;
+}
+
+
+int
+xwl_create_window_buffer_drm(struct xwl_window *xwl_window,
+			     PixmapPtr pixmap, uint32_t name)
+{
+    VisualID visual;
+    WindowPtr window = xwl_window->window;
+    ScreenPtr screen = window->drawable.pScreen;
+    uint32_t format;
+    int i;
+
+    visual = wVisual(window);
+    for (i = 0; i < screen->numVisuals; i++)
+	if (screen->visuals[i].vid == visual)
+	    break;
+
+    if (screen->visuals[i].nplanes == 32)
+	format = WL_DRM_FORMAT_ARGB8888;
+    else
+	format = WL_DRM_FORMAT_XRGB8888;
+
+    xwl_window->buffer =
+      wl_drm_create_buffer(xwl_window->xwl_screen->drm,
+			   name,
+			   pixmap->drawable.width,
+			   pixmap->drawable.height,
+			   pixmap->devKind,
+			   format);
+
+    return xwl_window->buffer ? Success : BadDrawable;
+}
diff --git a/hw/xfree86/xwayland/xwayland-input.c b/hw/xfree86/xwayland/xwayland-input.c
new file mode 100644
index 0000000..2f8e0c7
--- /dev/null
+++ b/hw/xfree86/xwayland/xwayland-input.c
@@ -0,0 +1,610 @@
+/*
+ * Copyright © 2008 Kristian Høgsberg
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of the
+ * copyright holders not be used in advertising or publicity
+ * pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL 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 PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include "xorg-config.h"
+#endif
+
+#include <errno.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <linux/input.h>
+#include <wayland-util.h>
+#include <wayland-client.h>
+#include <X11/extensions/compositeproto.h>
+#include <xserver-properties.h>
+
+#include <compositeext.h>
+#include <selection.h>
+#include <extinit.h>
+#include <exevents.h>
+#include <input.h>
+#include <inpututils.h>
+#include <inputstr.h>
+#include <exevents.h>
+#include <xkbsrv.h>
+#include <xf86Xinput.h>
+#include <xf86Crtc.h>
+#include <xf86str.h>
+#include <windowstr.h>
+#include <xf86Priv.h>
+#include <mipointrst.h>
+#include <sys/mman.h>
+
+#include "xwayland.h"
+#include "xwayland-private.h"
+#include "xserver-client-protocol.h"
+
+static void
+xwl_pointer_control(DeviceIntPtr device, PtrCtrl *ctrl)
+{
+	/* Nothing to do, dix handles all settings */
+}
+
+static int
+xwl_pointer_proc(DeviceIntPtr device, int what)
+{
+#define NBUTTONS 10
+#define NAXES 2
+    BYTE map[NBUTTONS + 1];
+    int i = 0;
+    Atom btn_labels[NBUTTONS] = {0};
+    Atom axes_labels[NAXES] = {0};
+
+    switch (what) {
+    case DEVICE_INIT:
+	device->public.on = FALSE;
+
+        for (i = 1; i <= NBUTTONS; i++)
+            map[i] = i;
+
+        btn_labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT);
+        btn_labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE);
+        btn_labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT);
+        btn_labels[3] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_UP);
+        btn_labels[4] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_DOWN);
+        btn_labels[5] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_LEFT);
+        btn_labels[6] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_RIGHT);
+        /* don't know about the rest */
+
+        axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_X);
+        axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_Y);
+
+        if (!InitValuatorClassDeviceStruct(device, 2, btn_labels,
+                                           GetMotionHistorySize(), Absolute))
+            return BadValue;
+
+        /* Valuators */
+        InitValuatorAxisStruct(device, 0, axes_labels[0],
+                               0, 0xFFFF, 10000, 0, 10000, Absolute);
+        InitValuatorAxisStruct(device, 1, axes_labels[1],
+                               0, 0xFFFF, 10000, 0, 10000, Absolute);
+
+        if (!InitPtrFeedbackClassDeviceStruct(device, xwl_pointer_control))
+            return BadValue;
+
+        if (!InitButtonClassDeviceStruct(device, 3, btn_labels, map))
+            return BadValue;
+
+        return Success;
+
+    case DEVICE_ON:
+	device->public.on = TRUE;
+        return Success;
+
+    case DEVICE_OFF:
+    case DEVICE_CLOSE:
+	device->public.on = FALSE;
+        return Success;
+    }
+
+    return BadMatch;
+
+#undef NBUTTONS
+#undef NAXES
+}
+
+static void
+xwl_keyboard_control(DeviceIntPtr device, KeybdCtrl *ctrl)
+{
+    /* FIXME: Set keyboard leds based on CAPSFLAG etc being set in
+     * ctrl->leds - needs private protocol. */
+}
+
+static int
+xwl_keyboard_proc(DeviceIntPtr device, int what)
+{
+    InputInfoPtr pInfo = device->public.devicePrivate;
+    struct xwl_seat *xwl_seat = pInfo->private;
+    int len;
+
+    switch (what) {
+    case DEVICE_INIT:
+	device->public.on = FALSE;
+	len = strnlen(xwl_seat->keymap, xwl_seat->keymap_size);
+        if (!InitKeyboardDeviceStructFromString(device, xwl_seat->keymap,
+						len,
+						NULL, xwl_keyboard_control))
+            return BadValue;
+
+        return Success;
+    case DEVICE_ON:
+	device->public.on = TRUE;
+        return Success;
+
+    case DEVICE_OFF:
+    case DEVICE_CLOSE:
+	device->public.on = FALSE;
+        return Success;
+    }
+
+    return BadMatch;
+}
+
+static void
+xwl_keyboard_uninit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
+{
+}
+
+static int
+xwl_keyboard_init(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
+{
+    pInfo->type_name = "xwayland-keyboard";
+    pInfo->device_control = xwl_keyboard_proc;
+    pInfo->read_input = NULL;
+    pInfo->control_proc = NULL;
+    pInfo->switch_mode = NULL;
+    pInfo->fd = -1;
+
+    return Success;
+}
+
+_X_EXPORT InputDriverRec xwl_keyboard_driver = {
+    1,
+    "xwayland-keyboard",
+    NULL,
+    xwl_keyboard_init,
+    xwl_keyboard_uninit,
+    NULL,
+};
+
+static void
+xwl_pointer_uninit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
+{
+}
+
+static int
+xwl_pointer_init(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
+{
+    pInfo->type_name = "xwayland-pointer";
+    pInfo->device_control = xwl_pointer_proc;
+    pInfo->read_input = NULL;
+    pInfo->control_proc = NULL;
+    pInfo->switch_mode = NULL;
+    pInfo->fd = -1;
+
+    return Success;
+}
+
+_X_EXPORT InputDriverRec xwl_pointer_driver = {
+    1,
+    "xwayland-pointer",
+    NULL,
+    xwl_pointer_init,
+    xwl_pointer_uninit,
+    NULL,
+};
+
+void
+xwl_input_teardown(pointer p)
+{
+}
+
+pointer
+xwl_input_setup(pointer module, pointer opts, int *errmaj, int *errmin)
+{
+    xf86AddInputDriver(&xwl_keyboard_driver, module, 0);
+    xf86AddInputDriver(&xwl_pointer_driver, module, 0);
+
+    return module;
+}
+
+static DeviceIntPtr
+device_added(struct xwl_seat *xwl_seat, const char *driver)
+{
+    DeviceIntPtr dev = NULL;
+    InputInfoPtr pInfo;
+    int rc;
+
+    pInfo = xf86AllocateInput();
+    if (!pInfo)
+        return NULL;
+
+    pInfo->driver = xstrdup(driver);
+
+    if (asprintf(&pInfo->name, "%s:%d", pInfo->driver, xwl_seat->id) == -1) {
+	free(pInfo);
+	return NULL;
+    }
+
+    pInfo->private = xwl_seat;
+
+    rc = xf86NewInputDevice(pInfo, &dev, 1);
+    if (rc != Success) {
+	free(pInfo);
+	return NULL;
+    }
+
+    LogMessage(X_INFO, "config/xwayland: Adding input device %s\n",
+	       pInfo->name);
+
+    return dev;
+}
+
+static void
+pointer_handle_enter(void *data, struct wl_pointer *pointer,
+		     uint32_t serial, struct wl_surface *surface,
+		     wl_fixed_t sx_w, wl_fixed_t sy_w)
+
+{
+    struct xwl_seat *xwl_seat = data;
+    DeviceIntPtr dev = xwl_seat->pointer;
+    int i;
+    int sx = wl_fixed_to_int(sx_w);
+    int sy = wl_fixed_to_int(sy_w);
+    ScreenPtr pScreen = xwl_seat->xwl_screen->screen;
+
+    xwl_seat->xwl_screen->serial = serial;
+    xwl_seat->pointer_enter_serial = serial;
+
+    xwl_seat->focus_window = wl_surface_get_user_data(surface);
+
+    (*pScreen->SetCursorPosition) (dev, pScreen, sx, sy, TRUE);
+
+    SetDeviceRedirectWindow(xwl_seat->pointer, xwl_seat->focus_window->window);
+
+    /* Ideally, X clients shouldn't see these button releases.  When
+     * the pointer leaves a window with buttons down, it means that
+     * the wayland compositor has grabbed the pointer.  The button
+     * release event is consumed by whatever grab in the compositor
+     * and won't be sent to clients (the X server is a client).
+     * However, we need to reset X's idea of which buttons are up and
+     * down, and they're all up (by definition) when the pointer
+     * enters a window.  We should figure out a way to swallow these
+     * events, perhaps using an X grab whenever the pointer is not in
+     * any X window, but for now just send the events. */
+    for (i = 0; i < dev->button->numButtons; i++)
+	if (BitIsOn(dev->button->down, i))
+		xf86PostButtonEvent(dev, TRUE, i, 0, 0, 0);
+
+    (*pScreen->DisplayCursor)(dev, pScreen, dev->spriteInfo->sprite->current);
+}
+
+static void
+pointer_handle_leave(void *data, struct wl_pointer *pointer,
+		     uint32_t serial, struct wl_surface *surface)
+{
+    struct xwl_seat *xwl_seat = data;
+    DeviceIntPtr dev = xwl_seat->pointer;
+    ScreenPtr pScreen = xwl_seat->xwl_screen->screen;
+
+    xwl_seat->xwl_screen->serial = serial;
+
+    xwl_seat->focus_window = NULL;
+    SetDeviceRedirectWindow(xwl_seat->pointer, PointerRootWin);
+    (*pScreen->DisplayCursor)(dev, pScreen, NullCursor);
+}
+
+static void
+pointer_handle_motion(void *data, struct wl_pointer *pointer,
+		      uint32_t time, wl_fixed_t sx_w, wl_fixed_t sy_w)
+{
+    struct xwl_seat *xwl_seat = data;
+    int32_t dx, dy;
+    int sx = wl_fixed_to_int(sx_w);
+    int sy = wl_fixed_to_int(sy_w);
+    ValuatorMask mask;
+
+    if (!xwl_seat->focus_window)
+	return ;
+
+    dx = xwl_seat->focus_window->window->drawable.x;
+    dy = xwl_seat->focus_window->window->drawable.y;
+
+    valuator_mask_zero(&mask);
+    valuator_mask_set(&mask, 0, dx + sx);
+    valuator_mask_set(&mask, 1, dy + sy);
+
+    QueuePointerEvents(xwl_seat->pointer, MotionNotify, 0,
+		       POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
+}
+
+static void
+pointer_handle_button(void *data, struct wl_pointer *pointer, uint32_t serial,
+		      uint32_t time, uint32_t button, uint32_t state)
+{
+    struct xwl_seat *xwl_seat = data;
+    int index;
+
+    xwl_seat->xwl_screen->serial = serial;
+
+    switch (button) {
+    case BTN_MIDDLE:
+	index = 2;
+	break;
+    case BTN_RIGHT:
+	index = 3;
+	break;
+    default:
+	index = button - BTN_LEFT + 1;
+	break;
+    }
+
+    xf86PostButtonEvent(xwl_seat->pointer, TRUE, index, state, 0, 0);
+}
+
+static void
+pointer_handle_axis(void *data, struct wl_pointer *pointer,
+		    uint32_t time, uint32_t axis, wl_fixed_t value)
+{
+    struct xwl_seat *xwl_seat = data;
+    int index, count;
+    int i, val;
+    const int divisor = 10;
+
+    if (time - xwl_seat->scroll_time > 2000) {
+	xwl_seat->vertical_scroll = 0;
+	xwl_seat->horizontal_scroll = 0;
+    }
+    xwl_seat->scroll_time = time;
+
+    /* FIXME: Need to do proper smooth scrolling here! */
+    switch (axis) {
+    case WL_POINTER_AXIS_VERTICAL_SCROLL:
+	xwl_seat->vertical_scroll += value / divisor;
+	val = wl_fixed_to_int(xwl_seat->vertical_scroll);
+	xwl_seat->vertical_scroll -= wl_fixed_from_int(val);
+
+	if (val <= -1)
+            index = 4;
+	else if (val >= 1)
+            index = 5;
+	else
+            return;
+	break;
+    case WL_POINTER_AXIS_HORIZONTAL_SCROLL:
+	xwl_seat->horizontal_scroll += value / divisor;
+	val = wl_fixed_to_int(xwl_seat->horizontal_scroll);
+	xwl_seat->horizontal_scroll -= wl_fixed_from_int(val);
+
+	if (val <= -1)
+            index = 6;
+	else if (val >= 1)
+            index = 7;
+	else
+            return;
+	break;
+    default:
+	return;
+    }
+
+    count = abs(val);
+    for (i = 0; i < count; i++) {
+	xf86PostButtonEvent(xwl_seat->pointer, TRUE, index, 1, 0, 0);
+	xf86PostButtonEvent(xwl_seat->pointer, TRUE, index, 0, 0, 0);
+    }
+}
+
+static const struct wl_pointer_listener pointer_listener = {
+	pointer_handle_enter,
+	pointer_handle_leave,
+	pointer_handle_motion,
+	pointer_handle_button,
+	pointer_handle_axis,
+};
+
+static void
+keyboard_handle_key(void *data, struct wl_keyboard *keyboard, uint32_t serial,
+		    uint32_t time, uint32_t key, uint32_t state)
+{
+    struct xwl_seat *xwl_seat = data;
+    uint32_t *k, *end;
+
+    xwl_seat->xwl_screen->serial = serial;
+
+    end = xwl_seat->keys.data + xwl_seat->keys.size;
+    for (k = xwl_seat->keys.data; k < end; k++) {
+	if (*k == key)
+	    *k = *--end;
+    }
+    xwl_seat->keys.size = (void *) end - xwl_seat->keys.data;
+    if (state) {
+	k = wl_array_add(&xwl_seat->keys, sizeof *k);
+	*k = key;
+    }
+
+    xf86PostKeyboardEvent(xwl_seat->keyboard, key + 8, state);
+}
+
+static void
+keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard,
+		       uint32_t format, int fd, uint32_t size)
+{
+    struct xwl_seat *xwl_seat = data;
+
+    xwl_seat->keymap_size = size;
+    xwl_seat->keymap = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
+    if (xwl_seat->keymap == MAP_FAILED)
+	;	/* wah wah */
+
+    close(fd);
+}
+
+static void
+keyboard_handle_enter(void *data, struct wl_keyboard *keyboard,
+		      uint32_t serial,
+		      struct wl_surface *surface, struct wl_array *keys)
+{
+    struct xwl_seat *xwl_seat = data;
+    uint32_t *k;
+
+    xwl_seat->xwl_screen->serial = serial;
+
+    wl_array_copy(&xwl_seat->keys, keys);
+    wl_array_for_each(k, &xwl_seat->keys)
+	xf86PostKeyboardEvent(xwl_seat->keyboard, *k + 8, 1);
+}
+
+static void
+keyboard_handle_leave(void *data, struct wl_keyboard *keyboard,
+		      uint32_t serial, struct wl_surface *surface)
+{
+    struct xwl_seat *xwl_seat = data;
+    uint32_t *k;
+
+    xwl_seat->xwl_screen->serial = serial;
+
+    wl_array_for_each(k, &xwl_seat->keys)
+	xf86PostKeyboardEvent(xwl_seat->keyboard, *k + 8, 0);
+}
+
+static void
+keyboard_handle_modifiers(void *data, struct wl_keyboard *keyboard,
+			  uint32_t serial, uint32_t mods_depressed,
+			  uint32_t mods_latched, uint32_t mods_locked,
+			  uint32_t group)
+{
+    /* FIXME: Need more server XKB API here. */
+}
+
+static const struct wl_keyboard_listener keyboard_listener = {
+	keyboard_handle_keymap,
+	keyboard_handle_enter,
+	keyboard_handle_leave,
+	keyboard_handle_key,
+	keyboard_handle_modifiers,
+};
+
+static void
+add_devices(void *data, struct wl_callback *callback, uint32_t time)
+{
+    struct xwl_seat *xwl_seat = data;
+
+    wl_callback_destroy(callback);
+
+    if (xwl_seat->wl_pointer)
+	xwl_seat->pointer = device_added(xwl_seat, "xwayland-pointer");
+    if (xwl_seat->wl_keyboard)
+	xwl_seat->keyboard = device_added(xwl_seat, "xwayland-keyboard");
+}
+
+static const struct wl_callback_listener add_devices_listener = {
+	add_devices
+};
+
+static void
+seat_handle_capabilities(void *data, struct wl_seat *seat,
+			 enum wl_seat_capability caps)
+{
+	struct xwl_seat *xwl_seat = data;
+	struct wl_callback *callback;
+
+	if (caps & WL_SEAT_CAPABILITY_POINTER) {
+	    xwl_seat->wl_pointer = wl_seat_get_pointer(seat);
+	    wl_pointer_add_listener(xwl_seat->wl_pointer,
+				    &pointer_listener, xwl_seat);
+            xwl_seat_set_cursor(xwl_seat);
+	}
+
+	if (caps & WL_SEAT_CAPABILITY_KEYBOARD) {
+	    xwl_seat->wl_keyboard = wl_seat_get_keyboard(seat);
+	    wl_keyboard_add_listener(xwl_seat->wl_keyboard,
+				     &keyboard_listener, xwl_seat);
+
+	}
+        /* FIXME: Touch ... */
+
+	/* Add devices after we've received keymaps. */
+	if (caps) {
+	    callback = wl_display_sync(xwl_seat->xwl_screen->display);
+	    wl_callback_add_listener(callback,
+				     &add_devices_listener, xwl_seat);
+	}
+}
+
+static const struct wl_seat_listener seat_listener = {
+	seat_handle_capabilities,
+};
+
+static void
+create_input_device(struct xwl_screen *xwl_screen, uint32_t id)
+{
+    struct xwl_seat *xwl_seat;
+
+    xwl_seat = calloc(sizeof *xwl_seat, 1);
+    if (xwl_seat == NULL) {
+	ErrorF("create_input ENOMEM");
+	return ;
+    }
+
+    xwl_seat->xwl_screen = xwl_screen;
+    xorg_list_add(&xwl_seat->link, &xwl_screen->seat_list);
+
+    xwl_seat->seat =
+	wl_registry_bind(xwl_screen->registry, id, &wl_seat_interface, 1);
+    xwl_seat->id = id;
+
+    xwl_seat->cursor = wl_compositor_create_surface(xwl_screen->compositor);
+    wl_seat_add_listener(xwl_seat->seat, &seat_listener, xwl_seat);
+    wl_array_init(&xwl_seat->keys);
+}
+
+static void
+input_handler(void *data, struct wl_registry *registry, uint32_t id,
+	      const char *interface, uint32_t version)
+{
+    struct xwl_screen *xwl_screen = data;
+
+    if (strcmp (interface, "wl_seat") == 0) {
+        create_input_device(xwl_screen, id);
+    } else if (strcmp(interface, "xserver") == 0) {
+        xwl_screen->xorg_server =
+            wl_registry_bind(registry, id, &xserver_interface, 1);
+        xserver_add_listener(xwl_screen->xorg_server, &xwl_server_listener,
+                             xwl_screen);
+    }
+}
+
+static const struct wl_registry_listener input_listener = {
+    input_handler,
+};
+
+void
+xwl_input_init(struct xwl_screen *xwl_screen)
+{
+    xwl_screen->input_registry = wl_display_get_registry(xwl_screen->display);
+    wl_registry_add_listener(xwl_screen->input_registry, &input_listener,
+                             xwl_screen);
+}
diff --git a/hw/xfree86/xwayland/xwayland-output.c b/hw/xfree86/xwayland/xwayland-output.c
new file mode 100644
index 0000000..8f087f6
--- /dev/null
+++ b/hw/xfree86/xwayland/xwayland-output.c
@@ -0,0 +1,309 @@
+/*
+ * Copyright © 2011 Intel Corporation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of the
+ * copyright holders not be used in advertising or publicity
+ * pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL 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 PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include "xorg-config.h"
+#endif
+
+#include <unistd.h>
+#include <errno.h>
+#include <sys/mman.h>
+#include <wayland-client.h>
+
+#include <xorg-server.h>
+#include <cursorstr.h>
+#include <xf86Crtc.h>
+#include <mipointrst.h>
+
+#include "xwayland.h"
+#include "xwayland-private.h"
+#include "xserver-client-protocol.h"
+
+static void
+crtc_dpms(xf86CrtcPtr drmmode_crtc, int mode)
+{
+}
+
+static Bool
+crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
+		    Rotation rotation, int x, int y)
+{
+	return TRUE;
+}
+
+static void
+crtc_set_cursor_colors (xf86CrtcPtr crtc, int bg, int fg)
+{
+}
+
+static void
+crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
+{
+}
+
+static void
+crtc_show_cursor (xf86CrtcPtr crtc)
+{
+}
+
+static void
+crtc_hide_cursor (xf86CrtcPtr crtc)
+{
+}
+
+static void
+crtc_load_cursor_argb (xf86CrtcPtr crtc, CARD32 *image)
+{
+}
+
+static PixmapPtr
+crtc_shadow_create(xf86CrtcPtr crtc, void *data, int width, int height)
+{
+	return NULL;
+}
+
+static void *
+crtc_shadow_allocate(xf86CrtcPtr crtc, int width, int height)
+{
+	return NULL;
+}
+
+static void
+crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr rotate_pixmap, void *data)
+{
+}
+
+static const xf86CrtcFuncsRec crtc_funcs = {
+    .dpms                = crtc_dpms,
+    .set_mode_major      = crtc_set_mode_major,
+    .set_cursor_colors   = crtc_set_cursor_colors,
+    .set_cursor_position = crtc_set_cursor_position,
+    .show_cursor         = crtc_show_cursor,
+    .hide_cursor         = crtc_hide_cursor,
+    .load_cursor_argb    = crtc_load_cursor_argb,
+    .shadow_create       = crtc_shadow_create,
+    .shadow_allocate     = crtc_shadow_allocate,
+    .shadow_destroy      = crtc_shadow_destroy,
+    .destroy		 = NULL, /* XXX */
+};
+
+static void
+output_dpms(xf86OutputPtr output, int mode)
+{
+	return;
+}
+
+static xf86OutputStatus
+output_detect(xf86OutputPtr output)
+{
+	return XF86OutputStatusConnected;
+}
+
+static Bool
+output_mode_valid(xf86OutputPtr output, DisplayModePtr pModes)
+{
+	return MODE_OK;
+}
+
+static DisplayModePtr
+output_get_modes(xf86OutputPtr xf86output)
+{
+    struct xwl_output *output = xf86output->driver_private;
+    struct monitor_ranges *ranges;
+    DisplayModePtr modes;
+
+    modes = xf86CVTMode(output->width, output->height, 60, TRUE, FALSE);
+    output->xf86monitor.det_mon[0].type = DS_RANGES;
+    ranges = &output->xf86monitor.det_mon[0].section.ranges;
+    ranges->min_h = modes->HSync - 10;
+    ranges->max_h = modes->HSync + 10;
+    ranges->min_v = modes->VRefresh - 10;
+    ranges->max_v = modes->VRefresh + 10;
+    ranges->max_clock = modes->Clock + 100;
+    output->xf86monitor.det_mon[1].type = DT;
+    output->xf86monitor.det_mon[2].type = DT;
+    output->xf86monitor.det_mon[3].type = DT;
+    output->xf86monitor.no_sections = 0;
+
+    xf86output->MonInfo = &output->xf86monitor;
+
+    return modes;
+}
+
+static void
+output_destroy(xf86OutputPtr xf86output)
+{
+    struct xwl_output *output = xf86output->driver_private;
+
+    free(output);
+}
+
+static const xf86OutputFuncsRec output_funcs = {
+    .dpms	= output_dpms,
+    .detect	= output_detect,
+    .mode_valid	= output_mode_valid,
+    .get_modes	= output_get_modes,
+    .destroy	= output_destroy
+};
+
+struct xwl_output *
+xwl_output_create(struct xwl_screen *xwl_screen)
+{
+    struct xwl_output *xwl_output;
+    xf86OutputPtr xf86output;
+    xf86CrtcPtr xf86crtc;
+
+    xwl_output = calloc(sizeof *xwl_output, 1);
+    if (xwl_output == NULL) {
+	ErrorF("create_output ENOMEM");
+	return NULL;
+    }
+
+    xwl_output->xwl_screen = xwl_screen;
+
+    xf86output = xf86OutputCreate(xwl_screen->scrninfo,
+				  &output_funcs, "XWAYLAND-1");
+    xf86output->driver_private = xwl_output;
+    xf86output->possible_crtcs = 1;
+    xf86output->possible_clones = 1;
+
+    xf86crtc = xf86CrtcCreate(xwl_screen->scrninfo, &crtc_funcs);
+    xf86crtc->driver_private = xwl_output;
+
+    xwl_output->xf86output = xf86output;
+    xwl_output->xf86crtc = xf86crtc;
+
+    return xwl_output;
+}
+
+static Bool
+resize(ScrnInfoPtr scrn, int width, int height)
+{
+    if (scrn->virtualX == width && scrn->virtualY == height)
+	return TRUE;
+    /* We don't handle resize at all, we must match the compositor size */
+    return FALSE;
+}
+
+static const xf86CrtcConfigFuncsRec config_funcs = {
+    resize
+};
+
+static void
+display_handle_geometry(void *data, struct wl_output *wl_output, int x, int y,
+			int physical_width, int physical_height, int subpixel,
+			const char *make, const char *model, int transform)
+{
+    struct xwl_output *xwl_output = data;
+    struct xwl_screen *xwl_screen = xwl_output->xwl_screen;
+
+    xwl_output->xf86output->mm_width = physical_width;
+    xwl_output->xf86output->mm_height = physical_height;
+
+    switch (subpixel) {
+    case WL_OUTPUT_SUBPIXEL_UNKNOWN:
+	xwl_output->xf86output->subpixel_order = SubPixelUnknown;
+	break;
+    case WL_OUTPUT_SUBPIXEL_NONE:
+	xwl_output->xf86output->subpixel_order = SubPixelNone;
+	break;
+    case WL_OUTPUT_SUBPIXEL_HORIZONTAL_RGB:
+	xwl_output->xf86output->subpixel_order = SubPixelHorizontalRGB;
+	break;
+    case WL_OUTPUT_SUBPIXEL_HORIZONTAL_BGR:
+	xwl_output->xf86output->subpixel_order = SubPixelHorizontalBGR;
+	break;
+    case WL_OUTPUT_SUBPIXEL_VERTICAL_RGB:
+	xwl_output->xf86output->subpixel_order = SubPixelVerticalRGB;
+	break;
+    case WL_OUTPUT_SUBPIXEL_VERTICAL_BGR:
+	xwl_output->xf86output->subpixel_order = SubPixelVerticalBGR;
+	break;
+    }
+
+    xwl_output->x = x;
+    xwl_output->y = y;
+
+    xwl_screen->xwl_output = xwl_output;
+}
+
+static void
+display_handle_mode(void *data, struct wl_output *wl_output, uint32_t flags,
+		    int width, int height, int refresh)
+{
+    struct xwl_output *xwl_output = data;
+
+    if (flags & WL_OUTPUT_MODE_CURRENT) {
+	xwl_output->width = width;
+	xwl_output->height = height;
+    }
+}
+
+static const struct wl_output_listener output_listener = {
+    display_handle_geometry,
+    display_handle_mode
+};
+
+static void
+global_handler(void *data, struct wl_registry *registry, uint32_t id,
+	       const char *interface, uint32_t version)
+{
+    struct xwl_screen *xwl_screen = data;
+    struct xwl_output *xwl_output;
+
+    if (strcmp (interface, "wl_output") == 0) {
+	xwl_output = xwl_output_create(xwl_screen);
+	xwl_output->output = wl_registry_bind(registry, id,
+	                                      &wl_output_interface, 1);
+	wl_output_add_listener(xwl_output->output,
+			       &output_listener, xwl_output);
+    }
+}
+
+static const struct wl_registry_listener global_listener = {
+    global_handler,
+};
+
+void
+xwayland_screen_preinit_output(struct xwl_screen *xwl_screen, ScrnInfoPtr scrninfo)
+{
+    int ret;
+
+    xf86CrtcConfigInit(scrninfo, &config_funcs);
+
+    xf86CrtcSetSizeRange(scrninfo, 320, 200, 8192, 8192);
+
+    xwl_screen->output_registry = wl_display_get_registry(xwl_screen->display);
+    wl_registry_add_listener(xwl_screen->output_registry, &global_listener,
+                             xwl_screen);
+
+    while (!xwl_screen->xwl_output) {
+        ret = wl_display_roundtrip(xwl_screen->display);
+        if (ret == -1)
+            FatalError("failed to dispatch Wayland events: %s\n", strerror(errno));
+    }
+
+    xf86InitialConfiguration(scrninfo, TRUE);
+}
diff --git a/hw/xfree86/xwayland/xwayland-private.h b/hw/xfree86/xwayland/xwayland-private.h
new file mode 100644
index 0000000..e427316
--- /dev/null
+++ b/hw/xfree86/xwayland/xwayland-private.h
@@ -0,0 +1,132 @@
+/*
+ * Copyright © 2010 Kristian Høgsberg
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of the
+ * copyright holders not be used in advertising or publicity
+ * pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL 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 PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#ifndef _XWAYLAND_PRIVATE_H_
+#define _XWAYLAND_PRIVATE_H_
+
+struct xwl_window {
+    struct xwl_screen		*xwl_screen;
+    struct wl_surface		*surface;
+    struct wl_buffer		*buffer;
+    WindowPtr			 window;
+    DamagePtr			 damage;
+    struct xorg_list		 link;
+    struct xorg_list		 link_damage;
+};
+
+struct xwl_output;
+
+struct xwl_screen {
+    struct xwl_driver		*driver;
+    ScreenPtr			 screen;
+    ScrnInfoPtr			 scrninfo;
+    int				 drm_fd;
+    int				 wayland_fd;
+    struct xwl_output		*xwl_output;
+    struct wl_display		*display;
+    struct wl_registry          *registry;
+    struct wl_registry          *drm_registry;
+    struct wl_registry          *input_registry;
+    struct wl_registry          *output_registry;
+    struct wl_compositor	*compositor;
+    struct wl_drm		*drm;
+    struct wl_shm		*shm;
+    struct xserver		*xorg_server;
+    uint32_t			 mask;
+    uint32_t			 flags;
+    char			*device_name;
+    uint32_t			 authenticated;
+    struct xorg_list		 seat_list;
+    struct xorg_list		 damage_window_list;
+    struct xorg_list		 window_list;
+    struct xorg_list		 authenticate_client_list;
+    uint32_t			 serial;
+
+    CreateWindowProcPtr		 CreateWindow;
+    DestroyWindowProcPtr	 DestroyWindow;
+    RealizeWindowProcPtr	 RealizeWindow;
+    UnrealizeWindowProcPtr	 UnrealizeWindow;
+    SetWindowPixmapProcPtr	 SetWindowPixmap;
+    MoveWindowProcPtr		 MoveWindow;
+    miPointerSpriteFuncPtr	 sprite_funcs;
+};
+
+struct xwl_output {
+    struct wl_output		*output;
+    struct xwl_screen		*xwl_screen;
+    int32_t			 x, y, width, height;
+    xf86Monitor			 xf86monitor;
+    xf86OutputPtr		 xf86output;
+    xf86CrtcPtr			 xf86crtc;
+};
+
+
+#define MODIFIER_META 0x01
+
+struct xwl_seat {
+    DeviceIntPtr		 pointer;
+    DeviceIntPtr		 keyboard;
+    struct xwl_screen		*xwl_screen;
+    struct wl_seat		*seat;
+    struct wl_pointer		*wl_pointer;
+    struct wl_keyboard		*wl_keyboard;
+    struct wl_array		 keys;
+    struct wl_surface		*cursor;
+    struct xwl_window		*focus_window;
+    uint32_t			 id;
+    uint32_t			 pointer_enter_serial;
+    struct xorg_list		 link;
+    CursorPtr                    x_cursor;
+
+    wl_fixed_t			 horizontal_scroll;
+    wl_fixed_t			 vertical_scroll;
+    uint32_t			 scroll_time;
+
+    size_t			 keymap_size;
+    char			*keymap;
+
+};
+
+
+struct xwl_screen *xwl_screen_get(ScreenPtr screen);
+
+void xwayland_screen_preinit_output(struct xwl_screen *xwl_screen, ScrnInfoPtr scrninfo);
+
+int xwl_screen_init_cursor(struct xwl_screen *xwl_screen, ScreenPtr screen);
+int xwl_screen_init_window(struct xwl_screen *xwl_screen, ScreenPtr screen);
+
+struct xwl_output *xwl_output_create(struct xwl_screen *xwl_screen);
+
+void xwl_input_teardown(pointer p);
+pointer xwl_input_setup(pointer module, pointer opts, int *errmaj, int *errmin);
+void xwl_input_init(struct xwl_screen *screen);
+
+Bool xwl_drm_initialised(struct xwl_screen *screen);
+
+void xwl_seat_set_cursor(struct xwl_seat *xwl_seat);
+
+extern const struct xserver_listener xwl_server_listener;
+
+#endif /* _XWAYLAND_PRIVATE_H_ */
diff --git a/hw/xfree86/xwayland/xwayland-window.c b/hw/xfree86/xwayland/xwayland-window.c
new file mode 100644
index 0000000..d56e0d0
--- /dev/null
+++ b/hw/xfree86/xwayland/xwayland-window.c
@@ -0,0 +1,317 @@
+/*
+ * Copyright © 2011 Intel Corporation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of the
+ * copyright holders not be used in advertising or publicity
+ * pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL 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 PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include "xorg-config.h"
+#endif
+
+#include <unistd.h>
+#include <errno.h>
+#include <sys/mman.h>
+#include <wayland-client.h>
+#include <X11/extensions/compositeproto.h>
+
+#include <xorg-server.h>
+#include <xf86Crtc.h>
+#include <selection.h>
+#include <compositeext.h>
+#include <exevents.h>
+
+#include "xwayland.h"
+#include "xwayland-private.h"
+#include "xserver-client-protocol.h"
+
+static DevPrivateKeyRec xwl_window_private_key;
+
+static void
+free_pixmap(void *data, struct wl_callback *callback, uint32_t time)
+{
+    PixmapPtr pixmap = data;
+    ScreenPtr screen = pixmap->drawable.pScreen;
+
+    (*screen->DestroyPixmap)(pixmap);
+    wl_callback_destroy(callback);
+}
+
+static const struct wl_callback_listener free_pixmap_listener = {
+	free_pixmap,
+};
+
+static void
+xwl_window_attach(struct xwl_window *xwl_window, PixmapPtr pixmap)
+{
+    struct xwl_screen *xwl_screen = xwl_window->xwl_screen;
+    struct wl_callback *callback;
+
+    /* We can safely destroy the buffer because we only use one buffer
+     * per surface in xwayland model */
+    if (xwl_window->buffer)
+        wl_buffer_destroy(xwl_window->buffer);
+
+    xwl_screen->driver->create_window_buffer(xwl_window, pixmap);
+
+    if (!xwl_window->buffer) {
+        ErrorF("failed to create buffer\n");
+	return;
+    }
+
+    wl_surface_attach(xwl_window->surface, xwl_window->buffer, 0, 0);
+    wl_surface_damage(xwl_window->surface, 0, 0,
+		      pixmap->drawable.width,
+		      pixmap->drawable.height);
+    wl_surface_commit(xwl_window->surface);
+
+    callback = wl_display_sync(xwl_screen->display);
+    wl_callback_add_listener(callback, &free_pixmap_listener, pixmap);
+    pixmap->refcnt++;
+}
+
+static Bool
+xwl_create_window(WindowPtr window)
+{
+    ScreenPtr screen = window->drawable.pScreen;
+    struct xwl_screen *xwl_screen;
+    char buffer[32];
+    int len, rc;
+    Atom name;
+    Bool ret;
+
+    xwl_screen = xwl_screen_get(screen);
+
+    screen->CreateWindow = xwl_screen->CreateWindow;
+    ret = (*screen->CreateWindow)(window);
+    xwl_screen->CreateWindow = screen->CreateWindow;
+    screen->CreateWindow = xwl_create_window;
+
+    if (!(xwl_screen->flags & XWL_FLAGS_ROOTLESS) ||
+	window->parent != NULL)
+	return ret;
+
+    CompositeRedirectSubwindows(window, CompositeRedirectManual);
+
+    return ret;
+}
+
+static int
+xwl_destroy_window (WindowPtr window)
+{
+    ScreenPtr screen = window->drawable.pScreen;
+    struct xwl_screen *xwl_screen;
+    Bool ret;
+
+    if (window->parent == NULL)
+	CompositeUnRedirectSubwindows (window, CompositeRedirectManual);
+
+    xwl_screen = xwl_screen_get(screen);
+
+    screen->DestroyWindow = xwl_screen->DestroyWindow;
+    ret = (*screen->DestroyWindow)(window);
+    xwl_screen->DestroyWindow = screen->DestroyWindow;
+    screen->DestroyWindow = xwl_destroy_window;
+
+    return ret;
+}
+
+static void
+damage_report(DamagePtr pDamage, RegionPtr pRegion, void *data)
+{
+    struct xwl_window *xwl_window = data;
+    struct xwl_screen *xwl_screen = xwl_window->xwl_screen;
+
+    xorg_list_add(&xwl_window->link_damage, &xwl_screen->damage_window_list);
+}
+
+static void
+damage_destroy(DamagePtr pDamage, void *data)
+{
+}
+
+static Bool
+xwl_realize_window(WindowPtr window)
+{
+    ScreenPtr screen = window->drawable.pScreen;
+    struct xwl_screen *xwl_screen;
+    struct xwl_window *xwl_window;
+    Bool ret;
+
+    xwl_screen = xwl_screen_get(screen);
+
+    screen->RealizeWindow = xwl_screen->RealizeWindow;
+    ret = (*screen->RealizeWindow)(window);
+    xwl_screen->RealizeWindow = xwl_screen->RealizeWindow;
+    screen->RealizeWindow = xwl_realize_window;
+
+    if (xwl_screen->flags & XWL_FLAGS_ROOTLESS) {
+	if (window->redirectDraw != RedirectDrawManual)
+	    return ret;
+    } else {
+	if (window->parent)
+	    return ret;
+    }
+
+    xwl_window = calloc(sizeof *xwl_window, 1);
+    xwl_window->xwl_screen = xwl_screen;
+    xwl_window->window = window;
+    xwl_window->surface =
+	wl_compositor_create_surface(xwl_screen->compositor);
+    if (xwl_window->surface == NULL) {
+	ErrorF("wl_display_create_surface failed\n");
+	return FALSE;
+    }
+
+    if (xwl_screen->xorg_server)
+	xserver_set_window_id(xwl_screen->xorg_server,
+			      xwl_window->surface, window->drawable.id);
+
+    wl_surface_set_user_data(xwl_window->surface, xwl_window);
+    xwl_window_attach(xwl_window, (*screen->GetWindowPixmap)(window));
+
+    dixSetPrivate(&window->devPrivates,
+		  &xwl_window_private_key, xwl_window);
+
+    xwl_window->damage =
+	DamageCreate(damage_report, damage_destroy, DamageReportNonEmpty,
+		     FALSE, screen, xwl_window);
+    DamageRegister(&window->drawable, xwl_window->damage);
+    DamageSetReportAfterOp(xwl_window->damage, TRUE);
+
+    xorg_list_add(&xwl_window->link, &xwl_screen->window_list);
+    xorg_list_init(&xwl_window->link_damage);
+
+    return ret;
+}
+
+static Bool
+xwl_unrealize_window(WindowPtr window)
+{
+    ScreenPtr screen = window->drawable.pScreen;
+    struct xwl_screen *xwl_screen;
+    struct xwl_window *xwl_window;
+    struct xwl_seat *xwl_seat;
+    Bool ret;
+
+    xwl_screen = xwl_screen_get(screen);
+
+    xorg_list_for_each_entry(xwl_seat,
+			     &xwl_screen->seat_list, link) {
+	if (!xwl_seat->focus_window)
+	    continue ;
+	if (xwl_seat->focus_window->window == window) {
+	    xwl_seat->focus_window = NULL;
+	    SetDeviceRedirectWindow(xwl_seat->pointer, PointerRootWin);
+	}
+    }
+
+    screen->UnrealizeWindow = xwl_screen->UnrealizeWindow;
+    ret = (*screen->UnrealizeWindow)(window);
+    xwl_screen->UnrealizeWindow = screen->UnrealizeWindow;
+    screen->UnrealizeWindow = xwl_unrealize_window;
+
+    xwl_window =
+	dixLookupPrivate(&window->devPrivates, &xwl_window_private_key);
+    if (!xwl_window)
+	return ret;
+
+    if (xwl_window->buffer)
+	wl_buffer_destroy(xwl_window->buffer);
+    wl_surface_destroy(xwl_window->surface);
+    xorg_list_del(&xwl_window->link);
+    if (RegionNotEmpty(DamageRegion(xwl_window->damage)))
+	xorg_list_del(&xwl_window->link_damage);
+    DamageUnregister(&window->drawable, xwl_window->damage);
+    DamageDestroy(xwl_window->damage);
+    free(xwl_window);
+    dixSetPrivate(&window->devPrivates, &xwl_window_private_key, NULL);
+
+    return ret;
+}
+
+static void
+xwl_set_window_pixmap(WindowPtr window, PixmapPtr pixmap)
+{
+    ScreenPtr screen = window->drawable.pScreen;
+    struct xwl_screen *xwl_screen;
+    struct xwl_window *xwl_window;
+
+    xwl_screen = xwl_screen_get(screen);
+
+    screen->SetWindowPixmap = xwl_screen->SetWindowPixmap;
+    (*screen->SetWindowPixmap)(window, pixmap);
+    xwl_screen->SetWindowPixmap = screen->SetWindowPixmap;
+    screen->SetWindowPixmap = xwl_set_window_pixmap;
+
+    xwl_window =
+	dixLookupPrivate(&window->devPrivates, &xwl_window_private_key);
+    if (xwl_window)
+	xwl_window_attach(xwl_window, pixmap);
+}
+
+static void
+xwl_move_window(WindowPtr window, int x, int y,
+		   WindowPtr sibling, VTKind kind)
+{
+    ScreenPtr screen = window->drawable.pScreen;
+    struct xwl_screen *xwl_screen;
+    struct xwl_window *xwl_window;
+
+    xwl_screen = xwl_screen_get(screen);
+
+    screen->MoveWindow = xwl_screen->MoveWindow;
+    (*screen->MoveWindow)(window, x, y, sibling, kind);
+    xwl_screen->MoveWindow = screen->MoveWindow;
+    screen->MoveWindow = xwl_move_window;
+
+    xwl_window =
+	dixLookupPrivate(&window->devPrivates, &xwl_window_private_key);
+    if (xwl_window == NULL)
+	return;
+}
+
+int
+xwl_screen_init_window(struct xwl_screen *xwl_screen, ScreenPtr screen)
+{
+    if (!dixRegisterPrivateKey(&xwl_window_private_key, PRIVATE_WINDOW, 0))
+	return BadAlloc;
+
+    xwl_screen->CreateWindow = screen->CreateWindow;
+    screen->CreateWindow = xwl_create_window;
+
+    xwl_screen->DestroyWindow = screen->DestroyWindow;
+    screen->DestroyWindow = xwl_destroy_window;
+
+    xwl_screen->RealizeWindow = screen->RealizeWindow;
+    screen->RealizeWindow = xwl_realize_window;
+
+    xwl_screen->UnrealizeWindow = screen->UnrealizeWindow;
+    screen->UnrealizeWindow = xwl_unrealize_window;
+
+    xwl_screen->SetWindowPixmap = screen->SetWindowPixmap;
+    screen->SetWindowPixmap = xwl_set_window_pixmap;
+
+    xwl_screen->MoveWindow = screen->MoveWindow;
+    screen->MoveWindow = xwl_move_window;
+
+    return Success;
+}
diff --git a/hw/xfree86/xwayland/xwayland.c b/hw/xfree86/xwayland/xwayland.c
new file mode 100644
index 0000000..f59bfe4
--- /dev/null
+++ b/hw/xfree86/xwayland/xwayland.c
@@ -0,0 +1,392 @@
+/*
+ * Copyright © 2008-2011 Kristian Høgsberg
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of the
+ * copyright holders not be used in advertising or publicity
+ * pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL 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 PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include "xorg-config.h"
+#endif
+
+#include <stdint.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <wayland-util.h>
+#include <wayland-client.h>
+
+#include <xorg-server.h>
+#include <extinit.h>
+
+#include <xf86Xinput.h>
+#include <xf86Crtc.h>
+#include <xf86Priv.h>
+#include <os.h>
+#include <selection.h>
+
+#include "xwayland.h"
+#include "xwayland-private.h"
+#include "xserver-client-protocol.h"
+
+/*
+ * TODO:
+ *  - lose X kb focus when wayland surface loses it
+ *  - active grabs, grab owner crack
+ */
+
+static DevPrivateKeyRec xwl_screen_private_key;
+static Atom xdnd_atom;
+
+static void
+xserver_client(void *data, struct xserver *xserver, int fd)
+{
+    AddClientOnOpenFD(fd);
+}
+
+static void
+xserver_listen_socket(void *data, struct xserver *xserver, int fd)
+{
+    ListenOnOpenFD(fd, TRUE);
+}
+
+const struct xserver_listener xwl_server_listener = {
+    xserver_client,
+    xserver_listen_socket
+};
+
+static void
+xwl_input_delayed_init(void *data, struct wl_callback *callback, uint32_t time)
+{
+    struct xwl_screen *xwl_screen = data;
+
+    ErrorF("xwl_input_delayed_init\n");
+
+    wl_callback_destroy(callback);
+    xwl_input_init(xwl_screen);
+}
+
+static const struct wl_callback_listener delayed_init_listner = {
+	xwl_input_delayed_init
+};
+
+static void
+registry_global(void *data, struct wl_registry *registry, uint32_t id,
+	        const char *interface, uint32_t version)
+{
+    struct xwl_screen *xwl_screen = data;
+
+    if (strcmp (interface, "wl_compositor") == 0) {
+	xwl_screen->compositor =
+            wl_registry_bind(registry, id, &wl_compositor_interface, 1);
+    } else if (strcmp(interface, "wl_shm") == 0) {
+        xwl_screen->shm =
+            wl_registry_bind(registry, id, &wl_shm_interface, 1);
+    }
+}
+
+static const struct wl_registry_listener registry_listener = {
+    registry_global,
+};
+
+static void
+wakeup_handler(pointer data, int err, pointer read_mask)
+{
+    struct xwl_screen *xwl_screen = data;
+    int ret;
+
+    if (err < 0)
+        return;
+
+    if (!FD_ISSET(xwl_screen->wayland_fd, (fd_set *) read_mask))
+        return;
+
+    ret = wl_display_dispatch(xwl_screen->display);
+    if (ret == -1)
+        FatalError("failed to dispatch Wayland events: %s\n", strerror(errno));
+}
+
+static void
+block_handler(pointer data, struct timeval **tv, pointer read_mask)
+{
+    struct xwl_screen *xwl_screen = data;
+    int ret;
+
+    ret = wl_display_dispatch_pending(xwl_screen->display);
+    if (ret == -1)
+	FatalError("failed to dispatch Wayland events: %s\n", strerror(errno));
+
+    ret = wl_display_flush(xwl_screen->display);
+    if (ret == -1)
+        FatalError("failed to write to XWayland fd: %s\n", strerror(errno));
+}
+
+int
+xwl_screen_init(struct xwl_screen *xwl_screen, ScreenPtr screen)
+{
+    struct wl_callback *callback;
+
+    xwl_screen->screen = screen;
+
+    if (!dixRegisterPrivateKey(&xwl_screen_private_key, PRIVATE_SCREEN, 0))
+	return BadAlloc;
+
+    dixSetPrivate(&screen->devPrivates,
+		  &xwl_screen_private_key, xwl_screen);
+
+    xwl_screen_init_window(xwl_screen, screen);
+
+    xwl_screen_init_cursor(xwl_screen, screen);
+
+    AddGeneralSocket(xwl_screen->wayland_fd);
+    RegisterBlockAndWakeupHandlers(block_handler, wakeup_handler, xwl_screen);
+
+    callback = wl_display_sync(xwl_screen->display);
+    wl_callback_add_listener(callback, &delayed_init_listner, xwl_screen);
+
+    return Success;
+}
+
+struct xwl_screen *
+xwl_screen_get(ScreenPtr screen)
+{
+    return dixLookupPrivate(&screen->devPrivates, &xwl_screen_private_key);
+}
+
+static void
+xwayland_selection_callback(CallbackListPtr *callbacks,
+			    pointer data, pointer args)
+{
+    SelectionInfoRec *info = (SelectionInfoRec *) args;
+    Selection *selection = info->selection;
+
+    switch (info->kind) {
+    case SelectionSetOwner:
+	if (selection->selection == xdnd_atom) {
+	    if (selection->window != None)
+		ErrorF("client %p starts dnd\n", info->client);
+	    else
+		ErrorF("client %p stops dnd\n", info->client);
+	}
+	break;
+    case SelectionWindowDestroy:
+	ErrorF("selection window destroy\n");
+	break;
+    case SelectionClientClose:
+	ErrorF("selection client close\n");
+	break;
+    }
+}
+
+struct xwl_screen *
+xwl_screen_create(void)
+{
+    struct xwl_screen *xwl_screen;
+
+    xwl_screen = calloc(sizeof *xwl_screen, 1);
+    if (xwl_screen == NULL) {
+	ErrorF("calloc failed\n");
+	return NULL;
+    }
+
+    xwl_screen->display = wl_display_connect(NULL);
+    if (xwl_screen->display == NULL) {
+	ErrorF("wl_display_create failed\n");
+	return NULL;
+    }
+
+    return xwl_screen;
+}
+
+Bool
+xwl_screen_pre_init(ScrnInfoPtr scrninfo, struct xwl_screen *xwl_screen,
+		    uint32_t flags, struct xwl_driver *driver)
+{
+    int ret;
+
+    noScreenSaverExtension = TRUE;
+
+    xdnd_atom = MakeAtom("XdndSelection", 13, 1);
+    if (!AddCallback(&SelectionCallback,
+		     xwayland_selection_callback, xwl_screen)) {
+	return FALSE;
+    }
+
+    xorg_list_init(&xwl_screen->seat_list);
+    xorg_list_init(&xwl_screen->damage_window_list);
+    xorg_list_init(&xwl_screen->window_list);
+    xorg_list_init(&xwl_screen->authenticate_client_list);
+    xwl_screen->scrninfo = scrninfo;
+    xwl_screen->driver = driver;
+    xwl_screen->flags = flags;
+    xwl_screen->wayland_fd = wl_display_get_fd(xwl_screen->display);
+
+    if (xorgRootless)
+	xwl_screen->flags |= XWL_FLAGS_ROOTLESS;
+
+    /* Set up listener so we'll catch all events. */
+    xwl_screen->registry = wl_display_get_registry(xwl_screen->display);
+    wl_registry_add_listener(xwl_screen->registry, &registry_listener,
+                             xwl_screen);
+    ret = wl_display_roundtrip(xwl_screen->display);
+    if (ret == -1) {
+        xf86DrvMsg(scrninfo->scrnIndex, X_ERROR,
+                   "failed to dispatch Wayland events: %s\n", strerror(errno));
+        return FALSE;
+    }
+
+#ifdef WITH_LIBDRM
+    if (xwl_screen->driver->use_drm && !xwl_drm_initialised(xwl_screen))
+	if (xwl_drm_pre_init(xwl_screen) != Success)
+            return FALSE;
+#endif
+
+    xwayland_screen_preinit_output(xwl_screen, scrninfo);
+
+    return TRUE;
+}
+
+int
+xwl_create_window_buffer_shm(struct xwl_window *xwl_window,
+			     PixmapPtr pixmap, int fd)
+{
+    struct wl_shm_pool *pool;
+    int size, stride;
+
+    stride = pixmap->drawable.width * 4;
+
+    size = pixmap->drawable.width * pixmap->drawable.height * 4;
+    pool = wl_shm_create_pool(xwl_window->xwl_screen->shm, fd, size);
+    xwl_window->buffer =  wl_shm_pool_create_buffer(pool, 0,
+			   pixmap->drawable.width,
+			   pixmap->drawable.height,
+			   stride, WL_SHM_FORMAT_ARGB8888);
+    wl_shm_pool_destroy(pool);
+
+    return xwl_window->buffer ? Success : BadDrawable;
+}
+
+void xwl_screen_close(struct xwl_screen *xwl_screen)
+{
+    struct xwl_seat *xwl_seat, *itmp;
+    struct xwl_window *xwl_window, *wtmp;
+
+    if (xwl_screen->registry)
+        wl_registry_destroy(xwl_screen->registry);
+    xwl_screen->registry = NULL;
+
+    xorg_list_for_each_entry_safe(xwl_seat, itmp,
+				  &xwl_screen->seat_list, link) {
+	wl_seat_destroy(xwl_seat->seat);
+	free(xwl_seat);
+    }
+    xorg_list_for_each_entry_safe(xwl_window, wtmp,
+				  &xwl_screen->window_list, link) {
+	wl_buffer_destroy(xwl_window->buffer);
+	wl_surface_destroy(xwl_window->surface);
+	free(xwl_window);
+    }
+
+    xorg_list_init(&xwl_screen->seat_list);
+    xorg_list_init(&xwl_screen->damage_window_list);
+    xorg_list_init(&xwl_screen->window_list);
+    xorg_list_init(&xwl_screen->authenticate_client_list);
+
+    wl_display_roundtrip(xwl_screen->display);
+}
+
+void xwl_screen_destroy(struct xwl_screen *xwl_screen)
+{
+    if (xwl_screen->xwl_output) {
+	xf86OutputDestroy(xwl_screen->xwl_output->xf86output);
+	xf86CrtcDestroy(xwl_screen->xwl_output->xf86crtc);
+    }
+
+    free(xwl_screen->xwl_output);
+    free(xwl_screen);
+}
+
+/* DDX driver must call this after submitting the rendering */
+void xwl_screen_post_damage(struct xwl_screen *xwl_screen)
+{
+    struct xwl_window *xwl_window;
+    RegionPtr region;
+    BoxPtr box;
+    int count, i;
+
+    xorg_list_for_each_entry(xwl_window, &xwl_screen->damage_window_list,
+			     link_damage) {
+
+	region = DamageRegion(xwl_window->damage);
+	count = RegionNumRects(region);
+	for (i = 0; i < count; i++) {
+	    box = &RegionRects(region)[i];
+	    wl_surface_damage(xwl_window->surface,
+			      box->x1, box->y1,
+			      box->x2 - box->x1 + 1,
+			      box->y2 - box->y1 + 1);
+	}
+	wl_surface_attach(xwl_window->surface,
+			  xwl_window->buffer,
+			  0, 0);
+	wl_surface_commit(xwl_window->surface);
+	DamageEmpty(xwl_window->damage);
+    }
+
+    xorg_list_init(&xwl_screen->damage_window_list);
+}
+
+static pointer
+xwl_setup(pointer module, pointer opts, int *errmaj, int *errmin)
+{
+    return xwl_input_setup(module, opts, errmaj, errmin);
+}
+
+static void
+xwl_teardown(pointer p)
+{
+    xwl_input_teardown(p);
+}
+
+static XF86ModuleVersionInfo xwl_version_info = {
+    "xwayland",
+    MODULEVENDORSTRING,
+    MODINFOSTRING1,
+    MODINFOSTRING2,
+    XORG_VERSION_CURRENT,
+    1, 0, 0,
+    ABI_CLASS_EXTENSION,
+    ABI_EXTENSION_VERSION,
+    MOD_CLASS_NONE,
+    { 0, 0, 0, 0 }
+};
+
+_X_EXPORT const XF86ModuleData xwaylandModuleData = {
+    &xwl_version_info,
+    &xwl_setup,
+    &xwl_teardown
+};
+
+int
+xwl_version(void)
+{
+    return xwl_version_info.minorversion;
+}
diff --git a/hw/xfree86/xwayland/xwayland.h b/hw/xfree86/xwayland/xwayland.h
new file mode 100644
index 0000000..f268366
--- /dev/null
+++ b/hw/xfree86/xwayland/xwayland.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright © 2008 Kristian Høgsberg
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of the
+ * copyright holders not be used in advertising or publicity
+ * pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL 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 PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#ifndef _XWAYLAND_H_
+#define _XWAYLAND_H_
+
+#define XWL_VERSION 2
+
+struct xwl_window;
+struct xwl_screen;
+
+struct xwl_driver {
+    int version;
+    int use_drm;
+    int (*create_window_buffer)(struct xwl_window *xwl_window,
+                                PixmapPtr pixmap);
+};
+
+#define XWL_FLAGS_ROOTLESS 0x01
+
+extern _X_EXPORT int
+xwl_version(void);
+
+extern _X_EXPORT struct xwl_screen *
+xwl_screen_create(void);
+
+extern _X_EXPORT Bool
+xwl_screen_pre_init(ScrnInfoPtr scrninfo, struct xwl_screen *xwl_screen,
+		    uint32_t flags, struct xwl_driver *driver);
+
+extern _X_EXPORT int
+xwl_screen_init(struct xwl_screen *xwl_screen, ScreenPtr screen);
+
+extern _X_EXPORT int
+xwl_drm_pre_init(struct xwl_screen *xwl_screen);
+
+extern _X_EXPORT int
+xwl_screen_get_drm_fd(struct xwl_screen *xwl_screen);
+
+extern _X_EXPORT void
+xwl_screen_close(struct xwl_screen *xwl_screen);
+
+extern _X_EXPORT void
+xwl_screen_destroy(struct xwl_screen *xwl_screen);
+
+extern _X_EXPORT void
+xwl_screen_post_damage(struct xwl_screen *xwl_screen);
+
+extern _X_EXPORT int
+xwl_drm_authenticate(ClientPtr client, struct xwl_screen *xwl_screen,
+		     uint32_t magic);
+
+extern _X_EXPORT int
+xwl_create_window_buffer_drm(struct xwl_window *xwl_window,
+			     PixmapPtr pixmap, uint32_t name);
+
+extern _X_EXPORT int
+xwl_create_window_buffer_shm(struct xwl_window *xwl_window,
+			     PixmapPtr pixmap, int fd);
+
+#endif /* _XWAYLAND_H_ */
diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in
index 0c651bf..7f6eba2 100644
--- a/include/xorg-server.h.in
+++ b/include/xorg-server.h.in
@@ -224,4 +224,7 @@
 /* Use XTrans FD passing support */
 #undef XTRANS_SEND_FDS
 
+/* Building Xorg server. */
+#undef XORG_WAYLAND
+
 #endif /* _XORG_SERVER_H_ */
commit cbeeaebbfc826374e6a3be83f46babb63ba91ba1
Author: Tiago Vignatti <tiago.vignatti at intel.com>
Date:   Wed Aug 21 21:23:09 2013 -0700

    dri2: Introduce a third version of the AuthMagic function
    
    This most recent version takes a client pointer to allow xwayland to
    asynchronously authenticate a client.

diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index 0b047f0..efdcd66 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -121,8 +121,9 @@ typedef struct _DRI2Screen {
     DRI2ScheduleSwapProcPtr ScheduleSwap;
     DRI2GetMSCProcPtr GetMSC;
     DRI2ScheduleWaitMSCProcPtr ScheduleWaitMSC;
-    DRI2AuthMagic2ProcPtr AuthMagic;
     DRI2AuthMagicProcPtr LegacyAuthMagic;
+    DRI2AuthMagic2ProcPtr LegacyAuthMagic2;
+    DRI2AuthMagic3ProcPtr AuthMagic;
     DRI2ReuseBufferNotifyProcPtr ReuseBufferNotify;
     DRI2SwapLimitValidateProcPtr SwapLimitValidate;
     DRI2GetParamProcPtr GetParam;
@@ -1352,7 +1353,7 @@ DRI2Authenticate(ClientPtr client, ScreenPtr pScreen, uint32_t magic)
         return FALSE;
 
     primescreen = GetScreenPrime(pScreen, dri2_client->prime_id);
-    if ((*ds->AuthMagic)(primescreen, magic))
+    if ((*ds->AuthMagic)(client, primescreen, magic))
         return FALSE;
     return TRUE;
 }
@@ -1457,8 +1458,11 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info)
         cur_minor = 1;
     }
 
+    if (info->version >= 10) {
+        ds->AuthMagic = info->AuthMagic3;
+    }
     if (info->version >= 8) {
-        ds->AuthMagic = info->AuthMagic2;
+        ds->LegacyAuthMagic2 = info->AuthMagic2;
     }
     if (info->version >= 5) {
         ds->LegacyAuthMagic = info->AuthMagic;
@@ -1497,7 +1501,7 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info)
          * If the driver doesn't provide an AuthMagic function
          * it relies on the old method (using libdrm) or fails
          */
-        if (!ds->LegacyAuthMagic)
+        if (!ds->LegacyAuthMagic2 && !ds->LegacyAuthMagic)
 #ifdef WITH_LIBDRM
             ds->LegacyAuthMagic = drmAuthMagic;
 #else
diff --git a/hw/xfree86/dri2/dri2.h b/hw/xfree86/dri2/dri2.h
index 1e7afdd..38b4f58 100644
--- a/hw/xfree86/dri2/dri2.h
+++ b/hw/xfree86/dri2/dri2.h
@@ -65,6 +65,8 @@ typedef void (*DRI2CopyRegionProcPtr) (DrawablePtr pDraw,
 typedef void (*DRI2WaitProcPtr) (WindowPtr pWin, unsigned int sequence);
 typedef int (*DRI2AuthMagicProcPtr) (int fd, uint32_t magic);
 typedef int (*DRI2AuthMagic2ProcPtr) (ScreenPtr pScreen, uint32_t magic);
+typedef int (*DRI2AuthMagic3ProcPtr) (ClientPtr client,
+                                      ScreenPtr pScreen, uint32_t magic);
 
 /**
  * Schedule a buffer swap
@@ -252,6 +254,9 @@ typedef struct {
     DRI2CreateBuffer2ProcPtr CreateBuffer2;
     DRI2DestroyBuffer2ProcPtr DestroyBuffer2;
     DRI2CopyRegion2ProcPtr CopyRegion2;
+
+    /* added in version 10 */
+    DRI2AuthMagic3ProcPtr AuthMagic3;
 } DRI2InfoRec, *DRI2InfoPtr;
 
 extern _X_EXPORT Bool DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info);
@@ -268,6 +273,8 @@ extern _X_EXPORT Bool DRI2Connect(ClientPtr client, ScreenPtr pScreen,
 
 extern _X_EXPORT Bool DRI2Authenticate(ClientPtr client, ScreenPtr pScreen, uint32_t magic);
 
+extern _X_EXPORT void DRI2SendAuthReply(ClientPtr client, Bool status);
+
 extern _X_EXPORT int DRI2CreateDrawable(ClientPtr client,
                                         DrawablePtr pDraw,
                                         XID id,
diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c
index ffd66fa..b858213 100644
--- a/hw/xfree86/dri2/dri2ext.c
+++ b/hw/xfree86/dri2/dri2ext.c
@@ -136,11 +136,23 @@ ProcDRI2Connect(ClientPtr client)
     return Success;
 }
 
+void
+DRI2SendAuthReply(ClientPtr client, Bool status)
+{
+    xDRI2AuthenticateReply rep = {
+        .type = X_Reply,
+        .sequenceNumber = client->sequence,
+        .length = 0,
+        .authenticated = status
+    };
+
+    WriteToClient(client, sizeof(xDRI2AuthenticateReply), &rep);
+}
+
 static int
 ProcDRI2Authenticate(ClientPtr client)
 {
     REQUEST(xDRI2AuthenticateReq);
-    xDRI2AuthenticateReply rep;
     DrawablePtr pDraw;
     int status;
 
@@ -149,13 +161,12 @@ ProcDRI2Authenticate(ClientPtr client)
                        &pDraw, &status))
         return status;
 
-    rep = (xDRI2AuthenticateReply) {
-        .type = X_Reply,
-        .sequenceNumber = client->sequence,
-        .length = 0,
-        .authenticated = DRI2Authenticate(client, pDraw->pScreen, stuff->magic)
-    };
-    WriteToClient(client, sizeof(xDRI2AuthenticateReply), &rep);
+    status = DRI2Authenticate(client, pDraw->pScreen, stuff->magic);
+
+    /* if non-blocking authentication is in progress, then don't send a reply
+     * now but later in the implementation (e.g. drm_handle_authenticated) */
+    if (client->ignoreCount == 0)
+        DRI2SendAuthReply(client, status);
 
     return Success;
 }
commit 93495ea95e09ed14c4413fb526bee70bdef2425e
Author: Kristian Høgsberg <krh at redhat.com>
Date:   Fri Sep 18 22:09:03 2009 -0400

    Add redirect window for input device feature

diff --git a/Xi/exevents.c b/Xi/exevents.c
index dff0a92..44f8cb0 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -2027,6 +2027,19 @@ DeliverTouchEvents(DeviceIntPtr dev, TouchPointInfoPtr ti,
     }
 }
 
+void
+SetDeviceRedirectWindow(DeviceIntPtr dev, WindowPtr window)
+{
+    SpritePtr pSprite = dev->spriteInfo->sprite;
+    DeviceIntPtr mouse;
+
+    mouse = IsMaster(dev) ? dev : GetMaster(dev, MASTER_POINTER);
+
+    pSprite->redirectWindow = window;
+
+    CheckMotion(NULL, mouse);
+}
+
 int
 InitProximityClassDeviceStruct(DeviceIntPtr dev)
 {
diff --git a/dix/events.c b/dix/events.c
index 4aaa54c..7c79ffb 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -2877,7 +2877,16 @@ XYToWindow(SpritePtr pSprite, int x, int y)
     BoxRec box;
 
     pSprite->spriteTraceGood = 1;       /* root window still there */
-    pWin = RootWindow(pSprite)->firstChild;
+    if (pSprite->redirectWindow == PointerRootWin) {
+        return RootWindow(pSprite);
+    }
+    else if (pSprite->redirectWindow) {
+        pWin = pSprite->redirectWindow;
+        pSprite->spriteTrace[pSprite->spriteTraceGood++] = pWin;
+        pWin = pWin->firstChild;
+    }
+    else
+        pWin = RootWindow(pSprite)->firstChild;
     while (pWin) {
         if ((pWin->mapped) &&
             (x >= pWin->drawable.x - wBorderWidth(pWin)) &&
diff --git a/include/exevents.h b/include/exevents.h
index 321fc42..ba93be3 100644
--- a/include/exevents.h
+++ b/include/exevents.h
@@ -162,6 +162,10 @@ extern void
  ProcessOtherEvent(InternalEvent * /* ev */ ,
                    DeviceIntPtr /* other */ );
 
+extern _X_EXPORT void
+  SetDeviceRedirectWindow(DeviceIntPtr /* dev */ ,
+                        WindowPtr /* window */ );
+
 extern int
  CheckGrabValues(ClientPtr /* client */ ,
                  GrabParameters * /* param */ );
diff --git a/include/inputstr.h b/include/inputstr.h
index dc36c5d..09471cf 100644
--- a/include/inputstr.h
+++ b/include/inputstr.h
@@ -246,6 +246,8 @@ typedef struct _SpriteRec {
     ScreenPtr pEnqueueScreen;
     ScreenPtr pDequeueScreen;
 
+    WindowPtr redirectWindow;
+
 } SpriteRec;
 
 typedef struct _KeyClassRec {
commit bdf4a8804ce063ec0f5150bfbfed09b2f1a6745e
Author: Kristian Høgsberg <krh at redhat.com>
Date:   Fri Sep 18 22:02:43 2009 -0400

    Export CompositeRedirectSubwindows and CompositeUnRedirectSubwindows

diff --git a/composite/compalloc.c b/composite/compalloc.c
index b7d731e..98b27b1 100644
--- a/composite/compalloc.c
+++ b/composite/compalloc.c
@@ -46,6 +46,7 @@
 #endif
 
 #include "compint.h"
+#include "compositeext.h"
 
 static void
 compScreenUpdate(ScreenPtr pScreen)
@@ -411,6 +412,11 @@ compRedirectSubwindows(ClientPtr pClient, WindowPtr pWin, int update)
     return Success;
 }
 
+int CompositeRedirectSubwindows (WindowPtr pWin, int update)
+{
+    return compRedirectSubwindows (serverClient, pWin, update);
+}
+
 /*
  * Free one of the per-client per-subwindows resources,
  * which frees one redirect per subwindow
@@ -482,6 +488,11 @@ compUnredirectSubwindows(ClientPtr pClient, WindowPtr pWin, int update)
     return BadValue;
 }
 
+int CompositeUnRedirectSubwindows (WindowPtr pWin, int update)
+{
+    return compUnredirectSubwindows (serverClient, pWin, update);
+}
+
 /*
  * Add redirection information for one subwindow (during reparent)
  */
diff --git a/composite/compositeext.h b/composite/compositeext.h
index 0b148f0..a072966 100644
--- a/composite/compositeext.h
+++ b/composite/compositeext.h
@@ -34,6 +34,10 @@
 extern _X_EXPORT Bool CompositeRegisterAlternateVisuals(ScreenPtr pScreen,
                                                         VisualID * vids,
                                                         int nVisuals);
+extern _X_EXPORT int CompositeRedirectSubwindows(WindowPtr pWin,
+						 int update);
+extern _X_EXPORT int CompositeUnRedirectSubwindows (WindowPtr pWin,
+						    int update);
 
 extern _X_EXPORT RESTYPE CompositeClientWindowType;
 
commit 37e7d316a1da41fffefb8d21e1583af8a2a743ee
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Thu Jul 21 09:55:46 2011 -0700

    Export xf86NewInputDevice and xf86AllocateInput

diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index 26c03c6..7669ee0 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -811,7 +811,7 @@ xf86InputDevicePostInit(DeviceIntPtr dev)
  *
  * @return Success or an error code
  */
-_X_INTERNAL int
+int
 xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr *pdev, BOOL enable)
 {
     InputDriverPtr drv = NULL;
diff --git a/hw/xfree86/common/xf86Xinput.h b/hw/xfree86/common/xf86Xinput.h
index 35c38a5..ff3d894 100644
--- a/hw/xfree86/common/xf86Xinput.h
+++ b/hw/xfree86/common/xf86Xinput.h
@@ -172,10 +172,9 @@ extern _X_EXPORT void xf86AddEnabledDevice(InputInfoPtr pInfo);
 extern _X_EXPORT void xf86RemoveEnabledDevice(InputInfoPtr pInfo);
 extern _X_EXPORT void xf86DisableDevice(DeviceIntPtr dev, Bool panic);
 extern _X_EXPORT void xf86EnableDevice(DeviceIntPtr dev);
-
-/* not exported */
-int xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr *pdev, BOOL is_auto);
-InputInfoPtr xf86AllocateInput(void);
+extern _X_EXPORT int xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr *pdev,
+                                        BOOL is_auto);
+extern _X_EXPORT InputInfoPtr xf86AllocateInput(void);
 
 /* xf86Helper.c */
 extern _X_EXPORT void xf86AddInputDriver(InputDriverPtr driver, pointer module,
commit 37834a968ae6a2af7142654d7666e9f5e67e55de
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Tue Jun 21 21:28:31 2011 -0400

    os: Add a function to create a client for an fd

diff --git a/include/opaque.h b/include/opaque.h
index b76ab6e..8ad9af0 100644
--- a/include/opaque.h
+++ b/include/opaque.h
@@ -74,5 +74,6 @@ extern _X_EXPORT Bool whiteRoot;
 extern _X_EXPORT Bool bgNoneRoot;
 
 extern _X_EXPORT Bool CoreDump;
+extern _X_EXPORT Bool NoListenAll;
 
 #endif                          /* OPAQUE_H */
diff --git a/include/os.h b/include/os.h
index 9b67294..c36d09a 100644
--- a/include/os.h
+++ b/include/os.h
@@ -166,8 +166,9 @@ extern _X_EXPORT void MakeClientGrabImpervious(ClientPtr /*client */ );
 
 extern _X_EXPORT void MakeClientGrabPervious(ClientPtr /*client */ );
 
-#ifdef XQUARTZ
-extern void ListenOnOpenFD(int /* fd */ , int /* noxauth */ );
+#if defined(XQUARTZ) || defined(XORG_WAYLAND)
+extern _X_EXPORT void ListenOnOpenFD(int /* fd */ , int /* noxauth */ );
+extern _X_EXPORT void AddClientOnOpenFD(int /* fd */ );
 #endif
 
 extern _X_EXPORT CARD32 GetTimeInMillis(void);
diff --git a/os/connection.c b/os/connection.c
index 162e1d9..a95e7da 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -64,6 +64,7 @@ SOFTWARE.
 #include <dix-config.h>
 #endif
 
+#include <xorg-server.h>
 #ifdef WIN32
 #include <X11/Xwinsock.h>
 #endif
@@ -138,6 +139,7 @@ fd_set OutputPending;           /* clients with reply/event data ready to go */
 int MaxClients = 0;
 Bool NewOutputPending;          /* not yet attempted to write some new output */
 Bool AnyClientsWriteBlocked;    /* true if some client blocked on write */
+Bool NoListenAll;               /* Don't establish any listening sockets */
 
 static Bool RunFromSmartParent; /* send SIGUSR1 to parent process */
 Bool RunFromSigStopParent;      /* send SIGSTOP to our own process; Upstart (or
@@ -406,7 +408,10 @@ CreateWellKnownSockets(void)
     /* display is initialized to "0" by main(). It is then set to the display
      * number if specified on the command line, or to NULL when the -displayfd
      * option is used. */
-    if (display) {
+    if (NoListenAll) {
+        ListenTransCount = 0;
+    }
+    else if (display) {
         if (TryCreateSocket(atoi(display), &partial) &&
             ListenTransCount >= 1)
             if (!PartialNetwork && partial)
@@ -440,9 +445,10 @@ CreateWellKnownSockets(void)
             DefineSelf (fd);
     }
 
-    if (!XFD_ANYSET(&WellKnownConnections))
+    if (!XFD_ANYSET(&WellKnownConnections) && !NoListenAll)
         FatalError
             ("Cannot establish any listening sockets - Make sure an X server isn't already running");
+
 #if !defined(WIN32)
     OsSignal(SIGPIPE, SIG_IGN);
     OsSignal(SIGHUP, AutoResetServer);
@@ -1253,7 +1259,7 @@ MakeClientGrabPervious(ClientPtr client)
     }
 }
 
-#ifdef XQUARTZ
+#if defined(XQUARTZ) || defined(XORG_WAYLAND)
 /* Add a fd (from launchd) to our listeners */
 void
 ListenOnOpenFD(int fd, int noxauth)
@@ -1309,4 +1315,24 @@ ListenOnOpenFD(int fd, int noxauth)
 #endif
 }
 
+/* based on TRANS(SocketUNIXAccept) (XtransConnInfo ciptr, int *status) */
+void
+AddClientOnOpenFD(int fd)
+{
+    XtransConnInfo ciptr;
+    CARD32 connect_time;
+
+    ciptr = _XSERVTransReopenCOTSServer(5, fd, "@anonymous");
+
+    _XSERVTransSetOption(ciptr, TRANS_NONBLOCKING, 1);
+    ciptr->flags |= TRANS_NOXAUTH;
+
+    connect_time = GetTimeInMillis();
+
+    if (!AllocNewConnection(ciptr, fd, connect_time)) {
+        fprintf(stderr, "failed to create client for wayland server\n");
+        return;
+    }
+}
+
 #endif
diff --git a/os/utils.c b/os/utils.c
index 608ee6a..a0cf951 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -805,7 +805,11 @@ ProcessCommandLine(int argc, char *argv[])
 #endif
         else if (strcmp(argv[i], "-nolisten") == 0) {
             if (++i < argc) {
-                if (_XSERVTransNoListen(argv[i]))
+                if (strcmp(argv[i], "all") == 0) {
+                    NoListenAll = TRUE;
+                    nolock = TRUE;
+                }
+                else if (_XSERVTransNoListen(argv[i]))
                     ErrorF("Failed to disable listen for %s transport",
                            argv[i]);
             }
commit 0b3b308f18e3cf0ae82c0f1c85f0e56eee3f7a6d
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Tue Apr 9 17:45:08 2013 -0400

    xkb: Add XkbCompileKeymapFromString()
    
    This new function compiles a keymap from an in-memory string.  We use it
    to add a new keyooard device init function,
    InitKeyboardDeviceStructFromString(), which inits a keyboard device with
    a keymap specified as a string instead of a rmlvo set.
    
    Reviewed-by: Daniel Stone <daniel at fooishbar.org>

diff --git a/include/input.h b/include/input.h
index 2d5e531..b1cc3ff 100644
--- a/include/input.h
+++ b/include/input.h
@@ -385,6 +385,12 @@ extern _X_EXPORT Bool InitKeyboardDeviceStruct(DeviceIntPtr /*device */ ,
                                                KbdCtrlProcPtr /*controlProc */
                                                );
 
+extern _X_EXPORT Bool InitKeyboardDeviceStructFromString(DeviceIntPtr dev,
+							 const char *keymap,
+							 int keymap_length,
+							 BellProcPtr bell_func,
+							 KbdCtrlProcPtr ctrl_func);
+
 extern int ApplyPointerMapping(DeviceIntPtr /* pDev */ ,
                                CARD8 * /* map */ ,
                                int /* len */ ,
diff --git a/include/xkbsrv.h b/include/xkbsrv.h
index 346ebcc..bef98ef 100644
--- a/include/xkbsrv.h
+++ b/include/xkbsrv.h
@@ -861,4 +861,8 @@ extern _X_EXPORT XkbDescPtr XkbCompileKeymap(DeviceIntPtr /* dev */ ,
                                              XkbRMLVOSet *      /* rmlvo */
     );
 
+extern _X_EXPORT XkbDescPtr XkbCompileKeymapFromString(DeviceIntPtr dev,
+						       const char *keymap,
+						       int keymap_length);
+
 #endif                          /* _XKBSRV_H_ */
diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index 001ff46..7a7cf1e 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -262,6 +262,35 @@ XkbDDXOpenConfigFile(char *mapName, char *fileNameRtrn, int fileNameRtrnLen)
     return file;
 }
 
+static unsigned
+LoadXKM(unsigned want, unsigned need, XkbCompContextPtr ctx, XkbDescPtr *xkbRtrn)
+{
+    FILE *file;
+    char fileName[PATH_MAX];
+    unsigned missing;
+
+    file = XkbDDXOpenConfigFile(ctx->keymap, fileName, PATH_MAX);
+    if (file == NULL) {
+        LogMessage(X_ERROR, "Couldn't open compiled keymap file %s\n",
+                   fileName);
+        return 0;
+    }
+    missing = XkmReadFile(file, need, want, xkbRtrn);
+    if (*xkbRtrn == NULL) {
+        LogMessage(X_ERROR, "Error loading keymap %s\n", fileName);
+        fclose(file);
+        (void) unlink(fileName);
+        return 0;
+    }
+    else {
+        DebugF("Loaded XKB keymap %s, defined=0x%x\n", fileName,
+               (*xkbRtrn)->defined);
+    }
+    fclose(file);
+    (void) unlink(fileName);
+    return (need | want) & (~missing);
+}
+
 unsigned
 XkbDDXLoadKeymapByNames(DeviceIntPtr keybd,
                         XkbComponentNamesPtr names,
@@ -270,9 +299,6 @@ XkbDDXLoadKeymapByNames(DeviceIntPtr keybd,
                         XkbDescPtr *xkbRtrn, char *nameRtrn, int nameRtrnLen)
 {
     XkbDescPtr xkb;
-    FILE *file;
-    char fileName[PATH_MAX];
-    unsigned missing;
     XkbCompContextRec ctx;
 
     *xkbRtrn = NULL;
@@ -292,26 +318,30 @@ XkbDDXLoadKeymapByNames(DeviceIntPtr keybd,
         LogMessage(X_ERROR, "XKB: Couldn't compile keymap\n");
         return 0;
     }
-    file = XkbDDXOpenConfigFile(ctx.keymap, fileName, PATH_MAX);
-    if (file == NULL) {
-        LogMessage(X_ERROR, "Couldn't open compiled keymap file %s\n",
-                   fileName);
-        return 0;
-    }
-    missing = XkmReadFile(file, need, want, xkbRtrn);
-    if (*xkbRtrn == NULL) {
-        LogMessage(X_ERROR, "Error loading keymap %s\n", fileName);
-        fclose(file);
-        (void) unlink(fileName);
+
+    return LoadXKM(want, need, &ctx, xkbRtrn);
+}
+
+static unsigned
+XkbDDXLoadKeymapFromString(DeviceIntPtr keybd,
+			   const char *keymap, int keymap_length,
+			   unsigned want,
+			   unsigned need,
+			   XkbDescPtr *xkbRtrn)
+{
+    XkbCompContextRec ctx;
+
+    *xkbRtrn = NULL;
+
+    if (StartXkbComp(&ctx))
+	fwrite(keymap, keymap_length, 1, ctx.out);
+
+    if (!FinishXkbComp(&ctx)) {
+        LogMessage(X_ERROR, "XKB: Couldn't compile keymap\n");
         return 0;
     }
-    else {
-        DebugF("Loaded XKB keymap %s, defined=0x%x\n", fileName,
-               (*xkbRtrn)->defined);
-    }
-    fclose(file);
-    (void) unlink(fileName);
-    return (need | want) & (~missing);
+
+    return LoadXKM(want, need, &ctx, xkbRtrn);
 }
 
 Bool
@@ -407,6 +437,29 @@ XkbCompileKeymapForDevice(DeviceIntPtr dev, XkbRMLVOSet * rmlvo, int need)
     return xkb;
 }
 
+static XkbDescPtr
+KeymapOrDefaults(DeviceIntPtr dev, XkbDescPtr xkb)
+{
+    XkbRMLVOSet dflts;
+
+    if (xkb)
+	return xkb;
+
+    /* we didn't get what we really needed. And that will likely leave
+     * us with a keyboard that doesn't work. Use the defaults instead */
+    LogMessage(X_ERROR, "XKB: Failed to load keymap. Loading default "
+	       "keymap instead.\n");
+
+    XkbGetRulesDflts(&dflts);
+
+    xkb = XkbCompileKeymapForDevice(dev, &dflts, 0);
+
+    XkbFreeRMLVOSet(&dflts, FALSE);
+
+    return xkb;
+}
+
+
 XkbDescPtr
 XkbCompileKeymap(DeviceIntPtr dev, XkbRMLVOSet * rmlvo)
 {
@@ -424,20 +477,34 @@ XkbCompileKeymap(DeviceIntPtr dev, XkbRMLVOSet * rmlvo)
 
     xkb = XkbCompileKeymapForDevice(dev, rmlvo, need);
 
-    if (!xkb) {
-        XkbRMLVOSet dflts;
+    return KeymapOrDefaults(dev, xkb);
+}
 
-        /* we didn't get what we really needed. And that will likely leave
-         * us with a keyboard that doesn't work. Use the defaults instead */
-        LogMessage(X_ERROR, "XKB: Failed to load keymap. Loading default "
-                   "keymap instead.\n");
+XkbDescPtr
+XkbCompileKeymapFromString(DeviceIntPtr dev,
+			   const char *keymap, int keymap_length)
+{
+    XkbDescPtr xkb;
+    unsigned int need, provided;
 
-        XkbGetRulesDflts(&dflts);
+    if (!dev || !keymap) {
+        LogMessage(X_ERROR, "XKB: No device or keymap specified\n");
+        return NULL;
+    }
 
-        xkb = XkbCompileKeymapForDevice(dev, &dflts, 0);
+    /* These are the components we really really need */
+    need = XkmSymbolsMask | XkmCompatMapMask | XkmTypesMask |
+        XkmKeyNamesMask | XkmVirtualModsMask;
 
-        XkbFreeRMLVOSet(&dflts, FALSE);
+    provided =
+	XkbDDXLoadKeymapFromString(dev, keymap, keymap_length,
+				   XkmAllIndicesMask, need, &xkb);
+    if ((need & provided) != need) {
+	if (xkb) {
+	    XkbFreeKeyboard(xkb, 0, TRUE);
+	    xkb = NULL;
+	}
     }
 
-    return xkb;
+    return KeymapOrDefaults(dev, xkb);
 }
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
index f72655f..f3f0d8f 100644
--- a/xkb/xkbInit.c
+++ b/xkb/xkbInit.c
@@ -490,9 +490,10 @@ XkbInitControls(DeviceIntPtr pXDev, XkbSrvInfoPtr xkbi)
     return Success;
 }
 
-_X_EXPORT Bool
-InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet * rmlvo,
-                         BellProcPtr bell_func, KbdCtrlProcPtr ctrl_func)
+static Bool
+InitKeyboardDeviceStructInternal(DeviceIntPtr dev, XkbRMLVOSet * rmlvo,
+				 const char *keymap, int keymap_length,
+				 BellProcPtr bell_func, KbdCtrlProcPtr ctrl_func)
 {
     int i;
     unsigned int check;
@@ -507,7 +508,7 @@ InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet * rmlvo,
     BUG_RETURN_VAL(dev->key != NULL, FALSE);
     BUG_RETURN_VAL(dev->kbdfeed != NULL, FALSE);
 
-    if (!rmlvo) {
+    if (!rmlvo && !keymap) {
         rmlvo = &rmlvo_dflts;
         XkbGetRulesDflts(rmlvo);
     }
@@ -535,19 +536,26 @@ InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet * rmlvo,
     }
     dev->key->xkbInfo = xkbi;
 
-    if (xkb_cached_map && !XkbCompareUsedRMLVO(rmlvo)) {
+    if (xkb_cached_map && (keymap || (rmlvo && !XkbCompareUsedRMLVO(rmlvo)))) {
         XkbFreeKeyboard(xkb_cached_map, XkbAllComponentsMask, TRUE);
         xkb_cached_map = NULL;
     }
 
     if (xkb_cached_map)
         LogMessageVerb(X_INFO, 4, "XKB: Reusing cached keymap\n");
-    else {
+    else if (rmlvo) {
         xkb_cached_map = XkbCompileKeymap(dev, rmlvo);
         if (!xkb_cached_map) {
             ErrorF("XKB: Failed to compile keymap\n");
             goto unwind_info;
         }
+    } else {
+	xkb_cached_map = XkbCompileKeymapFromString(dev,
+						    keymap, keymap_length);
+        if (!xkb_cached_map) {
+            ErrorF("XKB: Failed to compile keymap from string\n");
+            goto unwind_info;
+        }
     }
 
     xkb = XkbAllocKeyboard();
@@ -612,8 +620,10 @@ InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet * rmlvo,
 
     dev->kbdfeed->CtrlProc(dev, &dev->kbdfeed->ctrl);
 
-    XkbSetRulesDflts(rmlvo);
-    XkbSetRulesUsed(rmlvo);
+    if (rmlvo) {
+	XkbSetRulesDflts(rmlvo);
+	XkbSetRulesUsed(rmlvo);
+    }
     XkbFreeRMLVOSet(&rmlvo_dflts, FALSE);
 
     return TRUE;
@@ -632,6 +642,24 @@ InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet * rmlvo,
     return FALSE;
 }
 
+_X_EXPORT Bool
+InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet * rmlvo,
+                         BellProcPtr bell_func, KbdCtrlProcPtr ctrl_func)
+{
+    return InitKeyboardDeviceStructInternal(dev, rmlvo,
+					    NULL, 0, bell_func, ctrl_func);
+}
+
+_X_EXPORT Bool
+InitKeyboardDeviceStructFromString(DeviceIntPtr dev,
+				   const char *keymap, int keymap_length,
+				   BellProcPtr bell_func, KbdCtrlProcPtr ctrl_func)
+{
+    return InitKeyboardDeviceStructInternal(dev, NULL,
+					    keymap, keymap_length,
+					    bell_func, ctrl_func);
+}
+
 /***====================================================================***/
 
         /*
commit d0b15fee9bc1e47a2ba753440b2a75fc14351cfa
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Tue Apr 9 17:11:03 2013 -0400

    xkb: Split out code to start and finish xkbcomp
    
    Using the context struct from previous commit, we can now split out
    code to start xkbcomp and to finish and clean up after it.
    
    Reviewed-by: Daniel Stone <daniel at fooishbar.org>

diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index 5da3a35..001ff46 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -99,10 +99,7 @@ typedef struct XkbCompContext {
 } XkbCompContextRec, *XkbCompContextPtr;
 
 static Bool
-XkbDDXCompileKeymapByNames(XkbDescPtr xkb,
-                           XkbComponentNamesPtr names,
-                           unsigned want,
-                           unsigned need, XkbCompContextPtr ctx)
+StartXkbComp(XkbCompContextPtr ctx)
 {
     char xkm_output_dir[PATH_MAX];
 
@@ -168,14 +165,15 @@ XkbDDXCompileKeymapByNames(XkbDescPtr xkb,
     ctx->out = fopen(ctx->tmpname, "w");
 #endif
 
+    return ctx->out != NULL;
+}
+
+static Bool
+FinishXkbComp(XkbCompContextPtr ctx)
+{
+    if (!ctx->buf)
+	return FALSE;
     if (ctx->out != NULL) {
-#ifdef DEBUG
-        if (xkbDebugFlags) {
-            ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n");
-            XkbWriteXKBKeymapForNames(stderr, names, xkb, want, need);
-        }
-#endif
-        XkbWriteXKBKeymapForNames(ctx->out, names, xkb, want, need);
 #ifndef WIN32
         if (Pclose(ctx->out) == 0)
 #else
@@ -209,6 +207,25 @@ XkbDDXCompileKeymapByNames(XkbDescPtr xkb,
     return FALSE;
 }
 
+static Bool
+XkbDDXCompileKeymapByNames(XkbDescPtr xkb,
+                           XkbComponentNamesPtr names,
+                           unsigned want,
+                           unsigned need, XkbCompContextPtr ctx)
+{
+    if (StartXkbComp(ctx)) {
+#ifdef DEBUG
+        if (xkbDebugFlags) {
+            ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n");
+            XkbWriteXKBKeymapForNames(stderr, names, xkb, want, need);
+        }
+#endif
+        XkbWriteXKBKeymapForNames(ctx->out, names, xkb, want, need);
+    }
+
+    return FinishXkbComp(ctx);
+}
+
 static FILE *
 XkbDDXOpenConfigFile(char *mapName, char *fileNameRtrn, int fileNameRtrnLen)
 {
commit 2ba213ee2218a9b3445dec7cfa30742e7078eeb3
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Tue Apr 9 16:54:55 2013 -0400

    xkb: Add struct XkbCompContext
    
    This commit adds a struct that contains most of the context for starting,
    running and cleaning up after xkbcomp.
    
    Reviewed-by: Daniel Stone <daniel at fooishbar.org>

diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index d462957..5da3a35 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -90,14 +90,21 @@ OutputDirectory(char *outdir, size_t size)
     }
 }
 
+typedef struct XkbCompContext {
+    char keymap[PATH_MAX];
+    FILE *out;
+    char *buf;
+    char tmpname[PATH_MAX];
+    const char *xkmfile;
+} XkbCompContextRec, *XkbCompContextPtr;
+
 static Bool
 XkbDDXCompileKeymapByNames(XkbDescPtr xkb,
                            XkbComponentNamesPtr names,
                            unsigned want,
-                           unsigned need, char *nameRtrn, int nameRtrnLen)
+                           unsigned need, XkbCompContextPtr ctx)
 {
-    FILE *out;
-    char *buf = NULL, keymap[PATH_MAX], xkm_output_dir[PATH_MAX];
+    char xkm_output_dir[PATH_MAX];
 
     const char *emptystring = "";
     char *xkbbasedirflag = NULL;
@@ -105,22 +112,19 @@ XkbDDXCompileKeymapByNames(XkbDescPtr xkb,
     const char *xkbbindirsep = emptystring;
 
 #ifdef WIN32
-    /* WIN32 has no popen. The input must be stored in a file which is
-       used as input for xkbcomp. xkbcomp does not read from stdin. */
-    char tmpname[PATH_MAX];
-    const char *xkmfile = tmpname;
+    ctx->xkmfile = ctx->tmpname;
 #else
-    const char *xkmfile = "-";
+    ctx->xkmfile = "-";
 #endif
 
-    snprintf(keymap, sizeof(keymap), "server-%s", display);
+    snprintf(ctx->keymap, sizeof(ctx->keymap), "server-%s", display);
 
     OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
 
 #ifdef WIN32
-    strcpy(tmpname, Win32TempDir());
-    strcat(tmpname, "\\xkb_XXXXXX");
-    (void) mktemp(tmpname);
+    strcpy(ctx->tmpname, Win32TempDir());
+    strcat(ctx->tmpname, "\\xkb_XXXXXX");
+    (void) mktemp(ctx->tmpname);
 #endif
 
     if (XkbBaseDirectory != NULL) {
@@ -139,73 +143,69 @@ XkbDDXCompileKeymapByNames(XkbDescPtr xkb,
         }
     }
 
-    if (asprintf(&buf,
+    if (asprintf(&ctx->buf,
                  "\"%s%sxkbcomp\" -w %d %s -xkm \"%s\" "
                  "-em1 %s -emp %s -eml %s \"%s%s.xkm\"",
                  xkbbindir, xkbbindirsep,
                  ((xkbDebugFlags < 2) ? 1 :
                   ((xkbDebugFlags > 10) ? 10 : (int) xkbDebugFlags)),
-                 xkbbasedirflag ? xkbbasedirflag : "", xkmfile,
+                 xkbbasedirflag ? xkbbasedirflag : "", ctx->xkmfile,
                  PRE_ERROR_MSG, ERROR_PREFIX, POST_ERROR_MSG1,
-                 xkm_output_dir, keymap) == -1)
-        buf = NULL;
+                 xkm_output_dir, ctx->keymap) == -1)
+        ctx->buf = NULL;
 
     free(xkbbasedirflag);
 
-    if (!buf) {
+    if (!ctx->buf) {
         LogMessage(X_ERROR,
                    "XKB: Could not invoke xkbcomp: not enough memory\n");
         return FALSE;
     }
 
 #ifndef WIN32
-    out = Popen(buf, "w");
+    ctx->out = Popen(ctx->buf, "w");
 #else
-    out = fopen(tmpname, "w");
+    ctx->out = fopen(ctx->tmpname, "w");
 #endif
 
-    if (out != NULL) {
+    if (ctx->out != NULL) {
 #ifdef DEBUG
         if (xkbDebugFlags) {
             ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n");
             XkbWriteXKBKeymapForNames(stderr, names, xkb, want, need);
         }
 #endif
-        XkbWriteXKBKeymapForNames(out, names, xkb, want, need);
+        XkbWriteXKBKeymapForNames(ctx->out, names, xkb, want, need);
 #ifndef WIN32
-        if (Pclose(out) == 0)
+        if (Pclose(ctx->out) == 0)
 #else
-        if (fclose(out) == 0 && System(buf) >= 0)
+        if (fclose(ctx->out) == 0 && System(ctx->buf) >= 0)
 #endif
         {
             if (xkbDebugFlags)
-                DebugF("[xkb] xkb executes: %s\n", buf);
-            if (nameRtrn) {
-                strlcpy(nameRtrn, keymap, nameRtrnLen);
-            }
-            free(buf);
+                DebugF("[xkb] xkb executes: %s\n", ctx->buf);
+            free(ctx->buf);
 #ifdef WIN32
-            unlink(tmpname);
+            unlink(ctx->tmpname);
 #endif
             return TRUE;
         }
         else
-            LogMessage(X_ERROR, "Error compiling keymap (%s)\n", keymap);
+            LogMessage(X_ERROR, "Error compiling keymap (%s)\n", ctx->keymap);
 #ifdef WIN32
         /* remove the temporary file */
-        unlink(tmpname);
+        unlink(ctx->tmpname);
 #endif
     }
     else {
 #ifndef WIN32
         LogMessage(X_ERROR, "XKB: Could not invoke xkbcomp\n");
 #else
-        LogMessage(X_ERROR, "Could not open file %s\n", tmpname);
+        LogMessage(X_ERROR, "Could not open file %s\n", ctx->tmpname);
 #endif
     }
-    if (nameRtrn)
-        nameRtrn[0] = '\0';
-    free(buf);
+    ctx->keymap[0] = '\0';
+    free(ctx->buf);
     return FALSE;
 }
 
@@ -256,6 +256,7 @@ XkbDDXLoadKeymapByNames(DeviceIntPtr keybd,
     FILE *file;
     char fileName[PATH_MAX];
     unsigned missing;
+    XkbCompContextRec ctx;
 
     *xkbRtrn = NULL;
     if ((keybd == NULL) || (keybd->key == NULL) ||
@@ -270,12 +271,11 @@ XkbDDXLoadKeymapByNames(DeviceIntPtr keybd,
                    keybd->name ? keybd->name : "(unnamed keyboard)");
         return 0;
     }
-    else if (!XkbDDXCompileKeymapByNames(xkb, names, want, need,
-                                         nameRtrn, nameRtrnLen)) {
+    else if (!XkbDDXCompileKeymapByNames(xkb, names, want, need, &ctx)) {
         LogMessage(X_ERROR, "XKB: Couldn't compile keymap\n");
         return 0;
     }
-    file = XkbDDXOpenConfigFile(nameRtrn, fileName, PATH_MAX);
+    file = XkbDDXOpenConfigFile(ctx.keymap, fileName, PATH_MAX);
     if (file == NULL) {
         LogMessage(X_ERROR, "Couldn't open compiled keymap file %s\n",
                    fileName);
commit 85e90654bc65685cb2f4fcf7c4c77e285dcbd888
Author: Robert Bragg <robert at linux.intel.com>
Date:   Thu Jan 12 18:16:08 2012 +0000

    dbe: Cleanup in CloseScreen hook not ext CloseDown
    
    Instead of registering an extension CloseDownProc when adding the dbe
    extension this patch hooks into pScreen->CloseScreen so that the chain
    of pScreen->DestroyWindow hooks remains valid until all windows have
    been destroyed. Previously it was possible for DbeResetProc to be called
    before the root window had been destroyed and the unwrapping of
    pScreen->DestroyWindow would clobber the chain of callbacks.
    
    This is needed for xwayland to be able to know when the root window is
    destroyed so it can unredirect root sub-windows.

diff --git a/dbe/dbe.c b/dbe/dbe.c
index 5524615..db42c9e 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -1230,7 +1230,7 @@ DbeWindowPrivDelete(pointer pDbeWinPriv, XID id)
 
 /******************************************************************************
  *
- * DBE DIX Procedure: DbeResetProc
+ * DBE DIX Procedure: DbeCloseScreen
  *
  * Description:
  *
@@ -1239,25 +1239,20 @@ DbeWindowPrivDelete(pointer pDbeWinPriv, XID id)
  *     other tasks related to shutting down the extension.
  *
  *****************************************************************************/
-static void
-DbeResetProc(ExtensionEntry * extEntry)
+static Bool
+DbeCloseScreen(ScreenPtr pScreen)
 {
-    int i;
-    ScreenPtr pScreen;
-    DbeScreenPrivPtr pDbeScreenPriv;
-
-    for (i = 0; i < screenInfo.numScreens; i++) {
-        pScreen = screenInfo.screens[i];
-        pDbeScreenPriv = DBE_SCREEN_PRIV(pScreen);
+    DbeScreenPrivPtr pDbeScreenPriv = DBE_SCREEN_PRIV(pScreen);
 
-        if (pDbeScreenPriv) {
-            /* Unwrap DestroyWindow, which was wrapped in DbeExtensionInit(). */
-            pScreen->DestroyWindow = pDbeScreenPriv->DestroyWindow;
-            pScreen->PositionWindow = pDbeScreenPriv->PositionWindow;
-            free(pDbeScreenPriv);
-        }
+    if (pDbeScreenPriv) {
+        /* Unwrap CloseScreen, which was wrapped in DbeExtensionInit(). */
+        pScreen->CloseScreen = pDbeScreenPriv->CloseScreen;
+        pScreen->PositionWindow = pDbeScreenPriv->PositionWindow;
+        free(pDbeScreenPriv);
     }
-}                               /* DbeResetProc() */
+
+    return (*pScreen->CloseScreen) (pScreen);
+}                               /* DbeCloseScreen */
 
 /******************************************************************************
  *
@@ -1427,6 +1422,9 @@ DbeExtensionInit(void)
 
                 pDbeScreenPriv->DestroyWindow = pScreen->DestroyWindow;
                 pScreen->DestroyWindow = DbeDestroyWindow;
+
+                pDbeScreenPriv->CloseScreen = pScreen->CloseScreen;
+                pScreen->CloseScreen = DbeCloseScreen;
             }
             else {
                 /* DDX initialization failed.  Stub the screen. */
@@ -1454,7 +1452,7 @@ DbeExtensionInit(void)
     /* Now add the extension. */
     extEntry = AddExtension(DBE_PROTOCOL_NAME, DbeNumberEvents,
                             DbeNumberErrors, ProcDbeDispatch, SProcDbeDispatch,
-                            DbeResetProc, StandardMinorOpcode);
+                            NULL, StandardMinorOpcode);
 
     dbeErrorBase = extEntry->errorBase;
     SetResourceTypeErrorValue(dbeWindowPrivResType,
diff --git a/dbe/dbestruct.h b/dbe/dbestruct.h
index 2002066..7733d0e 100644
--- a/dbe/dbestruct.h
+++ b/dbe/dbestruct.h
@@ -176,6 +176,7 @@ typedef struct _DbeScreenPrivRec {
      */
     PositionWindowProcPtr PositionWindow;
     DestroyWindowProcPtr DestroyWindow;
+    CloseScreenProcPtr CloseScreen;
 
     /* Per-screen DIX routines */
     Bool (*SetupBackgroundPainter) (WindowPtr /*pWin */ ,
commit 2ea973e12f5d954211e1d10085a4c74581b43aca
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Dec 27 09:50:55 2013 -0800

    Bump version to 1.15.0
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 7ec1997..8f82386 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.14.99.905, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2013-12-19"
-RELEASE_NAME="Kraken"
+AC_INIT([xorg-server], 1.15.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2013-12-27"
+RELEASE_NAME="Egg Nog"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AC_USE_SYSTEM_EXTENSIONS
commit 2eb9915eea358f941702d3dad7434197991885c5
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Dec 12 15:48:08 2013 -0800

    present: Set complete notify mode to Skip as needed
    
    Skipped present pixmap calls were not setting the mode to
    PresentCompleteModeSkip for skipped operations.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/present/present.c b/present/present.c
index 3caa8b7..30cd3b9 100644
--- a/present/present.c
+++ b/present/present.c
@@ -525,6 +525,7 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
     WindowPtr                   window = vblank->window;
     ScreenPtr                   screen = window->drawable.pScreen;
     present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+    uint8_t                     mode;
 
     if (vblank->wait_fence) {
         if (!present_fence_check_triggered(vblank->wait_fence)) {
@@ -604,7 +605,20 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
 
         present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
     }
-    present_vblank_notify(vblank, vblank->kind, PresentCompleteModeCopy, ust, crtc_msc);
+
+    /* Compute correct CompleteMode
+     */
+    if (vblank->kind == PresentCompleteKindPixmap) {
+        if (vblank->pixmap && vblank->window)
+            mode = PresentCompleteModeCopy;
+        else
+            mode = PresentCompleteModeSkip;
+    }
+    else
+        mode = PresentCompleteModeCopy;
+
+
+    present_vblank_notify(vblank, vblank->kind, mode, ust, crtc_msc);
     present_vblank_destroy(vblank);
 }
 
commit e487babd525ef1bd016ec7b283fa08cf9e6c6f4f
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Dec 12 14:52:35 2013 -0800

    present: Don't abandon presents which are already queued for flip
    
    Presents which are not marked 'queued' and are in the window present
    list are waiting for the flip event; discarding those won't work very
    well (it'll end up trashing displayed content for the next frame), so
    skip over those when looking for duplicate frame presents
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/present/present.c b/present/present.c
index 4c0d63b..3caa8b7 100644
--- a/present/present.c
+++ b/present/present.c
@@ -689,6 +689,9 @@ present_pixmap(WindowPtr window,
             if (!vblank->pixmap)
                 continue;
 
+            if (!vblank->queued)
+                continue;
+
             if (vblank->crtc != target_crtc || vblank->target_msc != target_msc)
                 continue;
 
commit ca3a5b2a8f9f627bbaa9883e16512a21c2a0b81d
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Dec 12 14:17:40 2013 -0800

    present: Handle PresentOptionAsync for copy mode
    
    Check for Async flag and execute immediately if set, otherwise wait
    for the next appropriate vblank before copying.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/present/present.c b/present/present.c
index 50bd055..4c0d63b 100644
--- a/present/present.c
+++ b/present/present.c
@@ -663,10 +663,18 @@ present_pixmap(WindowPtr window,
     if (crtc_msc >= target_msc) {
         if (divisor != 0) {
             target_msc = crtc_msc - (crtc_msc % divisor) + remainder;
-            if (target_msc <= crtc_msc)
-                target_msc += divisor;
-        } else
+            if (options & PresentOptionAsync) {
+                if (target_msc < crtc_msc)
+                    target_msc += divisor;
+            } else {
+                if (target_msc <= crtc_msc)
+                    target_msc += divisor;
+            }
+        } else {
             target_msc = crtc_msc;
+            if (!(options & PresentOptionAsync))
+                target_msc++;
+        }
     }
 
     /*
commit a68df147421da21528b5be2d34678383922fa352
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Dec 19 14:31:07 2013 -0800

    Bump version to 1.14.99.905 (1.15 RC5)
    
    Another week, another RC. This should be the last before 1.15 final
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 51ac30b..7ec1997 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.14.99.904, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2013-12-10"
-RELEASE_NAME="Chai"
+AC_INIT([xorg-server], 1.14.99.905, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2013-12-19"
+RELEASE_NAME="Kraken"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AC_USE_SYSTEM_EXTENSIONS
commit 4b1ead9d3400acc3402c2480d7cc0527750c32f0
Merge: 4d62646 929795d
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Dec 19 14:14:59 2013 -0800

    Merge remote-tracking branch 'whot/for-keith'

commit 4d62646142718024b0981eb4f1fd0131e829161f
Merge: f4bfb14 81ba89d
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Dec 16 09:27:57 2013 -0800

    Merge remote-tracking branch 'jeremyhu/master'

commit f4bfb14f53a939574da1f5995f0dad949898b86a
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Dec 12 10:57:40 2013 -0500

    configure: Fix a typo near dri3/shmfence detection
    
    " is not the mate of ].
    
    Reviewed-by: Jasper St. Pierre <jstpierre at mecheye.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/configure.ac b/configure.ac
index 8bedd35..3f2c2d0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1218,7 +1218,7 @@ case "$DRI3,$HAVE_XSHMFENCE" in
 	yes,yes | auto,yes)
 		;;
 	yes,no)
-		AC_MSG_ERROR("DRI3 requested, but xshmfence not found.])
+		AC_MSG_ERROR([DRI3 requested, but xshmfence not found.])
 		DRI3=no
 		;;
 	no,*)
commit 8248b4af31ef71ac03158871b77f20eb456dbe38
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Dec 13 15:07:48 2013 -0500

    glx: Add null pointer protection to __glGetProcAddress
    
    This can't happen when GLX is the backing window system, but can
    elsewhere.  We may as well protect against it at a high level.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxext.c b/glx/glxext.c
index 84ac43d..316b4f6 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -554,7 +554,9 @@ __glXsetGetProcAddress(glx_gpa_proc get_proc_address)
 
 void *__glGetProcAddress(const char *proc)
 {
-    return _get_proc_address(proc);
+    void *ret = _get_proc_address(proc);
+
+    return ret ? ret : NoopDDA;
 }
 
 /*
commit 128449dd6498a2f74c3770f89a9dae0f70e2b351
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Dec 13 11:39:16 2013 -0500

    present: Don't use the major/minor version from the protocol headers
    
    We want to advertise the version we implement, not the version the
    protocol headers happen to describe.
    
    Reviewed-by: Jasper St. Pierre <<jstpierre at mecheye.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/include/protocol-versions.h b/include/protocol-versions.h
index 7fe61e0..fc428c8 100644
--- a/include/protocol-versions.h
+++ b/include/protocol-versions.h
@@ -67,6 +67,10 @@
 #define SERVER_PANORAMIX_MAJOR_VERSION          1
 #define SERVER_PANORAMIX_MINOR_VERSION		1
 
+/* Present */
+#define SERVER_PRESENT_MAJOR_VERSION            1
+#define SERVER_PRESENT_MINOR_VERSION            0
+
 /* RandR */
 #define SERVER_RANDR_MAJOR_VERSION		1
 #define SERVER_RANDR_MINOR_VERSION		4
diff --git a/present/present_request.c b/present/present_request.c
index 095fa2d..1064dcb 100644
--- a/present/present_request.c
+++ b/present/present_request.c
@@ -26,6 +26,7 @@
 
 #include "present_priv.h"
 #include "randrstr.h"
+#include <protocol-versions.h>
 
 static int
 proc_present_query_version(ClientPtr client)
@@ -35,8 +36,8 @@ proc_present_query_version(ClientPtr client)
         .type = X_Reply,
         .sequenceNumber = client->sequence,
         .length = 0,
-        .majorVersion = PRESENT_MAJOR,
-        .minorVersion = PRESENT_MINOR
+        .majorVersion = SERVER_PRESENT_MAJOR_VERSION,
+        .minorVersion = SERVER_PRESENT_MINOR_VERSION
     };
 
     REQUEST_SIZE_MATCH(xPresentQueryVersionReq);
commit ec6087bf070131bc3a26848fb9fb840f09b0e19d
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Dec 13 11:36:38 2013 -0500

    dri3: Don't use the major/minor version from the protocol headers
    
    We want to advertise the version we implement, not the version the
    protocol headers happen to describe.
    
    Reviewed-by: Jasper St. Pierre <<jstpierre at mecheye.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/dri3/dri3_request.c b/dri3/dri3_request.c
index 3ebb9d5..4e1408f 100644
--- a/dri3/dri3_request.c
+++ b/dri3/dri3_request.c
@@ -29,6 +29,7 @@
 #include <unistd.h>
 #include <xace.h>
 #include "../Xext/syncsdk.h"
+#include <protocol-versions.h>
 
 static int
 proc_dri3_query_version(ClientPtr client)
@@ -38,8 +39,8 @@ proc_dri3_query_version(ClientPtr client)
         .type = X_Reply,
         .sequenceNumber = client->sequence,
         .length = 0,
-        .majorVersion = DRI3_MAJOR,
-        .minorVersion = DRI3_MINOR
+        .majorVersion = SERVER_DRI3_MAJOR_VERSION,
+        .minorVersion = SERVER_DRI3_MINOR_VERSION
     };
 
     REQUEST_SIZE_MATCH(xDRI3QueryVersionReq);
diff --git a/include/protocol-versions.h b/include/protocol-versions.h
index 95df8ce..7fe61e0 100644
--- a/include/protocol-versions.h
+++ b/include/protocol-versions.h
@@ -46,6 +46,10 @@
 #define SERVER_DAMAGE_MAJOR_VERSION		1
 #define SERVER_DAMAGE_MINOR_VERSION		1
 
+/* DRI3 */
+#define SERVER_DRI3_MAJOR_VERSION               1
+#define SERVER_DRI3_MINOR_VERSION               0
+
 /* DMX */
 #define SERVER_DMX_MAJOR_VERSION		2
 #define SERVER_DMX_MINOR_VERSION		2
commit e6fafd3de70d315130fb6e5732cfd02a5901b788
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Dec 13 11:28:59 2013 -0500

    dri3: Guard against buggy clients
    
    There's nothing to stop a client from sending these requests to screens
    without DRI3 support, and if they do, we'll crash.  Let's not do that.
    
    Reviewed-by: Jasper St. Pierre <<jstpierre at mecheye.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/dri3/dri3_screen.c b/dri3/dri3_screen.c
index cf2735b..c880296 100644
--- a/dri3/dri3_screen.c
+++ b/dri3/dri3_screen.c
@@ -55,6 +55,9 @@ dri3_pixmap_from_fd(PixmapPtr *ppixmap, ScreenPtr screen, int fd,
     dri3_screen_info_ptr        info = ds->info;
     PixmapPtr                   pixmap;
 
+    if (!info || !info->pixmap_from_fd)
+        return BadImplementation;
+
     pixmap = (*info->pixmap_from_fd) (screen, fd, width, height, stride, depth, bpp);
     if (!pixmap)
         return BadAlloc;
@@ -71,6 +74,9 @@ dri3_fd_from_pixmap(int *pfd, PixmapPtr pixmap, CARD16 *stride, CARD32 *size)
     dri3_screen_info_ptr        info = ds->info;
     int                         fd;
 
+    if (!info || !info->fd_from_pixmap)
+        return BadImplementation;
+
     fd = (*info->fd_from_pixmap)(screen, pixmap, stride, size);
     if (fd < 0)
         return BadAlloc;
commit 81ba89d6703a22178a153aa39478ba2d4bde262b
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Fri Dec 13 01:39:44 2013 -0800

    configure.ac: Add PRESENT_LIB to XQUARTZ_LIBS
    
    Undefined symbols for architecture x86_64:
      "_present_extension_init", referenced from:
          _staticExtensions in libXquartz.a(miinitext.o)
      "_present_register_complete_notify", referenced from:
          ___glXregisterPresentCompleteNotify in libglx.a(glxcmds.o)
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>

diff --git a/configure.ac b/configure.ac
index 8bedd35..ac29bd9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2158,7 +2158,7 @@ if test "x$XQUARTZ" = xyes; then
 	AC_DEFINE(XQUARTZ,1,[Have Quartz])
 	AC_DEFINE(ROOTLESS,1,[Build Rootless code])
 
-	XQUARTZ_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB"
+	XQUARTZ_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB $PRESENT_LIB"
 	AC_SUBST([XQUARTZ_LIBS])
 
 	AC_CHECK_LIB([Xplugin],[xp_init],[:])
commit d7c9235ee261b0f780320985233e00dec5e2689c
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Sat Dec 7 01:36:33 2013 -0800

    XQuartz: Use asl_log_descriptor to log stdout/stderr of child processes
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>

diff --git a/hw/xquartz/X11Controller.m b/hw/xquartz/X11Controller.m
index 3d094bf..752bda3 100644
--- a/hw/xquartz/X11Controller.m
+++ b/hw/xquartz/X11Controller.m
@@ -347,7 +347,7 @@ extern char *bundle_id_prefix;
     const char *newargv[4];
     char buf[128];
     char *s;
-#if 0 && MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
     int stdout_pipe[2];
     int stderr_pipe[2];
 #endif
@@ -363,7 +363,7 @@ extern char *bundle_id_prefix;
         setenv("DISPLAY", buf, TRUE);
     }
 
-#if 0 && MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
     if (asl_log_descriptor) {
         char *asl_sender;
         aslmsg amsg = asl_new(ASL_TYPE_MSG);
@@ -413,7 +413,7 @@ extern char *bundle_id_prefix;
             _exit(1);
 
         case 0:                                     /* child2 */
-#if 0 && MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
             if (asl_log_descriptor) {
                 /* Replace our stdout/stderr */
                 dup2(stdout_pipe[1], STDOUT_FILENO);
@@ -442,7 +442,7 @@ extern char *bundle_id_prefix;
         waitpid(child1, &status, 0);
     }
 
-#if 0 && MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
     if (asl_log_descriptor) {
         /* Close the write ends of the pipe */
         close(stdout_pipe[1]);
commit ad8111d7c971ce448905c733d65ba0cfc72bdca4
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Sat Dec 7 01:14:37 2013 -0800

    darwin: Don't leave stdin/stdout closed
    
    <rdar://problem/15609419>
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>

diff --git a/os/osinit.c b/os/osinit.c
index 60d1069..4d48ea9 100644
--- a/os/osinit.c
+++ b/os/osinit.c
@@ -213,10 +213,18 @@ OsInit(void)
         dlinfo(RTLD_SELF, RTLD_DI_SETSIGNAL, &failure_signal);
 #endif
 
-#if !defined(__CYGWIN__)
+#if !defined(XQUARTZ)    /* STDIN is already /dev/null and STDOUT/STDERR is managed by console_redirect.c */
+# if defined(__APPLE__)
+        int devnullfd = open(devnull, O_RDWR, 0);
+        assert(devnullfd > 2);
+
+        dup2(devnullfd, STDIN_FILENO);
+        dup2(devnullfd, STDOUT_FILENO);
+        close(devnullfd);
+# elif !defined(__CYGWIN__)
         fclose(stdin);
         fclose(stdout);
-#endif
+# endif
         /* 
          * If a write of zero bytes to stderr returns non-zero, i.e. -1, 
          * then writing to stderr failed, and we'll write somewhere else 
@@ -250,6 +258,7 @@ OsInit(void)
             setlinebuf(stderr);
 #endif
         }
+#endif /* !XQUARTZ */
 
 #if !defined(WIN32) || defined(__CYGWIN__)
         if (getpgrp() == 0)
commit 929795d50d788358d6269ce423f72c6cc40e334b
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Dec 3 10:14:51 2013 +1000

    dix: fix check for grab type
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/dix/events.c b/dix/events.c
index 4632bb7..4aaa54c 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -4696,7 +4696,7 @@ DeviceEnterLeaveEvent(DeviceIntPtr mouse,
 
     filter = GetEventFilter(mouse, (xEvent *) event);
 
-    if (grab && grab->type == XI2) {
+    if (grab && grab->grabtype == XI2) {
         Mask mask;
 
         mask = xi2mask_isset(grab->xi2mask, mouse, type);
commit 23394c7fea0f5c33333198c87ecfecc9f6c6a791
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Dec 3 08:36:45 2013 +1000

    Xi: ungrab device when releasing a passive grab without ButtonReleaseMask (#71878)
    
    If an touch triggers an async button grab and that grab does not have the
    ButtonReleaseMask set, the TouchEnd is never delivered, deliveries is 0  and
    the grab is never deactivated.
    
    If the grab is pointer async and keyboard sync, the keyboard events are stuck
    in EnqueueEvent until some other pointer event terminates the grab.
    
    Change this to check for the number of listeners. If we're about to deliver a
    TouchEnd to a passive pointer grab, the number of listeners is already 1 -
    pointer grabs always accept so other listeners were removed.
    
    X.Org Bug 71878 <http://bugs.freedesktop.org/show_bug.cgi?id=71878>
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xi/exevents.c b/Xi/exevents.c
index 5e1d3e0..dff0a92 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1413,7 +1413,8 @@ DeliverTouchEmulatedEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
                 !(ev->device_event.flags & TOUCH_CLIENT_ID))
                 TouchListenerAcceptReject(dev, ti, 0, XIAcceptTouch);
 
-            if (deliveries && ev->any.type == ET_TouchEnd &&
+            if (ev->any.type == ET_TouchEnd &&
+                ti->num_listeners == 1 &&
                 !dev->button->buttonsDown &&
                 dev->deviceGrab.fromPassiveGrab && GrabIsPointerGrab(grab)) {
                 (*dev->deviceGrab.DeactivateGrab) (dev);
commit c1d30b5bd7f90e68bc38404fd0cc32578d6d3018
Author: Ben Gamari <bgamari.foss at gmail.com>
Date:   Thu Nov 21 21:24:20 2013 -0500

    Xi: Don't ActivateEarlyAccept POINTER_REGULAR listeners
    
    Bug #71878 describes a bug resulting in the server ceasing to respond to
    keyboard input after a touch event. The problem might be the following:
    
    DeliverTouchBeginEvent tries to deliver an event to a listener of type
    LISTENER_POINTER_REGULAR, taking the following if branch,
    
        if (listener->type == LISTENER_POINTER_REGULAR ||
            listener->type == LISTENER_POINTER_GRAB) {
            rc = DeliverTouchEmulatedEvent(dev, ti, ev, listener, client, win,
                                           grab, xi2mask);
            if (rc == Success) {
                listener->state = LISTENER_IS_OWNER;
                /* async grabs cannot replay, so automatically accept this touch */
                if (dev->deviceGrab.grab &&
                    dev->deviceGrab.fromPassiveGrab &&
                    dev->deviceGrab.grab->pointerMode == GrabModeAsync)
                    ActivateEarlyAccept(dev, ti);
            }
            goto out;
        }
    
    DeliverTouchEmulatedEvent succeeds.  The deviceGrab meets all
    three of the conditions of the inner if, enters
    ActivateEarlyAccept which then fails due to,
    
        BUG_RETURN(ti->listeners[0].type != LISTENER_GRAB &&
                   ti->listeners[0].type != LISTENER_POINTER_GRAB);
    
    That is, despite listener->type == LISTENER_POINTER_REGULAR. With my
    non-existent knowledge of XINPUT, it seems like the solution here
    might be to only ActivateEarlyAccept when listener->type ==
    LISTENER_POINTER_GRAB.
    
    Signed-off-by: Ben Gamari <bgamari.foss at gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xi/exevents.c b/Xi/exevents.c
index 5dc9020..5e1d3e0 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1845,7 +1845,8 @@ DeliverTouchBeginEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
         if (rc == Success) {
             listener->state = LISTENER_IS_OWNER;
             /* async grabs cannot replay, so automatically accept this touch */
-            if (dev->deviceGrab.grab &&
+            if (listener->type == LISTENER_POINTER_GRAB &&
+                dev->deviceGrab.grab &&
                 dev->deviceGrab.fromPassiveGrab &&
                 dev->deviceGrab.grab->pointerMode == GrabModeAsync)
                 ActivateEarlyAccept(dev, ti);
commit fe07ec19e212a68076560d243a2a935c54589068
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Dec 10 11:27:47 2013 -0800

    present: recursively set window pixmaps on flip
    
    Newly created windows inherit the pixmap of their parent, similarly,
    reparenting a tree inherits the pixmap of the destination tree.
    
    Making present preserve the invariant that unredirected windows always
    have the same pixmap as their parent ensures that the above cases work
    correctly.
    
    v2: name the recursive function to 'set_tree_pixmap' instead of 'set_window_pixmap'
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index ffbb0b3..50bd055 100644
--- a/present/present.c
+++ b/present/present.c
@@ -312,6 +312,36 @@ present_flip_idle(ScreenPtr screen)
     }
 }
 
+struct pixmap_visit {
+    PixmapPtr   old;
+    PixmapPtr   new;
+};
+
+static int
+present_set_tree_pixmap_visit(WindowPtr window, pointer data)
+{
+    struct pixmap_visit *visit = data;
+    ScreenPtr           screen = window->drawable.pScreen;
+
+    if ((*screen->GetWindowPixmap)(window) != visit->old)
+        return WT_DONTWALKCHILDREN;
+    (*screen->SetWindowPixmap)(window, visit->new);
+    return WT_WALKCHILDREN;
+}
+    
+static void
+present_set_tree_pixmap(WindowPtr window, PixmapPtr pixmap)
+{
+    struct pixmap_visit visit;
+    ScreenPtr           screen = window->drawable.pScreen;
+
+    visit.old = (*screen->GetWindowPixmap)(window);
+    visit.new = pixmap;
+    if (visit.old == visit.new)
+        return;
+    TraverseTree(window, present_set_tree_pixmap_visit, &visit);
+}
+
 static void
 present_unflip(ScreenPtr screen)
 {
@@ -321,10 +351,10 @@ present_unflip(ScreenPtr screen)
     assert (!screen_priv->flip_pending);
 
     if (screen_priv->flip_window)
-        (*screen->SetWindowPixmap)(screen_priv->flip_window,
-                                   (*screen->GetScreenPixmap)(screen));
+        present_set_tree_pixmap(screen_priv->flip_window,
+                                  (*screen->GetScreenPixmap)(screen));
 
-    (*screen->SetWindowPixmap)(screen->root, (*screen->GetScreenPixmap)(screen));
+    present_set_tree_pixmap(screen->root, (*screen->GetScreenPixmap)(screen));
 
     /* Update the screen pixmap with the current flip pixmap contents
      */
@@ -527,10 +557,10 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
                  *  2) Set current flip window pixmap to the new pixmap
                  */
                 if (screen_priv->flip_window && screen_priv->flip_window != window)
-                    (*screen->SetWindowPixmap)(screen_priv->flip_window,
-                                               (*screen->GetScreenPixmap)(screen));
-                (*screen->SetWindowPixmap)(vblank->window, vblank->pixmap);
-                (*screen->SetWindowPixmap)(screen->root, vblank->pixmap);
+                    present_set_tree_pixmap(screen_priv->flip_window,
+                                              (*screen->GetScreenPixmap)(screen));
+                present_set_tree_pixmap(vblank->window, vblank->pixmap);
+                present_set_tree_pixmap(screen->root, vblank->pixmap);
 
                 /* Report update region as damaged
                  */
commit b3533d0b212b6747a8f9a01931253d6bdb648ee2
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Dec 10 10:29:11 2013 -0800

    Bump version to 1.14.99.904 (1.15 RC4)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 045dfbe..8bedd35 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.14.99.903, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2013-11-23"
-RELEASE_NAME="Apple Pie"
+AC_INIT([xorg-server], 1.14.99.904, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2013-12-10"
+RELEASE_NAME="Chai"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AC_USE_SYSTEM_EXTENSIONS
commit 9a4d7572fe3be16bb5aded5f48d4217fdf725b1d
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Thu Sep 27 18:59:45 2012 +0100

    hw/xwin/glx: Rewrite WGL wrappers after Xserver conversion to direct GL dispatch
    
    v1: Rewrite by Marc Haesen of the WGL wrapper function generation script to use
    Khronos group XML.
    
    v2: Remove -dispatchheader option, since dispatch.h doesn't exist anymore, use
    the private glapi interface to construct the GL dispatch table for the native
    WGL thunks.
    
    v3:
    Rewrite to generate shims for the OpenGL 1.2.1 (GL 1.2 + GL_ARB_imaging
    +GL_ARB_multitexture + GL_ARB_texture_compression(?)) functions the server links
    directly with rather than libGL.
    
    These shims dispatch to either the mesa GL DLL, or a thunking DLL containing
    cdecl-to-stcall wrapper functions for the native GL DLL.
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/configure.ac b/configure.ac
index 3855d72..045dfbe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2109,7 +2109,7 @@ if test "x$XWIN" = xyes; then
 	esac
 
 	XWIN_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $RANDR_LIB $RENDER_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $DAMAGE_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $OS_LIB"
-	XWIN_SYS_LIBS="$XWIN_SYS_LIBS $XWINMODULES_LIBS $GLX_SYS_LIBS"
+	XWIN_SYS_LIBS="$XWIN_SYS_LIBS $XWINMODULES_LIBS"
 	AC_SUBST(XWIN_LIBS)
 	AC_SUBST(XWIN_SERVER_NAME)
 	AC_SUBST(XWIN_SYS_LIBS)
@@ -2125,10 +2125,16 @@ if test "x$XWIN" = xyes; then
 
 dnl XWin with AIGLX requires OpenGL spec files in order to generate wrapper code for native GL functions
 	if [test "x$XWIN" = xyes && test "x$AIGLX" = xyes] ; then
-           AC_CHECK_PROG(PYTHON, python, python)
-           if test -z "$PYTHON"; then
-                AC_MSG_ERROR([python not found])
+           AC_CHECK_PROG(PYTHON3, python3, python3)
+           if test -z "$PYTHON3"; then
+                AC_MSG_ERROR([python3 not found])
            fi
+           AC_MSG_CHECKING(for python module lxml)
+           $PYTHON3 -c "import lxml;"
+           if test $? -ne 0 ; then
+                AC_MSG_ERROR([not found])
+           fi
+           AC_MSG_RESULT(yes)
            if test "x$KHRONOS_SPEC_DIR" = "xauto" ; then
 		PKG_CHECK_MODULES([KHRONOS_OPENGL_REGISTRY], [khronos-opengl-registry])
 		KHRONOS_SPEC_DIR=`pkg-config khronos-opengl-registry --variable=specdir`
diff --git a/hw/xwin/Makefile.am b/hw/xwin/Makefile.am
index c700695..7f0eaf0 100644
--- a/hw/xwin/Makefile.am
+++ b/hw/xwin/Makefile.am
@@ -157,7 +157,7 @@ XWIN_LIBS += 	$(top_builddir)/pseudoramiX/libPseudoramiX.la
 
 XWin_DEPENDENCIES = $(MULTIWINDOWEXTWM_LIBS) $(XWIN_GLX_LIBS) $(XWIN_LIBS) $(XSERVER_LIBS)
 XWin_LDADD = $(MULTIWINDOW_LIBS) $(MULTIWINDOWEXTWM_LIBS) $(XWIN_GLX_LIBS) $(XWIN_GLX_LINK_FLAGS) $(XWIN_LIBS) $(MAIN_LIB) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) $(XWIN_SYS_LIBS)
-XWin_LDFLAGS = -mwindows -static
+XWin_LDFLAGS = -mwindows -static -Wl,--disable-stdcall-fixup
 
 .rc.o:
 	$(AM_V_GEN)$(WINDRES) --use-temp-file -i $< --input-format=rc -o $@ -O coff -I $(top_builddir)/include
diff --git a/hw/xwin/glx/Makefile.am b/hw/xwin/glx/Makefile.am
index 067ee5b..f2dffbf 100644
--- a/hw/xwin/glx/Makefile.am
+++ b/hw/xwin/glx/Makefile.am
@@ -1,14 +1,18 @@
 noinst_LTLIBRARIES = libXwinGLX.la
+lib_LTLIBRARIES = libnativeGLthunk.la
 
 libXwinGLX_la_SOURCES = \
 	winpriv.c \
 	winpriv.h \
 	glwindows.h \
-	glwrap.c \
+	glshim.c \
 	indirect.c \
 	wgl_ext_api.c \
 	wgl_ext_api.h
 
+libnativeGLthunk_la_SOURCES = \
+	glthunk.c
+
 if XWIN_MULTIWINDOW
 DEFS_MULTIWINDOW = -DXWIN_MULTIWINDOW
 endif
@@ -30,16 +34,32 @@ AM_CFLAGS = -DHAVE_XWIN_CONFIG_H $(DIX_CFLAGS) \
             -I$(top_srcdir) \
             -I$(top_srcdir)/hw/xwin/
 
+libnativeGLthunk_la_CFLAGS = $(AM_CFLAGS) -Wno-unused-function -Wno-missing-prototypes -Wno-missing-declarations
+libnativeGLthunk_la_LDFLAGS = -shared -no-undefined -avoid-version -lopengl32 -export-symbols generated_gl_thunks.def
+EXTRA_libnativeGLthunk_la_DEPENDENCIES = generated_gl_thunks.def
+
 if XWIN_GLX_WINDOWS
 
-generated_gl_wrappers.c: gen_gl_wrappers.py $(KHRONOS_SPEC_DIR)/gl.spec $(KHRONOS_SPEC_DIR)/gl.tm
-	$(AM_V_GEN)$(PYTHON) $(srcdir)/gen_gl_wrappers.py --spec=$(KHRONOS_SPEC_DIR)/gl.spec --typemap=$(KHRONOS_SPEC_DIR)/gl.tm --dispatch-header=$(top_srcdir)/glx/dispatch.h --staticwrappers >generated_gl_wrappers.c
+if DEBUG
+GENGLWRAPPERSOPTS=""
+else
+GENGLWRAPPERSOPTS="-nodebug"
+endif
+
+generated_wgl_wrappers.c: $(srcdir)/gen_gl_wrappers.py $(KHRONOS_SPEC_DIR)/wgl.xml $(KHRONOS_SPEC_DIR)/reg.py
+	$(AM_V_GEN)PYTHONPATH=$(KHRONOS_SPEC_DIR) $(PYTHON3) $(srcdir)/gen_gl_wrappers.py -registry $(KHRONOS_SPEC_DIR)/wgl.xml -prefix wgl -wrapper -preresolve $(GENGLWRAPPERSOPTS) -outfile $@
+
+generated_gl_shim.c: $(srcdir)/gen_gl_wrappers.py $(KHRONOS_SPEC_DIR)/gl.xml $(KHRONOS_SPEC_DIR)/reg.py
+	$(AM_V_GEN)PYTHONPATH=$(KHRONOS_SPEC_DIR) $(PYTHON3) $(srcdir)/gen_gl_wrappers.py -registry $(KHRONOS_SPEC_DIR)/gl.xml -shim $(GENGLWRAPPERSOPTS) -outfile $@
+
+generated_gl_thunks.c: $(srcdir)/gen_gl_wrappers.py $(KHRONOS_SPEC_DIR)/gl.xml $(KHRONOS_SPEC_DIR)/reg.py
+	$(AM_V_GEN)PYTHONPATH=$(KHRONOS_SPEC_DIR) $(PYTHON3) $(srcdir)/gen_gl_wrappers.py -registry $(KHRONOS_SPEC_DIR)/gl.xml -thunk $(GENGLWRAPPERSOPTS) -outfile $@
 
-generated_wgl_wrappers.c: gen_gl_wrappers.py $(KHRONOS_SPEC_DIR)/wglext.spec $(KHRONOS_SPEC_DIR)/wgl.tm
-	$(AM_V_GEN)$(PYTHON) $(srcdir)/gen_gl_wrappers.py --spec=$(KHRONOS_SPEC_DIR)/wglext.spec --typemap=$(KHRONOS_SPEC_DIR)/wgl.tm --prefix=wgl --preresolve >generated_wgl_wrappers.c
+generated_gl_thunks.def: $(srcdir)/gen_gl_wrappers.py $(KHRONOS_SPEC_DIR)/gl.xml $(KHRONOS_SPEC_DIR)/reg.py
+	$(AM_V_GEN)PYTHONPATH=$(KHRONOS_SPEC_DIR) $(PYTHON3) $(srcdir)/gen_gl_wrappers.py -registry $(KHRONOS_SPEC_DIR)/gl.xml -thunkdefs $(GENGLWRAPPERSOPTS) -outfile $@
 endif
 
-BUILT_SOURCES = generated_gl_wrappers.c generated_wgl_wrappers.c
+BUILT_SOURCES = generated_gl_shim.c generated_gl_thunks.c generated_gl_thunks.def generated_wgl_wrappers.c
 CLEANFILES = $(BUILT_SOURCES)
 
 EXTRA_DIST = gen_gl_wrappers.py
diff --git a/hw/xwin/glx/gen_gl_wrappers.py b/hw/xwin/glx/gen_gl_wrappers.py
index 2273589..683b9d9 100755
--- a/hw/xwin/glx/gen_gl_wrappers.py
+++ b/hw/xwin/glx/gen_gl_wrappers.py
@@ -1,325 +1,485 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
-# Comedy python script to generate cdecl to stdcall wrappers for GL functions
+# python script to generate cdecl to stdcall wrappers for GL functions
+# adapted from genheaders.py
 #
-# This is designed to operate on OpenGL spec files from
-# http://www.opengl.org/registry/api/
-#
-#
-# Copyright (c) Jon TURNEY 2009
+# Copyright (c) 2013 The Khronos Group Inc.
 #
 # 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
-# THE ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-# holders shall not be used in advertising or otherwise to promote the sale,
-# use or other dealings in this Software without prior written authorization.
-#
-
-import sys
-import re
-import getopt
-
-dispatchheader = ''
-prefix = 'gl'
-preresolve = False
-staticwrappers = False
-
-opts, args = getopt.getopt(sys.argv[1:], "", ['spec=', 'typemap=', 'dispatch-header=', 'prefix=', 'preresolve', 'staticwrappers' ])
-
-for o,a in opts:
-        if o == '--typemap' :
-                typemapfile = a
-        elif o == '--dispatch-header' :
-                dispatchheader = a
-        elif o == '--spec' :
-                specfile = a
-        elif o == '--prefix' :
-                prefix = a
-        elif o == '--preresolve' :
-                preresolve = True
-        elif o == '--staticwrappers' :
-                staticwrappers = True
-
+# copy of this software and/or associated documentation files (the
+# "Materials"), to deal in the Materials without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Materials, and to
+# permit persons to whom the Materials are furnished to do so, subject to
+# the following conditions:
 #
-# look for all the SET_ macros in dispatch.h, this is the set of functions
-# we need to generate
-#
-
-dispatch = {}
-
-if dispatchheader :
-        fh = open(dispatchheader)
-        dispatchh = fh.readlines()
-
-        dispatch_regex = re.compile(r'^SET_(\S*)\(')
-
-        for line in dispatchh :
-                line = line.strip()
-                m1 = dispatch_regex.search(line)
-
-                if m1 :
-                        dispatch[m1.group(1)] = 1
-
-        del dispatch['by_offset']
-
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Materials.
 #
-# read the typemap .tm file
-#
-
-typemap = {}
-
-fh = open(typemapfile)
-tm = fh.readlines()
-
-typemap_regex = re.compile(r'#define\sSET_(\S*)\(')
-
-for line in tm :
-        # ignore everything after a '#' as a comment
-        hash = line.find('#')
-        if hash != -1 :
-                line = line[:hash-1]
-
-        # ignore blank lines
-        if line.startswith('#') or len(line) == 0 :
-                continue
-
-        l = line.split(',')
-        typemap[l[0]] = l[3].strip()
-
-# interestingly, * is not a C type
-if typemap['void'] == '*' :
-        typemap['void'] = 'void'
-
-#
-# crudely parse the .spec file
-#
-
-r1 = re.compile(r'\t(\S*)\s+(\S*.*)')
-r2 = re.compile(r'(.*)\((.*)\)')
-r3 = re.compile(r'glWindowPos.*MESA')
-r4 = re.compile(r'gl.*Program(s|)NV')
-r5 = re.compile(r'glGetVertexAttribfvNV')
-
-wrappers = {}
-
-fh = open(specfile)
-glspec = fh.readlines()
-param_count = 0
-
-for line in glspec :
-        line = line.rstrip()
-
-        # ignore everything after a '#' as a comment
-        hash = line.find('#')
-        if hash != -1 :
-                line = line[:hash-1]
-
-        # ignore blank lines
-        if line.startswith('#') or len(line) == 0 :
-                continue
-
-        # lines containing ':' aren't intersting to us
-        if line.count(':') != 0 :
-                continue
-
-        # attributes of each function follow the name, indented by a tab
-        if not line.startswith('\t') :
-                m1 = r2.search(line)
-                if m1 :
-                        function = m1.group(1)
-                        arglist_use = m1.group(2)
-                        wrappers[function] = {}
-
-                        # ensure formal parameter names don't collide with reserved names or shadow global declarations
-                        arglist_use = ',' .join([i.rstrip() + '_' for i in arglist_use.split(",")])
-
-                        wrappers[function]['arglist_use'] = arglist_use
-                        param_count = 0
-        else :
-                m1 = r1.search(line)
-                if m1 :
-                        attribute = m1.group(1)
-                        value = m1.group(2)
-
-                        # make param attributes unique and ordered
-                        if attribute == 'param' :
-                                attribute = 'param' + '%02d' % param_count
-                                param_count += 1
-
-                        wrappers[function][attribute] = value
-
-#
-# now emit code
-#
-
-print '/* Automatically generated by ' + sys.argv[0] + ' DO NOT EDIT */'
-print '/* from ' + specfile + ' and typemap ' + typemapfile + ' */'
-print ''
-
-#
-# if required, emit code for non-lazy function resolving
-#
-
-if preresolve :
-        for w in sorted(wrappers.keys()) :
-                funcname = prefix + w
-                print 'RESOLVE_DECL(PFN' + funcname.upper() + 'PROC);'
-
-        print ''
-        print 'void ' + prefix + 'ResolveExtensionProcs(void)'
-        print '{'
-
-        for w in sorted(wrappers.keys()) :
-                funcname = prefix + w
-                print '  PRERESOLVE(PFN' + funcname.upper() + 'PROC, "' + funcname + '");'
-
-        print '}\n'
+# THE MATERIALS ARE 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
+# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+
+import sys, time, pdb, string, cProfile
+from reg import *
+
+# Default input / log files
+errFilename = None
+diagFilename = 'diag.txt'
+regFilename = 'gl.xml'
+outFilename = 'gen_gl_wrappers.c'
+
+protect=True
+prefix="gl"
+preresolve=False
+wrapper=False
+shim=False
+thunk=False
+thunkdefs=False
+staticwrappers=False
+nodebug=False
+
+#exclude base WGL API
+WinGDI={key: 1 for key in [
+     "wglCopyContext"
+    ,"wglCreateContext"
+    ,"wglCreateLayerContext"
+    ,"wglDeleteContext"
+    ,"wglGetCurrentContext"
+    ,"wglGetCurrentDC"
+    ,"wglGetProcAddress"
+    ,"wglMakeCurrent"
+    ,"wglShareLists"
+    ,"wglUseFontBitmapsA"
+    ,"wglUseFontBitmapsW"
+    ,"wglUseFontBitmaps"
+    ,"SwapBuffers"
+    ,"wglUseFontOutlinesA"
+    ,"wglUseFontOutlinesW"
+    ,"wglUseFontOutlines"
+    ,"wglDescribeLayerPlane"
+    ,"wglSetLayerPaletteEntries"
+    ,"wglGetLayerPaletteEntries"
+    ,"wglRealizeLayerPalette"
+    ,"wglSwapLayerBuffers"
+    ,"wglSwapMultipleBuffers"
+    ,"ChoosePixelFormat"
+    ,"DescribePixelFormat"
+    ,"GetEnhMetaFilePixelFormat"
+    ,"GetPixelFormat"
+    ,"SetPixelFormat"
+]}
+
+if __name__ == '__main__':
+    i = 1
+    while (i < len(sys.argv)):
+        arg = sys.argv[i]
+        i = i + 1
+        if (arg == '-noprotect'):
+            print('Disabling inclusion protection in output headers', file=sys.stderr)
+            protect = False
+        elif (arg == '-registry'):
+            regFilename = sys.argv[i]
+            i = i+1
+            print('Using registry', regFilename, file=sys.stderr)
+        elif (arg == '-outfile'):
+            outFilename = sys.argv[i]
+            i = i+1
+        elif (arg == '-preresolve'):
+            preresolve=True
+        elif (arg == '-wrapper'):
+            wrapper=True
+        elif (arg == '-shim'):
+            shim=True
+        elif (arg == '-thunk'):
+            thunk=True
+        elif (arg == '-thunkdefs'):
+            thunkdefs=True
+        elif (arg == '-staticwrappers'):
+            staticwrappers=True
+        elif (arg == '-prefix'):
+            prefix = sys.argv[i]
+            i = i+1
+        elif (arg == '-nodebug'):
+            nodebug = True
+        elif (arg[0:1] == '-'):
+            print('Unrecognized argument:', arg, file=sys.stderr)
+            exit(1)
+
+print('Generating', outFilename, file=sys.stderr)
+
+# Load & parse registry
+reg = Registry()
+tree = etree.parse(regFilename)
+reg.loadElementTree(tree)
+
+allVersions = '.*'
+
+genOpts = CGeneratorOptions(
+        apiname           = prefix,
+        profile           = 'compatibility',
+        versions          = allVersions,
+        emitversions      = allVersions,
+        defaultExtensions = prefix,                   # Default extensions for GL
+        protectFile       = protect,
+        protectFeature    = protect,
+        protectProto      = protect,
+        )
+
+# create error/warning & diagnostic files
+if (errFilename):
+    errWarn = open(errFilename,'w')
+else:
+    errWarn = sys.stderr
+diag = open(diagFilename, 'w')
+
+class PreResolveOutputGenerator(OutputGenerator):
+    def __init__(self,
+                 errFile = sys.stderr,
+                 warnFile = sys.stderr,
+                 diagFile = sys.stdout):
+        OutputGenerator.__init__(self, errFile, warnFile, diagFile)
+        self.wrappers={}
+    def beginFile(self, genOpts):
+        self.outFile.write('/* Automatically generated from %s - DO NOT EDIT */\n\n'%regFilename)
+    def endFile(self):
+        self.outFile.write('\nvoid ' + prefix + 'ResolveExtensionProcs(void)\n{\n')
+        for funcname in self.wrappers.keys():
+            self.outFile.write( '  PRERESOLVE(PFN' + funcname.upper() + 'PROC, "' + funcname + '");\n')
+        self.outFile.write('}\n\n')
+    def beginFeature(self, interface, emit):
+        OutputGenerator.beginFeature(self, interface, emit)
+    def endFeature(self):
+        OutputGenerator.endFeature(self)
+    def genType(self, typeinfo, name):
+        OutputGenerator.genType(self, typeinfo, name)
+    def genEnum(self, enuminfo, name):
+        OutputGenerator.genEnum(self, enuminfo, name)
+    def genCmd(self, cmd, name):
+        OutputGenerator.genCmd(self, cmd, name)
+
+        if name in WinGDI:
+            return
+
+        self.outFile.write('RESOLVE_DECL(PFN' + name.upper() + 'PROC);\n')
+        self.wrappers[name]=1
+
+class WrapperOutputGenerator(OutputGenerator):
+    def __init__(self,
+                 errFile = sys.stderr,
+                 warnFile = sys.stderr,
+                 diagFile = sys.stdout):
+        OutputGenerator.__init__(self, errFile, warnFile, diagFile)
+    def beginFile(self, genOpts):
+        self.outFile.write('/* Automatically generated from %s - DO NOT EDIT */\n\n'%regFilename)
+    def endFile(self):
+        pass
+    def beginFeature(self, interface, emit):
+        OutputGenerator.beginFeature(self, interface, emit)
+        self.OldVersion = self.featureName.startswith('GL_VERSION_1_0') or self.featureName.startswith('GL_VERSION_1_1')
+    def endFeature(self):
+        OutputGenerator.endFeature(self)
+    def genType(self, typeinfo, name):
+        OutputGenerator.genType(self, typeinfo, name)
+    def genEnum(self, enuminfo, name):
+        OutputGenerator.genEnum(self, enuminfo, name)
+    def genCmd(self, cmd, name):
+        OutputGenerator.genCmd(self, cmd, name)
+
+        if name in WinGDI:
+            return
+
+        proto=noneStr(cmd.elem.find('proto'))
+        rettype=noneStr(proto.text)
+        if rettype.lower()!="void ":
+            plist = ([t for t in proto.itertext()])
+            rettype = ''.join(plist[:-1])
+        rettype=rettype.strip()
+        if staticwrappers: self.outFile.write("static ")
+        self.outFile.write("%s %sWrapper("%(rettype, name))
+        params = cmd.elem.findall('param')
+        plist=[]
+        for param in params:
+            paramlist = ([t for t in param.itertext()])
+            paramtype = ''.join(paramlist[:-1])
+            paramname = paramlist[-1]
+            plist.append((paramtype, paramname))
+        Comma=""
+        if len(plist):
+            for ptype, pname in plist:
+                self.outFile.write("%s%s%s_"%(Comma, ptype, pname))
+                Comma=", "
+        else:
+            self.outFile.write("void")
 
-#
-# now emit the wrappers
-# for GL 1.0 and 1.1 functions, generate stdcall wrappers which call the function directly
-# for GL 1.2+ functions, generate wrappers which use wglGetProcAddress()
-#
+        self.outFile.write(")\n{\n")
 
-for w in sorted(wrappers.keys()) :
+        # for GL 1.0 and 1.1 functions, generate stdcall wrappers which call the function directly
+        if self.OldVersion:
+            if not nodebug:
+                self.outFile.write('  if (glxWinDebugSettings.enable%scallTrace) ErrorF("%s\\n");\n'%(prefix.upper(), name))
+                self.outFile.write("  glWinDirectProcCalls++;\n")
+                self.outFile.write("\n")
 
-        funcname = prefix + w
-        returntype = wrappers[w]['return']
-        if returntype != 'void' :
-                returntype = typemap[returntype]
+            if rettype.lower()=="void":
+                self.outFile.write("  %s( "%(name))
+            else:
+                self.outFile.write("  return %s( "%(name))
 
-        # Avoid generating wrappers which aren't referenced by the dispatch table
-        if dispatchheader and not dispatch.has_key(w) :
-                print '/* No wrapper for ' + funcname + ', not in dispatch table */'
-                continue
+            Comma=""
+            for ptype, pname in plist:
+                self.outFile.write("%s%s_"%(Comma, pname))
+                Comma=", "
 
-        # manufacture arglist
-        # if no param attributes were found, it should be 'void'
-        al = []
-        for k in sorted(wrappers[w].keys()) :
-                if k.startswith('param') :
-                        l = wrappers[w][k].split()
+        # for GL 1.2+ functions, generate stdcall wrappers which use wglGetProcAddress()
+        else:
+            if rettype.lower()=="void":
+                self.outFile.write('  RESOLVE(PFN%sPROC, "%s");\n'%(name.upper(), name))
+
+                if not nodebug:
+                    self.outFile.write("\n")
+                    self.outFile.write('  if (glxWinDebugSettings.enable%scallTrace) ErrorF("%s\\n");\n'%(prefix.upper(), name))
+                    self.outFile.write("\n")
+
+                self.outFile.write("  RESOLVED_PROC(PFN%sPROC)( """%(name.upper()))
+            else:
+                self.outFile.write('  RESOLVE_RET(PFN%sPROC, "%s", FALSE);\n'%(name.upper(), name))
+
+                if not nodebug:
+                    self.outFile.write("\n")
+                    self.outFile.write('  if (glxWinDebugSettings.enable%scallTrace) ErrorF("%s\\n");\n'%(prefix.upper(), name))
+                    self.outFile.write("\n")
+
+                self.outFile.write("  return RESOLVED_PROC(PFN%sPROC)("%(name.upper()))
+
+            Comma=""
+            for ptype, pname in plist:
+                self.outFile.write("%s%s_"%(Comma, pname))
+                Comma=", "
+        self.outFile.write(" );\n}\n\n")
+
+class ThunkOutputGenerator(OutputGenerator):
+    def __init__(self,
+                 errFile = sys.stderr,
+                 warnFile = sys.stderr,
+                 diagFile = sys.stdout):
+        OutputGenerator.__init__(self, errFile, warnFile, diagFile)
+    def beginFile(self, genOpts):
+        self.outFile.write('/* Automatically generated from %s - DO NOT EDIT */\n\n'%regFilename)
+    def endFile(self):
+        pass
+    def beginFeature(self, interface, emit):
+        OutputGenerator.beginFeature(self, interface, emit)
+        self.OldVersion = self.featureName.startswith('GL_VERSION_1_0') or self.featureName.startswith('GL_VERSION_1_1')
+    def endFeature(self):
+        OutputGenerator.endFeature(self)
+    def genType(self, typeinfo, name):
+        OutputGenerator.genType(self, typeinfo, name)
+    def genEnum(self, enuminfo, name):
+        OutputGenerator.genEnum(self, enuminfo, name)
+    def genCmd(self, cmd, name):
+        OutputGenerator.genCmd(self, cmd, name)
+
+        proto=noneStr(cmd.elem.find('proto'))
+        rettype=noneStr(proto.text)
+        if rettype.lower()!="void ":
+            plist = ([t for t in proto.itertext()])
+            rettype = ''.join(plist[:-1])
+        rettype=rettype.strip()
+        self.outFile.write("%s %sWrapper("%(rettype, name))
+        params = cmd.elem.findall('param')
+        plist=[]
+        for param in params:
+            paramlist = ([t for t in param.itertext()])
+            paramtype = ''.join(paramlist[:-1])
+            paramname = paramlist[-1]
+            plist.append((paramtype, paramname))
+        Comma=""
+        if len(plist):
+            for ptype, pname in plist:
+                self.outFile.write("%s%s%s_"%(Comma, ptype, pname))
+                Comma=", "
+        else:
+            self.outFile.write("void")
 
-                        # ensure formal parameter names don't collide with reserved names or shadow global declarations
-                        l[0] = l[0] + '_'
+        self.outFile.write(")\n{\n")
 
-                        if l[2] == 'in' :
-                                if l[3] == 'array' :
-                                        arg = 'const ' + typemap[l[1]] + ' *' + l[0]
-                                else :
-                                        arg = typemap[l[1]] + ' ' + l[0]
-                        elif l[2] == 'out' :
-                                arg = typemap[l[1]] + ' *' + l[0]
+        # for GL 1.0 and 1.1 functions, generate stdcall thunk wrappers which call the function directly
+        if self.OldVersion:
+            if rettype.lower()=="void":
+                self.outFile.write("  %s( "%(name))
+            else:
+                self.outFile.write("  return %s( "%(name))
 
-                        al.append(arg)
+            Comma=""
+            for ptype, pname in plist:
+                self.outFile.write("%s%s_"%(Comma, pname))
+                Comma=", "
 
-        if len(al) == 0 :
-                arglist = 'void'
+        # for GL 1.2+ functions, generate wrappers which use wglGetProcAddress()
         else:
-                arglist  = ', '.join(al)
-
-        if wrappers[w]['category'].startswith('VERSION_1_0') or wrappers[w]['category'].startswith('VERSION_1_1') :
-                if staticwrappers :
-                        print 'static',
-                print returntype + ' ' + funcname + 'Wrapper(' + arglist + ')'
-                print '{'
-                print '  if (glxWinDebugSettings.enable' + prefix.upper() + 'callTrace) ErrorF("'+ funcname + '\\n");'
-                print '  glWinDirectProcCalls++;'
-                if returntype.lower() == 'void' :
-                        print '  ' +  funcname + '(',
-                else :
-                        print ' /* returntype was ' + returntype.lower() + '*/'
-                        print '  return ' +  funcname + '(',
-
-                if arglist != 'void' :
-                        print wrappers[w]['arglist_use'],
-
-                print ');'
-                print "}\n"
+            if rettype.lower()=="void":
+                self.outFile.write('  RESOLVE(PFN%sPROC, "%s");\n'%(name.upper(), name))
+                self.outFile.write("  RESOLVED_PROC(PFN%sPROC)( """%(name.upper()))
+            else:
+                self.outFile.write('  RESOLVE_RET(PFN%sPROC, "%s", FALSE);\n'%(name.upper(), name))
+                self.outFile.write("  return RESOLVED_PROC(PFN%sPROC)("%(name.upper()))
+
+            Comma=""
+            for ptype, pname in plist:
+                self.outFile.write("%s%s_"%(Comma, pname))
+                Comma=", "
+        self.outFile.write(" );\n}\n\n")
+
+class ThunkDefsOutputGenerator(OutputGenerator):
+    def __init__(self,
+                 errFile = sys.stderr,
+                 warnFile = sys.stderr,
+                 diagFile = sys.stdout):
+        OutputGenerator.__init__(self, errFile, warnFile, diagFile)
+    def beginFile(self, genOpts):
+        self.outFile.write("EXPORTS\n"); # this must be the first line for libtool to realize this is a .def file
+        self.outFile.write('; Automatically generated from %s - DO NOT EDIT\n\n'%regFilename)
+    def endFile(self):
+        pass
+    def beginFeature(self, interface, emit):
+        OutputGenerator.beginFeature(self, interface, emit)
+    def endFeature(self):
+        OutputGenerator.endFeature(self)
+    def genType(self, typeinfo, name):
+        OutputGenerator.genType(self, typeinfo, name)
+    def genEnum(self, enuminfo, name):
+        OutputGenerator.genEnum(self, enuminfo, name)
+    def genCmd(self, cmd, name):
+        OutputGenerator.genCmd(self, cmd, name)
+
+        # export the wrapper function with the name of the function it wraps
+        self.outFile.write("%s = %sWrapper\n"%(name, name))
+
+class ShimOutputGenerator(OutputGenerator):
+    def __init__(self,
+                 errFile = sys.stderr,
+                 warnFile = sys.stderr,
+                 diagFile = sys.stdout):
+        OutputGenerator.__init__(self, errFile, warnFile, diagFile)
+    def beginFile(self, genOpts):
+        self.outFile.write('/* Automatically generated from %s - DO NOT EDIT */\n\n'%regFilename)
+    def endFile(self):
+        pass
+    def beginFeature(self, interface, emit):
+        OutputGenerator.beginFeature(self, interface, emit)
+        self.OldVersion = self.featureName.startswith('GL_VERSION_1_0') or self.featureName.startswith('GL_VERSION_1_1') or self.featureName.startswith('GL_VERSION_1_2') or self.featureName.startswith('GL_ARB_imaging') or self.featureName.startswith('GL_ARB_multitexture') or self.featureName.startswith('GL_ARB_texture_compression')
+    def endFeature(self):
+        OutputGenerator.endFeature(self)
+    def genType(self, typeinfo, name):
+        OutputGenerator.genType(self, typeinfo, name)
+    def genEnum(self, enuminfo, name):
+        OutputGenerator.genEnum(self, enuminfo, name)
+    def genCmd(self, cmd, name):
+        OutputGenerator.genCmd(self, cmd, name)
+
+        if not self.OldVersion:
+            return
+
+        # for GL functions which are in the ABI, generate a shim which calls the function via GetProcAddress
+        proto=noneStr(cmd.elem.find('proto'))
+        rettype=noneStr(proto.text)
+        if rettype.lower()!="void ":
+            plist = ([t for t in proto.itertext()])
+            rettype = ''.join(plist[:-1])
+        rettype=rettype.strip()
+        self.outFile.write("%s %s("%(rettype, name))
+        params = cmd.elem.findall('param')
+        plist=[]
+        for param in params:
+            paramlist = ([t for t in param.itertext()])
+            paramtype = ''.join(paramlist[:-1])
+            paramname = paramlist[-1]
+            plist.append((paramtype, paramname))
+        Comma=""
+        if len(plist):
+            for ptype, pname in plist:
+                self.outFile.write("%s%s%s_"%(Comma, ptype, pname))
+                Comma=", "
         else:
-                if staticwrappers :
-                        print 'static',
-                print returntype + ' ' + funcname + 'Wrapper(' + arglist + ')'
-                print '{'
+            self.outFile.write("void")
 
-                stringname = funcname
+        self.outFile.write(")\n{\n")
 
-#
-# special case: Windows OpenGL implementations are far more likely to have GL_ARB_window_pos than GL_MESA_window_pos,
-# so arrange for the wrapper to use the ARB strings to find functions...
-#
+        self.outFile.write('  typedef %s (* PFN%sPROC)(' % (rettype, name.upper()))
 
-                m2 = r3.search(funcname)
-                if m2 :
-                        stringname = stringname.replace('MESA','ARB')
+        if len(plist):
+            Comma=""
+            for ptype, pname in plist:
+                self.outFile.write("%s %s %s_"%(Comma, ptype, pname))
+                Comma=", "
+        else:
+            self.outFile.write("void")
 
-#
-# special case: likewise, implementations are more likely to have GL_ARB_vertex_program than GL_NV_vertex_program,
-# especially if they are not NV implementations, so arrange for the wrapper to use ARB strings to find functions
-#
+        self.outFile.write(');\n')
 
-                m3 = r4.search(funcname)
-                if m3 :
-                        stringname = stringname.replace('NV','ARB')
-                m4 = r5.search(funcname)
-                if m4 :
-                        stringname = stringname.replace('NV','ARB')
-
-                pfntypename = 'PFN' + funcname.upper() + 'PROC'
-
-                if returntype.lower() == 'void' :
-                        print '  RESOLVE(' + pfntypename + ', "' + stringname + '");'
-                        print '  if (glxWinDebugSettings.enable' + prefix.upper() + 'callTrace) ErrorF("'+ funcname + '\\n");'
-                        print '  RESOLVED_PROC(' + pfntypename + ')(',
-                else :
-                        print '  RESOLVE_RET(' + pfntypename + ', "' + stringname + '", FALSE);'
-                        print '  if (glxWinDebugSettings.enable' + prefix.upper() + 'callTrace) ErrorF("'+ funcname + '\\n");'
-                        print '  return RESOLVED_PROC(' + pfntypename + ')(',
-
-                if arglist != 'void' :
-                        print wrappers[w]['arglist_use'],
-
-                print ');'
-                print "}\n"
-
-
-# generate function to setup the dispatch table, which sets each
-# dispatch table entry to point to it's wrapper function
-# (assuming we were able to make one)
-
-if dispatchheader :
-        print 'void glWinSetupDispatchTable(void)'
-        print '{'
-        print '  static struct _glapi_table *disp = NULL;'
-        print ''
-        print '  if (!disp)'
-        print '    {'
-        print '      disp = calloc(sizeof(void *), _glapi_get_dispatch_table_size());'
-        print '      assert(disp);'
-
-        for d in sorted(dispatch.keys()) :
-                if wrappers.has_key(d) :
-                        print '      SET_'+ d + '(disp, (void *)' + prefix + d + 'Wrapper);'
-                else :
-                        print '#warning  No wrapper for ' + prefix + d + ' !'
-
-        print '    }'
-        print ''
-        print '  _glapi_set_dispatch(disp);'
-        print '}'
+        if rettype.lower()=="void":
+            self.outFile.write('  RESOLVE(PFN%sPROC, "%s");\n'%(name.upper(), name))
+            self.outFile.write('  RESOLVED_PROC(')
+        else:
+            self.outFile.write('  RESOLVE_RET(PFN%sPROC, "%s", 0);\n'%(name.upper(), name))
+            self.outFile.write('  return RESOLVED_PROC(')
+
+        Comma=""
+        for ptype, pname in plist:
+            self.outFile.write("%s%s_"%(Comma, pname))
+            Comma=", "
+
+        self.outFile.write(" );\n}\n\n")
+
+def genHeaders():
+    outFile = open(outFilename,"w")
+
+    if preresolve:
+        gen = PreResolveOutputGenerator(errFile=errWarn,
+                                        warnFile=errWarn,
+                                        diagFile=diag)
+        gen.outFile=outFile
+        reg.setGenerator(gen)
+        reg.apiGen(genOpts)
+
+    if wrapper:
+        gen = WrapperOutputGenerator(errFile=errWarn,
+                                     warnFile=errWarn,
+                                     diagFile=diag)
+        gen.outFile=outFile
+        reg.setGenerator(gen)
+        reg.apiGen(genOpts)
+
+    if shim:
+        gen = ShimOutputGenerator(errFile=errWarn,
+                                  warnFile=errWarn,
+                                  diagFile=diag)
+        gen.outFile=outFile
+        reg.setGenerator(gen)
+        reg.apiGen(genOpts)
+
+    if thunk:
+        gen = ThunkOutputGenerator(errFile=errWarn,
+                                   warnFile=errWarn,
+                                   diagFile=diag)
+        gen.outFile=outFile
+        reg.setGenerator(gen)
+        reg.apiGen(genOpts)
+
+
+    if thunkdefs:
+        gen = ThunkDefsOutputGenerator(errFile=errWarn,
+                                       warnFile=errWarn,
+                                       diagFile=diag)
+        gen.outFile=outFile
+        reg.setGenerator(gen)
+        reg.apiGen(genOpts)
+
+    outFile.close()
+
+genHeaders()
diff --git a/hw/xwin/glx/glshim.c b/hw/xwin/glx/glshim.c
new file mode 100644
index 0000000..7109196
--- /dev/null
+++ b/hw/xwin/glx/glshim.c
@@ -0,0 +1,124 @@
+/*
+ * File: glshim.c
+ * Purpose: GL shim which redirects to a specified DLL
+ *
+ * Copyright (c) Jon TURNEY 2013
+ *
+ * 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
+ * THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
+ */
+
+/*
+   A GL shim which redirects to a specified DLL
+
+   XWin is statically linked with this, rather than the system libGL, so that
+   GL calls can be directed to mesa cygGL-1.dll, or cygnativeGLthunk.dll
+   (which contains cdecl-to-stdcall thunks to the native openGL32.dll)
+*/
+
+#ifdef HAVE_XWIN_CONFIG_H
+#include <xwin-config.h>
+#endif
+
+#define GL_GLEXT_LEGACY
+#include <GL/gl.h>
+#undef GL_ARB_imaging
+#undef GL_VERSION_1_3
+#include <GL/glext.h>
+
+#include <X11/Xwindows.h>
+#include <os.h>
+#include "glwindows.h"
+#include <glx/glxserver.h>
+
+static HMODULE hMod = NULL;
+
+/*
+  Implement the __glGetProcAddress function by just using GetProcAddress() on the selected DLL
+*/
+void *glXGetProcAddressARB(const char *symbol)
+{
+    void *proc;
+
+    /* Default to the mesa GL implementation if one hasn't been selected yet */
+    if (!hMod)
+        glWinSelectImplementation(0);
+
+    proc = GetProcAddress(hMod, symbol);
+
+    if (glxWinDebugSettings.enableGLcallTrace)
+        ErrorF("glXGetProcAddressARB: Resolved '%s' in %p to %p\n", symbol, hMod, proc);
+
+    return proc;
+}
+
+/*
+  Select a GL implementation DLL
+*/
+int glWinSelectImplementation(int native)
+{
+    const char *dllname;
+
+    if (native) {
+        dllname = "cygnativeGLthunk.dll";
+    }
+    else {
+        dllname = "cygGL-1.dll";
+    }
+
+    hMod = LoadLibraryEx(dllname, NULL, 0);
+    if (hMod == NULL) {
+        ErrorF("glWinSelectGLimplementation: Could not load '%s'\n", dllname);
+        return -1;
+    }
+
+    ErrorF("glWinSelectGLimplementation: Loaded '%s'\n", dllname);
+
+    /* Connect __glGetProcAddress() to our implementation of glXGetProcAddressARB() above */
+    __glXsetGetProcAddress((glx_gpa_proc)glXGetProcAddressARB);
+
+    return 0;
+}
+
+#define RESOLVE_RET(proctype, symbol, retval) \
+    proctype proc = (proctype)glXGetProcAddressARB(symbol);   \
+    if (proc == NULL) return retval;
+
+#define RESOLVE(proctype, symbol) RESOLVE_RET(proctype, symbol,)
+#define RESOLVED_PROC proc
+
+/* Include generated shims for direct linkage to GL functions which are in the ABI */
+#include "generated_gl_shim.c"
+
+/*
+  Special wrapper for glAddSwapHintRectWIN for copySubBuffers
+
+  Only used with native GL if the GL_WIN_swap_hint extension is present, so we enable
+  GLX_MESA_copy_sub_buffer
+*/
+typedef void (__stdcall * PFNGLADDSWAPHINTRECTWIN) (GLint x, GLint y,
+                                                    GLsizei width,
+                                                    GLsizei height);
+
+void
+glAddSwapHintRectWINWrapper(GLint x, GLint y, GLsizei width,
+                            GLsizei height)
+{
+    RESOLVE(PFNGLADDSWAPHINTRECTWIN, "glAddSwapHintRectWIN");
+    RESOLVED_PROC(x, y, width, height);
+}
diff --git a/hw/xwin/glx/glthunk.c b/hw/xwin/glx/glthunk.c
new file mode 100644
index 0000000..d49fe48
--- /dev/null
+++ b/hw/xwin/glx/glthunk.c
@@ -0,0 +1,87 @@
+/*
+ * File: glthunk.c
+ * Purpose: cdecl thunk wrapper library for Win32 stdcall OpenGL library
+ *
+ * Copyright (c) Jon TURNEY 2009,2013
+ *
+ * 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
+ * THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
+ */
+
+// define USE_OPENGL32 makes gl.h declare gl*() function prototypes with stdcall linkage,
+// so our generated wrappers will correctly link with the functions in opengl32.dll
+#define USE_OPENGL32
+
+#ifdef HAVE_XWIN_CONFIG_H
+#include <xwin-config.h>
+#endif
+
+#include <X11/Xwindows.h>
+
+#define GL_GLEXT_LEGACY
+#include <GL/gl.h>
+#undef GL_ARB_imaging
+#undef GL_VERSION_1_3
+#include <GL/glext.h>
+
+static PROC
+glWinResolveHelper(PROC * cache, const char *symbol)
+{
+    PROC proc = NULL;
+
+    /* If not yet cached, call wglGetProcAddress */
+    if ((*cache) == NULL) {
+        proc = wglGetProcAddress(symbol);
+        if (proc == NULL) {
+            (*cache) = (PROC) - 1;
+        }
+        else {
+            (*cache) = proc;
+        }
+    }
+    /* Cached wglGetProcAddress failure */
+    else if ((*cache) == (PROC) - 1) {
+        proc = 0;
+    }
+    /* Cached wglGetProcAddress result */
+    else {
+        proc = (*cache);
+    }
+
+    return proc;
+}
+
+#define RESOLVE_RET(proctype, symbol, retval) \
+    static PROC cache = NULL; \
+    __stdcall proctype proc = (proctype)glWinResolveHelper(&cache, symbol); \
+    if (proc == NULL) { \
+        return retval; \
+    }
+
+#define RESOLVE(proctype, symbol) RESOLVE_RET(proctype, symbol,)
+
+#define RESOLVED_PROC(proctype) proc
+
+/*
+  Include generated cdecl wrappers for stdcall gl*() functions in opengl32.dll
+
+  OpenGL 1.2 and upward is treated as extensions, function address must
+  found using wglGetProcAddress(), but also stdcall so still need wrappers...
+*/
+
+#include "generated_gl_thunks.c"
diff --git a/hw/xwin/glx/glwindows.h b/hw/xwin/glx/glwindows.h
index ec1d1f5..4f859b4 100644
--- a/hw/xwin/glx/glwindows.h
+++ b/hw/xwin/glx/glwindows.h
@@ -42,12 +42,9 @@ typedef struct {
 
 extern glxWinDebugSettingsRec glxWinDebugSettings;
 
-void glWinCallDelta(void);
 void glxWinPushNativeProvider(void);
-const GLubyte *glGetStringWrapperNonstatic(GLenum name);
-void glAddSwapHintRectWINWrapperNonstatic(GLint x, GLint y, GLsizei width,
-                                          GLsizei height);
-void glWinSetupDispatchTable(void);
+void glAddSwapHintRectWINWrapper(GLint x, GLint y, GLsizei width, GLsizei height);
+int glWinSelectImplementation(int native);
 
 #if 1
 #define GLWIN_TRACE_MSG(msg, args...) if (glxWinDebugSettings.enableTrace) ErrorF(msg " [%s:%d]\n" , ##args , __FUNCTION__, __LINE__ )
diff --git a/hw/xwin/glx/glwrap.c b/hw/xwin/glx/glwrap.c
deleted file mode 100644
index 73cff3c..0000000
--- a/hw/xwin/glx/glwrap.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * File: glwrap.c
- * Purpose: Wrapper functions for Win32 OpenGL functions
- *
- * Authors: Alexander Gottwald
- *          Jon TURNEY
- *
- * Copyright (c) Jon TURNEY 2009
- * Copyright (c) Alexander Gottwald 2004
- *
- *
- * 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
- * THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
- */
-
-// define USE_OPENGL32 makes gl.h declare gl*() function prototypes with stdcall linkage,
-// so our generated wrappers will correctly link with the functions in opengl32.dll
-#define USE_OPENGL32
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-
-#include <X11/Xwindows.h>
-#include <GL/gl.h>
-#include <GL/glext.h>
-#include <glx/glxserver.h>
-#include <glx/glxext.h>
-#include <glx/glapi.h>
-#include <glx/dispatch.h>
-#include <glwindows.h>
-
-static unsigned int glWinIndirectProcCalls = 0;
-static unsigned int glWinDirectProcCalls = 0;
-
-void
-glWinCallDelta(void)
-{
-    static unsigned int glWinIndirectProcCallsLast = 0;
-    static unsigned int glWinDirectProcCallsLast = 0;
-
-    if ((glWinIndirectProcCalls != glWinIndirectProcCallsLast) ||
-        (glWinDirectProcCalls != glWinDirectProcCallsLast)) {
-        if (glxWinDebugSettings.enableTrace) {
-            ErrorF("after %d direct and %d indirect GL calls\n",
-                   glWinDirectProcCalls - glWinDirectProcCallsLast,
-                   glWinIndirectProcCalls - glWinIndirectProcCallsLast);
-        }
-        glWinDirectProcCallsLast = glWinDirectProcCalls;
-        glWinIndirectProcCallsLast = glWinIndirectProcCalls;
-    }
-}
-
-static PROC
-glWinResolveHelper(PROC * cache, const char *symbol)
-{
-    PROC proc = NULL;
-
-    /* If not yet cached, call wglGetProcAddress */
-    if ((*cache) == NULL) {
-        proc = wglGetProcAddress(symbol);
-        if (proc == NULL) {
-            ErrorF("glwrap: Can't resolve \"%s\"\n", symbol);
-            (*cache) = (PROC) - 1;
-        }
-        else {
-            ErrorF("glwrap: Resolved \"%s\"\n", symbol);
-            (*cache) = proc;
-        }
-    }
-    /* Cached wglGetProcAddress failure */
-    else if ((*cache) == (PROC) - 1) {
-        proc = 0;
-    }
-    /* Cached wglGetProcAddress result */
-    else {
-        proc = (*cache);
-    }
-
-    return proc;
-}
-
-#define RESOLVE_RET(proctype, symbol, retval) \
-    static PROC cache = NULL; \
-    __stdcall proctype proc = (proctype)glWinResolveHelper(&cache, symbol); \
-    if (proc == NULL) { \
-        __glXErrorCallBack(0); \
-        return retval; \
-    } \
-    glWinIndirectProcCalls++;
-
-#define RESOLVE(proctype, symbol) RESOLVE_RET(proctype, symbol,)
-
-#define RESOLVED_PROC(proctype) proc
-
-/*
-  Include generated cdecl wrappers for stdcall gl*() functions in opengl32.dll
-
-  OpenGL 1.2 and upward is treated as extensions, function address must
-  found using wglGetProcAddress(), but also stdcall so still need wrappers...
-
-  Include generated dispatch table setup function
-*/
-
-#include "generated_gl_wrappers.c"
-
-/*
-  Special non-static wrapper for glGetString for debug output
-*/
-
-const GLubyte *
-glGetStringWrapperNonstatic(GLenum name)
-{
-    return glGetString(name);
-}
-
-/*
-  Special non-static wrapper for glAddSwapHintRectWIN for copySubBuffers
-*/
-
-typedef void (__stdcall * PFNGLADDSWAPHINTRECTWIN) (GLint x, GLint y,
-                                                    GLsizei width,
-                                                    GLsizei height);
-
-void
-glAddSwapHintRectWINWrapperNonstatic(GLint x, GLint y, GLsizei width,
-                                     GLsizei height)
-{
-    RESOLVE(PFNGLADDSWAPHINTRECTWIN, "glAddSwapHintRectWIN");
-    proc(x, y, width, height);
-}
diff --git a/hw/xwin/glx/indirect.c b/hw/xwin/glx/indirect.c
index 4f09652..3d01bed 100644
--- a/hw/xwin/glx/indirect.c
+++ b/hw/xwin/glx/indirect.c
@@ -550,7 +550,9 @@ glxWinScreenProbe(ScreenPtr pScreen)
     if (NULL == screen)
         return NULL;
 
-    /* Dump out some useful information about the native renderer */
+    // Select the native GL implementation (WGL)
+    if (glWinSelectImplementation(1))
+        return NULL;
 
     // create window class
 #define WIN_GL_TEST_WINDOW_CLASS "XWinGLTest"
@@ -597,11 +599,12 @@ glxWinScreenProbe(ScreenPtr pScreen)
     // (but we need to have a current context for them to be resolvable)
     wglResolveExtensionProcs();
 
-    ErrorF("GL_VERSION:     %s\n", glGetStringWrapperNonstatic(GL_VERSION));
-    ErrorF("GL_VENDOR:      %s\n", glGetStringWrapperNonstatic(GL_VENDOR));
-    gl_renderer = (const char *) glGetStringWrapperNonstatic(GL_RENDERER);
+    /* Dump out some useful information about the native renderer */
+    ErrorF("GL_VERSION:     %s\n", glGetString(GL_VERSION));
+    ErrorF("GL_VENDOR:      %s\n", glGetString(GL_VENDOR));
+    gl_renderer = (const char *) glGetString(GL_RENDERER);
     ErrorF("GL_RENDERER:    %s\n", gl_renderer);
-    gl_extensions = (const char *) glGetStringWrapperNonstatic(GL_EXTENSIONS);
+    gl_extensions = (const char *) glGetString(GL_EXTENSIONS);
     wgl_extensions = wglGetExtensionsStringARBWrapper(hdc);
     if (!wgl_extensions)
         wgl_extensions = "";
@@ -615,7 +618,7 @@ glxWinScreenProbe(ScreenPtr pScreen)
         free(screen);
         LogMessage(X_ERROR,
                    "AIGLX: Won't use generic native renderer as it is not accelerated\n");
-        return NULL;
+        goto error;
     }
 
     // Can you see the problem here?  The extensions string is DC specific
@@ -726,7 +729,7 @@ glxWinScreenProbe(ScreenPtr pScreen)
             free(screen);
             LogMessage(X_ERROR,
                        "AIGLX: No fbConfigs could be made from native OpenGL pixel formats\n");
-            return NULL;
+            goto error;
         }
 
         /* These will be set by __glXScreenInit */
@@ -789,6 +792,13 @@ glxWinScreenProbe(ScreenPtr pScreen)
     pScreen->CopyWindow = glxWinCopyWindow;
 
     return &screen->base;
+
+ error:
+    // Something went wrong and we can't use the native GL implementation
+    // so make sure the mesa GL implementation is selected instead
+    glWinSelectImplementation(0);
+
+    return NULL;
 }
 
 /* ---------------------------------------------------------------------- */
@@ -910,7 +920,7 @@ static void
 glxWinDrawableCopySubBuffer(__GLXdrawable * drawable,
                             int x, int y, int w, int h)
 {
-    glAddSwapHintRectWINWrapperNonstatic(x, y, w, h);
+    glAddSwapHintRectWINWrapper(x, y, w, h);
     glxWinDrawableSwapBuffers(NULL, drawable);
 }
 
@@ -1458,7 +1468,6 @@ glxWinContextMakeCurrent(__GLXcontext * base)
 
     GLWIN_TRACE_MSG("glxWinContextMakeCurrent context %p (native ctx %p)", gc,
                     gc->ctx);
-    glWinCallDelta();
 
     /* Keep a note of the last active context in the drawable */
     drawPriv = gc->base.drawPriv;
@@ -1528,7 +1537,6 @@ glxWinContextLoseCurrent(__GLXcontext * base)
 
     GLWIN_TRACE_MSG("glxWinContextLoseCurrent context %p (native ctx %p)", gc,
                     gc->ctx);
-    glWinCallDelta();
 
     /*
        An error seems to be reported if we try to make no context current
@@ -1623,8 +1631,6 @@ glxWinCreateContext(__GLXscreen * screen,
     context->ctx = NULL;
     context->shareContext = shareContext;
 
-    glWinSetupDispatchTable();
-
     GLWIN_DEBUG_MSG("GLXcontext %p created", context);
 
     return &(context->base);
commit cb48877a3c4cfb1ae2248000fcd3443e3092bdaa
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Fri Dec 6 14:00:21 2013 +0000

    glx: Consistently use ARB-suffixed names for ARB_multitexture functions
    
    At the moment we have a mix of ARB and non-ARB suffixed forms for ARB_multitexture functions
    e.g. glMultiTexCoord1fvARB and glMultiTexCoord1dv
    
    Consistently use the ARB-suffixed form, assuming that is present in all libGL
    which provide the OpenGL 1.2.1 ABI we expect to be able to directly link with.
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/indirect_dispatch.c b/glx/indirect_dispatch.c
index c7a95a4..329b2e6 100644
--- a/glx/indirect_dispatch.c
+++ b/glx/indirect_dispatch.c
@@ -3460,7 +3460,7 @@ __glXDisp_CopyTexSubImage3D(GLbyte * pc)
 void
 __glXDisp_ActiveTexture(GLbyte * pc)
 {
-    glActiveTexture(*(GLenum *) (pc + 0));
+    glActiveTextureARB(*(GLenum *) (pc + 0));
 }
 
 void
@@ -3473,7 +3473,7 @@ __glXDisp_MultiTexCoord1dv(GLbyte * pc)
     }
 #endif
 
-    glMultiTexCoord1dv(*(GLenum *) (pc + 8), (const GLdouble *) (pc + 0));
+    glMultiTexCoord1dvARB(*(GLenum *) (pc + 8), (const GLdouble *) (pc + 0));
 }
 
 void
@@ -3485,13 +3485,13 @@ __glXDisp_MultiTexCoord1fvARB(GLbyte * pc)
 void
 __glXDisp_MultiTexCoord1iv(GLbyte * pc)
 {
-    glMultiTexCoord1iv(*(GLenum *) (pc + 0), (const GLint *) (pc + 4));
+    glMultiTexCoord1ivARB(*(GLenum *) (pc + 0), (const GLint *) (pc + 4));
 }
 
 void
 __glXDisp_MultiTexCoord1sv(GLbyte * pc)
 {
-    glMultiTexCoord1sv(*(GLenum *) (pc + 0), (const GLshort *) (pc + 4));
+    glMultiTexCoord1svARB(*(GLenum *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
@@ -3504,7 +3504,7 @@ __glXDisp_MultiTexCoord2dv(GLbyte * pc)
     }
 #endif
 
-    glMultiTexCoord2dv(*(GLenum *) (pc + 16), (const GLdouble *) (pc + 0));
+    glMultiTexCoord2dvARB(*(GLenum *) (pc + 16), (const GLdouble *) (pc + 0));
 }
 
 void
@@ -3516,13 +3516,13 @@ __glXDisp_MultiTexCoord2fvARB(GLbyte * pc)
 void
 __glXDisp_MultiTexCoord2iv(GLbyte * pc)
 {
-    glMultiTexCoord2iv(*(GLenum *) (pc + 0), (const GLint *) (pc + 4));
+    glMultiTexCoord2ivARB(*(GLenum *) (pc + 0), (const GLint *) (pc + 4));
 }
 
 void
 __glXDisp_MultiTexCoord2sv(GLbyte * pc)
 {
-    glMultiTexCoord2sv(*(GLenum *) (pc + 0), (const GLshort *) (pc + 4));
+    glMultiTexCoord2svARB(*(GLenum *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
@@ -3535,7 +3535,7 @@ __glXDisp_MultiTexCoord3dv(GLbyte * pc)
     }
 #endif
 
-    glMultiTexCoord3dv(*(GLenum *) (pc + 24), (const GLdouble *) (pc + 0));
+    glMultiTexCoord3dvARB(*(GLenum *) (pc + 24), (const GLdouble *) (pc + 0));
 }
 
 void
@@ -3547,13 +3547,13 @@ __glXDisp_MultiTexCoord3fvARB(GLbyte * pc)
 void
 __glXDisp_MultiTexCoord3iv(GLbyte * pc)
 {
-    glMultiTexCoord3iv(*(GLenum *) (pc + 0), (const GLint *) (pc + 4));
+    glMultiTexCoord3ivARB(*(GLenum *) (pc + 0), (const GLint *) (pc + 4));
 }
 
 void
 __glXDisp_MultiTexCoord3sv(GLbyte * pc)
 {
-    glMultiTexCoord3sv(*(GLenum *) (pc + 0), (const GLshort *) (pc + 4));
+    glMultiTexCoord3svARB(*(GLenum *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
@@ -3566,7 +3566,7 @@ __glXDisp_MultiTexCoord4dv(GLbyte * pc)
     }
 #endif
 
-    glMultiTexCoord4dv(*(GLenum *) (pc + 32), (const GLdouble *) (pc + 0));
+    glMultiTexCoord4dvARB(*(GLenum *) (pc + 32), (const GLdouble *) (pc + 0));
 }
 
 void
@@ -3578,13 +3578,13 @@ __glXDisp_MultiTexCoord4fvARB(GLbyte * pc)
 void
 __glXDisp_MultiTexCoord4iv(GLbyte * pc)
 {
-    glMultiTexCoord4iv(*(GLenum *) (pc + 0), (const GLint *) (pc + 4));
+    glMultiTexCoord4ivARB(*(GLenum *) (pc + 0), (const GLint *) (pc + 4));
 }
 
 void
 __glXDisp_MultiTexCoord4sv(GLbyte * pc)
 {
-    glMultiTexCoord4sv(*(GLenum *) (pc + 0), (const GLshort *) (pc + 4));
+    glMultiTexCoord4svARB(*(GLenum *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
diff --git a/glx/indirect_dispatch_swap.c b/glx/indirect_dispatch_swap.c
index ebb2ec6..647d0c9 100644
--- a/glx/indirect_dispatch_swap.c
+++ b/glx/indirect_dispatch_swap.c
@@ -3821,7 +3821,7 @@ __glXDispSwap_CopyTexSubImage3D(GLbyte * pc)
 void
 __glXDispSwap_ActiveTexture(GLbyte * pc)
 {
-    glActiveTexture((GLenum) bswap_ENUM(pc + 0));
+    glActiveTextureARB((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
@@ -3834,8 +3834,8 @@ __glXDispSwap_MultiTexCoord1dv(GLbyte * pc)
     }
 #endif
 
-    glMultiTexCoord1dv((GLenum) bswap_ENUM(pc + 8),
-                       (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0),
+    glMultiTexCoord1dvARB((GLenum) bswap_ENUM(pc + 8),
+                          (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0),
                                                          1));
 }
 
@@ -3850,17 +3850,17 @@ __glXDispSwap_MultiTexCoord1fvARB(GLbyte * pc)
 void
 __glXDispSwap_MultiTexCoord1iv(GLbyte * pc)
 {
-    glMultiTexCoord1iv((GLenum) bswap_ENUM(pc + 0),
-                       (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
-                                                      1));
+    glMultiTexCoord1ivARB((GLenum) bswap_ENUM(pc + 0),
+                          (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                         1));
 }
 
 void
 __glXDispSwap_MultiTexCoord1sv(GLbyte * pc)
 {
-    glMultiTexCoord1sv((GLenum) bswap_ENUM(pc + 0),
-                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                        1));
+    glMultiTexCoord1svARB((GLenum) bswap_ENUM(pc + 0),
+                          (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                           1));
 }
 
 void
@@ -3873,9 +3873,9 @@ __glXDispSwap_MultiTexCoord2dv(GLbyte * pc)
     }
 #endif
 
-    glMultiTexCoord2dv((GLenum) bswap_ENUM(pc + 16),
-                       (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0),
-                                                         2));
+    glMultiTexCoord2dvARB((GLenum) bswap_ENUM(pc + 16),
+                          (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0),
+                                                            2));
 }
 
 void
@@ -3889,17 +3889,17 @@ __glXDispSwap_MultiTexCoord2fvARB(GLbyte * pc)
 void
 __glXDispSwap_MultiTexCoord2iv(GLbyte * pc)
 {
-    glMultiTexCoord2iv((GLenum) bswap_ENUM(pc + 0),
-                       (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
-                                                      2));
+    glMultiTexCoord2ivARB((GLenum) bswap_ENUM(pc + 0),
+                          (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                         2));
 }
 
 void
 __glXDispSwap_MultiTexCoord2sv(GLbyte * pc)
 {
-    glMultiTexCoord2sv((GLenum) bswap_ENUM(pc + 0),
-                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                        2));
+    glMultiTexCoord2svARB((GLenum) bswap_ENUM(pc + 0),
+                          (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                           2));
 }
 
 void
@@ -3912,9 +3912,9 @@ __glXDispSwap_MultiTexCoord3dv(GLbyte * pc)
     }
 #endif
 
-    glMultiTexCoord3dv((GLenum) bswap_ENUM(pc + 24),
-                       (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0),
-                                                         3));
+    glMultiTexCoord3dvARB((GLenum) bswap_ENUM(pc + 24),
+                          (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0),
+                                                            3));
 }
 
 void
@@ -3928,17 +3928,17 @@ __glXDispSwap_MultiTexCoord3fvARB(GLbyte * pc)
 void
 __glXDispSwap_MultiTexCoord3iv(GLbyte * pc)
 {
-    glMultiTexCoord3iv((GLenum) bswap_ENUM(pc + 0),
-                       (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
-                                                      3));
+    glMultiTexCoord3ivARB((GLenum) bswap_ENUM(pc + 0),
+                          (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                         3));
 }
 
 void
 __glXDispSwap_MultiTexCoord3sv(GLbyte * pc)
 {
-    glMultiTexCoord3sv((GLenum) bswap_ENUM(pc + 0),
-                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                        3));
+    glMultiTexCoord3svARB((GLenum) bswap_ENUM(pc + 0),
+                          (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                           3));
 }
 
 void
@@ -3951,9 +3951,9 @@ __glXDispSwap_MultiTexCoord4dv(GLbyte * pc)
     }
 #endif
 
-    glMultiTexCoord4dv((GLenum) bswap_ENUM(pc + 32),
-                       (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0),
-                                                         4));
+    glMultiTexCoord4dvARB((GLenum) bswap_ENUM(pc + 32),
+                          (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0),
+                                                            4));
 }
 
 void
@@ -3967,17 +3967,17 @@ __glXDispSwap_MultiTexCoord4fvARB(GLbyte * pc)
 void
 __glXDispSwap_MultiTexCoord4iv(GLbyte * pc)
 {
-    glMultiTexCoord4iv((GLenum) bswap_ENUM(pc + 0),
-                       (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
-                                                      4));
+    glMultiTexCoord4ivARB((GLenum) bswap_ENUM(pc + 0),
+                          (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                         4));
 }
 
 void
 __glXDispSwap_MultiTexCoord4sv(GLbyte * pc)
 {
-    glMultiTexCoord4sv((GLenum) bswap_ENUM(pc + 0),
-                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                        4));
+    glMultiTexCoord4svARB((GLenum) bswap_ENUM(pc + 0),
+                          (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                           4));
 }
 
 void
commit 1a021f57a1e75ab63e8f87704f0394162402c4d4
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Sun Dec 1 22:25:46 2013 +0000

    ephyr: Fix compilation when ./configure'd with --enable-debug
    
    /jhbuild/checkout/xorg/xserver/hw/kdrive/ephyr/ephyr.c: In function ‘ephyrProcessMouseMotion’:
    /jhbuild/checkout/xorg/xserver/hw/kdrive/ephyr/ephyr.c:946:188: error: ‘ephyrCurScreen’ undeclared (first use in this function)
    /jhbuild/checkout/xorg/xserver/hw/kdrive/ephyr/ephyr.c: In function ‘ephyrProcessButtonPress’:
    /jhbuild/checkout/xorg/xserver/hw/kdrive/ephyr/ephyr.c:980:186: error: ‘ephyrCurScreen’ undeclared (first use in this function)
    /jhbuild/checkout/xorg/xserver/hw/kdrive/ephyr/ephyr.c: In function ‘ephyrProcessButtonRelease’:
    /jhbuild/checkout/xorg/xserver/hw/kdrive/ephyr/ephyr.c:1007:186: error: ‘ephyrCurScreen’ undeclared (first use in this function)
    
    Fix ephyr compilation when ./configure'd with --enable-debug after commit
    46cf6bf5692ef751ec9d17ae2292565d4b13f14b, some instances of ephyrCurScreen were
    not converted to screen->pScreen->myNum.
    
    v2: Don't use a trivial local variable which will be unused when ./configure'd
    with --disable-debug
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index ef4b321..b2a7985 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -943,7 +943,7 @@ ephyrProcessMouseMotion(xcb_generic_event_t *xev)
 #ifdef XF86DRI
         EphyrWindowPair *pair = NULL;
 #endif
-        EPHYR_LOG("enqueuing mouse motion:%d\n", ephyrCurScreen);
+        EPHYR_LOG("enqueuing mouse motion:%d\n", screen->pScreen->myNum);
         x = motion->event_x;
         y = motion->event_y;
         EPHYR_LOG("initial (x,y):(%d,%d)\n", x, y);
@@ -977,7 +977,7 @@ ephyrProcessButtonPress(xcb_generic_event_t *xev)
 
     if (!ephyrMouse ||
         !((EphyrPointerPrivate *) ephyrMouse->driverPrivate)->enabled) {
-        EPHYR_LOG("skipping mouse press:%d\n", ephyrCurScreen);
+        EPHYR_LOG("skipping mouse press:%d\n", screen_from_window(button->event)->pScreen->myNum);
         return;
     }
 
@@ -987,7 +987,7 @@ ephyrProcessButtonPress(xcb_generic_event_t *xev)
      */
     mouseState |= 1 << (button->detail - 1);
 
-    EPHYR_LOG("enqueuing mouse press:%d\n", ephyrCurScreen);
+    EPHYR_LOG("enqueuing mouse press:%d\n", screen_from_window(button->event)->pScreen->myNum);
     KdEnqueuePointerEvent(ephyrMouse, mouseState | KD_MOUSE_DELTA, 0, 0, 0);
 }
 
@@ -1004,7 +1004,7 @@ ephyrProcessButtonRelease(xcb_generic_event_t *xev)
     ephyrUpdateModifierState(button->state);
     mouseState &= ~(1 << (button->detail - 1));
 
-    EPHYR_LOG("enqueuing mouse release:%d\n", ephyrCurScreen);
+    EPHYR_LOG("enqueuing mouse release:%d\n", screen_from_window(button->event)->pScreen->myNum);
     KdEnqueuePointerEvent(ephyrMouse, mouseState | KD_MOUSE_DELTA, 0, 0, 0);
 }
 
commit 875dbcef5bfcb6a94ef8456be6151e133408793f
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Fri Nov 29 14:29:20 2013 +0000

    configure.ac: Link XWin with present extension if we are building with it enabled
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/configure.ac b/configure.ac
index a093c19..3855d72 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2108,7 +2108,7 @@ if test "x$XWIN" = xyes; then
 			;;
 	esac
 
-	XWIN_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $RANDR_LIB $RENDER_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $OS_LIB"
+	XWIN_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $RANDR_LIB $RENDER_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $DAMAGE_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $OS_LIB"
 	XWIN_SYS_LIBS="$XWIN_SYS_LIBS $XWINMODULES_LIBS $GLX_SYS_LIBS"
 	AC_SUBST(XWIN_LIBS)
 	AC_SUBST(XWIN_SERVER_NAME)
commit e61e19959d9138d5b81b1f25b7aa3e257918170d
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Dec 3 13:45:43 2013 -0500

    xquartz/glx: Convert to non-glapi dispatch
    
    CGL doesn't have anything like glXGetProcAddress, and the old code just
    called down to dlsym in any case.  It's a little mind-warping since
    dlopening a framework actually loads multiple dylibs, but that's just
    how OSX rolls.
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>

diff --git a/hw/xquartz/GL/indirect.c b/hw/xquartz/GL/indirect.c
index c4999b5..8dabda1 100644
--- a/hw/xquartz/GL/indirect.c
+++ b/hw/xquartz/GL/indirect.c
@@ -48,8 +48,6 @@
 #include <glxserver.h>
 #include <glxutil.h>
 
-#include <glapi.h>
-
 #include "x-hash.h"
 
 #include "visualConfigs.h"
@@ -643,15 +641,20 @@ __glFloorLog2(GLuint val)
     "/System/Library/Frameworks/OpenGL.framework/OpenGL"
 #endif
 
+static void *opengl_framework_handle;
+
+static glx_gpa_proc
+get_proc_address(const char *sym)
+{
+    return (glx_gpa_proc) dlsym(opengl_framework_handle, sym);
+}
+
 static void
 setup_dispatch_table(void)
 {
-    static struct _glapi_table *disp = NULL;
-    static void *handle;
     const char *opengl_framework_path;
 
-    if (disp) {
-        _glapi_set_dispatch(disp);
+    if (opengl_framework_handle) {
         return;
     }
 
@@ -661,16 +664,13 @@ setup_dispatch_table(void)
     }
 
     (void)dlerror();             /*drain dlerror */
-    handle = dlopen(opengl_framework_path, RTLD_LOCAL);
+    opengl_framework_handle = dlopen(opengl_framework_path, RTLD_LOCAL);
 
-    if (!handle) {
+    if (!opengl_framework_handle) {
         ErrorF("unable to dlopen %s : %s, using RTLD_DEFAULT\n",
                opengl_framework_path, dlerror());
-        handle = RTLD_DEFAULT;
+        opengl_framework_handle = RTLD_DEFAULT;
     }
 
-    disp = _glapi_create_table_from_handle(handle, "gl");
-    assert(disp);
-
-    _glapi_set_dispatch(disp);
+    __glXsetGetProcAddress(get_proc_address);
 }
commit a668aa0e41bc33ff2db7f9c53b6dc321a96926a9
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Dec 3 15:03:13 2013 -0500

    drisw: Wire up GetProcAddress
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c
index 2d5efa0..cbc109a 100644
--- a/glx/glxdriswrast.c
+++ b/glx/glxdriswrast.c
@@ -425,6 +425,9 @@ initializeExtensions(__GLXDRIscreen * screen)
     }
 }
 
+/* white lie */
+extern glx_func_ptr glXGetProcAddressARB(const char *);
+
 static __GLXscreen *
 __glXDRIscreenProbe(ScreenPtr pScreen)
 {
@@ -472,6 +475,8 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
     screen->base.GLXmajor = 1;
     screen->base.GLXminor = 4;
 
+    __glXsetGetProcAddress(glXGetProcAddressARB);
+
     LogMessage(X_INFO, "AIGLX: Loaded and initialized %s\n", driverName);
 
     return &screen->base;
commit 4fcdfeb7bc55d00d50d7f89788d9b929946ae3d9
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Dec 3 15:02:57 2013 -0500

    dri2: wire up GetProcAddress
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/glx/glxdri2.c b/glx/glxdri2.c
index a7ee4a3..b2f3d6e 100644
--- a/glx/glxdri2.c
+++ b/glx/glxdri2.c
@@ -55,7 +55,6 @@ typedef struct __GLXDRIscreen __GLXDRIscreen;
 typedef struct __GLXDRIcontext __GLXDRIcontext;
 typedef struct __GLXDRIdrawable __GLXDRIdrawable;
 
-
 #ifdef __DRI2_ROBUSTNESS
 #define ALL_DRI_CTX_FLAGS (__DRI_CTX_FLAG_DEBUG                         \
                            | __DRI_CTX_FLAG_FORWARD_COMPATIBLE          \
@@ -929,6 +928,9 @@ initializeExtensions(__GLXDRIscreen * screen)
     }
 }
 
+/* white lie */
+extern glx_func_ptr glXGetProcAddressARB(const char *);
+
 static __GLXscreen *
 __glXDRIscreenProbe(ScreenPtr pScreen)
 {
@@ -1013,6 +1015,8 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
     screen->leaveVT = pScrn->LeaveVT;
     pScrn->LeaveVT = glxDRILeaveVT;
 
+    __glXsetGetProcAddress(glXGetProcAddressARB);
+
     LogMessage(X_INFO, "AIGLX: Loaded and initialized %s\n", driverName);
 
     return &screen->base;
commit 47f00b3920be9d8df8b148263d744934f3a02cd4
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Dec 3 15:01:44 2013 -0500

    glx: Untangle the prototypes around the GetProcAddress thunk
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
    Reviewed-by: Jon TURNEY <jon.turney at dronecode.org.uk>

diff --git a/glx/glxext.c b/glx/glxext.c
index 601d08a..84ac43d 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -544,10 +544,10 @@ __glXleaveServer(GLboolean rendering)
     glxServerLeaveCount++;
 }
 
-static void (*(*_get_proc_address)(const char *))(void);
+static glx_gpa_proc _get_proc_address;
 
 void
-__glXsetGetProcAddress(void (*(*get_proc_address) (const char *))(void))
+__glXsetGetProcAddress(glx_gpa_proc get_proc_address)
 {
     _get_proc_address = get_proc_address;
 }
diff --git a/glx/glxserver.h b/glx/glxserver.h
index f862b63..7f36e5f 100644
--- a/glx/glxserver.h
+++ b/glx/glxserver.h
@@ -117,7 +117,9 @@ void __glXleaveServer(GLboolean rendering);
 void glxSuspendClients(void);
 void glxResumeClients(void);
 
-void __glXsetGetProcAddress(void (*(*get_proc_address) (const char *)) (void));
+typedef void (*glx_func_ptr)(void);
+typedef glx_func_ptr (*glx_gpa_proc)(const char *);
+void __glXsetGetProcAddress(glx_gpa_proc get_proc_address);
 void *__glGetProcAddress(const char *);
 
 void
commit c1fd143f2847ef425ec9891d9e1cba44a1bb007d
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Dec 3 13:11:52 2013 -0500

    glx: Remove function stubs
    
    Now that we're calling non-1.2 ABI things by function pointer this is no
    longer needed.
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
    Reviewed-by: Jon TURNEY <jon.turney at dronecode.org.uk>

diff --git a/glx/Makefile.am b/glx/Makefile.am
index 44d3a7d..54e8140 100644
--- a/glx/Makefile.am
+++ b/glx/Makefile.am
@@ -70,7 +70,6 @@ libglx_la_SOURCES = \
         glxscreens.c \
         glxscreens.h \
         glxserver.h \
-        glxstubs.c \
         glxutil.h \
         render2.c \
         render2swap.c \
diff --git a/glx/glxstubs.c b/glx/glxstubs.c
deleted file mode 100644
index 69bc004..0000000
--- a/glx/glxstubs.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright © 2013 Red Hat, Inc.
- *
- * 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.
- *
- * Authors:
- *	Adam Jackson <ajax at redhat.com>
- */
-
-/*
- * Redirection stubs for things that we call by name but that aren't exported
- * from libGL by name.  Strictly speaking this list should be a lot longer,
- * but this is enough to get us linking against contemporary Mesa.
- */
-
-#include <inttypes.h>
-#include "glxserver.h"
-
-#define thunk(name, type, call_args, ...) \
-    _X_HIDDEN void name(__VA_ARGS__) { \
-	static type proc; \
-	if (!proc) proc = __glGetProcAddress(#name); \
-	proc call_args; \
-    }
-
-thunk(glSampleMaskSGIS, PFNGLSAMPLEMASKSGISPROC,
-      (value, invert), GLclampf value, GLboolean invert)
-
-thunk(glSamplePatternSGIS, PFNGLSAMPLEPATTERNSGISPROC,
-      (pattern), GLenum pattern)
-
-thunk(glActiveStencilFaceEXT, PFNGLACTIVESTENCILFACEEXTPROC,
-      (face), GLenum face)
commit 6b93e1f5ff39c6ac5b0d97d4245aeac9113eed8b
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Dec 3 13:11:09 2013 -0500

    glx: Convert non-generated function pointer thunking
    
    Same concept as the generated code conversion.
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Jon TURNEY <jon.turney at dronecode.org.uk>

diff --git a/glx/indirect_program.c b/glx/indirect_program.c
index db22d84..fa4a240 100644
--- a/glx/indirect_program.c
+++ b/glx/indirect_program.c
@@ -104,29 +104,43 @@ DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc,
 int
 __glXDisp_GetProgramStringARB(struct __GLXclientStateRec *cl, GLbyte * pc)
 {
-    return DoGetProgramString(cl, pc, glGetProgramivARB,
-                              glGetProgramStringARB, False);
+    PFNGLGETPROGRAMIVARBPROC get_program =
+        __glGetProcAddress("glGetProgramivARB");
+    PFNGLGETPROGRAMSTRINGARBPROC get_program_string =
+        __glGetProcAddress("glGetProgramStringARB");
+
+    return DoGetProgramString(cl, pc, get_program, get_program_string, False);
 }
 
 int
 __glXDispSwap_GetProgramStringARB(struct __GLXclientStateRec *cl, GLbyte * pc)
 {
-    return DoGetProgramString(cl, pc, glGetProgramivARB,
-                              glGetProgramStringARB, True);
+    PFNGLGETPROGRAMIVARBPROC get_program =
+        __glGetProcAddress("glGetProgramivARB");
+    PFNGLGETPROGRAMSTRINGARBPROC get_program_string =
+        __glGetProcAddress("glGetProgramStringARB");
+
+    return DoGetProgramString(cl, pc, get_program, get_program_string, True);
 }
 
 int
 __glXDisp_GetProgramStringNV(struct __GLXclientStateRec *cl, GLbyte * pc)
 {
-    return DoGetProgramString(cl, pc, (PFNGLGETPROGRAMIVARBPROC)glGetProgramivNV,
-                              (PFNGLGETPROGRAMSTRINGARBPROC)glGetProgramStringNV,
-                              False);
+    PFNGLGETPROGRAMIVARBPROC get_program =
+        __glGetProcAddress("glGetProgramivARB");
+    PFNGLGETPROGRAMSTRINGARBPROC get_program_string =
+        __glGetProcAddress("glGetProgramStringARB");
+
+    return DoGetProgramString(cl, pc, get_program, get_program_string, False);
 }
 
 int
 __glXDispSwap_GetProgramStringNV(struct __GLXclientStateRec *cl, GLbyte * pc)
 {
-    return DoGetProgramString(cl, pc, (PFNGLGETPROGRAMIVARBPROC)glGetProgramivNV,
-                              (PFNGLGETPROGRAMSTRINGARBPROC)glGetProgramStringNV,
-                              True);
+    PFNGLGETPROGRAMIVARBPROC get_program =
+        __glGetProcAddress("glGetProgramivARB");
+    PFNGLGETPROGRAMSTRINGARBPROC get_program_string =
+        __glGetProcAddress("glGetProgramStringARB");
+
+    return DoGetProgramString(cl, pc, get_program, get_program_string, True);
 }
diff --git a/glx/render2.c b/glx/render2.c
index 5a2f482..8d9b5f4 100644
--- a/glx/render2.c
+++ b/glx/render2.c
@@ -231,13 +231,21 @@ __glXDisp_DrawArrays(GLbyte * pc)
             glEdgeFlagPointer(stride, (const GLboolean *) pc);
             break;
         case GL_SECONDARY_COLOR_ARRAY:
+        {
+            PFNGLSECONDARYCOLORPOINTERPROC SecondaryColorPointerEXT =
+                __glGetProcAddress("glSecondaryColorPointerEXT");
             glEnableClientState(GL_SECONDARY_COLOR_ARRAY);
-            glSecondaryColorPointerEXT(numVals, datatype, stride, pc);
+            SecondaryColorPointerEXT(numVals, datatype, stride, pc);
             break;
+        }
         case GL_FOG_COORD_ARRAY:
+        {
+            PFNGLFOGCOORDPOINTERPROC FogCoordPointerEXT =
+                __glGetProcAddress("glFogCoordPointerEXT");
             glEnableClientState(GL_FOG_COORD_ARRAY);
-            glFogCoordPointerEXT(datatype, stride, pc);
+            FogCoordPointerEXT(datatype, stride, pc);
             break;
+        }
         default:
             break;
         }
diff --git a/glx/render2swap.c b/glx/render2swap.c
index e6f73b8..6ed364f 100644
--- a/glx/render2swap.c
+++ b/glx/render2swap.c
@@ -353,13 +353,21 @@ __glXDispSwap_DrawArrays(GLbyte * pc)
             glEdgeFlagPointer(stride, (const GLboolean *) pc);
             break;
         case GL_SECONDARY_COLOR_ARRAY:
+        {
+            PFNGLSECONDARYCOLORPOINTERPROC SecondaryColorPointerEXT =
+                __glGetProcAddress("glSecondaryColorPointerEXT");
             glEnableClientState(GL_SECONDARY_COLOR_ARRAY);
-            glSecondaryColorPointerEXT(numVals, datatype, stride, pc);
+            SecondaryColorPointerEXT(numVals, datatype, stride, pc);
             break;
+        }
         case GL_FOG_COORD_ARRAY:
+        {
+            PFNGLFOGCOORDPOINTERPROC FogCoordPointerEXT =
+                __glGetProcAddress("glFogCoordPointerEXT");
             glEnableClientState(GL_FOG_COORD_ARRAY);
-            glFogCoordPointerEXT(datatype, stride, pc);
+            FogCoordPointerEXT(datatype, stride, pc);
             break;
+        }
         default:
             break;
         }
commit c4567a376083eb7b142a7f003ddf8372d376ea86
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Dec 3 12:40:24 2013 -0500

    glx: Convert generated code function pointer thunking
    
    We're meant not to call these by name due to ABI.  Rather than try to
    generate a bunch of little stub functions that do the lookup, just
    inline it all directly into the calling function.
    
    This does not cache results.  That's fine, this is not a performance
    path, and if we're atop WGL then we effectively have to do this every
    time anyway because wglGetProcAddress results are context-dependent.
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Jon TURNEY <jon.turney at dronecode.org.uk>

diff --git a/glx/indirect_dispatch.c b/glx/indirect_dispatch.c
index 1eee79a..c7a95a4 100644
--- a/glx/indirect_dispatch.c
+++ b/glx/indirect_dispatch.c
@@ -3590,107 +3590,124 @@ __glXDisp_MultiTexCoord4sv(GLbyte * pc)
 void
 __glXDisp_CompressedTexImage1D(GLbyte * pc)
 {
+    PFNGLCOMPRESSEDTEXIMAGE1DPROC CompressedTexImage1D =
+        __glGetProcAddress("glCompressedTexImage1D");
     const GLsizei imageSize = *(GLsizei *) (pc + 20);
 
-    glCompressedTexImage1D(*(GLenum *) (pc + 0),
-                           *(GLint *) (pc + 4),
-                           *(GLenum *) (pc + 8),
-                           *(GLsizei *) (pc + 12),
-                           *(GLint *) (pc + 16),
-                           imageSize, (const GLvoid *) (pc + 24));
+    CompressedTexImage1D(*(GLenum *) (pc + 0),
+                         *(GLint *) (pc + 4),
+                         *(GLenum *) (pc + 8),
+                         *(GLsizei *) (pc + 12),
+                         *(GLint *) (pc + 16),
+                         imageSize, (const GLvoid *) (pc + 24));
 }
 
 void
 __glXDisp_CompressedTexImage2D(GLbyte * pc)
 {
+    PFNGLCOMPRESSEDTEXIMAGE2DPROC CompressedTexImage2D =
+        __glGetProcAddress("glCompressedTexImage2D");
     const GLsizei imageSize = *(GLsizei *) (pc + 24);
 
-    glCompressedTexImage2D(*(GLenum *) (pc + 0),
-                           *(GLint *) (pc + 4),
-                           *(GLenum *) (pc + 8),
-                           *(GLsizei *) (pc + 12),
-                           *(GLsizei *) (pc + 16),
-                           *(GLint *) (pc + 20),
-                           imageSize, (const GLvoid *) (pc + 28));
+    CompressedTexImage2D(*(GLenum *) (pc + 0),
+                         *(GLint *) (pc + 4),
+                         *(GLenum *) (pc + 8),
+                         *(GLsizei *) (pc + 12),
+                         *(GLsizei *) (pc + 16),
+                         *(GLint *) (pc + 20),
+                         imageSize, (const GLvoid *) (pc + 28));
 }
 
 void
 __glXDisp_CompressedTexImage3D(GLbyte * pc)
 {
+    PFNGLCOMPRESSEDTEXIMAGE3DPROC CompressedTexImage3D =
+        __glGetProcAddress("glCompressedTexImage3D");
     const GLsizei imageSize = *(GLsizei *) (pc + 28);
 
-    glCompressedTexImage3D(*(GLenum *) (pc + 0),
-                           *(GLint *) (pc + 4),
-                           *(GLenum *) (pc + 8),
-                           *(GLsizei *) (pc + 12),
-                           *(GLsizei *) (pc + 16),
-                           *(GLsizei *) (pc + 20),
-                           *(GLint *) (pc + 24),
-                           imageSize, (const GLvoid *) (pc + 32));
+    CompressedTexImage3D(*(GLenum *) (pc + 0),
+                         *(GLint *) (pc + 4),
+                         *(GLenum *) (pc + 8),
+                         *(GLsizei *) (pc + 12),
+                         *(GLsizei *) (pc + 16),
+                         *(GLsizei *) (pc + 20),
+                         *(GLint *) (pc + 24),
+                         imageSize, (const GLvoid *) (pc + 32));
 }
 
 void
 __glXDisp_CompressedTexSubImage1D(GLbyte * pc)
 {
+    PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC CompressedTexSubImage1D =
+        __glGetProcAddress("glCompressedTexSubImage1D");
     const GLsizei imageSize = *(GLsizei *) (pc + 20);
 
-    glCompressedTexSubImage1D(*(GLenum *) (pc + 0),
-                              *(GLint *) (pc + 4),
-                              *(GLint *) (pc + 8),
-                              *(GLsizei *) (pc + 12),
-                              *(GLenum *) (pc + 16),
-                              imageSize, (const GLvoid *) (pc + 24));
+    CompressedTexSubImage1D(*(GLenum *) (pc + 0),
+                            *(GLint *) (pc + 4),
+                            *(GLint *) (pc + 8),
+                            *(GLsizei *) (pc + 12),
+                            *(GLenum *) (pc + 16),
+                            imageSize, (const GLvoid *) (pc + 24));
 }
 
 void
 __glXDisp_CompressedTexSubImage2D(GLbyte * pc)
 {
+    PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC CompressedTexSubImage2D =
+        __glGetProcAddress("glCompressedTexSubImage2D");
     const GLsizei imageSize = *(GLsizei *) (pc + 28);
 
-    glCompressedTexSubImage2D(*(GLenum *) (pc + 0),
-                              *(GLint *) (pc + 4),
-                              *(GLint *) (pc + 8),
-                              *(GLint *) (pc + 12),
-                              *(GLsizei *) (pc + 16),
-                              *(GLsizei *) (pc + 20),
-                              *(GLenum *) (pc + 24),
-                              imageSize, (const GLvoid *) (pc + 32));
+    CompressedTexSubImage2D(*(GLenum *) (pc + 0),
+                            *(GLint *) (pc + 4),
+                            *(GLint *) (pc + 8),
+                            *(GLint *) (pc + 12),
+                            *(GLsizei *) (pc + 16),
+                            *(GLsizei *) (pc + 20),
+                            *(GLenum *) (pc + 24),
+                            imageSize, (const GLvoid *) (pc + 32));
 }
 
 void
 __glXDisp_CompressedTexSubImage3D(GLbyte * pc)
 {
+    PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC CompressedTexSubImage3D =
+        __glGetProcAddress("glCompressedTexSubImage3D");
     const GLsizei imageSize = *(GLsizei *) (pc + 36);
 
-    glCompressedTexSubImage3D(*(GLenum *) (pc + 0),
-                              *(GLint *) (pc + 4),
-                              *(GLint *) (pc + 8),
-                              *(GLint *) (pc + 12),
-                              *(GLint *) (pc + 16),
-                              *(GLsizei *) (pc + 20),
-                              *(GLsizei *) (pc + 24),
-                              *(GLsizei *) (pc + 28),
-                              *(GLenum *) (pc + 32),
-                              imageSize, (const GLvoid *) (pc + 40));
+    CompressedTexSubImage3D(*(GLenum *) (pc + 0),
+                            *(GLint *) (pc + 4),
+                            *(GLint *) (pc + 8),
+                            *(GLint *) (pc + 12),
+                            *(GLint *) (pc + 16),
+                            *(GLsizei *) (pc + 20),
+                            *(GLsizei *) (pc + 24),
+                            *(GLsizei *) (pc + 28),
+                            *(GLenum *) (pc + 32),
+                            imageSize, (const GLvoid *) (pc + 40));
 }
 
 void
 __glXDisp_SampleCoverage(GLbyte * pc)
 {
-    glSampleCoverage(*(GLclampf *) (pc + 0), *(GLboolean *) (pc + 4));
+    PFNGLSAMPLECOVERAGEPROC SampleCoverage =
+        __glGetProcAddress("glSampleCoverage");
+    SampleCoverage(*(GLclampf *) (pc + 0), *(GLboolean *) (pc + 4));
 }
 
 void
 __glXDisp_BlendFuncSeparate(GLbyte * pc)
 {
-    glBlendFuncSeparate(*(GLenum *) (pc + 0),
-                        *(GLenum *) (pc + 4),
-                        *(GLenum *) (pc + 8), *(GLenum *) (pc + 12));
+    PFNGLBLENDFUNCSEPARATEPROC BlendFuncSeparate =
+        __glGetProcAddress("glBlendFuncSeparate");
+    BlendFuncSeparate(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                      *(GLenum *) (pc + 8), *(GLenum *) (pc + 12));
 }
 
 void
 __glXDisp_FogCoorddv(GLbyte * pc)
 {
+    PFNGLFOGCOORDDVPROC FogCoorddv = __glGetProcAddress("glFogCoorddv");
+
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 8);
@@ -3698,52 +3715,64 @@ __glXDisp_FogCoorddv(GLbyte * pc)
     }
 #endif
 
-    glFogCoorddv((const GLdouble *) (pc + 0));
+    FogCoorddv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_PointParameterf(GLbyte * pc)
 {
-    glPointParameterf(*(GLenum *) (pc + 0), *(GLfloat *) (pc + 4));
+    PFNGLPOINTPARAMETERFPROC PointParameterf =
+        __glGetProcAddress("glPointParameterf");
+    PointParameterf(*(GLenum *) (pc + 0), *(GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_PointParameterfv(GLbyte * pc)
 {
+    PFNGLPOINTPARAMETERFVPROC PointParameterfv =
+        __glGetProcAddress("glPointParameterfv");
     const GLenum pname = *(GLenum *) (pc + 0);
     const GLfloat *params;
 
     params = (const GLfloat *) (pc + 4);
 
-    glPointParameterfv(pname, params);
+    PointParameterfv(pname, params);
 }
 
 void
 __glXDisp_PointParameteri(GLbyte * pc)
 {
-    glPointParameteri(*(GLenum *) (pc + 0), *(GLint *) (pc + 4));
+    PFNGLPOINTPARAMETERIPROC PointParameteri =
+        __glGetProcAddress("glPointParameteri");
+    PointParameteri(*(GLenum *) (pc + 0), *(GLint *) (pc + 4));
 }
 
 void
 __glXDisp_PointParameteriv(GLbyte * pc)
 {
+    PFNGLPOINTPARAMETERIVPROC PointParameteriv =
+        __glGetProcAddress("glPointParameteriv");
     const GLenum pname = *(GLenum *) (pc + 0);
     const GLint *params;
 
     params = (const GLint *) (pc + 4);
 
-    glPointParameteriv(pname, params);
+    PointParameteriv(pname, params);
 }
 
 void
 __glXDisp_SecondaryColor3bv(GLbyte * pc)
 {
-    glSecondaryColor3bv((const GLbyte *) (pc + 0));
+    PFNGLSECONDARYCOLOR3BVPROC SecondaryColor3bv =
+        __glGetProcAddress("glSecondaryColor3bv");
+    SecondaryColor3bv((const GLbyte *) (pc + 0));
 }
 
 void
 __glXDisp_SecondaryColor3dv(GLbyte * pc)
 {
+    PFNGLSECONDARYCOLOR3DVPROC SecondaryColor3dv =
+        __glGetProcAddress("glSecondaryColor3dv");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 24);
@@ -3751,54 +3780,70 @@ __glXDisp_SecondaryColor3dv(GLbyte * pc)
     }
 #endif
 
-    glSecondaryColor3dv((const GLdouble *) (pc + 0));
+    SecondaryColor3dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_SecondaryColor3iv(GLbyte * pc)
 {
-    glSecondaryColor3iv((const GLint *) (pc + 0));
+    PFNGLSECONDARYCOLOR3IVPROC SecondaryColor3iv =
+        __glGetProcAddress("glSecondaryColor3iv");
+    SecondaryColor3iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_SecondaryColor3sv(GLbyte * pc)
 {
-    glSecondaryColor3sv((const GLshort *) (pc + 0));
+    PFNGLSECONDARYCOLOR3SVPROC SecondaryColor3sv =
+        __glGetProcAddress("glSecondaryColor3sv");
+    SecondaryColor3sv((const GLshort *) (pc + 0));
 }
 
 void
 __glXDisp_SecondaryColor3ubv(GLbyte * pc)
 {
-    glSecondaryColor3ubv((const GLubyte *) (pc + 0));
+    PFNGLSECONDARYCOLOR3UBVPROC SecondaryColor3ubv =
+        __glGetProcAddress("glSecondaryColor3ubv");
+    SecondaryColor3ubv((const GLubyte *) (pc + 0));
 }
 
 void
 __glXDisp_SecondaryColor3uiv(GLbyte * pc)
 {
-    glSecondaryColor3uiv((const GLuint *) (pc + 0));
+    PFNGLSECONDARYCOLOR3UIVPROC SecondaryColor3uiv =
+        __glGetProcAddress("glSecondaryColor3uiv");
+    SecondaryColor3uiv((const GLuint *) (pc + 0));
 }
 
 void
 __glXDisp_SecondaryColor3usv(GLbyte * pc)
 {
-    glSecondaryColor3usv((const GLushort *) (pc + 0));
+    PFNGLSECONDARYCOLOR3USVPROC SecondaryColor3usv =
+        __glGetProcAddress("glSecondaryColor3usv");
+    SecondaryColor3usv((const GLushort *) (pc + 0));
 }
 
 void
 __glXDisp_WindowPos3fv(GLbyte * pc)
 {
-    glWindowPos3fv((const GLfloat *) (pc + 0));
+    PFNGLWINDOWPOS3FVPROC WindowPos3fv = __glGetProcAddress("glWindowPos3fv");
+
+    WindowPos3fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_BeginQuery(GLbyte * pc)
 {
-    glBeginQuery(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
+    PFNGLBEGINQUERYPROC BeginQuery = __glGetProcAddress("glBeginQuery");
+
+    BeginQuery(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
 }
 
 int
 __glXDisp_DeleteQueries(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLDELETEQUERIESPROC DeleteQueries =
+        __glGetProcAddress("glDeleteQueries");
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -3807,7 +3852,7 @@ __glXDisp_DeleteQueries(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         const GLsizei n = *(GLsizei *) (pc + 0);
 
-        glDeleteQueries(n, (const GLuint *) (pc + 4));
+        DeleteQueries(n, (const GLuint *) (pc + 4));
         error = Success;
     }
 
@@ -3817,12 +3862,15 @@ __glXDisp_DeleteQueries(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDisp_EndQuery(GLbyte * pc)
 {
-    glEndQuery(*(GLenum *) (pc + 0));
+    PFNGLENDQUERYPROC EndQuery = __glGetProcAddress("glEndQuery");
+
+    EndQuery(*(GLenum *) (pc + 0));
 }
 
 int
 __glXDisp_GenQueries(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGENQUERIESPROC GenQueries = __glGetProcAddress("glGenQueries");
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -3835,7 +3883,7 @@ __glXDisp_GenQueries(__GLXclientState * cl, GLbyte * pc)
         GLuint *ids =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        glGenQueries(n, ids);
+        GenQueries(n, ids);
         __glXSendReply(cl->client, ids, n, 4, GL_TRUE, 0);
         error = Success;
     }
@@ -3846,6 +3894,8 @@ __glXDisp_GenQueries(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_GetQueryObjectiv(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETQUERYOBJECTIVPROC GetQueryObjectiv =
+        __glGetProcAddress("glGetQueryObjectiv");
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -3864,7 +3914,7 @@ __glXDisp_GetQueryObjectiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        glGetQueryObjectiv(*(GLuint *) (pc + 0), pname, params);
+        GetQueryObjectiv(*(GLuint *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3875,6 +3925,8 @@ __glXDisp_GetQueryObjectiv(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_GetQueryObjectuiv(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETQUERYOBJECTUIVPROC GetQueryObjectuiv =
+        __glGetProcAddress("glGetQueryObjectuiv");
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -3893,7 +3945,7 @@ __glXDisp_GetQueryObjectuiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        glGetQueryObjectuiv(*(GLuint *) (pc + 0), pname, params);
+        GetQueryObjectuiv(*(GLuint *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3904,6 +3956,7 @@ __glXDisp_GetQueryObjectuiv(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_GetQueryiv(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETQUERYIVPROC GetQueryiv = __glGetProcAddress("glGetQueryiv");
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -3922,7 +3975,7 @@ __glXDisp_GetQueryiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        glGetQueryiv(*(GLenum *) (pc + 0), pname, params);
+        GetQueryiv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3933,6 +3986,7 @@ __glXDisp_GetQueryiv(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_IsQuery(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLISQUERYPROC IsQuery = __glGetProcAddress("glIsQuery");
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -3941,7 +3995,7 @@ __glXDisp_IsQuery(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = glIsQuery(*(GLuint *) (pc + 0));
+        retval = IsQuery(*(GLuint *) (pc + 0));
         __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -3952,20 +4006,25 @@ __glXDisp_IsQuery(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDisp_BlendEquationSeparate(GLbyte * pc)
 {
-    glBlendEquationSeparate(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4));
+    PFNGLBLENDEQUATIONSEPARATEPROC BlendEquationSeparate =
+        __glGetProcAddress("glBlendEquationSeparate");
+    BlendEquationSeparate(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4));
 }
 
 void
 __glXDisp_DrawBuffers(GLbyte * pc)
 {
+    PFNGLDRAWBUFFERSPROC DrawBuffers = __glGetProcAddress("glDrawBuffers");
     const GLsizei n = *(GLsizei *) (pc + 0);
 
-    glDrawBuffers(n, (const GLenum *) (pc + 4));
+    DrawBuffers(n, (const GLenum *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib1dv(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB1DVPROC VertexAttrib1dv =
+        __glGetProcAddress("glVertexAttrib1dv");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 12);
@@ -3973,18 +4032,22 @@ __glXDisp_VertexAttrib1dv(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib1dv(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
+    VertexAttrib1dv(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib1sv(GLbyte * pc)
 {
-    glVertexAttrib1sv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
+    PFNGLVERTEXATTRIB1SVPROC VertexAttrib1sv =
+        __glGetProcAddress("glVertexAttrib1sv");
+    VertexAttrib1sv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib2dv(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB2DVPROC VertexAttrib2dv =
+        __glGetProcAddress("glVertexAttrib2dv");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 20);
@@ -3992,18 +4055,22 @@ __glXDisp_VertexAttrib2dv(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib2dv(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
+    VertexAttrib2dv(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib2sv(GLbyte * pc)
 {
-    glVertexAttrib2sv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
+    PFNGLVERTEXATTRIB2SVPROC VertexAttrib2sv =
+        __glGetProcAddress("glVertexAttrib2sv");
+    VertexAttrib2sv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib3dv(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB3DVPROC VertexAttrib3dv =
+        __glGetProcAddress("glVertexAttrib3dv");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 28);
@@ -4011,60 +4078,78 @@ __glXDisp_VertexAttrib3dv(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib3dv(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
+    VertexAttrib3dv(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib3sv(GLbyte * pc)
 {
-    glVertexAttrib3sv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
+    PFNGLVERTEXATTRIB3SVPROC VertexAttrib3sv =
+        __glGetProcAddress("glVertexAttrib3sv");
+    VertexAttrib3sv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4Nbv(GLbyte * pc)
 {
-    glVertexAttrib4Nbv(*(GLuint *) (pc + 0), (const GLbyte *) (pc + 4));
+    PFNGLVERTEXATTRIB4NBVPROC VertexAttrib4Nbv =
+        __glGetProcAddress("glVertexAttrib4Nbv");
+    VertexAttrib4Nbv(*(GLuint *) (pc + 0), (const GLbyte *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4Niv(GLbyte * pc)
 {
-    glVertexAttrib4Niv(*(GLuint *) (pc + 0), (const GLint *) (pc + 4));
+    PFNGLVERTEXATTRIB4NIVPROC VertexAttrib4Niv =
+        __glGetProcAddress("glVertexAttrib4Niv");
+    VertexAttrib4Niv(*(GLuint *) (pc + 0), (const GLint *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4Nsv(GLbyte * pc)
 {
-    glVertexAttrib4Nsv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
+    PFNGLVERTEXATTRIB4NSVPROC VertexAttrib4Nsv =
+        __glGetProcAddress("glVertexAttrib4Nsv");
+    VertexAttrib4Nsv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4Nubv(GLbyte * pc)
 {
-    glVertexAttrib4Nubv(*(GLuint *) (pc + 0), (const GLubyte *) (pc + 4));
+    PFNGLVERTEXATTRIB4NUBVPROC VertexAttrib4Nubv =
+        __glGetProcAddress("glVertexAttrib4Nubv");
+    VertexAttrib4Nubv(*(GLuint *) (pc + 0), (const GLubyte *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4Nuiv(GLbyte * pc)
 {
-    glVertexAttrib4Nuiv(*(GLuint *) (pc + 0), (const GLuint *) (pc + 4));
+    PFNGLVERTEXATTRIB4NUIVPROC VertexAttrib4Nuiv =
+        __glGetProcAddress("glVertexAttrib4Nuiv");
+    VertexAttrib4Nuiv(*(GLuint *) (pc + 0), (const GLuint *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4Nusv(GLbyte * pc)
 {
-    glVertexAttrib4Nusv(*(GLuint *) (pc + 0), (const GLushort *) (pc + 4));
+    PFNGLVERTEXATTRIB4NUSVPROC VertexAttrib4Nusv =
+        __glGetProcAddress("glVertexAttrib4Nusv");
+    VertexAttrib4Nusv(*(GLuint *) (pc + 0), (const GLushort *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4bv(GLbyte * pc)
 {
-    glVertexAttrib4bv(*(GLuint *) (pc + 0), (const GLbyte *) (pc + 4));
+    PFNGLVERTEXATTRIB4BVPROC VertexAttrib4bv =
+        __glGetProcAddress("glVertexAttrib4bv");
+    VertexAttrib4bv(*(GLuint *) (pc + 0), (const GLbyte *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4dv(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB4DVPROC VertexAttrib4dv =
+        __glGetProcAddress("glVertexAttrib4dv");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 36);
@@ -4072,54 +4157,70 @@ __glXDisp_VertexAttrib4dv(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib4dv(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
+    VertexAttrib4dv(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4iv(GLbyte * pc)
 {
-    glVertexAttrib4iv(*(GLuint *) (pc + 0), (const GLint *) (pc + 4));
+    PFNGLVERTEXATTRIB4IVPROC VertexAttrib4iv =
+        __glGetProcAddress("glVertexAttrib4iv");
+    VertexAttrib4iv(*(GLuint *) (pc + 0), (const GLint *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4sv(GLbyte * pc)
 {
-    glVertexAttrib4sv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
+    PFNGLVERTEXATTRIB4SVPROC VertexAttrib4sv =
+        __glGetProcAddress("glVertexAttrib4sv");
+    VertexAttrib4sv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4ubv(GLbyte * pc)
 {
-    glVertexAttrib4ubv(*(GLuint *) (pc + 0), (const GLubyte *) (pc + 4));
+    PFNGLVERTEXATTRIB4UBVPROC VertexAttrib4ubv =
+        __glGetProcAddress("glVertexAttrib4ubv");
+    VertexAttrib4ubv(*(GLuint *) (pc + 0), (const GLubyte *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4uiv(GLbyte * pc)
 {
-    glVertexAttrib4uiv(*(GLuint *) (pc + 0), (const GLuint *) (pc + 4));
+    PFNGLVERTEXATTRIB4UIVPROC VertexAttrib4uiv =
+        __glGetProcAddress("glVertexAttrib4uiv");
+    VertexAttrib4uiv(*(GLuint *) (pc + 0), (const GLuint *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4usv(GLbyte * pc)
 {
-    glVertexAttrib4usv(*(GLuint *) (pc + 0), (const GLushort *) (pc + 4));
+    PFNGLVERTEXATTRIB4USVPROC VertexAttrib4usv =
+        __glGetProcAddress("glVertexAttrib4usv");
+    VertexAttrib4usv(*(GLuint *) (pc + 0), (const GLushort *) (pc + 4));
 }
 
 void
 __glXDisp_ClampColor(GLbyte * pc)
 {
-    glClampColor(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4));
+    PFNGLCLAMPCOLORPROC ClampColor = __glGetProcAddress("glClampColor");
+
+    ClampColor(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4));
 }
 
 void
 __glXDisp_BindProgramARB(GLbyte * pc)
 {
-    glBindProgramARB(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
+    PFNGLBINDPROGRAMARBPROC BindProgramARB =
+        __glGetProcAddress("glBindProgramARB");
+    BindProgramARB(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
 }
 
 int
 __glXDisp_DeleteProgramsARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLDELETEPROGRAMSARBPROC DeleteProgramsARB =
+        __glGetProcAddress("glDeleteProgramsARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4128,7 +4229,7 @@ __glXDisp_DeleteProgramsARB(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         const GLsizei n = *(GLsizei *) (pc + 0);
 
-        glDeleteProgramsARB(n, (const GLuint *) (pc + 4));
+        DeleteProgramsARB(n, (const GLuint *) (pc + 4));
         error = Success;
     }
 
@@ -4138,6 +4239,8 @@ __glXDisp_DeleteProgramsARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_GenProgramsARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGENPROGRAMSARBPROC GenProgramsARB =
+        __glGetProcAddress("glGenProgramsARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4150,7 +4253,7 @@ __glXDisp_GenProgramsARB(__GLXclientState * cl, GLbyte * pc)
         GLuint *programs =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        glGenProgramsARB(n, programs);
+        GenProgramsARB(n, programs);
         __glXSendReply(cl->client, programs, n, 4, GL_TRUE, 0);
         error = Success;
     }
@@ -4161,6 +4264,8 @@ __glXDisp_GenProgramsARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_GetProgramEnvParameterdvARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETPROGRAMENVPARAMETERDVARBPROC GetProgramEnvParameterdvARB =
+        __glGetProcAddress("glGetProgramEnvParameterdvARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4169,8 +4274,8 @@ __glXDisp_GetProgramEnvParameterdvARB(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLdouble params[4];
 
-        glGetProgramEnvParameterdvARB(*(GLenum *) (pc + 0),
-                                      *(GLuint *) (pc + 4), params);
+        GetProgramEnvParameterdvARB(*(GLenum *) (pc + 0),
+                                    *(GLuint *) (pc + 4), params);
         __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0);
         error = Success;
     }
@@ -4181,6 +4286,8 @@ __glXDisp_GetProgramEnvParameterdvARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_GetProgramEnvParameterfvARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETPROGRAMENVPARAMETERFVARBPROC GetProgramEnvParameterfvARB =
+        __glGetProcAddress("glGetProgramEnvParameterfvARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4189,8 +4296,8 @@ __glXDisp_GetProgramEnvParameterfvARB(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLfloat params[4];
 
-        glGetProgramEnvParameterfvARB(*(GLenum *) (pc + 0),
-                                      *(GLuint *) (pc + 4), params);
+        GetProgramEnvParameterfvARB(*(GLenum *) (pc + 0),
+                                    *(GLuint *) (pc + 4), params);
         __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -4201,6 +4308,8 @@ __glXDisp_GetProgramEnvParameterfvARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_GetProgramLocalParameterdvARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC GetProgramLocalParameterdvARB =
+        __glGetProcAddress("glGetProgramLocalParameterdvARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4209,8 +4318,8 @@ __glXDisp_GetProgramLocalParameterdvARB(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLdouble params[4];
 
-        glGetProgramLocalParameterdvARB(*(GLenum *) (pc + 0),
-                                        *(GLuint *) (pc + 4), params);
+        GetProgramLocalParameterdvARB(*(GLenum *) (pc + 0),
+                                      *(GLuint *) (pc + 4), params);
         __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0);
         error = Success;
     }
@@ -4221,6 +4330,8 @@ __glXDisp_GetProgramLocalParameterdvARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_GetProgramLocalParameterfvARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC GetProgramLocalParameterfvARB =
+        __glGetProcAddress("glGetProgramLocalParameterfvARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4229,8 +4340,8 @@ __glXDisp_GetProgramLocalParameterfvARB(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLfloat params[4];
 
-        glGetProgramLocalParameterfvARB(*(GLenum *) (pc + 0),
-                                        *(GLuint *) (pc + 4), params);
+        GetProgramLocalParameterfvARB(*(GLenum *) (pc + 0),
+                                      *(GLuint *) (pc + 4), params);
         __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -4241,6 +4352,8 @@ __glXDisp_GetProgramLocalParameterfvARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETPROGRAMIVARBPROC GetProgramivARB =
+        __glGetProcAddress("glGetProgramivARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4259,7 +4372,7 @@ __glXDisp_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        glGetProgramivARB(*(GLenum *) (pc + 0), pname, params);
+        GetProgramivARB(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -4270,6 +4383,7 @@ __glXDisp_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_IsProgramARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLISPROGRAMARBPROC IsProgramARB = __glGetProcAddress("glIsProgramARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4278,7 +4392,7 @@ __glXDisp_IsProgramARB(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = glIsProgramARB(*(GLuint *) (pc + 0));
+        retval = IsProgramARB(*(GLuint *) (pc + 0));
         __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -4289,6 +4403,8 @@ __glXDisp_IsProgramARB(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDisp_ProgramEnvParameter4dvARB(GLbyte * pc)
 {
+    PFNGLPROGRAMENVPARAMETER4DVARBPROC ProgramEnvParameter4dvARB =
+        __glGetProcAddress("glProgramEnvParameter4dvARB");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 40);
@@ -4296,22 +4412,25 @@ __glXDisp_ProgramEnvParameter4dvARB(GLbyte * pc)
     }
 #endif
 
-    glProgramEnvParameter4dvARB(*(GLenum *) (pc + 0),
-                                *(GLuint *) (pc + 4),
-                                (const GLdouble *) (pc + 8));
+    ProgramEnvParameter4dvARB(*(GLenum *) (pc + 0),
+                              *(GLuint *) (pc + 4),
+                              (const GLdouble *) (pc + 8));
 }
 
 void
 __glXDisp_ProgramEnvParameter4fvARB(GLbyte * pc)
 {
-    glProgramEnvParameter4fvARB(*(GLenum *) (pc + 0),
-                                *(GLuint *) (pc + 4),
-                                (const GLfloat *) (pc + 8));
+    PFNGLPROGRAMENVPARAMETER4FVARBPROC ProgramEnvParameter4fvARB =
+        __glGetProcAddress("glProgramEnvParameter4fvARB");
+    ProgramEnvParameter4fvARB(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4),
+                              (const GLfloat *) (pc + 8));
 }
 
 void
 __glXDisp_ProgramLocalParameter4dvARB(GLbyte * pc)
 {
+    PFNGLPROGRAMLOCALPARAMETER4DVARBPROC ProgramLocalParameter4dvARB =
+        __glGetProcAddress("glProgramLocalParameter4dvARB");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 40);
@@ -4319,81 +4438,96 @@ __glXDisp_ProgramLocalParameter4dvARB(GLbyte * pc)
     }
 #endif
 
-    glProgramLocalParameter4dvARB(*(GLenum *) (pc + 0),
-                                  *(GLuint *) (pc + 4),
-                                  (const GLdouble *) (pc + 8));
+    ProgramLocalParameter4dvARB(*(GLenum *) (pc + 0),
+                                *(GLuint *) (pc + 4),
+                                (const GLdouble *) (pc + 8));
 }
 
 void
 __glXDisp_ProgramLocalParameter4fvARB(GLbyte * pc)
 {
-    glProgramLocalParameter4fvARB(*(GLenum *) (pc + 0),
-                                  *(GLuint *) (pc + 4),
-                                  (const GLfloat *) (pc + 8));
+    PFNGLPROGRAMLOCALPARAMETER4FVARBPROC ProgramLocalParameter4fvARB =
+        __glGetProcAddress("glProgramLocalParameter4fvARB");
+    ProgramLocalParameter4fvARB(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4),
+                                (const GLfloat *) (pc + 8));
 }
 
 void
 __glXDisp_ProgramStringARB(GLbyte * pc)
 {
+    PFNGLPROGRAMSTRINGARBPROC ProgramStringARB =
+        __glGetProcAddress("glProgramStringARB");
     const GLsizei len = *(GLsizei *) (pc + 8);
 
-    glProgramStringARB(*(GLenum *) (pc + 0),
-                       *(GLenum *) (pc + 4), len, (const GLvoid *) (pc + 12));
+    ProgramStringARB(*(GLenum *) (pc + 0),
+                     *(GLenum *) (pc + 4), len, (const GLvoid *) (pc + 12));
 }
 
 void
 __glXDisp_VertexAttrib1fvARB(GLbyte * pc)
 {
-    glVertexAttrib1fvARB(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
+    PFNGLVERTEXATTRIB1FVARBPROC VertexAttrib1fvARB =
+        __glGetProcAddress("glVertexAttrib1fvARB");
+    VertexAttrib1fvARB(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib2fvARB(GLbyte * pc)
 {
-    glVertexAttrib2fvARB(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
+    PFNGLVERTEXATTRIB2FVARBPROC VertexAttrib2fvARB =
+        __glGetProcAddress("glVertexAttrib2fvARB");
+    VertexAttrib2fvARB(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib3fvARB(GLbyte * pc)
 {
-    glVertexAttrib3fvARB(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
+    PFNGLVERTEXATTRIB3FVARBPROC VertexAttrib3fvARB =
+        __glGetProcAddress("glVertexAttrib3fvARB");
+    VertexAttrib3fvARB(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4fvARB(GLbyte * pc)
 {
-    glVertexAttrib4fvARB(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
+    PFNGLVERTEXATTRIB4FVARBPROC VertexAttrib4fvARB =
+        __glGetProcAddress("glVertexAttrib4fvARB");
+    VertexAttrib4fvARB(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_BindFramebuffer(GLbyte * pc)
 {
-    glBindFramebuffer(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
+    PFNGLBINDFRAMEBUFFERPROC BindFramebuffer =
+        __glGetProcAddress("glBindFramebuffer");
+    BindFramebuffer(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
 }
 
 void
 __glXDisp_BindRenderbuffer(GLbyte * pc)
 {
-    glBindRenderbuffer(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
+    PFNGLBINDRENDERBUFFERPROC BindRenderbuffer =
+        __glGetProcAddress("glBindRenderbuffer");
+    BindRenderbuffer(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
 }
 
 void
 __glXDisp_BlitFramebuffer(GLbyte * pc)
 {
-    glBlitFramebuffer(*(GLint *) (pc + 0),
-                      *(GLint *) (pc + 4),
-                      *(GLint *) (pc + 8),
-                      *(GLint *) (pc + 12),
-                      *(GLint *) (pc + 16),
-                      *(GLint *) (pc + 20),
-                      *(GLint *) (pc + 24),
-                      *(GLint *) (pc + 28),
-                      *(GLbitfield *) (pc + 32), *(GLenum *) (pc + 36));
+    PFNGLBLITFRAMEBUFFERPROC BlitFramebuffer =
+        __glGetProcAddress("glBlitFramebuffer");
+    BlitFramebuffer(*(GLint *) (pc + 0), *(GLint *) (pc + 4),
+                    *(GLint *) (pc + 8), *(GLint *) (pc + 12),
+                    *(GLint *) (pc + 16), *(GLint *) (pc + 20),
+                    *(GLint *) (pc + 24), *(GLint *) (pc + 28),
+                    *(GLbitfield *) (pc + 32), *(GLenum *) (pc + 36));
 }
 
 int
 __glXDisp_CheckFramebufferStatus(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus =
+        __glGetProcAddress("glCheckFramebufferStatus");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4402,7 +4536,7 @@ __glXDisp_CheckFramebufferStatus(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLenum retval;
 
-        retval = glCheckFramebufferStatus(*(GLenum *) (pc + 0));
+        retval = CheckFramebufferStatus(*(GLenum *) (pc + 0));
         __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -4413,67 +4547,77 @@ __glXDisp_CheckFramebufferStatus(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDisp_DeleteFramebuffers(GLbyte * pc)
 {
+    PFNGLDELETEFRAMEBUFFERSPROC DeleteFramebuffers =
+        __glGetProcAddress("glDeleteFramebuffers");
     const GLsizei n = *(GLsizei *) (pc + 0);
 
-    glDeleteFramebuffers(n, (const GLuint *) (pc + 4));
+    DeleteFramebuffers(n, (const GLuint *) (pc + 4));
 }
 
 void
 __glXDisp_DeleteRenderbuffers(GLbyte * pc)
 {
+    PFNGLDELETERENDERBUFFERSPROC DeleteRenderbuffers =
+        __glGetProcAddress("glDeleteRenderbuffers");
     const GLsizei n = *(GLsizei *) (pc + 0);
 
-    glDeleteRenderbuffers(n, (const GLuint *) (pc + 4));
+    DeleteRenderbuffers(n, (const GLuint *) (pc + 4));
 }
 
 void
 __glXDisp_FramebufferRenderbuffer(GLbyte * pc)
 {
-    glFramebufferRenderbuffer(*(GLenum *) (pc + 0),
-                              *(GLenum *) (pc + 4),
-                              *(GLenum *) (pc + 8), *(GLuint *) (pc + 12));
+    PFNGLFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer =
+        __glGetProcAddress("glFramebufferRenderbuffer");
+    FramebufferRenderbuffer(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                            *(GLenum *) (pc + 8), *(GLuint *) (pc + 12));
 }
 
 void
 __glXDisp_FramebufferTexture1D(GLbyte * pc)
 {
-    glFramebufferTexture1D(*(GLenum *) (pc + 0),
-                           *(GLenum *) (pc + 4),
-                           *(GLenum *) (pc + 8),
-                           *(GLuint *) (pc + 12), *(GLint *) (pc + 16));
+    PFNGLFRAMEBUFFERTEXTURE1DPROC FramebufferTexture1D =
+        __glGetProcAddress("glFramebufferTexture1D");
+    FramebufferTexture1D(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                         *(GLenum *) (pc + 8), *(GLuint *) (pc + 12),
+                         *(GLint *) (pc + 16));
 }
 
 void
 __glXDisp_FramebufferTexture2D(GLbyte * pc)
 {
-    glFramebufferTexture2D(*(GLenum *) (pc + 0),
-                           *(GLenum *) (pc + 4),
-                           *(GLenum *) (pc + 8),
-                           *(GLuint *) (pc + 12), *(GLint *) (pc + 16));
+    PFNGLFRAMEBUFFERTEXTURE2DPROC FramebufferTexture2D =
+        __glGetProcAddress("glFramebufferTexture2D");
+    FramebufferTexture2D(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                         *(GLenum *) (pc + 8), *(GLuint *) (pc + 12),
+                         *(GLint *) (pc + 16));
 }
 
 void
 __glXDisp_FramebufferTexture3D(GLbyte * pc)
 {
-    glFramebufferTexture3D(*(GLenum *) (pc + 0),
-                           *(GLenum *) (pc + 4),
-                           *(GLenum *) (pc + 8),
-                           *(GLuint *) (pc + 12),
-                           *(GLint *) (pc + 16), *(GLint *) (pc + 20));
+    PFNGLFRAMEBUFFERTEXTURE3DPROC FramebufferTexture3D =
+        __glGetProcAddress("glFramebufferTexture3D");
+    FramebufferTexture3D(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                         *(GLenum *) (pc + 8), *(GLuint *) (pc + 12),
+                         *(GLint *) (pc + 16), *(GLint *) (pc + 20));
 }
 
 void
 __glXDisp_FramebufferTextureLayer(GLbyte * pc)
 {
-    glFramebufferTextureLayer(*(GLenum *) (pc + 0),
-                              *(GLenum *) (pc + 4),
-                              *(GLuint *) (pc + 8),
-                              *(GLint *) (pc + 12), *(GLint *) (pc + 16));
+    PFNGLFRAMEBUFFERTEXTURELAYERPROC FramebufferTextureLayer =
+        __glGetProcAddress("glFramebufferTextureLayer");
+    FramebufferTextureLayer(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                            *(GLuint *) (pc + 8), *(GLint *) (pc + 12),
+                            *(GLint *) (pc + 16));
 }
 
 int
 __glXDisp_GenFramebuffers(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGENFRAMEBUFFERSPROC GenFramebuffers =
+        __glGetProcAddress("glGenFramebuffers");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4486,7 +4630,7 @@ __glXDisp_GenFramebuffers(__GLXclientState * cl, GLbyte * pc)
         GLuint *framebuffers =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        glGenFramebuffers(n, framebuffers);
+        GenFramebuffers(n, framebuffers);
         __glXSendReply(cl->client, framebuffers, n, 4, GL_TRUE, 0);
         error = Success;
     }
@@ -4497,6 +4641,8 @@ __glXDisp_GenFramebuffers(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_GenRenderbuffers(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGENRENDERBUFFERSPROC GenRenderbuffers =
+        __glGetProcAddress("glGenRenderbuffers");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4509,7 +4655,7 @@ __glXDisp_GenRenderbuffers(__GLXclientState * cl, GLbyte * pc)
         GLuint *renderbuffers =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        glGenRenderbuffers(n, renderbuffers);
+        GenRenderbuffers(n, renderbuffers);
         __glXSendReply(cl->client, renderbuffers, n, 4, GL_TRUE, 0);
         error = Success;
     }
@@ -4520,13 +4666,18 @@ __glXDisp_GenRenderbuffers(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDisp_GenerateMipmap(GLbyte * pc)
 {
-    glGenerateMipmap(*(GLenum *) (pc + 0));
+    PFNGLGENERATEMIPMAPPROC GenerateMipmap =
+        __glGetProcAddress("glGenerateMipmap");
+    GenerateMipmap(*(GLenum *) (pc + 0));
 }
 
 int
 __glXDisp_GetFramebufferAttachmentParameteriv(__GLXclientState * cl,
                                               GLbyte * pc)
 {
+    PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC
+        GetFramebufferAttachmentParameteriv =
+        __glGetProcAddress("glGetFramebufferAttachmentParameteriv");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4535,9 +4686,9 @@ __glXDisp_GetFramebufferAttachmentParameteriv(__GLXclientState * cl,
     if (cx != NULL) {
         GLint params[1];
 
-        glGetFramebufferAttachmentParameteriv(*(GLenum *) (pc + 0),
-                                              *(GLenum *) (pc + 4),
-                                              *(GLenum *) (pc + 8), params);
+        GetFramebufferAttachmentParameteriv(*(GLenum *) (pc + 0),
+                                            *(GLenum *) (pc + 4),
+                                            *(GLenum *) (pc + 8), params);
         __glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -4548,6 +4699,8 @@ __glXDisp_GetFramebufferAttachmentParameteriv(__GLXclientState * cl,
 int
 __glXDisp_GetRenderbufferParameteriv(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETRENDERBUFFERPARAMETERIVPROC GetRenderbufferParameteriv =
+        __glGetProcAddress("glGetRenderbufferParameteriv");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4556,8 +4709,8 @@ __glXDisp_GetRenderbufferParameteriv(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLint params[1];
 
-        glGetRenderbufferParameteriv(*(GLenum *) (pc + 0),
-                                     *(GLenum *) (pc + 4), params);
+        GetRenderbufferParameteriv(*(GLenum *) (pc + 0),
+                                   *(GLenum *) (pc + 4), params);
         __glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -4568,6 +4721,8 @@ __glXDisp_GetRenderbufferParameteriv(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_IsFramebuffer(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLISFRAMEBUFFERPROC IsFramebuffer =
+        __glGetProcAddress("glIsFramebuffer");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4576,7 +4731,7 @@ __glXDisp_IsFramebuffer(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = glIsFramebuffer(*(GLuint *) (pc + 0));
+        retval = IsFramebuffer(*(GLuint *) (pc + 0));
         __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -4587,6 +4742,8 @@ __glXDisp_IsFramebuffer(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDisp_IsRenderbuffer(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLISRENDERBUFFERPROC IsRenderbuffer =
+        __glGetProcAddress("glIsRenderbuffer");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -4595,7 +4752,7 @@ __glXDisp_IsRenderbuffer(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = glIsRenderbuffer(*(GLuint *) (pc + 0));
+        retval = IsRenderbuffer(*(GLuint *) (pc + 0));
         __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -4606,36 +4763,43 @@ __glXDisp_IsRenderbuffer(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDisp_RenderbufferStorage(GLbyte * pc)
 {
-    glRenderbufferStorage(*(GLenum *) (pc + 0),
-                          *(GLenum *) (pc + 4),
-                          *(GLsizei *) (pc + 8), *(GLsizei *) (pc + 12));
+    PFNGLRENDERBUFFERSTORAGEPROC RenderbufferStorage =
+        __glGetProcAddress("glRenderbufferStorage");
+    RenderbufferStorage(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                        *(GLsizei *) (pc + 8), *(GLsizei *) (pc + 12));
 }
 
 void
 __glXDisp_RenderbufferStorageMultisample(GLbyte * pc)
 {
-    glRenderbufferStorageMultisample(*(GLenum *) (pc + 0),
-                                     *(GLsizei *) (pc + 4),
-                                     *(GLenum *) (pc + 8),
-                                     *(GLsizei *) (pc + 12),
-                                     *(GLsizei *) (pc + 16));
+    PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC RenderbufferStorageMultisample =
+        __glGetProcAddress("glRenderbufferStorageMultisample");
+    RenderbufferStorageMultisample(*(GLenum *) (pc + 0), *(GLsizei *) (pc + 4),
+                                   *(GLenum *) (pc + 8), *(GLsizei *) (pc + 12),
+                                   *(GLsizei *) (pc + 16));
 }
 
 void
 __glXDisp_SecondaryColor3fvEXT(GLbyte * pc)
 {
-    glSecondaryColor3fvEXT((const GLfloat *) (pc + 0));
+    PFNGLSECONDARYCOLOR3FVEXTPROC SecondaryColor3fvEXT =
+        __glGetProcAddress("glSecondaryColor3fvEXT");
+    SecondaryColor3fvEXT((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_FogCoordfvEXT(GLbyte * pc)
 {
-    glFogCoordfvEXT((const GLfloat *) (pc + 0));
+    PFNGLFOGCOORDFVEXTPROC FogCoordfvEXT =
+        __glGetProcAddress("glFogCoordfvEXT");
+    FogCoordfvEXT((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_VertexAttrib1dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB1DVNVPROC VertexAttrib1dvNV =
+        __glGetProcAddress("glVertexAttrib1dvNV");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 12);
@@ -4643,24 +4807,30 @@ __glXDisp_VertexAttrib1dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib1dvNV(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
+    VertexAttrib1dvNV(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib1fvNV(GLbyte * pc)
 {
-    glVertexAttrib1fvNV(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
+    PFNGLVERTEXATTRIB1FVNVPROC VertexAttrib1fvNV =
+        __glGetProcAddress("glVertexAttrib1fvNV");
+    VertexAttrib1fvNV(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib1svNV(GLbyte * pc)
 {
-    glVertexAttrib1svNV(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
+    PFNGLVERTEXATTRIB1SVNVPROC VertexAttrib1svNV =
+        __glGetProcAddress("glVertexAttrib1svNV");
+    VertexAttrib1svNV(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib2dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB2DVNVPROC VertexAttrib2dvNV =
+        __glGetProcAddress("glVertexAttrib2dvNV");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 20);
@@ -4668,24 +4838,30 @@ __glXDisp_VertexAttrib2dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib2dvNV(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
+    VertexAttrib2dvNV(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib2fvNV(GLbyte * pc)
 {
-    glVertexAttrib2fvNV(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
+    PFNGLVERTEXATTRIB2FVNVPROC VertexAttrib2fvNV =
+        __glGetProcAddress("glVertexAttrib2fvNV");
+    VertexAttrib2fvNV(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib2svNV(GLbyte * pc)
 {
-    glVertexAttrib2svNV(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
+    PFNGLVERTEXATTRIB2SVNVPROC VertexAttrib2svNV =
+        __glGetProcAddress("glVertexAttrib2svNV");
+    VertexAttrib2svNV(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib3dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB3DVNVPROC VertexAttrib3dvNV =
+        __glGetProcAddress("glVertexAttrib3dvNV");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 28);
@@ -4693,24 +4869,30 @@ __glXDisp_VertexAttrib3dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib3dvNV(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
+    VertexAttrib3dvNV(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib3fvNV(GLbyte * pc)
 {
-    glVertexAttrib3fvNV(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
+    PFNGLVERTEXATTRIB3FVNVPROC VertexAttrib3fvNV =
+        __glGetProcAddress("glVertexAttrib3fvNV");
+    VertexAttrib3fvNV(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib3svNV(GLbyte * pc)
 {
-    glVertexAttrib3svNV(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
+    PFNGLVERTEXATTRIB3SVNVPROC VertexAttrib3svNV =
+        __glGetProcAddress("glVertexAttrib3svNV");
+    VertexAttrib3svNV(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB4DVNVPROC VertexAttrib4dvNV =
+        __glGetProcAddress("glVertexAttrib4dvNV");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 36);
@@ -4718,30 +4900,38 @@ __glXDisp_VertexAttrib4dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib4dvNV(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
+    VertexAttrib4dvNV(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4fvNV(GLbyte * pc)
 {
-    glVertexAttrib4fvNV(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
+    PFNGLVERTEXATTRIB4FVNVPROC VertexAttrib4fvNV =
+        __glGetProcAddress("glVertexAttrib4fvNV");
+    VertexAttrib4fvNV(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4svNV(GLbyte * pc)
 {
-    glVertexAttrib4svNV(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
+    PFNGLVERTEXATTRIB4SVNVPROC VertexAttrib4svNV =
+        __glGetProcAddress("glVertexAttrib4svNV");
+    VertexAttrib4svNV(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4ubvNV(GLbyte * pc)
 {
-    glVertexAttrib4ubvNV(*(GLuint *) (pc + 0), (const GLubyte *) (pc + 4));
+    PFNGLVERTEXATTRIB4UBVNVPROC VertexAttrib4ubvNV =
+        __glGetProcAddress("glVertexAttrib4ubvNV");
+    VertexAttrib4ubvNV(*(GLuint *) (pc + 0), (const GLubyte *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttribs1dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS1DVNVPROC VertexAttribs1dvNV =
+        __glGetProcAddress("glVertexAttribs1dvNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
 #ifdef __GLX_ALIGN64
@@ -4753,28 +4943,34 @@ __glXDisp_VertexAttribs1dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttribs1dvNV(*(GLuint *) (pc + 0), n, (const GLdouble *) (pc + 8));
+    VertexAttribs1dvNV(*(GLuint *) (pc + 0), n, (const GLdouble *) (pc + 8));
 }
 
 void
 __glXDisp_VertexAttribs1fvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS1FVNVPROC VertexAttribs1fvNV =
+        __glGetProcAddress("glVertexAttribs1fvNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    glVertexAttribs1fvNV(*(GLuint *) (pc + 0), n, (const GLfloat *) (pc + 8));
+    VertexAttribs1fvNV(*(GLuint *) (pc + 0), n, (const GLfloat *) (pc + 8));
 }
 
 void
 __glXDisp_VertexAttribs1svNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS1SVNVPROC VertexAttribs1svNV =
+        __glGetProcAddress("glVertexAttribs1svNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    glVertexAttribs1svNV(*(GLuint *) (pc + 0), n, (const GLshort *) (pc + 8));
+    VertexAttribs1svNV(*(GLuint *) (pc + 0), n, (const GLshort *) (pc + 8));
 }
 
 void
 __glXDisp_VertexAttribs2dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS2DVNVPROC VertexAttribs2dvNV =
+        __glGetProcAddress("glVertexAttribs2dvNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
 #ifdef __GLX_ALIGN64
@@ -4786,28 +4982,34 @@ __glXDisp_VertexAttribs2dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttribs2dvNV(*(GLuint *) (pc + 0), n, (const GLdouble *) (pc + 8));
+    VertexAttribs2dvNV(*(GLuint *) (pc + 0), n, (const GLdouble *) (pc + 8));
 }
 
 void
 __glXDisp_VertexAttribs2fvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS2FVNVPROC VertexAttribs2fvNV =
+        __glGetProcAddress("glVertexAttribs2fvNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    glVertexAttribs2fvNV(*(GLuint *) (pc + 0), n, (const GLfloat *) (pc + 8));
+    VertexAttribs2fvNV(*(GLuint *) (pc + 0), n, (const GLfloat *) (pc + 8));
 }
 
 void
 __glXDisp_VertexAttribs2svNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS2SVNVPROC VertexAttribs2svNV =
+        __glGetProcAddress("glVertexAttribs2svNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    glVertexAttribs2svNV(*(GLuint *) (pc + 0), n, (const GLshort *) (pc + 8));
+    VertexAttribs2svNV(*(GLuint *) (pc + 0), n, (const GLshort *) (pc + 8));
 }
 
 void
 __glXDisp_VertexAttribs3dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS3DVNVPROC VertexAttribs3dvNV =
+        __glGetProcAddress("glVertexAttribs3dvNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
 #ifdef __GLX_ALIGN64
@@ -4819,28 +5021,34 @@ __glXDisp_VertexAttribs3dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttribs3dvNV(*(GLuint *) (pc + 0), n, (const GLdouble *) (pc + 8));
+    VertexAttribs3dvNV(*(GLuint *) (pc + 0), n, (const GLdouble *) (pc + 8));
 }
 
 void
 __glXDisp_VertexAttribs3fvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS3FVNVPROC VertexAttribs3fvNV =
+        __glGetProcAddress("glVertexAttribs3fvNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    glVertexAttribs3fvNV(*(GLuint *) (pc + 0), n, (const GLfloat *) (pc + 8));
+    VertexAttribs3fvNV(*(GLuint *) (pc + 0), n, (const GLfloat *) (pc + 8));
 }
 
 void
 __glXDisp_VertexAttribs3svNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS3SVNVPROC VertexAttribs3svNV =
+        __glGetProcAddress("glVertexAttribs3svNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    glVertexAttribs3svNV(*(GLuint *) (pc + 0), n, (const GLshort *) (pc + 8));
+    VertexAttribs3svNV(*(GLuint *) (pc + 0), n, (const GLshort *) (pc + 8));
 }
 
 void
 __glXDisp_VertexAttribs4dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS4DVNVPROC VertexAttribs4dvNV =
+        __glGetProcAddress("glVertexAttribs4dvNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
 #ifdef __GLX_ALIGN64
@@ -4852,35 +5060,43 @@ __glXDisp_VertexAttribs4dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttribs4dvNV(*(GLuint *) (pc + 0), n, (const GLdouble *) (pc + 8));
+    VertexAttribs4dvNV(*(GLuint *) (pc + 0), n, (const GLdouble *) (pc + 8));
 }
 
 void
 __glXDisp_VertexAttribs4fvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS4FVNVPROC VertexAttribs4fvNV =
+        __glGetProcAddress("glVertexAttribs4fvNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    glVertexAttribs4fvNV(*(GLuint *) (pc + 0), n, (const GLfloat *) (pc + 8));
+    VertexAttribs4fvNV(*(GLuint *) (pc + 0), n, (const GLfloat *) (pc + 8));
 }
 
 void
 __glXDisp_VertexAttribs4svNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS4SVNVPROC VertexAttribs4svNV =
+        __glGetProcAddress("glVertexAttribs4svNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    glVertexAttribs4svNV(*(GLuint *) (pc + 0), n, (const GLshort *) (pc + 8));
+    VertexAttribs4svNV(*(GLuint *) (pc + 0), n, (const GLshort *) (pc + 8));
 }
 
 void
 __glXDisp_VertexAttribs4ubvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS4UBVNVPROC VertexAttribs4ubvNV =
+        __glGetProcAddress("glVertexAttribs4ubvNV");
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    glVertexAttribs4ubvNV(*(GLuint *) (pc + 0), n, (const GLubyte *) (pc + 8));
+    VertexAttribs4ubvNV(*(GLuint *) (pc + 0), n, (const GLubyte *) (pc + 8));
 }
 
 void
 __glXDisp_ActiveStencilFaceEXT(GLbyte * pc)
 {
-    glActiveStencilFaceEXT(*(GLenum *) (pc + 0));
+    PFNGLACTIVESTENCILFACEEXTPROC ActiveStencilFaceEXT =
+        __glGetProcAddress("glActiveStencilFaceEXT");
+    ActiveStencilFaceEXT(*(GLenum *) (pc + 0));
 }
diff --git a/glx/indirect_dispatch_swap.c b/glx/indirect_dispatch_swap.c
index 9747514..ebb2ec6 100644
--- a/glx/indirect_dispatch_swap.c
+++ b/glx/indirect_dispatch_swap.c
@@ -3983,108 +3983,125 @@ __glXDispSwap_MultiTexCoord4sv(GLbyte * pc)
 void
 __glXDispSwap_CompressedTexImage1D(GLbyte * pc)
 {
+    PFNGLCOMPRESSEDTEXIMAGE1DPROC CompressedTexImage1D =
+        __glGetProcAddress("glCompressedTexImage1D");
     const GLsizei imageSize = (GLsizei) bswap_CARD32(pc + 20);
 
-    glCompressedTexImage1D((GLenum) bswap_ENUM(pc + 0),
-                           (GLint) bswap_CARD32(pc + 4),
-                           (GLenum) bswap_ENUM(pc + 8),
-                           (GLsizei) bswap_CARD32(pc + 12),
-                           (GLint) bswap_CARD32(pc + 16),
-                           imageSize, (const GLvoid *) (pc + 24));
+    CompressedTexImage1D((GLenum) bswap_ENUM(pc + 0),
+                         (GLint) bswap_CARD32(pc + 4),
+                         (GLenum) bswap_ENUM(pc + 8),
+                         (GLsizei) bswap_CARD32(pc + 12),
+                         (GLint) bswap_CARD32(pc + 16),
+                         imageSize, (const GLvoid *) (pc + 24));
 }
 
 void
 __glXDispSwap_CompressedTexImage2D(GLbyte * pc)
 {
+    PFNGLCOMPRESSEDTEXIMAGE2DPROC CompressedTexImage2D =
+        __glGetProcAddress("glCompressedTexImage2D");
     const GLsizei imageSize = (GLsizei) bswap_CARD32(pc + 24);
 
-    glCompressedTexImage2D((GLenum) bswap_ENUM(pc + 0),
-                           (GLint) bswap_CARD32(pc + 4),
-                           (GLenum) bswap_ENUM(pc + 8),
-                           (GLsizei) bswap_CARD32(pc + 12),
-                           (GLsizei) bswap_CARD32(pc + 16),
-                           (GLint) bswap_CARD32(pc + 20),
-                           imageSize, (const GLvoid *) (pc + 28));
+    CompressedTexImage2D((GLenum) bswap_ENUM(pc + 0),
+                         (GLint) bswap_CARD32(pc + 4),
+                         (GLenum) bswap_ENUM(pc + 8),
+                         (GLsizei) bswap_CARD32(pc + 12),
+                         (GLsizei) bswap_CARD32(pc + 16),
+                         (GLint) bswap_CARD32(pc + 20),
+                         imageSize, (const GLvoid *) (pc + 28));
 }
 
 void
 __glXDispSwap_CompressedTexImage3D(GLbyte * pc)
 {
+    PFNGLCOMPRESSEDTEXIMAGE3DPROC CompressedTexImage3D =
+        __glGetProcAddress("glCompressedTexImage3D");
     const GLsizei imageSize = (GLsizei) bswap_CARD32(pc + 28);
 
-    glCompressedTexImage3D((GLenum) bswap_ENUM(pc + 0),
-                           (GLint) bswap_CARD32(pc + 4),
-                           (GLenum) bswap_ENUM(pc + 8),
-                           (GLsizei) bswap_CARD32(pc + 12),
-                           (GLsizei) bswap_CARD32(pc + 16),
-                           (GLsizei) bswap_CARD32(pc + 20),
-                           (GLint) bswap_CARD32(pc + 24),
-                           imageSize, (const GLvoid *) (pc + 32));
+    CompressedTexImage3D((GLenum) bswap_ENUM(pc + 0),
+                         (GLint) bswap_CARD32(pc + 4),
+                         (GLenum) bswap_ENUM(pc + 8),
+                         (GLsizei) bswap_CARD32(pc + 12),
+                         (GLsizei) bswap_CARD32(pc + 16),
+                         (GLsizei) bswap_CARD32(pc + 20),
+                         (GLint) bswap_CARD32(pc + 24),
+                         imageSize, (const GLvoid *) (pc + 32));
 }
 
 void
 __glXDispSwap_CompressedTexSubImage1D(GLbyte * pc)
 {
+    PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC CompressedTexSubImage1D =
+        __glGetProcAddress("glCompressedTexSubImage1D");
     const GLsizei imageSize = (GLsizei) bswap_CARD32(pc + 20);
 
-    glCompressedTexSubImage1D((GLenum) bswap_ENUM(pc + 0),
-                              (GLint) bswap_CARD32(pc + 4),
-                              (GLint) bswap_CARD32(pc + 8),
-                              (GLsizei) bswap_CARD32(pc + 12),
-                              (GLenum) bswap_ENUM(pc + 16),
-                              imageSize, (const GLvoid *) (pc + 24));
+    CompressedTexSubImage1D((GLenum) bswap_ENUM(pc + 0),
+                            (GLint) bswap_CARD32(pc + 4),
+                            (GLint) bswap_CARD32(pc + 8),
+                            (GLsizei) bswap_CARD32(pc + 12),
+                            (GLenum) bswap_ENUM(pc + 16),
+                            imageSize, (const GLvoid *) (pc + 24));
 }
 
 void
 __glXDispSwap_CompressedTexSubImage2D(GLbyte * pc)
 {
+    PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC CompressedTexSubImage2D =
+        __glGetProcAddress("glCompressedTexSubImage2D");
     const GLsizei imageSize = (GLsizei) bswap_CARD32(pc + 28);
 
-    glCompressedTexSubImage2D((GLenum) bswap_ENUM(pc + 0),
-                              (GLint) bswap_CARD32(pc + 4),
-                              (GLint) bswap_CARD32(pc + 8),
-                              (GLint) bswap_CARD32(pc + 12),
-                              (GLsizei) bswap_CARD32(pc + 16),
-                              (GLsizei) bswap_CARD32(pc + 20),
-                              (GLenum) bswap_ENUM(pc + 24),
-                              imageSize, (const GLvoid *) (pc + 32));
+    CompressedTexSubImage2D((GLenum) bswap_ENUM(pc + 0),
+                            (GLint) bswap_CARD32(pc + 4),
+                            (GLint) bswap_CARD32(pc + 8),
+                            (GLint) bswap_CARD32(pc + 12),
+                            (GLsizei) bswap_CARD32(pc + 16),
+                            (GLsizei) bswap_CARD32(pc + 20),
+                            (GLenum) bswap_ENUM(pc + 24),
+                            imageSize, (const GLvoid *) (pc + 32));
 }
 
 void
 __glXDispSwap_CompressedTexSubImage3D(GLbyte * pc)
 {
+    PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC CompressedTexSubImage3D =
+        __glGetProcAddress("glCompressedTexSubImage3D");
     const GLsizei imageSize = (GLsizei) bswap_CARD32(pc + 36);
 
-    glCompressedTexSubImage3D((GLenum) bswap_ENUM(pc + 0),
-                              (GLint) bswap_CARD32(pc + 4),
-                              (GLint) bswap_CARD32(pc + 8),
-                              (GLint) bswap_CARD32(pc + 12),
-                              (GLint) bswap_CARD32(pc + 16),
-                              (GLsizei) bswap_CARD32(pc + 20),
-                              (GLsizei) bswap_CARD32(pc + 24),
-                              (GLsizei) bswap_CARD32(pc + 28),
-                              (GLenum) bswap_ENUM(pc + 32),
-                              imageSize, (const GLvoid *) (pc + 40));
+    CompressedTexSubImage3D((GLenum) bswap_ENUM(pc + 0),
+                            (GLint) bswap_CARD32(pc + 4),
+                            (GLint) bswap_CARD32(pc + 8),
+                            (GLint) bswap_CARD32(pc + 12),
+                            (GLint) bswap_CARD32(pc + 16),
+                            (GLsizei) bswap_CARD32(pc + 20),
+                            (GLsizei) bswap_CARD32(pc + 24),
+                            (GLsizei) bswap_CARD32(pc + 28),
+                            (GLenum) bswap_ENUM(pc + 32),
+                            imageSize, (const GLvoid *) (pc + 40));
 }
 
 void
 __glXDispSwap_SampleCoverage(GLbyte * pc)
 {
-    glSampleCoverage((GLclampf) bswap_FLOAT32(pc + 0), *(GLboolean *) (pc + 4));
+    PFNGLSAMPLECOVERAGEPROC SampleCoverage =
+        __glGetProcAddress("glSampleCoverage");
+    SampleCoverage((GLclampf) bswap_FLOAT32(pc + 0), *(GLboolean *) (pc + 4));
 }
 
 void
 __glXDispSwap_BlendFuncSeparate(GLbyte * pc)
 {
-    glBlendFuncSeparate((GLenum) bswap_ENUM(pc + 0),
-                        (GLenum) bswap_ENUM(pc + 4),
-                        (GLenum) bswap_ENUM(pc + 8),
-                        (GLenum) bswap_ENUM(pc + 12));
+    PFNGLBLENDFUNCSEPARATEPROC BlendFuncSeparate =
+        __glGetProcAddress("glBlendFuncSeparate");
+    BlendFuncSeparate((GLenum) bswap_ENUM(pc + 0), (GLenum) bswap_ENUM(pc + 4),
+                      (GLenum) bswap_ENUM(pc + 8),
+                      (GLenum) bswap_ENUM(pc + 12));
 }
 
 void
 __glXDispSwap_FogCoorddv(GLbyte * pc)
 {
+    PFNGLFOGCOORDDVPROC FogCoorddv = __glGetProcAddress("glFogCoorddv");
+
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 8);
@@ -4092,19 +4109,23 @@ __glXDispSwap_FogCoorddv(GLbyte * pc)
     }
 #endif
 
-    glFogCoorddv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 1));
+    FogCoorddv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 1));
 }
 
 void
 __glXDispSwap_PointParameterf(GLbyte * pc)
 {
-    glPointParameterf((GLenum) bswap_ENUM(pc + 0),
-                      (GLfloat) bswap_FLOAT32(pc + 4));
+    PFNGLPOINTPARAMETERFPROC PointParameterf =
+        __glGetProcAddress("glPointParameterf");
+    PointParameterf((GLenum) bswap_ENUM(pc + 0),
+                    (GLfloat) bswap_FLOAT32(pc + 4));
 }
 
 void
 __glXDispSwap_PointParameterfv(GLbyte * pc)
 {
+    PFNGLPOINTPARAMETERFVPROC PointParameterfv =
+        __glGetProcAddress("glPointParameterfv");
     const GLenum pname = (GLenum) bswap_ENUM(pc + 0);
     const GLfloat *params;
 
@@ -4112,19 +4133,22 @@ __glXDispSwap_PointParameterfv(GLbyte * pc)
         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
                                          __glPointParameterfv_size(pname));
 
-    glPointParameterfv(pname, params);
+    PointParameterfv(pname, params);
 }
 
 void
 __glXDispSwap_PointParameteri(GLbyte * pc)
 {
-    glPointParameteri((GLenum) bswap_ENUM(pc + 0),
-                      (GLint) bswap_CARD32(pc + 4));
+    PFNGLPOINTPARAMETERIPROC PointParameteri =
+        __glGetProcAddress("glPointParameteri");
+    PointParameteri((GLenum) bswap_ENUM(pc + 0), (GLint) bswap_CARD32(pc + 4));
 }
 
 void
 __glXDispSwap_PointParameteriv(GLbyte * pc)
 {
+    PFNGLPOINTPARAMETERIVPROC PointParameteriv =
+        __glGetProcAddress("glPointParameteriv");
     const GLenum pname = (GLenum) bswap_ENUM(pc + 0);
     const GLint *params;
 
@@ -4132,18 +4156,22 @@ __glXDispSwap_PointParameteriv(GLbyte * pc)
         (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
                                        __glPointParameteriv_size(pname));
 
-    glPointParameteriv(pname, params);
+    PointParameteriv(pname, params);
 }
 
 void
 __glXDispSwap_SecondaryColor3bv(GLbyte * pc)
 {
-    glSecondaryColor3bv((const GLbyte *) (pc + 0));
+    PFNGLSECONDARYCOLOR3BVPROC SecondaryColor3bv =
+        __glGetProcAddress("glSecondaryColor3bv");
+    SecondaryColor3bv((const GLbyte *) (pc + 0));
 }
 
 void
 __glXDispSwap_SecondaryColor3dv(GLbyte * pc)
 {
+    PFNGLSECONDARYCOLOR3DVPROC SecondaryColor3dv =
+        __glGetProcAddress("glSecondaryColor3dv");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 24);
@@ -4151,59 +4179,74 @@ __glXDispSwap_SecondaryColor3dv(GLbyte * pc)
     }
 #endif
 
-    glSecondaryColor3dv((const GLdouble *)
-                        bswap_64_array((uint64_t *) (pc + 0), 3));
+    SecondaryColor3dv((const GLdouble *)
+                      bswap_64_array((uint64_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_SecondaryColor3iv(GLbyte * pc)
 {
-    glSecondaryColor3iv((const GLint *)
-                        bswap_32_array((uint32_t *) (pc + 0), 3));
+    PFNGLSECONDARYCOLOR3IVPROC SecondaryColor3iv =
+        __glGetProcAddress("glSecondaryColor3iv");
+    SecondaryColor3iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_SecondaryColor3sv(GLbyte * pc)
 {
-    glSecondaryColor3sv((const GLshort *)
-                        bswap_16_array((uint16_t *) (pc + 0), 3));
+    PFNGLSECONDARYCOLOR3SVPROC SecondaryColor3sv =
+        __glGetProcAddress("glSecondaryColor3sv");
+    SecondaryColor3sv((const GLshort *)
+                      bswap_16_array((uint16_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_SecondaryColor3ubv(GLbyte * pc)
 {
-    glSecondaryColor3ubv((const GLubyte *) (pc + 0));
+    PFNGLSECONDARYCOLOR3UBVPROC SecondaryColor3ubv =
+        __glGetProcAddress("glSecondaryColor3ubv");
+    SecondaryColor3ubv((const GLubyte *) (pc + 0));
 }
 
 void
 __glXDispSwap_SecondaryColor3uiv(GLbyte * pc)
 {
-    glSecondaryColor3uiv((const GLuint *)
-                         bswap_32_array((uint32_t *) (pc + 0), 3));
+    PFNGLSECONDARYCOLOR3UIVPROC SecondaryColor3uiv =
+        __glGetProcAddress("glSecondaryColor3uiv");
+    SecondaryColor3uiv((const GLuint *)
+                       bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_SecondaryColor3usv(GLbyte * pc)
 {
-    glSecondaryColor3usv((const GLushort *)
-                         bswap_16_array((uint16_t *) (pc + 0), 3));
+    PFNGLSECONDARYCOLOR3USVPROC SecondaryColor3usv =
+        __glGetProcAddress("glSecondaryColor3usv");
+    SecondaryColor3usv((const GLushort *)
+                       bswap_16_array((uint16_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_WindowPos3fv(GLbyte * pc)
 {
-    glWindowPos3fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 3));
+    PFNGLWINDOWPOS3FVPROC WindowPos3fv = __glGetProcAddress("glWindowPos3fv");
+
+    WindowPos3fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_BeginQuery(GLbyte * pc)
 {
-    glBeginQuery((GLenum) bswap_ENUM(pc + 0), (GLuint) bswap_CARD32(pc + 4));
+    PFNGLBEGINQUERYPROC BeginQuery = __glGetProcAddress("glBeginQuery");
+
+    BeginQuery((GLenum) bswap_ENUM(pc + 0), (GLuint) bswap_CARD32(pc + 4));
 }
 
 int
 __glXDispSwap_DeleteQueries(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLDELETEQUERIESPROC DeleteQueries =
+        __glGetProcAddress("glDeleteQueries");
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4213,9 +4256,9 @@ __glXDispSwap_DeleteQueries(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-        glDeleteQueries(n,
-                        (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
-                                                        0));
+        DeleteQueries(n,
+                      (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                      0));
         error = Success;
     }
 
@@ -4225,12 +4268,15 @@ __glXDispSwap_DeleteQueries(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDispSwap_EndQuery(GLbyte * pc)
 {
-    glEndQuery((GLenum) bswap_ENUM(pc + 0));
+    PFNGLENDQUERYPROC EndQuery = __glGetProcAddress("glEndQuery");
+
+    EndQuery((GLenum) bswap_ENUM(pc + 0));
 }
 
 int
 __glXDispSwap_GenQueries(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGENQUERIESPROC GenQueries = __glGetProcAddress("glGenQueries");
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4244,7 +4290,7 @@ __glXDispSwap_GenQueries(__GLXclientState * cl, GLbyte * pc)
         GLuint *ids =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        glGenQueries(n, ids);
+        GenQueries(n, ids);
         (void) bswap_32_array((uint32_t *) ids, n);
         __glXSendReplySwap(cl->client, ids, n, 4, GL_TRUE, 0);
         error = Success;
@@ -4256,6 +4302,8 @@ __glXDispSwap_GenQueries(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_GetQueryObjectiv(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETQUERYOBJECTIVPROC GetQueryObjectiv =
+        __glGetProcAddress("glGetQueryObjectiv");
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4275,7 +4323,7 @@ __glXDispSwap_GetQueryObjectiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        glGetQueryObjectiv((GLuint) bswap_CARD32(pc + 0), pname, params);
+        GetQueryObjectiv((GLuint) bswap_CARD32(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -4287,6 +4335,8 @@ __glXDispSwap_GetQueryObjectiv(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_GetQueryObjectuiv(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETQUERYOBJECTUIVPROC GetQueryObjectuiv =
+        __glGetProcAddress("glGetQueryObjectuiv");
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4306,7 +4356,7 @@ __glXDispSwap_GetQueryObjectuiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        glGetQueryObjectuiv((GLuint) bswap_CARD32(pc + 0), pname, params);
+        GetQueryObjectuiv((GLuint) bswap_CARD32(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -4318,6 +4368,7 @@ __glXDispSwap_GetQueryObjectuiv(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_GetQueryiv(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETQUERYIVPROC GetQueryiv = __glGetProcAddress("glGetQueryiv");
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4337,7 +4388,7 @@ __glXDispSwap_GetQueryiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        glGetQueryiv((GLenum) bswap_ENUM(pc + 0), pname, params);
+        GetQueryiv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -4349,6 +4400,7 @@ __glXDispSwap_GetQueryiv(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_IsQuery(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLISQUERYPROC IsQuery = __glGetProcAddress("glIsQuery");
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4358,7 +4410,7 @@ __glXDispSwap_IsQuery(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = glIsQuery((GLuint) bswap_CARD32(pc + 0));
+        retval = IsQuery((GLuint) bswap_CARD32(pc + 0));
         __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -4369,21 +4421,26 @@ __glXDispSwap_IsQuery(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDispSwap_BlendEquationSeparate(GLbyte * pc)
 {
-    glBlendEquationSeparate((GLenum) bswap_ENUM(pc + 0),
-                            (GLenum) bswap_ENUM(pc + 4));
+    PFNGLBLENDEQUATIONSEPARATEPROC BlendEquationSeparate =
+        __glGetProcAddress("glBlendEquationSeparate");
+    BlendEquationSeparate((GLenum) bswap_ENUM(pc + 0),
+                          (GLenum) bswap_ENUM(pc + 4));
 }
 
 void
 __glXDispSwap_DrawBuffers(GLbyte * pc)
 {
+    PFNGLDRAWBUFFERSPROC DrawBuffers = __glGetProcAddress("glDrawBuffers");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-    glDrawBuffers(n, (const GLenum *) bswap_32_array((uint32_t *) (pc + 4), 0));
+    DrawBuffers(n, (const GLenum *) bswap_32_array((uint32_t *) (pc + 4), 0));
 }
 
 void
 __glXDispSwap_VertexAttrib1dv(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB1DVPROC VertexAttrib1dv =
+        __glGetProcAddress("glVertexAttrib1dv");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 12);
@@ -4391,22 +4448,25 @@ __glXDispSwap_VertexAttrib1dv(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib1dv((GLuint) bswap_CARD32(pc + 0),
-                      (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
-                                                        1));
+    VertexAttrib1dv((GLuint) bswap_CARD32(pc + 0),
+                    (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                      1));
 }
 
 void
 __glXDispSwap_VertexAttrib1sv(GLbyte * pc)
 {
-    glVertexAttrib1sv((GLuint) bswap_CARD32(pc + 0),
-                      (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                       1));
+    PFNGLVERTEXATTRIB1SVPROC VertexAttrib1sv =
+        __glGetProcAddress("glVertexAttrib1sv");
+    VertexAttrib1sv((GLuint) bswap_CARD32(pc + 0),
+                    (const GLshort *) bswap_16_array((uint16_t *) (pc + 4), 1));
 }
 
 void
 __glXDispSwap_VertexAttrib2dv(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB2DVPROC VertexAttrib2dv =
+        __glGetProcAddress("glVertexAttrib2dv");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 20);
@@ -4414,22 +4474,25 @@ __glXDispSwap_VertexAttrib2dv(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib2dv((GLuint) bswap_CARD32(pc + 0),
-                      (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
-                                                        2));
+    VertexAttrib2dv((GLuint) bswap_CARD32(pc + 0),
+                    (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                      2));
 }
 
 void
 __glXDispSwap_VertexAttrib2sv(GLbyte * pc)
 {
-    glVertexAttrib2sv((GLuint) bswap_CARD32(pc + 0),
-                      (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                       2));
+    PFNGLVERTEXATTRIB2SVPROC VertexAttrib2sv =
+        __glGetProcAddress("glVertexAttrib2sv");
+    VertexAttrib2sv((GLuint) bswap_CARD32(pc + 0),
+                    (const GLshort *) bswap_16_array((uint16_t *) (pc + 4), 2));
 }
 
 void
 __glXDispSwap_VertexAttrib3dv(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB3DVPROC VertexAttrib3dv =
+        __glGetProcAddress("glVertexAttrib3dv");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 28);
@@ -4437,74 +4500,89 @@ __glXDispSwap_VertexAttrib3dv(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib3dv((GLuint) bswap_CARD32(pc + 0),
-                      (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
-                                                        3));
+    VertexAttrib3dv((GLuint) bswap_CARD32(pc + 0),
+                    (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                      3));
 }
 
 void
 __glXDispSwap_VertexAttrib3sv(GLbyte * pc)
 {
-    glVertexAttrib3sv((GLuint) bswap_CARD32(pc + 0),
-                      (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                       3));
+    PFNGLVERTEXATTRIB3SVPROC VertexAttrib3sv =
+        __glGetProcAddress("glVertexAttrib3sv");
+    VertexAttrib3sv((GLuint) bswap_CARD32(pc + 0),
+                    (const GLshort *) bswap_16_array((uint16_t *) (pc + 4), 3));
 }
 
 void
 __glXDispSwap_VertexAttrib4Nbv(GLbyte * pc)
 {
-    glVertexAttrib4Nbv((GLuint) bswap_CARD32(pc + 0),
-                       (const GLbyte *) (pc + 4));
+    PFNGLVERTEXATTRIB4NBVPROC VertexAttrib4Nbv =
+        __glGetProcAddress("glVertexAttrib4Nbv");
+    VertexAttrib4Nbv((GLuint) bswap_CARD32(pc + 0), (const GLbyte *) (pc + 4));
 }
 
 void
 __glXDispSwap_VertexAttrib4Niv(GLbyte * pc)
 {
-    glVertexAttrib4Niv((GLuint) bswap_CARD32(pc + 0),
-                       (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
-                                                      4));
+    PFNGLVERTEXATTRIB4NIVPROC VertexAttrib4Niv =
+        __glGetProcAddress("glVertexAttrib4Niv");
+    VertexAttrib4Niv((GLuint) bswap_CARD32(pc + 0),
+                     (const GLint *) bswap_32_array((uint32_t *) (pc + 4), 4));
 }
 
 void
 __glXDispSwap_VertexAttrib4Nsv(GLbyte * pc)
 {
-    glVertexAttrib4Nsv((GLuint) bswap_CARD32(pc + 0),
-                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                        4));
+    PFNGLVERTEXATTRIB4NSVPROC VertexAttrib4Nsv =
+        __glGetProcAddress("glVertexAttrib4Nsv");
+    VertexAttrib4Nsv((GLuint) bswap_CARD32(pc + 0),
+                     (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                      4));
 }
 
 void
 __glXDispSwap_VertexAttrib4Nubv(GLbyte * pc)
 {
-    glVertexAttrib4Nubv((GLuint) bswap_CARD32(pc + 0),
-                        (const GLubyte *) (pc + 4));
+    PFNGLVERTEXATTRIB4NUBVPROC VertexAttrib4Nubv =
+        __glGetProcAddress("glVertexAttrib4Nubv");
+    VertexAttrib4Nubv((GLuint) bswap_CARD32(pc + 0),
+                      (const GLubyte *) (pc + 4));
 }
 
 void
 __glXDispSwap_VertexAttrib4Nuiv(GLbyte * pc)
 {
-    glVertexAttrib4Nuiv((GLuint) bswap_CARD32(pc + 0),
-                        (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
-                                                        4));
+    PFNGLVERTEXATTRIB4NUIVPROC VertexAttrib4Nuiv =
+        __glGetProcAddress("glVertexAttrib4Nuiv");
+    VertexAttrib4Nuiv((GLuint) bswap_CARD32(pc + 0),
+                      (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                      4));
 }
 
 void
 __glXDispSwap_VertexAttrib4Nusv(GLbyte * pc)
 {
-    glVertexAttrib4Nusv((GLuint) bswap_CARD32(pc + 0),
-                        (const GLushort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                          4));
+    PFNGLVERTEXATTRIB4NUSVPROC VertexAttrib4Nusv =
+        __glGetProcAddress("glVertexAttrib4Nusv");
+    VertexAttrib4Nusv((GLuint) bswap_CARD32(pc + 0),
+                      (const GLushort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                        4));
 }
 
 void
 __glXDispSwap_VertexAttrib4bv(GLbyte * pc)
 {
-    glVertexAttrib4bv((GLuint) bswap_CARD32(pc + 0), (const GLbyte *) (pc + 4));
+    PFNGLVERTEXATTRIB4BVPROC VertexAttrib4bv =
+        __glGetProcAddress("glVertexAttrib4bv");
+    VertexAttrib4bv((GLuint) bswap_CARD32(pc + 0), (const GLbyte *) (pc + 4));
 }
 
 void
 __glXDispSwap_VertexAttrib4dv(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB4DVPROC VertexAttrib4dv =
+        __glGetProcAddress("glVertexAttrib4dv");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 36);
@@ -4512,65 +4590,77 @@ __glXDispSwap_VertexAttrib4dv(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib4dv((GLuint) bswap_CARD32(pc + 0),
-                      (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
-                                                        4));
+    VertexAttrib4dv((GLuint) bswap_CARD32(pc + 0),
+                    (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                      4));
 }
 
 void
 __glXDispSwap_VertexAttrib4iv(GLbyte * pc)
 {
-    glVertexAttrib4iv((GLuint) bswap_CARD32(pc + 0),
-                      (const GLint *) bswap_32_array((uint32_t *) (pc + 4), 4));
+    PFNGLVERTEXATTRIB4IVPROC VertexAttrib4iv =
+        __glGetProcAddress("glVertexAttrib4iv");
+    VertexAttrib4iv((GLuint) bswap_CARD32(pc + 0),
+                    (const GLint *) bswap_32_array((uint32_t *) (pc + 4), 4));
 }
 
 void
 __glXDispSwap_VertexAttrib4sv(GLbyte * pc)
 {
-    glVertexAttrib4sv((GLuint) bswap_CARD32(pc + 0),
-                      (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                       4));
+    PFNGLVERTEXATTRIB4SVPROC VertexAttrib4sv =
+        __glGetProcAddress("glVertexAttrib4sv");
+    VertexAttrib4sv((GLuint) bswap_CARD32(pc + 0),
+                    (const GLshort *) bswap_16_array((uint16_t *) (pc + 4), 4));
 }
 
 void
 __glXDispSwap_VertexAttrib4ubv(GLbyte * pc)
 {
-    glVertexAttrib4ubv((GLuint) bswap_CARD32(pc + 0),
-                       (const GLubyte *) (pc + 4));
+    PFNGLVERTEXATTRIB4UBVPROC VertexAttrib4ubv =
+        __glGetProcAddress("glVertexAttrib4ubv");
+    VertexAttrib4ubv((GLuint) bswap_CARD32(pc + 0), (const GLubyte *) (pc + 4));
 }
 
 void
 __glXDispSwap_VertexAttrib4uiv(GLbyte * pc)
 {
-    glVertexAttrib4uiv((GLuint) bswap_CARD32(pc + 0),
-                       (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
-                                                       4));
+    PFNGLVERTEXATTRIB4UIVPROC VertexAttrib4uiv =
+        __glGetProcAddress("glVertexAttrib4uiv");
+    VertexAttrib4uiv((GLuint) bswap_CARD32(pc + 0),
+                     (const GLuint *) bswap_32_array((uint32_t *) (pc + 4), 4));
 }
 
 void
 __glXDispSwap_VertexAttrib4usv(GLbyte * pc)
 {
-    glVertexAttrib4usv((GLuint) bswap_CARD32(pc + 0),
-                       (const GLushort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                         4));
+    PFNGLVERTEXATTRIB4USVPROC VertexAttrib4usv =
+        __glGetProcAddress("glVertexAttrib4usv");
+    VertexAttrib4usv((GLuint) bswap_CARD32(pc + 0),
+                     (const GLushort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                       4));
 }
 
 void
 __glXDispSwap_ClampColor(GLbyte * pc)
 {
-    glClampColor((GLenum) bswap_ENUM(pc + 0), (GLenum) bswap_ENUM(pc + 4));
+    PFNGLCLAMPCOLORPROC ClampColor = __glGetProcAddress("glClampColor");
+
+    ClampColor((GLenum) bswap_ENUM(pc + 0), (GLenum) bswap_ENUM(pc + 4));
 }
 
 void
 __glXDispSwap_BindProgramARB(GLbyte * pc)
 {
-    glBindProgramARB((GLenum) bswap_ENUM(pc + 0),
-                     (GLuint) bswap_CARD32(pc + 4));
+    PFNGLBINDPROGRAMARBPROC BindProgramARB =
+        __glGetProcAddress("glBindProgramARB");
+    BindProgramARB((GLenum) bswap_ENUM(pc + 0), (GLuint) bswap_CARD32(pc + 4));
 }
 
 int
 __glXDispSwap_DeleteProgramsARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLDELETEPROGRAMSARBPROC DeleteProgramsARB =
+        __glGetProcAddress("glDeleteProgramsARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4580,9 +4670,9 @@ __glXDispSwap_DeleteProgramsARB(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-        glDeleteProgramsARB(n,
-                            (const GLuint *)
-                            bswap_32_array((uint32_t *) (pc + 4), 0));
+        DeleteProgramsARB(n,
+                          (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                          0));
         error = Success;
     }
 
@@ -4592,6 +4682,8 @@ __glXDispSwap_DeleteProgramsARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_GenProgramsARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGENPROGRAMSARBPROC GenProgramsARB =
+        __glGetProcAddress("glGenProgramsARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4605,7 +4697,7 @@ __glXDispSwap_GenProgramsARB(__GLXclientState * cl, GLbyte * pc)
         GLuint *programs =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        glGenProgramsARB(n, programs);
+        GenProgramsARB(n, programs);
         (void) bswap_32_array((uint32_t *) programs, n);
         __glXSendReplySwap(cl->client, programs, n, 4, GL_TRUE, 0);
         error = Success;
@@ -4617,6 +4709,8 @@ __glXDispSwap_GenProgramsARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_GetProgramEnvParameterdvARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETPROGRAMENVPARAMETERDVARBPROC GetProgramEnvParameterdvARB =
+        __glGetProcAddress("glGetProgramEnvParameterdvARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4626,8 +4720,8 @@ __glXDispSwap_GetProgramEnvParameterdvARB(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLdouble params[4];
 
-        glGetProgramEnvParameterdvARB((GLenum) bswap_ENUM(pc + 0),
-                                      (GLuint) bswap_CARD32(pc + 4), params);
+        GetProgramEnvParameterdvARB((GLenum) bswap_ENUM(pc + 0),
+                                    (GLuint) bswap_CARD32(pc + 4), params);
         (void) bswap_64_array((uint64_t *) params, 4);
         __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0);
         error = Success;
@@ -4639,6 +4733,8 @@ __glXDispSwap_GetProgramEnvParameterdvARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_GetProgramEnvParameterfvARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETPROGRAMENVPARAMETERFVARBPROC GetProgramEnvParameterfvARB =
+        __glGetProcAddress("glGetProgramEnvParameterfvARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4648,8 +4744,8 @@ __glXDispSwap_GetProgramEnvParameterfvARB(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLfloat params[4];
 
-        glGetProgramEnvParameterfvARB((GLenum) bswap_ENUM(pc + 0),
-                                      (GLuint) bswap_CARD32(pc + 4), params);
+        GetProgramEnvParameterfvARB((GLenum) bswap_ENUM(pc + 0),
+                                    (GLuint) bswap_CARD32(pc + 4), params);
         (void) bswap_32_array((uint32_t *) params, 4);
         __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0);
         error = Success;
@@ -4661,6 +4757,8 @@ __glXDispSwap_GetProgramEnvParameterfvARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_GetProgramLocalParameterdvARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC GetProgramLocalParameterdvARB =
+        __glGetProcAddress("glGetProgramLocalParameterdvARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4670,8 +4768,8 @@ __glXDispSwap_GetProgramLocalParameterdvARB(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLdouble params[4];
 
-        glGetProgramLocalParameterdvARB((GLenum) bswap_ENUM(pc + 0),
-                                        (GLuint) bswap_CARD32(pc + 4), params);
+        GetProgramLocalParameterdvARB((GLenum) bswap_ENUM(pc + 0),
+                                      (GLuint) bswap_CARD32(pc + 4), params);
         (void) bswap_64_array((uint64_t *) params, 4);
         __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0);
         error = Success;
@@ -4683,6 +4781,8 @@ __glXDispSwap_GetProgramLocalParameterdvARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_GetProgramLocalParameterfvARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC GetProgramLocalParameterfvARB =
+        __glGetProcAddress("glGetProgramLocalParameterfvARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4692,8 +4792,8 @@ __glXDispSwap_GetProgramLocalParameterfvARB(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLfloat params[4];
 
-        glGetProgramLocalParameterfvARB((GLenum) bswap_ENUM(pc + 0),
-                                        (GLuint) bswap_CARD32(pc + 4), params);
+        GetProgramLocalParameterfvARB((GLenum) bswap_ENUM(pc + 0),
+                                      (GLuint) bswap_CARD32(pc + 4), params);
         (void) bswap_32_array((uint32_t *) params, 4);
         __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0);
         error = Success;
@@ -4705,6 +4805,8 @@ __glXDispSwap_GetProgramLocalParameterfvARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETPROGRAMIVARBPROC GetProgramivARB =
+        __glGetProcAddress("glGetProgramivARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4724,7 +4826,7 @@ __glXDispSwap_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        glGetProgramivARB((GLenum) bswap_ENUM(pc + 0), pname, params);
+        GetProgramivARB((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -4736,6 +4838,7 @@ __glXDispSwap_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_IsProgramARB(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLISPROGRAMARBPROC IsProgramARB = __glGetProcAddress("glIsProgramARB");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4745,7 +4848,7 @@ __glXDispSwap_IsProgramARB(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = glIsProgramARB((GLuint) bswap_CARD32(pc + 0));
+        retval = IsProgramARB((GLuint) bswap_CARD32(pc + 0));
         __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -4756,6 +4859,8 @@ __glXDispSwap_IsProgramARB(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDispSwap_ProgramEnvParameter4dvARB(GLbyte * pc)
 {
+    PFNGLPROGRAMENVPARAMETER4DVARBPROC ProgramEnvParameter4dvARB =
+        __glGetProcAddress("glProgramEnvParameter4dvARB");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 40);
@@ -4763,24 +4868,28 @@ __glXDispSwap_ProgramEnvParameter4dvARB(GLbyte * pc)
     }
 #endif
 
-    glProgramEnvParameter4dvARB((GLenum) bswap_ENUM(pc + 0),
-                                (GLuint) bswap_CARD32(pc + 4),
-                                (const GLdouble *)
-                                bswap_64_array((uint64_t *) (pc + 8), 4));
+    ProgramEnvParameter4dvARB((GLenum) bswap_ENUM(pc + 0),
+                              (GLuint) bswap_CARD32(pc + 4),
+                              (const GLdouble *)
+                              bswap_64_array((uint64_t *) (pc + 8), 4));
 }
 
 void
 __glXDispSwap_ProgramEnvParameter4fvARB(GLbyte * pc)
 {
-    glProgramEnvParameter4fvARB((GLenum) bswap_ENUM(pc + 0),
-                                (GLuint) bswap_CARD32(pc + 4),
-                                (const GLfloat *)
-                                bswap_32_array((uint32_t *) (pc + 8), 4));
+    PFNGLPROGRAMENVPARAMETER4FVARBPROC ProgramEnvParameter4fvARB =
+        __glGetProcAddress("glProgramEnvParameter4fvARB");
+    ProgramEnvParameter4fvARB((GLenum) bswap_ENUM(pc + 0),
+                              (GLuint) bswap_CARD32(pc + 4),
+                              (const GLfloat *)
+                              bswap_32_array((uint32_t *) (pc + 8), 4));
 }
 
 void
 __glXDispSwap_ProgramLocalParameter4dvARB(GLbyte * pc)
 {
+    PFNGLPROGRAMLOCALPARAMETER4DVARBPROC ProgramLocalParameter4dvARB =
+        __glGetProcAddress("glProgramLocalParameter4dvARB");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 40);
@@ -4788,95 +4897,112 @@ __glXDispSwap_ProgramLocalParameter4dvARB(GLbyte * pc)
     }
 #endif
 
-    glProgramLocalParameter4dvARB((GLenum) bswap_ENUM(pc + 0),
-                                  (GLuint) bswap_CARD32(pc + 4),
-                                  (const GLdouble *)
-                                  bswap_64_array((uint64_t *) (pc + 8), 4));
+    ProgramLocalParameter4dvARB((GLenum) bswap_ENUM(pc + 0),
+                                (GLuint) bswap_CARD32(pc + 4),
+                                (const GLdouble *)
+                                bswap_64_array((uint64_t *) (pc + 8), 4));
 }
 
 void
 __glXDispSwap_ProgramLocalParameter4fvARB(GLbyte * pc)
 {
-    glProgramLocalParameter4fvARB((GLenum) bswap_ENUM(pc + 0),
-                                  (GLuint) bswap_CARD32(pc + 4),
-                                  (const GLfloat *)
-                                  bswap_32_array((uint32_t *) (pc + 8), 4));
+    PFNGLPROGRAMLOCALPARAMETER4FVARBPROC ProgramLocalParameter4fvARB =
+        __glGetProcAddress("glProgramLocalParameter4fvARB");
+    ProgramLocalParameter4fvARB((GLenum) bswap_ENUM(pc + 0),
+                                (GLuint) bswap_CARD32(pc + 4),
+                                (const GLfloat *)
+                                bswap_32_array((uint32_t *) (pc + 8), 4));
 }
 
 void
 __glXDispSwap_ProgramStringARB(GLbyte * pc)
 {
+    PFNGLPROGRAMSTRINGARBPROC ProgramStringARB =
+        __glGetProcAddress("glProgramStringARB");
     const GLsizei len = (GLsizei) bswap_CARD32(pc + 8);
 
-    glProgramStringARB((GLenum) bswap_ENUM(pc + 0),
-                       (GLenum) bswap_ENUM(pc + 4),
-                       len, (const GLvoid *) (pc + 12));
+    ProgramStringARB((GLenum) bswap_ENUM(pc + 0),
+                     (GLenum) bswap_ENUM(pc + 4),
+                     len, (const GLvoid *) (pc + 12));
 }
 
 void
 __glXDispSwap_VertexAttrib1fvARB(GLbyte * pc)
 {
-    glVertexAttrib1fvARB((GLuint) bswap_CARD32(pc + 0),
-                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
-                                                          1));
+    PFNGLVERTEXATTRIB1FVARBPROC VertexAttrib1fvARB =
+        __glGetProcAddress("glVertexAttrib1fvARB");
+    VertexAttrib1fvARB((GLuint) bswap_CARD32(pc + 0),
+                       (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                        1));
 }
 
 void
 __glXDispSwap_VertexAttrib2fvARB(GLbyte * pc)
 {
-    glVertexAttrib2fvARB((GLuint) bswap_CARD32(pc + 0),
-                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
-                                                          2));
+    PFNGLVERTEXATTRIB2FVARBPROC VertexAttrib2fvARB =
+        __glGetProcAddress("glVertexAttrib2fvARB");
+    VertexAttrib2fvARB((GLuint) bswap_CARD32(pc + 0),
+                       (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                        2));
 }
 
 void
 __glXDispSwap_VertexAttrib3fvARB(GLbyte * pc)
 {
-    glVertexAttrib3fvARB((GLuint) bswap_CARD32(pc + 0),
-                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
-                                                          3));
+    PFNGLVERTEXATTRIB3FVARBPROC VertexAttrib3fvARB =
+        __glGetProcAddress("glVertexAttrib3fvARB");
+    VertexAttrib3fvARB((GLuint) bswap_CARD32(pc + 0),
+                       (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                        3));
 }
 
 void
 __glXDispSwap_VertexAttrib4fvARB(GLbyte * pc)
 {
-    glVertexAttrib4fvARB((GLuint) bswap_CARD32(pc + 0),
-                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
-                                                          4));
+    PFNGLVERTEXATTRIB4FVARBPROC VertexAttrib4fvARB =
+        __glGetProcAddress("glVertexAttrib4fvARB");
+    VertexAttrib4fvARB((GLuint) bswap_CARD32(pc + 0),
+                       (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                        4));
 }
 
 void
 __glXDispSwap_BindFramebuffer(GLbyte * pc)
 {
-    glBindFramebuffer((GLenum) bswap_ENUM(pc + 0),
-                      (GLuint) bswap_CARD32(pc + 4));
+    PFNGLBINDFRAMEBUFFERPROC BindFramebuffer =
+        __glGetProcAddress("glBindFramebuffer");
+    BindFramebuffer((GLenum) bswap_ENUM(pc + 0), (GLuint) bswap_CARD32(pc + 4));
 }
 
 void
 __glXDispSwap_BindRenderbuffer(GLbyte * pc)
 {
-    glBindRenderbuffer((GLenum) bswap_ENUM(pc + 0),
-                       (GLuint) bswap_CARD32(pc + 4));
+    PFNGLBINDRENDERBUFFERPROC BindRenderbuffer =
+        __glGetProcAddress("glBindRenderbuffer");
+    BindRenderbuffer((GLenum) bswap_ENUM(pc + 0),
+                     (GLuint) bswap_CARD32(pc + 4));
 }
 
 void
 __glXDispSwap_BlitFramebuffer(GLbyte * pc)
 {
-    glBlitFramebuffer((GLint) bswap_CARD32(pc + 0),
-                      (GLint) bswap_CARD32(pc + 4),
-                      (GLint) bswap_CARD32(pc + 8),
-                      (GLint) bswap_CARD32(pc + 12),
-                      (GLint) bswap_CARD32(pc + 16),
-                      (GLint) bswap_CARD32(pc + 20),
-                      (GLint) bswap_CARD32(pc + 24),
-                      (GLint) bswap_CARD32(pc + 28),
-                      (GLbitfield) bswap_CARD32(pc + 32),
-                      (GLenum) bswap_ENUM(pc + 36));
+    PFNGLBLITFRAMEBUFFERPROC BlitFramebuffer =
+        __glGetProcAddress("glBlitFramebuffer");
+    BlitFramebuffer((GLint) bswap_CARD32(pc + 0), (GLint) bswap_CARD32(pc + 4),
+                    (GLint) bswap_CARD32(pc + 8), (GLint) bswap_CARD32(pc + 12),
+                    (GLint) bswap_CARD32(pc + 16),
+                    (GLint) bswap_CARD32(pc + 20),
+                    (GLint) bswap_CARD32(pc + 24),
+                    (GLint) bswap_CARD32(pc + 28),
+                    (GLbitfield) bswap_CARD32(pc + 32),
+                    (GLenum) bswap_ENUM(pc + 36));
 }
 
 int
 __glXDispSwap_CheckFramebufferStatus(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus =
+        __glGetProcAddress("glCheckFramebufferStatus");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4886,7 +5012,7 @@ __glXDispSwap_CheckFramebufferStatus(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLenum retval;
 
-        retval = glCheckFramebufferStatus((GLenum) bswap_ENUM(pc + 0));
+        retval = CheckFramebufferStatus((GLenum) bswap_ENUM(pc + 0));
         __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -4897,76 +5023,92 @@ __glXDispSwap_CheckFramebufferStatus(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDispSwap_DeleteFramebuffers(GLbyte * pc)
 {
+    PFNGLDELETEFRAMEBUFFERSPROC DeleteFramebuffers =
+        __glGetProcAddress("glDeleteFramebuffers");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-    glDeleteFramebuffers(n,
-                         (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
-                                                         0));
+    DeleteFramebuffers(n,
+                       (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                       0));
 }
 
 void
 __glXDispSwap_DeleteRenderbuffers(GLbyte * pc)
 {
+    PFNGLDELETERENDERBUFFERSPROC DeleteRenderbuffers =
+        __glGetProcAddress("glDeleteRenderbuffers");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-    glDeleteRenderbuffers(n,
-                          (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
-                                                          0));
+    DeleteRenderbuffers(n,
+                        (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                        0));
 }
 
 void
 __glXDispSwap_FramebufferRenderbuffer(GLbyte * pc)
 {
-    glFramebufferRenderbuffer((GLenum) bswap_ENUM(pc + 0),
-                              (GLenum) bswap_ENUM(pc + 4),
-                              (GLenum) bswap_ENUM(pc + 8),
-                              (GLuint) bswap_CARD32(pc + 12));
+    PFNGLFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer =
+        __glGetProcAddress("glFramebufferRenderbuffer");
+    FramebufferRenderbuffer((GLenum) bswap_ENUM(pc + 0),
+                            (GLenum) bswap_ENUM(pc + 4),
+                            (GLenum) bswap_ENUM(pc + 8),
+                            (GLuint) bswap_CARD32(pc + 12));
 }
 
 void
 __glXDispSwap_FramebufferTexture1D(GLbyte * pc)
 {
-    glFramebufferTexture1D((GLenum) bswap_ENUM(pc + 0),
-                           (GLenum) bswap_ENUM(pc + 4),
-                           (GLenum) bswap_ENUM(pc + 8),
-                           (GLuint) bswap_CARD32(pc + 12),
-                           (GLint) bswap_CARD32(pc + 16));
+    PFNGLFRAMEBUFFERTEXTURE1DPROC FramebufferTexture1D =
+        __glGetProcAddress("glFramebufferTexture1D");
+    FramebufferTexture1D((GLenum) bswap_ENUM(pc + 0),
+                         (GLenum) bswap_ENUM(pc + 4),
+                         (GLenum) bswap_ENUM(pc + 8),
+                         (GLuint) bswap_CARD32(pc + 12),
+                         (GLint) bswap_CARD32(pc + 16));
 }
 
 void
 __glXDispSwap_FramebufferTexture2D(GLbyte * pc)
 {
-    glFramebufferTexture2D((GLenum) bswap_ENUM(pc + 0),
-                           (GLenum) bswap_ENUM(pc + 4),
-                           (GLenum) bswap_ENUM(pc + 8),
-                           (GLuint) bswap_CARD32(pc + 12),
-                           (GLint) bswap_CARD32(pc + 16));
+    PFNGLFRAMEBUFFERTEXTURE2DPROC FramebufferTexture2D =
+        __glGetProcAddress("glFramebufferTexture2D");
+    FramebufferTexture2D((GLenum) bswap_ENUM(pc + 0),
+                         (GLenum) bswap_ENUM(pc + 4),
+                         (GLenum) bswap_ENUM(pc + 8),
+                         (GLuint) bswap_CARD32(pc + 12),
+                         (GLint) bswap_CARD32(pc + 16));
 }
 
 void
 __glXDispSwap_FramebufferTexture3D(GLbyte * pc)
 {
-    glFramebufferTexture3D((GLenum) bswap_ENUM(pc + 0),
-                           (GLenum) bswap_ENUM(pc + 4),
-                           (GLenum) bswap_ENUM(pc + 8),
-                           (GLuint) bswap_CARD32(pc + 12),
-                           (GLint) bswap_CARD32(pc + 16),
-                           (GLint) bswap_CARD32(pc + 20));
+    PFNGLFRAMEBUFFERTEXTURE3DPROC FramebufferTexture3D =
+        __glGetProcAddress("glFramebufferTexture3D");
+    FramebufferTexture3D((GLenum) bswap_ENUM(pc + 0),
+                         (GLenum) bswap_ENUM(pc + 4),
+                         (GLenum) bswap_ENUM(pc + 8),
+                         (GLuint) bswap_CARD32(pc + 12),
+                         (GLint) bswap_CARD32(pc + 16),
+                         (GLint) bswap_CARD32(pc + 20));
 }
 
 void
 __glXDispSwap_FramebufferTextureLayer(GLbyte * pc)
 {
-    glFramebufferTextureLayer((GLenum) bswap_ENUM(pc + 0),
-                              (GLenum) bswap_ENUM(pc + 4),
-                              (GLuint) bswap_CARD32(pc + 8),
-                              (GLint) bswap_CARD32(pc + 12),
-                              (GLint) bswap_CARD32(pc + 16));
+    PFNGLFRAMEBUFFERTEXTURELAYERPROC FramebufferTextureLayer =
+        __glGetProcAddress("glFramebufferTextureLayer");
+    FramebufferTextureLayer((GLenum) bswap_ENUM(pc + 0),
+                            (GLenum) bswap_ENUM(pc + 4),
+                            (GLuint) bswap_CARD32(pc + 8),
+                            (GLint) bswap_CARD32(pc + 12),
+                            (GLint) bswap_CARD32(pc + 16));
 }
 
 int
 __glXDispSwap_GenFramebuffers(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGENFRAMEBUFFERSPROC GenFramebuffers =
+        __glGetProcAddress("glGenFramebuffers");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -4980,7 +5122,7 @@ __glXDispSwap_GenFramebuffers(__GLXclientState * cl, GLbyte * pc)
         GLuint *framebuffers =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        glGenFramebuffers(n, framebuffers);
+        GenFramebuffers(n, framebuffers);
         (void) bswap_32_array((uint32_t *) framebuffers, n);
         __glXSendReplySwap(cl->client, framebuffers, n, 4, GL_TRUE, 0);
         error = Success;
@@ -4992,6 +5134,8 @@ __glXDispSwap_GenFramebuffers(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_GenRenderbuffers(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGENRENDERBUFFERSPROC GenRenderbuffers =
+        __glGetProcAddress("glGenRenderbuffers");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -5005,7 +5149,7 @@ __glXDispSwap_GenRenderbuffers(__GLXclientState * cl, GLbyte * pc)
         GLuint *renderbuffers =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        glGenRenderbuffers(n, renderbuffers);
+        GenRenderbuffers(n, renderbuffers);
         (void) bswap_32_array((uint32_t *) renderbuffers, n);
         __glXSendReplySwap(cl->client, renderbuffers, n, 4, GL_TRUE, 0);
         error = Success;
@@ -5017,13 +5161,18 @@ __glXDispSwap_GenRenderbuffers(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDispSwap_GenerateMipmap(GLbyte * pc)
 {
-    glGenerateMipmap((GLenum) bswap_ENUM(pc + 0));
+    PFNGLGENERATEMIPMAPPROC GenerateMipmap =
+        __glGetProcAddress("glGenerateMipmap");
+    GenerateMipmap((GLenum) bswap_ENUM(pc + 0));
 }
 
 int
 __glXDispSwap_GetFramebufferAttachmentParameteriv(__GLXclientState * cl,
                                                   GLbyte * pc)
 {
+    PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC
+        GetFramebufferAttachmentParameteriv =
+        __glGetProcAddress("glGetFramebufferAttachmentParameteriv");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -5033,10 +5182,10 @@ __glXDispSwap_GetFramebufferAttachmentParameteriv(__GLXclientState * cl,
     if (cx != NULL) {
         GLint params[1];
 
-        glGetFramebufferAttachmentParameteriv((GLenum) bswap_ENUM(pc + 0),
-                                              (GLenum) bswap_ENUM(pc + 4),
-                                              (GLenum) bswap_ENUM(pc + 8),
-                                              params);
+        GetFramebufferAttachmentParameteriv((GLenum) bswap_ENUM(pc + 0),
+                                            (GLenum) bswap_ENUM(pc + 4),
+                                            (GLenum) bswap_ENUM(pc + 8),
+                                            params);
         (void) bswap_32_array((uint32_t *) params, 1);
         __glXSendReplySwap(cl->client, params, 1, 4, GL_FALSE, 0);
         error = Success;
@@ -5048,6 +5197,8 @@ __glXDispSwap_GetFramebufferAttachmentParameteriv(__GLXclientState * cl,
 int
 __glXDispSwap_GetRenderbufferParameteriv(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLGETRENDERBUFFERPARAMETERIVPROC GetRenderbufferParameteriv =
+        __glGetProcAddress("glGetRenderbufferParameteriv");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -5057,8 +5208,8 @@ __glXDispSwap_GetRenderbufferParameteriv(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLint params[1];
 
-        glGetRenderbufferParameteriv((GLenum) bswap_ENUM(pc + 0),
-                                     (GLenum) bswap_ENUM(pc + 4), params);
+        GetRenderbufferParameteriv((GLenum) bswap_ENUM(pc + 0),
+                                   (GLenum) bswap_ENUM(pc + 4), params);
         (void) bswap_32_array((uint32_t *) params, 1);
         __glXSendReplySwap(cl->client, params, 1, 4, GL_FALSE, 0);
         error = Success;
@@ -5070,6 +5221,8 @@ __glXDispSwap_GetRenderbufferParameteriv(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_IsFramebuffer(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLISFRAMEBUFFERPROC IsFramebuffer =
+        __glGetProcAddress("glIsFramebuffer");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -5079,7 +5232,7 @@ __glXDispSwap_IsFramebuffer(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = glIsFramebuffer((GLuint) bswap_CARD32(pc + 0));
+        retval = IsFramebuffer((GLuint) bswap_CARD32(pc + 0));
         __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -5090,6 +5243,8 @@ __glXDispSwap_IsFramebuffer(__GLXclientState * cl, GLbyte * pc)
 int
 __glXDispSwap_IsRenderbuffer(__GLXclientState * cl, GLbyte * pc)
 {
+    PFNGLISRENDERBUFFERPROC IsRenderbuffer =
+        __glGetProcAddress("glIsRenderbuffer");
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
@@ -5099,7 +5254,7 @@ __glXDispSwap_IsRenderbuffer(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = glIsRenderbuffer((GLuint) bswap_CARD32(pc + 0));
+        retval = IsRenderbuffer((GLuint) bswap_CARD32(pc + 0));
         __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -5110,38 +5265,48 @@ __glXDispSwap_IsRenderbuffer(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDispSwap_RenderbufferStorage(GLbyte * pc)
 {
-    glRenderbufferStorage((GLenum) bswap_ENUM(pc + 0),
-                          (GLenum) bswap_ENUM(pc + 4),
-                          (GLsizei) bswap_CARD32(pc + 8),
-                          (GLsizei) bswap_CARD32(pc + 12));
+    PFNGLRENDERBUFFERSTORAGEPROC RenderbufferStorage =
+        __glGetProcAddress("glRenderbufferStorage");
+    RenderbufferStorage((GLenum) bswap_ENUM(pc + 0),
+                        (GLenum) bswap_ENUM(pc + 4),
+                        (GLsizei) bswap_CARD32(pc + 8),
+                        (GLsizei) bswap_CARD32(pc + 12));
 }
 
 void
 __glXDispSwap_RenderbufferStorageMultisample(GLbyte * pc)
 {
-    glRenderbufferStorageMultisample((GLenum) bswap_ENUM(pc + 0),
-                                     (GLsizei) bswap_CARD32(pc + 4),
-                                     (GLenum) bswap_ENUM(pc + 8),
-                                     (GLsizei) bswap_CARD32(pc + 12),
-                                     (GLsizei) bswap_CARD32(pc + 16));
+    PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC RenderbufferStorageMultisample =
+        __glGetProcAddress("glRenderbufferStorageMultisample");
+    RenderbufferStorageMultisample((GLenum) bswap_ENUM(pc + 0),
+                                   (GLsizei) bswap_CARD32(pc + 4),
+                                   (GLenum) bswap_ENUM(pc + 8),
+                                   (GLsizei) bswap_CARD32(pc + 12),
+                                   (GLsizei) bswap_CARD32(pc + 16));
 }
 
 void
 __glXDispSwap_SecondaryColor3fvEXT(GLbyte * pc)
 {
-    glSecondaryColor3fvEXT((const GLfloat *)
-                           bswap_32_array((uint32_t *) (pc + 0), 3));
+    PFNGLSECONDARYCOLOR3FVEXTPROC SecondaryColor3fvEXT =
+        __glGetProcAddress("glSecondaryColor3fvEXT");
+    SecondaryColor3fvEXT((const GLfloat *)
+                         bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_FogCoordfvEXT(GLbyte * pc)
 {
-    glFogCoordfvEXT((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 1));
+    PFNGLFOGCOORDFVEXTPROC FogCoordfvEXT =
+        __glGetProcAddress("glFogCoordfvEXT");
+    FogCoordfvEXT((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 1));
 }
 
 void
 __glXDispSwap_VertexAttrib1dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB1DVNVPROC VertexAttrib1dvNV =
+        __glGetProcAddress("glVertexAttrib1dvNV");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 12);
@@ -5149,30 +5314,36 @@ __glXDispSwap_VertexAttrib1dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib1dvNV((GLuint) bswap_CARD32(pc + 0),
-                        (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
-                                                          1));
+    VertexAttrib1dvNV((GLuint) bswap_CARD32(pc + 0),
+                      (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                        1));
 }
 
 void
 __glXDispSwap_VertexAttrib1fvNV(GLbyte * pc)
 {
-    glVertexAttrib1fvNV((GLuint) bswap_CARD32(pc + 0),
-                        (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
-                                                         1));
+    PFNGLVERTEXATTRIB1FVNVPROC VertexAttrib1fvNV =
+        __glGetProcAddress("glVertexAttrib1fvNV");
+    VertexAttrib1fvNV((GLuint) bswap_CARD32(pc + 0),
+                      (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                       1));
 }
 
 void
 __glXDispSwap_VertexAttrib1svNV(GLbyte * pc)
 {
-    glVertexAttrib1svNV((GLuint) bswap_CARD32(pc + 0),
-                        (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                         1));
+    PFNGLVERTEXATTRIB1SVNVPROC VertexAttrib1svNV =
+        __glGetProcAddress("glVertexAttrib1svNV");
+    VertexAttrib1svNV((GLuint) bswap_CARD32(pc + 0),
+                      (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                       1));
 }
 
 void
 __glXDispSwap_VertexAttrib2dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB2DVNVPROC VertexAttrib2dvNV =
+        __glGetProcAddress("glVertexAttrib2dvNV");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 20);
@@ -5180,30 +5351,36 @@ __glXDispSwap_VertexAttrib2dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib2dvNV((GLuint) bswap_CARD32(pc + 0),
-                        (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
-                                                          2));
+    VertexAttrib2dvNV((GLuint) bswap_CARD32(pc + 0),
+                      (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                        2));
 }
 
 void
 __glXDispSwap_VertexAttrib2fvNV(GLbyte * pc)
 {
-    glVertexAttrib2fvNV((GLuint) bswap_CARD32(pc + 0),
-                        (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
-                                                         2));
+    PFNGLVERTEXATTRIB2FVNVPROC VertexAttrib2fvNV =
+        __glGetProcAddress("glVertexAttrib2fvNV");
+    VertexAttrib2fvNV((GLuint) bswap_CARD32(pc + 0),
+                      (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                       2));
 }
 
 void
 __glXDispSwap_VertexAttrib2svNV(GLbyte * pc)
 {
-    glVertexAttrib2svNV((GLuint) bswap_CARD32(pc + 0),
-                        (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                         2));
+    PFNGLVERTEXATTRIB2SVNVPROC VertexAttrib2svNV =
+        __glGetProcAddress("glVertexAttrib2svNV");
+    VertexAttrib2svNV((GLuint) bswap_CARD32(pc + 0),
+                      (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                       2));
 }
 
 void
 __glXDispSwap_VertexAttrib3dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB3DVNVPROC VertexAttrib3dvNV =
+        __glGetProcAddress("glVertexAttrib3dvNV");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 28);
@@ -5211,30 +5388,36 @@ __glXDispSwap_VertexAttrib3dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib3dvNV((GLuint) bswap_CARD32(pc + 0),
-                        (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
-                                                          3));
+    VertexAttrib3dvNV((GLuint) bswap_CARD32(pc + 0),
+                      (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                        3));
 }
 
 void
 __glXDispSwap_VertexAttrib3fvNV(GLbyte * pc)
 {
-    glVertexAttrib3fvNV((GLuint) bswap_CARD32(pc + 0),
-                        (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
-                                                         3));
+    PFNGLVERTEXATTRIB3FVNVPROC VertexAttrib3fvNV =
+        __glGetProcAddress("glVertexAttrib3fvNV");
+    VertexAttrib3fvNV((GLuint) bswap_CARD32(pc + 0),
+                      (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                       3));
 }
 
 void
 __glXDispSwap_VertexAttrib3svNV(GLbyte * pc)
 {
-    glVertexAttrib3svNV((GLuint) bswap_CARD32(pc + 0),
-                        (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                         3));
+    PFNGLVERTEXATTRIB3SVNVPROC VertexAttrib3svNV =
+        __glGetProcAddress("glVertexAttrib3svNV");
+    VertexAttrib3svNV((GLuint) bswap_CARD32(pc + 0),
+                      (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                       3));
 }
 
 void
 __glXDispSwap_VertexAttrib4dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIB4DVNVPROC VertexAttrib4dvNV =
+        __glGetProcAddress("glVertexAttrib4dvNV");
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
         (void) memmove(pc - 4, pc, 36);
@@ -5242,37 +5425,45 @@ __glXDispSwap_VertexAttrib4dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttrib4dvNV((GLuint) bswap_CARD32(pc + 0),
-                        (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
-                                                          4));
+    VertexAttrib4dvNV((GLuint) bswap_CARD32(pc + 0),
+                      (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                        4));
 }
 
 void
 __glXDispSwap_VertexAttrib4fvNV(GLbyte * pc)
 {
-    glVertexAttrib4fvNV((GLuint) bswap_CARD32(pc + 0),
-                        (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
-                                                         4));
+    PFNGLVERTEXATTRIB4FVNVPROC VertexAttrib4fvNV =
+        __glGetProcAddress("glVertexAttrib4fvNV");
+    VertexAttrib4fvNV((GLuint) bswap_CARD32(pc + 0),
+                      (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                       4));
 }
 
 void
 __glXDispSwap_VertexAttrib4svNV(GLbyte * pc)
 {
-    glVertexAttrib4svNV((GLuint) bswap_CARD32(pc + 0),
-                        (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
-                                                         4));
+    PFNGLVERTEXATTRIB4SVNVPROC VertexAttrib4svNV =
+        __glGetProcAddress("glVertexAttrib4svNV");
+    VertexAttrib4svNV((GLuint) bswap_CARD32(pc + 0),
+                      (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                       4));
 }
 
 void
 __glXDispSwap_VertexAttrib4ubvNV(GLbyte * pc)
 {
-    glVertexAttrib4ubvNV((GLuint) bswap_CARD32(pc + 0),
-                         (const GLubyte *) (pc + 4));
+    PFNGLVERTEXATTRIB4UBVNVPROC VertexAttrib4ubvNV =
+        __glGetProcAddress("glVertexAttrib4ubvNV");
+    VertexAttrib4ubvNV((GLuint) bswap_CARD32(pc + 0),
+                       (const GLubyte *) (pc + 4));
 }
 
 void
 __glXDispSwap_VertexAttribs1dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS1DVNVPROC VertexAttribs1dvNV =
+        __glGetProcAddress("glVertexAttribs1dvNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
 #ifdef __GLX_ALIGN64
@@ -5284,37 +5475,43 @@ __glXDispSwap_VertexAttribs1dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttribs1dvNV((GLuint) bswap_CARD32(pc + 0),
-                         n,
-                         (const GLdouble *)
-                         bswap_64_array((uint64_t *) (pc + 8), 0));
+    VertexAttribs1dvNV((GLuint) bswap_CARD32(pc + 0),
+                       n,
+                       (const GLdouble *) bswap_64_array((uint64_t *) (pc + 8),
+                                                         0));
 }
 
 void
 __glXDispSwap_VertexAttribs1fvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS1FVNVPROC VertexAttribs1fvNV =
+        __glGetProcAddress("glVertexAttribs1fvNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    glVertexAttribs1fvNV((GLuint) bswap_CARD32(pc + 0),
-                         n,
-                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
-                                                          0));
+    VertexAttribs1fvNV((GLuint) bswap_CARD32(pc + 0),
+                       n,
+                       (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
+                                                        0));
 }
 
 void
 __glXDispSwap_VertexAttribs1svNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS1SVNVPROC VertexAttribs1svNV =
+        __glGetProcAddress("glVertexAttribs1svNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    glVertexAttribs1svNV((GLuint) bswap_CARD32(pc + 0),
-                         n,
-                         (const GLshort *) bswap_16_array((uint16_t *) (pc + 8),
-                                                          0));
+    VertexAttribs1svNV((GLuint) bswap_CARD32(pc + 0),
+                       n,
+                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 8),
+                                                        0));
 }
 
 void
 __glXDispSwap_VertexAttribs2dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS2DVNVPROC VertexAttribs2dvNV =
+        __glGetProcAddress("glVertexAttribs2dvNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
 #ifdef __GLX_ALIGN64
@@ -5326,37 +5523,43 @@ __glXDispSwap_VertexAttribs2dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttribs2dvNV((GLuint) bswap_CARD32(pc + 0),
-                         n,
-                         (const GLdouble *)
-                         bswap_64_array((uint64_t *) (pc + 8), 0));
+    VertexAttribs2dvNV((GLuint) bswap_CARD32(pc + 0),
+                       n,
+                       (const GLdouble *) bswap_64_array((uint64_t *) (pc + 8),
+                                                         0));
 }
 
 void
 __glXDispSwap_VertexAttribs2fvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS2FVNVPROC VertexAttribs2fvNV =
+        __glGetProcAddress("glVertexAttribs2fvNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    glVertexAttribs2fvNV((GLuint) bswap_CARD32(pc + 0),
-                         n,
-                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
-                                                          0));
+    VertexAttribs2fvNV((GLuint) bswap_CARD32(pc + 0),
+                       n,
+                       (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
+                                                        0));
 }
 
 void
 __glXDispSwap_VertexAttribs2svNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS2SVNVPROC VertexAttribs2svNV =
+        __glGetProcAddress("glVertexAttribs2svNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    glVertexAttribs2svNV((GLuint) bswap_CARD32(pc + 0),
-                         n,
-                         (const GLshort *) bswap_16_array((uint16_t *) (pc + 8),
-                                                          0));
+    VertexAttribs2svNV((GLuint) bswap_CARD32(pc + 0),
+                       n,
+                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 8),
+                                                        0));
 }
 
 void
 __glXDispSwap_VertexAttribs3dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS3DVNVPROC VertexAttribs3dvNV =
+        __glGetProcAddress("glVertexAttribs3dvNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
 #ifdef __GLX_ALIGN64
@@ -5368,37 +5571,43 @@ __glXDispSwap_VertexAttribs3dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttribs3dvNV((GLuint) bswap_CARD32(pc + 0),
-                         n,
-                         (const GLdouble *)
-                         bswap_64_array((uint64_t *) (pc + 8), 0));
+    VertexAttribs3dvNV((GLuint) bswap_CARD32(pc + 0),
+                       n,
+                       (const GLdouble *) bswap_64_array((uint64_t *) (pc + 8),
+                                                         0));
 }
 
 void
 __glXDispSwap_VertexAttribs3fvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS3FVNVPROC VertexAttribs3fvNV =
+        __glGetProcAddress("glVertexAttribs3fvNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    glVertexAttribs3fvNV((GLuint) bswap_CARD32(pc + 0),
-                         n,
-                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
-                                                          0));
+    VertexAttribs3fvNV((GLuint) bswap_CARD32(pc + 0),
+                       n,
+                       (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
+                                                        0));
 }
 
 void
 __glXDispSwap_VertexAttribs3svNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS3SVNVPROC VertexAttribs3svNV =
+        __glGetProcAddress("glVertexAttribs3svNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    glVertexAttribs3svNV((GLuint) bswap_CARD32(pc + 0),
-                         n,
-                         (const GLshort *) bswap_16_array((uint16_t *) (pc + 8),
-                                                          0));
+    VertexAttribs3svNV((GLuint) bswap_CARD32(pc + 0),
+                       n,
+                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 8),
+                                                        0));
 }
 
 void
 __glXDispSwap_VertexAttribs4dvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS4DVNVPROC VertexAttribs4dvNV =
+        __glGetProcAddress("glVertexAttribs4dvNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
 #ifdef __GLX_ALIGN64
@@ -5410,45 +5619,53 @@ __glXDispSwap_VertexAttribs4dvNV(GLbyte * pc)
     }
 #endif
 
-    glVertexAttribs4dvNV((GLuint) bswap_CARD32(pc + 0),
-                         n,
-                         (const GLdouble *)
-                         bswap_64_array((uint64_t *) (pc + 8), 0));
+    VertexAttribs4dvNV((GLuint) bswap_CARD32(pc + 0),
+                       n,
+                       (const GLdouble *) bswap_64_array((uint64_t *) (pc + 8),
+                                                         0));
 }
 
 void
 __glXDispSwap_VertexAttribs4fvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS4FVNVPROC VertexAttribs4fvNV =
+        __glGetProcAddress("glVertexAttribs4fvNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    glVertexAttribs4fvNV((GLuint) bswap_CARD32(pc + 0),
-                         n,
-                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
-                                                          0));
+    VertexAttribs4fvNV((GLuint) bswap_CARD32(pc + 0),
+                       n,
+                       (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
+                                                        0));
 }
 
 void
 __glXDispSwap_VertexAttribs4svNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS4SVNVPROC VertexAttribs4svNV =
+        __glGetProcAddress("glVertexAttribs4svNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    glVertexAttribs4svNV((GLuint) bswap_CARD32(pc + 0),
-                         n,
-                         (const GLshort *) bswap_16_array((uint16_t *) (pc + 8),
-                                                          0));
+    VertexAttribs4svNV((GLuint) bswap_CARD32(pc + 0),
+                       n,
+                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 8),
+                                                        0));
 }
 
 void
 __glXDispSwap_VertexAttribs4ubvNV(GLbyte * pc)
 {
+    PFNGLVERTEXATTRIBS4UBVNVPROC VertexAttribs4ubvNV =
+        __glGetProcAddress("glVertexAttribs4ubvNV");
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    glVertexAttribs4ubvNV((GLuint) bswap_CARD32(pc + 0),
-                          n, (const GLubyte *) (pc + 8));
+    VertexAttribs4ubvNV((GLuint) bswap_CARD32(pc + 0),
+                        n, (const GLubyte *) (pc + 8));
 }
 
 void
 __glXDispSwap_ActiveStencilFaceEXT(GLbyte * pc)
 {
-    glActiveStencilFaceEXT((GLenum) bswap_ENUM(pc + 0));
+    PFNGLACTIVESTENCILFACEEXTPROC ActiveStencilFaceEXT =
+        __glGetProcAddress("glActiveStencilFaceEXT");
+    ActiveStencilFaceEXT((GLenum) bswap_ENUM(pc + 0));
 }
commit f69f4f417c6807405e45289b39a80f1b9a55f9e6
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Dec 10 07:09:17 2013 -0800

    Depend on latest glproto (1.4.17)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 11a3e11..a093c19 100644
--- a/configure.ac
+++ b/configure.ac
@@ -782,7 +782,7 @@ DRI3PROTO="dri3proto >= 1.0"
 XINERAMAPROTO="xineramaproto"
 BIGFONTPROTO="xf86bigfontproto >= 1.2.0"
 DGAPROTO="xf86dgaproto >= 2.0.99.1"
-GLPROTO="glproto >= 1.4.16"
+GLPROTO="glproto >= 1.4.17"
 DMXPROTO="dmxproto >= 2.2.99.1"
 VIDMODEPROTO="xf86vidmodeproto >= 2.2.99.1"
 WINDOWSWMPROTO="windowswmproto"
commit 576f3d36dd324bd0d16c9968f1ded5c5eead3569
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Dec 9 13:16:01 2013 -0500

    damageext: Die if we can't create the Xinerama resource type
    
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/damageext/damageext.c b/damageext/damageext.c
index d646923..5650953 100644
--- a/damageext/damageext.c
+++ b/damageext/damageext.c
@@ -725,6 +725,8 @@ void
 PanoramiXDamageInit(void)
 {
     XRT_DAMAGE = CreateNewResourceType(PanoramiXDamageDelete, "XineramaDamage");
+    if (!XRT_DAMAGE)
+        FatalError("Couldn't Xineramify Damage extension\n");
 
     PanoramiXSaveDamageCreate = ProcDamageVector[X_DamageCreate];
     ProcDamageVector[X_DamageCreate] = PanoramiXDamageCreate;
commit f10f36d91db1b21c2ce5a531b4fa5f96fcbdc2f0
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Sep 16 15:17:26 2013 -0400

    damageext: Xineramify (v7)
    
    v7: Don't bother making resources for the backing listeners. [keithp]
    
    This is now slightly unlike how other resources are xineramified.  We
    create N+1 internal damage listeners, one that's a real resource and
    reflects the protocol view, and then one per backend screen where the
    report function piles onto the protocol view.  The internal listeners
    are not stored in the resource database directly, they just hang off the
    xinerama resource. We don't wrap Subtract at the dispatch level, but we
    do extend it for the Xinerama case to clip to the root window geometry.
    
    As a result of the N+1 design here, the damage reports we generate are
    not quite minimal.  However they are indistinguishable from sequential
    rendering events happening before the client hears damage, and we don't
    need to add a post-dispatch callback just for this one extension.
    
    Add is probably (still) somewhat broken since it will only hit screen 0,
    but Add really only exists for DRI1's sake, and DRI1 disables itself
    with Xinerama enabled anyway.  In the absence of a use case, I'm leaving
    it unwrapped under Xinerama; if someone wants to define how it ought to
    work, be my guest.
    
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
index 15c38a9..ce0d072 100644
--- a/Xext/panoramiX.c
+++ b/Xext/panoramiX.c
@@ -54,6 +54,7 @@ Equipment Corporation.
 #include "resource.h"
 #include "picturestr.h"
 #include "xfixesint.h"
+#include "damageextint.h"
 #ifdef COMPOSITE
 #include "compint.h"
 #endif
@@ -582,6 +583,7 @@ PanoramiXExtensionInit(void)
 
     PanoramiXRenderInit();
     PanoramiXFixesInit();
+    PanoramiXDamageInit();
 #ifdef COMPOSITE
     PanoramiXCompositeInit();
 #endif
@@ -887,6 +889,7 @@ PanoramiXResetProc(ExtensionEntry * extEntry)
 
     PanoramiXRenderReset();
     PanoramiXFixesReset();
+    PanoramiXDamageReset();
 #ifdef COMPOSITE
     PanoramiXCompositeReset ();
 #endif
diff --git a/damageext/damageext.c b/damageext/damageext.c
index 9521c26..d646923 100644
--- a/damageext/damageext.c
+++ b/damageext/damageext.c
@@ -1,5 +1,6 @@
 /*
  * Copyright © 2002 Keith Packard
+ * Copyright 2013 Red Hat, Inc.
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -25,9 +26,24 @@
 #endif
 
 #include "damageextint.h"
+#include "damagestr.h"
 #include "protocol-versions.h"
 #include "extinit.h"
 
+#ifdef PANORAMIX
+#include "panoramiX.h"
+#include "panoramiXsrv.h"
+
+typedef struct {
+    DamageExtPtr ext;
+    DamagePtr damage[MAXSCREENS];
+} PanoramiXDamageRes;
+
+static RESTYPE XRT_DAMAGE;
+static int (*PanoramiXSaveDamageCreate) (ClientPtr);
+
+#endif
+
 static unsigned char DamageReqCode;
 static int DamageEventBase;
 static RESTYPE DamageExtType;
@@ -37,13 +53,49 @@ static DevPrivateKeyRec DamageClientPrivateKeyRec;
 #define DamageClientPrivateKey (&DamageClientPrivateKeyRec)
 
 static void
+DamageNoteCritical(ClientPtr pClient)
+{
+    DamageClientPtr pDamageClient = GetDamageClient(pClient);
+
+    /* Composite extension marks clients with manual Subwindows as critical */
+    if (pDamageClient->critical > 0) {
+        SetCriticalOutputPending();
+        pClient->smart_priority = SMART_MAX_PRIORITY;
+    }
+}
+
+static void
+damageGetGeometry(DrawablePtr draw, int *x, int *y, int *w, int *h)
+{
+#ifdef PANORAMIX
+    if (!noPanoramiXExtension && draw->type == DRAWABLE_WINDOW) {
+        WindowPtr win = (WindowPtr)draw;
+
+        if (!win->parent) {
+            *x = screenInfo.x;
+            *y = screenInfo.y;
+            *w = screenInfo.width;
+            *h = screenInfo.height;
+            return;
+        }
+    }
+#endif
+
+    *x = draw->x;
+    *y = draw->y;
+    *w = draw->width;
+    *h = draw->height;
+}
+
+static void
 DamageExtNotify(DamageExtPtr pDamageExt, BoxPtr pBoxes, int nBoxes)
 {
     ClientPtr pClient = pDamageExt->pClient;
-    DamageClientPtr pDamageClient = GetDamageClient(pClient);
     DrawablePtr pDrawable = pDamageExt->pDrawable;
     xDamageNotifyEvent ev;
-    int i;
+    int i, x, y, w, h;
+
+    damageGetGeometry(pDrawable, &x, &y, &w, &h);
 
     UpdateCurrentTimeIf();
     ev = (xDamageNotifyEvent) {
@@ -52,10 +104,10 @@ DamageExtNotify(DamageExtPtr pDamageExt, BoxPtr pBoxes, int nBoxes)
         .drawable = pDamageExt->drawable,
         .damage = pDamageExt->id,
         .timestamp = currentTime.milliseconds,
-        .geometry.x = pDrawable->x,
-        .geometry.y = pDrawable->y,
-        .geometry.width = pDrawable->width,
-        .geometry.height = pDrawable->height
+        .geometry.x = x,
+        .geometry.y = y,
+        .geometry.width = w,
+        .geometry.height = h
     };
     if (pBoxes) {
         for (i = 0; i < nBoxes; i++) {
@@ -72,15 +124,12 @@ DamageExtNotify(DamageExtPtr pDamageExt, BoxPtr pBoxes, int nBoxes)
     else {
         ev.area.x = 0;
         ev.area.y = 0;
-        ev.area.width = pDrawable->width;
-        ev.area.height = pDrawable->height;
+        ev.area.width = w;
+        ev.area.height = h;
         WriteEventsToClient(pClient, 1, (xEvent *) &ev);
     }
-    /* Composite extension marks clients with manual Subwindows as critical */
-    if (pDamageClient->critical > 0) {
-        SetCriticalOutputPending();
-        pClient->smart_priority = SMART_MAX_PRIORITY;
-    }
+
+    DamageNoteCritical(pClient);
 }
 
 static void
@@ -162,23 +211,62 @@ ProcDamageQueryVersion(ClientPtr client)
     return Success;
 }
 
-static int
-ProcDamageCreate(ClientPtr client)
+static void
+DamageExtRegister(DrawablePtr pDrawable, DamagePtr pDamage, Bool report)
+{
+    DamageSetReportAfterOp(pDamage, TRUE);
+    DamageRegister(pDrawable, pDamage);
+
+    if (report) {
+        RegionPtr pRegion = &((WindowPtr) pDrawable)->borderClip;
+        RegionTranslate(pRegion, -pDrawable->x, -pDrawable->y);
+        DamageReportDamage(pDamage, pRegion);
+        RegionTranslate(pRegion, pDrawable->x, pDrawable->y);
+    }
+}
+
+static DamageExtPtr
+DamageExtCreate(DrawablePtr pDrawable, DamageReportLevel level,
+                ClientPtr client, XID id, XID drawable)
+{
+    DamageExtPtr pDamageExt = malloc(sizeof(DamageExtRec));
+    if (!pDamageExt)
+        return NULL;
+
+    pDamageExt->id = id;
+    pDamageExt->drawable = drawable;
+    pDamageExt->pDrawable = pDrawable;
+    pDamageExt->level = level;
+    pDamageExt->pClient = client;
+    pDamageExt->pDamage = DamageCreate(DamageExtReport, DamageExtDestroy, level,
+                                       FALSE, pDrawable->pScreen, pDamageExt);
+    if (!pDamageExt->pDamage) {
+        free(pDamageExt);
+        return NULL;
+    }
+
+    if (!AddResource(id, DamageExtType, (pointer) pDamageExt))
+        return NULL;
+
+    DamageExtRegister(pDrawable, pDamageExt->pDamage,
+                      pDrawable->type == DRAWABLE_WINDOW);
+
+    return pDamageExt;
+}
+
+static DamageExtPtr
+doDamageCreate(ClientPtr client, int *rc)
 {
     DrawablePtr pDrawable;
     DamageExtPtr pDamageExt;
     DamageReportLevel level;
-    RegionPtr pRegion;
-    int rc;
 
     REQUEST(xDamageCreateReq);
 
-    REQUEST_SIZE_MATCH(xDamageCreateReq);
-    LEGAL_NEW_RESOURCE(stuff->damage, client);
-    rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0,
-                           DixGetAttrAccess | DixReadAccess);
-    if (rc != Success)
-        return rc;
+    *rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0,
+                            DixGetAttrAccess | DixReadAccess);
+    if (*rc != Success)
+        return NULL;
 
     switch (stuff->level) {
     case XDamageReportRawRectangles:
@@ -195,39 +283,27 @@ ProcDamageCreate(ClientPtr client)
         break;
     default:
         client->errorValue = stuff->level;
-        return BadValue;
+        *rc = BadValue;
+        return NULL;
     }
 
-    pDamageExt = malloc(sizeof(DamageExtRec));
+    pDamageExt = DamageExtCreate(pDrawable, level, client, stuff->damage,
+                                 stuff->drawable);
     if (!pDamageExt)
-        return BadAlloc;
-    pDamageExt->id = stuff->damage;
-    pDamageExt->drawable = stuff->drawable;
-    pDamageExt->pDrawable = pDrawable;
-    pDamageExt->level = level;
-    pDamageExt->pClient = client;
-    pDamageExt->pDamage = DamageCreate(DamageExtReport,
-                                       DamageExtDestroy,
-                                       level,
-                                       FALSE, pDrawable->pScreen, pDamageExt);
-    if (!pDamageExt->pDamage) {
-        free(pDamageExt);
-        return BadAlloc;
-    }
-    if (!AddResource(stuff->damage, DamageExtType, (pointer) pDamageExt))
-        return BadAlloc;
-
-    DamageSetReportAfterOp(pDamageExt->pDamage, TRUE);
-    DamageRegister(pDamageExt->pDrawable, pDamageExt->pDamage);
+        *rc = BadAlloc;
 
-    if (pDrawable->type == DRAWABLE_WINDOW) {
-        pRegion = &((WindowPtr) pDrawable)->borderClip;
-        RegionTranslate(pRegion, -pDrawable->x, -pDrawable->y);
-        DamageReportDamage(pDamageExt->pDamage, pRegion);
-        RegionTranslate(pRegion, pDrawable->x, pDrawable->y);
-    }
+    return pDamageExt;
+}
 
-    return Success;
+static int
+ProcDamageCreate(ClientPtr client)
+{
+    int rc;
+    REQUEST(xDamageCreateReq);
+    REQUEST_SIZE_MATCH(xDamageCreateReq);
+    LEGAL_NEW_RESOURCE(stuff->damage, client);
+    doDamageCreate(client, &rc);
+    return rc;
 }
 
 static int
@@ -242,6 +318,88 @@ ProcDamageDestroy(ClientPtr client)
     return Success;
 }
 
+#ifdef PANORAMIX
+static RegionPtr
+DamageExtSubtractWindowClip(DamageExtPtr pDamageExt)
+{
+    WindowPtr win = (WindowPtr)pDamageExt->pDrawable;
+    PanoramiXRes *res = NULL;
+    RegionPtr ret;
+    int i;
+
+    if (!win->parent)
+        return &PanoramiXScreenRegion;
+
+    dixLookupResourceByType((void **)&res, win->drawable.id, XRT_WINDOW,
+                            serverClient, DixReadAccess);
+    if (!res)
+        return NULL;
+
+    ret = RegionCreate(NULL, 0);
+    if (!ret)
+        return NULL;
+
+    FOR_NSCREENS_FORWARD(i) {
+        ScreenPtr screen;
+        if (Success != dixLookupWindow(&win, res->info[i].id, serverClient,
+                                       DixReadAccess))
+            goto out;
+
+        screen = win->drawable.pScreen;
+
+        RegionTranslate(ret, -screen->x, -screen->y);
+        if (!RegionUnion(ret, ret, &win->borderClip))
+            goto out;
+        RegionTranslate(ret, screen->x, screen->y);
+    }
+
+    return ret;
+
+out:
+    RegionDestroy(ret);
+    return NULL;
+}
+
+static void
+DamageExtFreeWindowClip(RegionPtr reg)
+{
+    if (reg != &PanoramiXScreenRegion)
+        RegionDestroy(reg);
+}
+#endif
+
+/*
+ * DamageSubtract intersects with borderClip, so we must reconstruct the
+ * protocol's perspective of same...
+ */
+static Bool
+DamageExtSubtract(DamageExtPtr pDamageExt, const RegionPtr pRegion)
+{
+    DamagePtr pDamage = pDamageExt->pDamage;
+
+#ifdef PANORAMIX
+    if (!noPanoramiXExtension) {
+        RegionPtr damage = DamageRegion(pDamage);
+        RegionSubtract(damage, damage, pRegion);
+
+        if (pDamageExt->pDrawable->type == DRAWABLE_WINDOW) {
+            DrawablePtr pDraw = pDamageExt->pDrawable;
+            RegionPtr clip = DamageExtSubtractWindowClip(pDamageExt);
+            if (clip) {
+                RegionTranslate(clip, -pDraw->x, -pDraw->y);
+                RegionIntersect(damage, damage, clip);
+                RegionTranslate(clip, pDraw->x, pDraw->y);
+                DamageExtFreeWindowClip(clip);
+            }
+        }
+
+        return RegionNotEmpty(damage);
+    }
+#endif
+
+    return DamageSubtract(pDamage, pRegion);
+}
+
 static int
 ProcDamageSubtract(ClientPtr client)
 {
@@ -261,7 +419,7 @@ ProcDamageSubtract(ClientPtr client)
         if (pRepair) {
             if (pParts)
                 RegionIntersect(pParts, DamageRegion(pDamage), pRepair);
-            if (DamageSubtract(pDamage, pRepair))
+            if (DamageExtSubtract(pDamageExt, pRepair))
                 DamageExtReport(pDamage, DamageRegion(pDamage),
                                 (void *) pDamageExt);
         }
@@ -271,6 +429,7 @@ ProcDamageSubtract(ClientPtr client)
             DamageEmpty(pDamage);
         }
     }
+
     return Success;
 }
 
@@ -460,6 +619,125 @@ SDamageNotifyEvent(xDamageNotifyEvent * from, xDamageNotifyEvent * to)
     cpswaps(from->geometry.height, to->geometry.height);
 }
 
+#ifdef PANORAMIX
+
+static void
+PanoramiXDamageReport(DamagePtr pDamage, RegionPtr pRegion, void *closure)
+{
+    PanoramiXDamageRes *res = closure;
+    DamageExtPtr pDamageExt = res->ext;
+    WindowPtr pWin = (WindowPtr)pDamage->pDrawable;
+    ScreenPtr pScreen = pDamage->pScreen;
+
+    /* happens on unmap? sigh xinerama */
+    if (RegionNil(pRegion))
+        return;
+
+    /* translate root windows if necessary */
+    if (!pWin->parent)
+        RegionTranslate(pRegion, pScreen->x, pScreen->y);
+
+    /* add our damage to the protocol view */
+    DamageReportDamage(pDamageExt->pDamage, pRegion);
+
+    /* empty our view */
+    DamageEmpty(pDamage);
+}
+
+static void
+PanoramiXDamageExtDestroy(DamagePtr pDamage, void *closure)
+{
+    PanoramiXDamageRes *damage = closure;
+    damage->damage[pDamage->pScreen->myNum] = NULL;
+}
+
+static int
+PanoramiXDamageCreate(ClientPtr client)
+{
+    PanoramiXDamageRes *damage;
+    PanoramiXRes *draw;
+    int i, rc;
+
+    REQUEST(xDamageCreateReq);
+
+    REQUEST_SIZE_MATCH(xDamageCreateReq);
+    LEGAL_NEW_RESOURCE(stuff->damage, client);
+    rc = dixLookupResourceByClass((void **)&draw, stuff->drawable, XRC_DRAWABLE,
+                                  client, DixGetAttrAccess | DixReadAccess);
+    if (rc != Success)
+        return rc;
+
+    if (!(damage = calloc(1, sizeof(PanoramiXDamageRes))))
+        return BadAlloc;
+
+    if (!AddResource(stuff->damage, XRT_DAMAGE, damage))
+        return BadAlloc;
+
+    damage->ext = doDamageCreate(client, &rc);
+    if (rc == Success && draw->type == XRT_WINDOW) {
+        FOR_NSCREENS_FORWARD(i) {
+            DrawablePtr pDrawable;
+            DamagePtr pDamage = DamageCreate(PanoramiXDamageReport,
+                                             PanoramiXDamageExtDestroy,
+                                             DamageReportRawRegion,
+                                             FALSE,
+                                             screenInfo.screens[i],
+                                             damage);
+            if (!pDamage) {
+                rc = BadAlloc;
+            } else {
+                damage->damage[i] = pDamage;
+                rc = dixLookupDrawable(&pDrawable, draw->info[i].id, client,
+                                       M_WINDOW,
+                                       DixGetAttrAccess | DixReadAccess);
+            }
+            if (rc != Success)
+                break;
+
+            DamageExtRegister(pDrawable, pDamage, i != 0);
+        }
+    }
+
+    if (rc != Success)
+        FreeResource(stuff->damage, RT_NONE);
+
+    return rc;
+}
+
+static int
+PanoramiXDamageDelete(void *res, XID id)
+{
+    int i;
+    PanoramiXDamageRes *damage = res;
+
+    FOR_NSCREENS_BACKWARD(i) {
+        if (damage->damage[i]) {
+            DamageDestroy(damage->damage[i]);
+            damage->damage[i] = NULL;
+        }
+    }
+
+    free(damage);
+    return 1;
+}
+
+void
+PanoramiXDamageInit(void)
+{
+    XRT_DAMAGE = CreateNewResourceType(PanoramiXDamageDelete, "XineramaDamage");
+
+    PanoramiXSaveDamageCreate = ProcDamageVector[X_DamageCreate];
+    ProcDamageVector[X_DamageCreate] = PanoramiXDamageCreate;
+}
+
+void
+PanoramiXDamageReset(void)
+{
+    ProcDamageVector[X_DamageCreate] = PanoramiXSaveDamageCreate;
+}
+
+#endif /* PANORAMIX */
+
 void
 DamageExtensionInit(void)
 {
@@ -490,5 +768,10 @@ DamageExtensionInit(void)
             (EventSwapPtr) SDamageNotifyEvent;
         SetResourceTypeErrorValue(DamageExtType,
                                   extEntry->errorBase + BadDamage);
+#ifdef PANORAMIX
+        if (XRT_DAMAGE)
+            SetResourceTypeErrorValue(XRT_DAMAGE,
+                                      extEntry->errorBase + BadDamage);
+#endif
     }
 }
diff --git a/damageext/damageextint.h b/damageext/damageextint.h
index 2723379..e501495 100644
--- a/damageext/damageextint.h
+++ b/damageext/damageextint.h
@@ -67,4 +67,7 @@ typedef struct _DamageExt {
 void
  DamageExtSetCritical(ClientPtr pClient, Bool critical);
 
+void PanoramiXDamageInit(void);
+void PanoramiXDamageReset(void);
+
 #endif                          /* _DAMAGEEXTINT_H_ */
commit 808303fe5232ba0320ae5a4310b1ed1322e85f1d
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Nov 4 17:49:34 2013 -0500

    fixes: Fix PanoramiXSetWindowShapeRegion for root windows (v2)
    
    Root windows in Xinerama are in the coordinate space of their root window
    pixmap, not in protocol space.
    
    v2: Only translate for root windows, sice the window shape is
    drawable-relative.
    
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/xfixes/region.c b/xfixes/region.c
index f2ae851..14a02ba 100644
--- a/xfixes/region.c
+++ b/xfixes/region.c
@@ -857,6 +857,7 @@ PanoramiXFixesSetWindowShapeRegion(ClientPtr client)
 {
     int result = Success, j;
     PanoramiXRes *win;
+    RegionPtr reg = NULL;
 
     REQUEST(xXFixesSetWindowShapeRegionReq);
 
@@ -869,10 +870,22 @@ PanoramiXFixesSetWindowShapeRegion(ClientPtr client)
         return result;
     }
 
+    if (win->u.win.root)
+        VERIFY_REGION_OR_NONE(reg, stuff->region, client, DixReadAccess);
+
     FOR_NSCREENS_FORWARD(j) {
+        ScreenPtr screen = screenInfo.screens[j];
         stuff->dest = win->info[j].id;
+
+        if (reg)
+            RegionTranslate(reg, -screen->x, -screen->y);
+
         result =
             (*PanoramiXSaveXFixesVector[X_XFixesSetWindowShapeRegion]) (client);
+
+        if (reg)
+            RegionTranslate(reg, screen->x, screen->y);
+
         if (result != Success)
             break;
     }
commit 5c10c7ea2129b70015e745523918d143cc29318d
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Nov 4 17:49:33 2013 -0500

    fixes: Fix PanoramiXSetPictureClipRegion for root windows (v2)
    
    Root windows in Xinerama are in the coordinate space of their root
    window pixmap, not in protocol space.  This fixes 'xcompmgr -n' when
    Xinerama is active.
    
    v2: Only translate for root windows, since the clip origin is
    drawable-relative.
    
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/xfixes/region.c b/xfixes/region.c
index 0e9ca44..f2ae851 100644
--- a/xfixes/region.c
+++ b/xfixes/region.c
@@ -886,6 +886,7 @@ PanoramiXFixesSetPictureClipRegion(ClientPtr client)
     REQUEST(xXFixesSetPictureClipRegionReq);
     int result = Success, j;
     PanoramiXRes *pict;
+    RegionPtr reg = NULL;
 
     REQUEST_SIZE_MATCH(xXFixesSetPictureClipRegionReq);
 
@@ -896,10 +897,22 @@ PanoramiXFixesSetPictureClipRegion(ClientPtr client)
         return result;
     }
 
+    if (pict->u.pict.root)
+        VERIFY_REGION_OR_NONE(reg, stuff->region, client, DixReadAccess);
+
     FOR_NSCREENS_BACKWARD(j) {
+        ScreenPtr screen = screenInfo.screens[j];
         stuff->picture = pict->info[j].id;
+
+        if (reg)
+            RegionTranslate(reg, -screen->x, -screen->y);
+
         result =
             (*PanoramiXSaveXFixesVector[X_XFixesSetPictureClipRegion]) (client);
+
+        if (reg)
+            RegionTranslate(reg, screen->x, screen->y);
+
         if (result != Success)
             break;
     }
commit 1dd839a425adc6e5a1dc377003ed86a374d81f0b
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Nov 7 13:59:30 2013 -0500

    composite: Fix COW creation for Xinerama (v2)
    
    Say you have two 800x600 screens left/right of each other.  A window
    that's 200x200 at +700+0 in protocol coordinate space will appear to be
    at -100+0 in the coordinate space of the right hand screen.  Put another
    way: windows are in the coordinate space of their root window pixmap.
    
    We weren't doing this translation for the COW, so when rendering came in
    to it you'd see the top-left chunk of the COW on all screens.  Cool
    effect and all, but wrong.
    
    v2: Only translate when Xinerama is active [keithp]
    
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/composite/compoverlay.c b/composite/compoverlay.c
index d3cfaf0..bf5434c 100644
--- a/composite/compoverlay.c
+++ b/composite/compoverlay.c
@@ -133,16 +133,19 @@ compCreateOverlayWindow(ScreenPtr pScreen)
     int result;
     int w = pScreen->width;
     int h = pScreen->height;
+    int x = 0, y = 0;
 
 #ifdef PANORAMIX
     if (!noPanoramiXExtension) {
+        x = -pScreen->x;
+        y = -pScreen->y;
         w = PanoramiXPixWidth;
         h = PanoramiXPixHeight;
     }
 #endif
 
     pWin = cs->pOverlayWin =
-        CreateWindow(cs->overlayWid, pRoot, 0, 0, w, h, 0,
+        CreateWindow(cs->overlayWid, pRoot, x, y, w, h, 0,
                      InputOutput, CWBackPixmap | CWOverrideRedirect, &attrs[0],
                      pRoot->drawable.depth,
                      serverClient, pScreen->rootVisual, &result);
commit 8dbe456abae1a32fb6c5c74fa456bc7301cccabe
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 29 10:44:07 2013 -0400

    xinerama: Export the screen region
    
    damageext wants this so it can intersect subtract requests against the
    root window geometry.
    
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
index 2b3a570..15c38a9 100644
--- a/Xext/panoramiX.c
+++ b/Xext/panoramiX.c
@@ -73,7 +73,7 @@ int PanoramiXPixWidth = 0;
 int PanoramiXPixHeight = 0;
 int PanoramiXNumScreens = 0;
 
-static RegionRec PanoramiXScreenRegion = { {0, 0, 0, 0}, NULL };
+_X_EXPORT RegionRec PanoramiXScreenRegion = { {0, 0, 0, 0}, NULL };
 
 static int PanoramiXNumDepths;
 static DepthPtr PanoramiXDepths;
diff --git a/Xext/panoramiXsrv.h b/Xext/panoramiXsrv.h
index 7c605fe..0fcde4f 100644
--- a/Xext/panoramiXsrv.h
+++ b/Xext/panoramiXsrv.h
@@ -11,6 +11,7 @@
 extern _X_EXPORT int PanoramiXNumScreens;
 extern _X_EXPORT int PanoramiXPixWidth;
 extern _X_EXPORT int PanoramiXPixHeight;
+extern _X_EXPORT RegionRec PanoramiXScreenRegion;
 
 extern _X_EXPORT VisualID PanoramiXTranslateVisualID(int screen, VisualID orig);
 extern _X_EXPORT void PanoramiXConsolidate(void);
commit c6d4c2a24140feee4ceae48c4c74fedcae9b68b3
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Nov 15 15:13:31 2013 -0500

    xfree86: Prefer fbdev to vesa
    
    On UEFI machines you'd prefer fbdev to grab efifb instead of vesa trying
    to initialize and failing in a way we can't unwind from.  On BIOS
    machines this is harmless: either there is an fbdev driver and it'll
    probably be more capable, or there's not and vesa will kick in anyway.
    
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
index 95d58fe..af2b7f8 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -267,14 +267,6 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
     if (i < (nmatches - 1))
         i = xf86PciMatchDriver(matches, nmatches);
 #endif
-    /* Fallback to platform default hardware */
-    if (i < (nmatches - 1)) {
-#if defined(__i386__) || defined(__amd64__) || defined(__hurd__)
-        matches[i++] = xnfstrdup("vesa");
-#elif defined(__sparc__) && !defined(sun)
-        matches[i++] = xnfstrdup("sunffb");
-#endif
-    }
 
 #if defined(__linux__)
     matches[i++] = xnfstrdup("modesetting");
@@ -290,6 +282,15 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
 #endif
     }
 #endif                          /* !sun */
+
+    /* Fallback to platform default hardware */
+    if (i < (nmatches - 1)) {
+#if defined(__i386__) || defined(__amd64__) || defined(__hurd__)
+        matches[i++] = xnfstrdup("vesa");
+#elif defined(__sparc__) && !defined(sun)
+        matches[i++] = xnfstrdup("sunffb");
+#endif
+    }
 }
 
 /* copy a screen section and enter the desired driver
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 74d5ed3..b5efc02 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -507,7 +507,7 @@ xf86InputDriverlistFromConfig(void)
 static void
 fixup_video_driver_list(char **drivers)
 {
-    static const char *fallback[4] = { "vesa", "fbdev", "wsfb", NULL };
+    static const char *fallback[4] = { "fbdev", "vesa", "wsfb", NULL };
     char **end, **drv;
     char *x;
     int i;
commit 7b5d4f147fdef9edfeaa9c6565375111079efd11
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Nov 5 10:12:28 2013 -0500

    composite: Don't double-redirect if someone asks for backing store twice
    
    v2: Belt-and-suspenders the unredirection path [vsyrjala]
    
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/composite/compinit.c b/composite/compinit.c
index 6431464..3c91091 100644
--- a/composite/compinit.c
+++ b/composite/compinit.c
@@ -117,11 +117,11 @@ compChangeWindowAttributes(WindowPtr pWin, unsigned long mask)
 
     if (ret && (mask & CWBackingStore) &&
         pScreen->backingStoreSupport != NotUseful) {
-        if (pWin->backingStore != NotUseful) {
+        if (pWin->backingStore != NotUseful && !pWin->backStorage) {
             compRedirectWindow(serverClient, pWin, CompositeRedirectAutomatic);
             pWin->backStorage = (pointer) (intptr_t) 1;
         }
-        else {
+        else if (pWin->backingStore == NotUseful && pWin->backStorage) {
             compUnredirectWindow(serverClient, pWin,
                                  CompositeRedirectAutomatic);
             pWin->backStorage = NULL;
commit a2b2c271e0ca87d3188ba2741b6db9bbbdc599f5
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Nov 5 10:08:17 2013 -0500

    composite: Automatically enable backing store support on the screen
    
    ... unless you explicitly disabled it with -bs on the command line, or
    with the corresponding thing in xorg.conf.
    
    v2: Drop a bogus hunk from compChangeWindowAttributes [vsyrjala]
    v3: s/TRUE/WhenMapped/ [jcristau]
    
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/composite/compinit.c b/composite/compinit.c
index bc1130e..6431464 100644
--- a/composite/compinit.c
+++ b/composite/compinit.c
@@ -355,6 +355,9 @@ compScreenInit(ScreenPtr pScreen)
         return FALSE;
     }
 
+    if (!disableBackingStore)
+        pScreen->backingStoreSupport = WhenMapped;
+
     cs->PositionWindow = pScreen->PositionWindow;
     pScreen->PositionWindow = compPositionWindow;
 
diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
index 4f1f3d4..f1e6783 100644
--- a/hw/xfree86/common/xf86Helper.c
+++ b/hw/xfree86/common/xf86Helper.c
@@ -1638,6 +1638,11 @@ xf86SetBackingStore(ScreenPtr pScreen)
     else {
         if (xf86GetOptValBool(options, OPTION_BACKING_STORE, &useBS))
             from = X_CONFIG;
+#ifdef COMPOSITE
+        if (from != X_CONFIG)
+            useBS = xf86ReturnOptValBool(options, OPTION_BACKING_STORE,
+                                         !noCompositeExtension);
+#endif
     }
     free(options);
     pScreen->backingStoreSupport = useBS ? WhenMapped : NotUseful;
commit e0cac005608a2e5618c7be59701318d684e0bb93
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Nov 5 09:58:17 2013 -0500

    bs: Set the screen's bs support level to WhenMapped
    
    Since we're using RedirectAutomatic to do this, we don't actually
    preserve contents when unmapped.
    
    v2: Don't say WhenMapped if Composite didn't initialize [vsyrjala]
    
    Reviewed-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/dix/window.c b/dix/window.c
index 92df1eb..0e9109e 100644
--- a/dix/window.c
+++ b/dix/window.c
@@ -530,7 +530,11 @@ CreateRootWindow(ScreenPtr pScreen)
     if (disableBackingStore)
         pScreen->backingStoreSupport = NotUseful;
     if (enableBackingStore)
-        pScreen->backingStoreSupport = Always;
+        pScreen->backingStoreSupport = WhenMapped;
+#ifdef COMPOSITE
+    if (noCompositeExtension)
+        pScreen->backingStoreSupport = NotUseful;
+#endif
 
     pScreen->saveUnderSupport = NotUseful;
 
diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
index 721159d..4f1f3d4 100644
--- a/hw/xfree86/common/xf86Helper.c
+++ b/hw/xfree86/common/xf86Helper.c
@@ -1640,7 +1640,7 @@ xf86SetBackingStore(ScreenPtr pScreen)
             from = X_CONFIG;
     }
     free(options);
-    pScreen->backingStoreSupport = useBS ? Always : NotUseful;
+    pScreen->backingStoreSupport = useBS ? WhenMapped : NotUseful;
     if (serverGeneration == 1)
         xf86DrvMsg(pScreen->myNum, from, "Backing store %s\n",
                    useBS ? "enabled" : "disabled");
commit b61ccd5d9d368f3fbbae27ce14ac02a3db1884c4
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Nov 5 10:20:04 2013 -0500

    smartsched: Tweak the default scheduler intervals
    
    A default timeslice of 20ms means a pathological client can ruin up to
    two frames per scheduler tick.  And a fifth of a second is just insane.
    
    Pick two different numbers out of the hat.  A 5ms slice means you can
    probably keep up with two or three abusive clients, and letting it burst
    to 15ms should give you about all the timeslice you need for a
    fullscreen game (that's doing server-side rendering for some reason).
    
    If you're running on a system with a 10ms granularity on SIGALRM, then
    this effectively changes the intervals to 10ms and 30ms.  Which is still
    better, just not as better.
    
    I suspect this is about as good as we can do without actually going
    preemptive, which is an entire other nightmare.
    
    Reviewed-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/dix/dispatch.c b/dix/dispatch.c
index 4fecfea..8dcd9cb 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -220,8 +220,9 @@ UpdateCurrentTimeIf(void)
 
 #undef SMART_DEBUG
 
-#define SMART_SCHEDULE_DEFAULT_INTERVAL	20      /* ms */
-#define SMART_SCHEDULE_MAX_SLICE	200     /* ms */
+/* in milliseconds */
+#define SMART_SCHEDULE_DEFAULT_INTERVAL	5
+#define SMART_SCHEDULE_MAX_SLICE	15
 
 #if defined(WIN32) && !defined(__CYGWIN__)
 Bool SmartScheduleDisable = TRUE;
commit 66310ea2893811614b3c3aade8992624a95a6ee7
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Nov 8 09:22:37 2013 -0500

    dri3: Disable when Xinerama is active
    
    Pretty sure this can't work.
    
    Reviewed-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/dri3/dri3.c b/dri3/dri3.c
index 2bca7ae..76e07b4 100644
--- a/dri3/dri3.c
+++ b/dri3/dri3.c
@@ -68,6 +68,11 @@ dri3_extension_init(void)
     ExtensionEntry *extension;
     int i;
 
+#ifdef PANORAMIX
+    if (!noPanoramiXExtension)
+        return;
+#endif
+
     extension = AddExtension(DRI3_NAME, DRI3NumberEvents, DRI3NumberErrors,
                              proc_dri3_dispatch, sproc_dri3_dispatch,
                              NULL, StandardMinorOpcode);
commit 793fd5eefb0e417614d77fe1522c6548587fbd4e
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Nov 8 09:20:29 2013 -0500

    dri2: Disable when Xinerama is active
    
    Would only work on ScreenRec 0, which means it's broken.
    
    Reviewed-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c
index e1decec..ffd66fa 100644
--- a/hw/xfree86/dri2/dri2ext.c
+++ b/hw/xfree86/dri2/dri2ext.c
@@ -672,6 +672,11 @@ DRI2ExtensionInit(void)
 {
     ExtensionEntry *dri2Extension;
 
+#ifdef PANORAMIX
+    if (!noPanoramiXExtension)
+        return;
+#endif
+
     dri2Extension = AddExtension(DRI2_NAME,
                                  DRI2NumberEvents,
                                  DRI2NumberErrors,
commit 2bf92108294805c5c6fef249c2f7de6ecf4975d8
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Nov 8 09:06:59 2013 -0500

    present: Disable when Xinerama is active
    
    Among much else Present depends on RANDR types, and RANDR isn't properly
    Xinerama-aware yet anyway.
    
    Reviewed-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present_screen.c b/present/present_screen.c
index 2702cd6..25ef681 100644
--- a/present/present_screen.c
+++ b/present/present_screen.c
@@ -206,6 +206,11 @@ present_extension_init(void)
     ExtensionEntry *extension;
     int i;
 
+#ifdef PANORAMIX
+    if (!noPanoramiXExtension)
+        return;
+#endif
+
     extension = AddExtension(PRESENT_NAME, PresentNumberEvents, PresentNumberErrors,
                              proc_present_dispatch, sproc_present_dispatch,
                              NULL, StandardMinorOpcode);
commit ac772cb187ddf7e04b8f4b3a071b90f18f4488d0
Author: Eric Anholt <eric at anholt.net>
Date:   Thu Nov 14 17:40:47 2013 -0800

    glx: Fix incorrect use of dri_interface.h version defines in driver probing.
    
    If we extend __DRI_CORE or __DRI_SWRAST in dri_interface.h to allow a
    new version, it shouldn't make old server code retroactively require
    the new version from swrast drivers.
    
    Notably, new Mesa defines __DRI_SWRAST version 4, but we still want to
    be able to probe version 1 drivers, since we don't use any features
    beyond version 1 of the struct.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c
index aa083e0..2d5efa0 100644
--- a/glx/glxdriswrast.c
+++ b/glx/glxdriswrast.c
@@ -443,9 +443,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
 
     screen->driver = glxProbeDriver(driverName,
                                     (void **) &screen->core,
-                                    __DRI_CORE, __DRI_CORE_VERSION,
+                                    __DRI_CORE, 1,
                                     (void **) &screen->swrast,
-                                    __DRI_SWRAST, __DRI_SWRAST_VERSION);
+                                    __DRI_SWRAST, 1);
     if (screen->driver == NULL) {
         goto handle_error;
     }
commit 6e926b18ca1b182253bac435a1d53caaff7ffff6
Author: Eric Anholt <eric at anholt.net>
Date:   Thu Nov 14 17:40:46 2013 -0800

    glx: Fix incorrect use of dri_interface.h version defines in extensions.
    
    Those defines are so you can compile-time check "do I have a
    dri_interface.h that defines this new field of the struct?"  You don't
    want the server to claim it implements the new struct just because you
    installed a new copy of Mesa.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

diff --git a/glx/glxdri2.c b/glx/glxdri2.c
index e245e81..a7ee4a3 100644
--- a/glx/glxdri2.c
+++ b/glx/glxdri2.c
@@ -773,7 +773,7 @@ dri2FlushFrontBuffer(__DRIdrawable * driDrawable, void *loaderPrivate)
 }
 
 static const __DRIdri2LoaderExtension loaderExtension = {
-    {__DRI_DRI2_LOADER, __DRI_DRI2_LOADER_VERSION},
+    {__DRI_DRI2_LOADER, 3},
     dri2GetBuffers,
     dri2FlushFrontBuffer,
     dri2GetBuffersWithFormat,
@@ -781,7 +781,7 @@ static const __DRIdri2LoaderExtension loaderExtension = {
 
 #ifdef __DRI_USE_INVALIDATE
 static const __DRIuseInvalidateExtension dri2UseInvalidate = {
-    {__DRI_USE_INVALIDATE, __DRI_USE_INVALIDATE_VERSION}
+    {__DRI_USE_INVALIDATE, 1}
 };
 #endif
 
diff --git a/glx/glxdricommon.c b/glx/glxdricommon.c
index 1022c00..fc90272 100644
--- a/glx/glxdricommon.c
+++ b/glx/glxdricommon.c
@@ -59,7 +59,7 @@ getUST(int64_t * ust)
 }
 
 const __DRIsystemTimeExtension systemTimeExtension = {
-    {__DRI_SYSTEM_TIME, __DRI_SYSTEM_TIME_VERSION},
+    {__DRI_SYSTEM_TIME, 1},
     getUST,
     NULL,
 };
diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c
index c9962dc..aa083e0 100644
--- a/glx/glxdriswrast.c
+++ b/glx/glxdriswrast.c
@@ -386,7 +386,7 @@ swrastGetImage(__DRIdrawable * draw,
 }
 
 static const __DRIswrastLoaderExtension swrastLoaderExtension = {
-    {__DRI_SWRAST_LOADER, __DRI_SWRAST_LOADER_VERSION},
+    {__DRI_SWRAST_LOADER, 1},
     swrastGetDrawableInfo,
     swrastPutImage,
     swrastGetImage
commit 57a8ce927332e855dd29ff30210a211a907adb25
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Fri Nov 29 12:26:43 2013 +0000

    configure.ac: Fixup for "Require libpciaccess for int10"
    
    On 16/11/2013 01:00, Connor Behan wrote:
    > A --disable-pciaccess build will fail with an int10 module other than
    > stub.
    >
    > Signed-off-by: Connor Behan <connor.behan-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org>
    > ---
    >  configure.ac | 3 +++
    >  1 file changed, 3 insertions(+)
    >
    > diff --git a/configure.ac b/configure.ac
    > index 5e621e0..a843770 100644
    > --- a/configure.ac
    > +++ b/configure.ac
    > @@ -1822,6 +1822,9 @@ if test "x$XORG" = xyes; then
    >  		if test "x$CONFIG_UDEV_KMS" = xyes; then
    >  			AC_MSG_ERROR([Platform device enumeration requires libpciaccess])
    >  		fi
    > +		if test "x$INT10" != xstub; then
    > +			AC_MSG_ERROR([Cannot build int10 without libpciaccess])
    > +		fi
    >  	fi
    >  	AC_MSG_RESULT([$PCI])
    >
    
    This causes my build to fail where --disable-int10-module --disable-pciaccess
    is the default (as INT10 still has the default value 'x86emu')
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
    Tested-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 5a36e54..11a3e11 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1873,7 +1873,7 @@ if test "x$XORG" = xyes; then
 		if test "x$CONFIG_UDEV_KMS" = xyes; then
 			AC_MSG_ERROR([Platform device enumeration requires libpciaccess])
 		fi
-		if test "x$INT10" != xstub; then
+		if test "x$INT10MODULE" = xyes && test "x$INT10" != xstub; then
 			AC_MSG_ERROR([Cannot build int10 without libpciaccess])
 		fi
 	fi
commit 653d33941b0808ef910aaa5f3aeab05d9c1a100b
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Nov 26 12:18:12 2013 -0800

    present: Report damage when flipping
    
    Limit damage to the 'update' region.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index 251931a..ffbb0b3 100644
--- a/present/present.c
+++ b/present/present.c
@@ -520,6 +520,7 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
             /* Try to flip
              */
             if (present_flip(vblank->crtc, vblank->event_id, vblank->target_msc, vblank->pixmap, vblank->sync_flip)) {
+                RegionPtr damage;
 
                 /* Fix window pixmaps:
                  *  1) Restore previous flip window pixmap
@@ -530,6 +531,16 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
                                                (*screen->GetScreenPixmap)(screen));
                 (*screen->SetWindowPixmap)(vblank->window, vblank->pixmap);
                 (*screen->SetWindowPixmap)(screen->root, vblank->pixmap);
+
+                /* Report update region as damaged
+                 */
+                if (vblank->update) {
+                    damage = vblank->update;
+                    RegionIntersect(damage, damage, &window->clipList);
+                } else
+                    damage = &window->clipList;
+
+                DamageDamageRegion(&vblank->window->drawable, damage);
                 return;
             }
 
commit 5cf12c9569ac3d83fe1b7a8376c15f8f0b01655e
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Nov 26 12:10:48 2013 -0800

    present: Also set the root window pixmap when flipping
    
    This makes sure that things like software cursors continue to work
    while the screen is flipped.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index 3fd5e8b..251931a 100644
--- a/present/present.c
+++ b/present/present.c
@@ -324,6 +324,8 @@ present_unflip(ScreenPtr screen)
         (*screen->SetWindowPixmap)(screen_priv->flip_window,
                                    (*screen->GetScreenPixmap)(screen));
 
+    (*screen->SetWindowPixmap)(screen->root, (*screen->GetScreenPixmap)(screen));
+
     /* Update the screen pixmap with the current flip pixmap contents
      */
     if (screen_priv->flip_pixmap && screen_priv->flip_window) {
@@ -527,6 +529,7 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
                     (*screen->SetWindowPixmap)(screen_priv->flip_window,
                                                (*screen->GetScreenPixmap)(screen));
                 (*screen->SetWindowPixmap)(vblank->window, vblank->pixmap);
+                (*screen->SetWindowPixmap)(screen->root, vblank->pixmap);
                 return;
             }
 
commit 4aa77378de69efdc10bced6ba650b0ebff50c112
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Nov 26 12:06:57 2013 -0800

    present: Clear target_crtc if driver lacks Present support
    
    If the driver doesn't have the necessary hooks for Present, then the
    target_crtc needs to be set to NULL to make sure the extension uses
    the present_fake code.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Tested-by: Fredrik Höglund <fredrik at kde.org>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index 76e12ed..3fd5e8b 100644
--- a/present/present.c
+++ b/present/present.c
@@ -594,7 +594,9 @@ present_pixmap(WindowPtr window,
     if (!window_priv)
         return BadAlloc;
 
-    if (!target_crtc) {
+    if (!screen_priv || !screen_priv->info)
+        target_crtc = NULL;
+    else if (!target_crtc) {
         /* Update the CRTC if we have a pixmap or we don't have a CRTC
          */
         if (!pixmap)
commit 3dd5bfe540b295bb37a2c2fd0ba4a31fb217612b
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Nov 21 22:48:31 2013 -0800

    present: Send GLX_BufferSwapComplete events from present extension
    
    This allows GL to support the GLX_INTEL_swap_event extension.
    
    v2: Return GLX_BLIT_COMPLETE_INTEL for unknown swap types
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/Makefile.am b/glx/Makefile.am
index 5f28e87..44d3a7d 100644
--- a/glx/Makefile.am
+++ b/glx/Makefile.am
@@ -20,7 +20,8 @@ AM_CPPFLAGS = \
 	-I$(top_srcdir)/hw/xfree86/os-support/bus \
 	-I$(top_srcdir)/hw/xfree86/common \
 	-I$(top_srcdir)/hw/xfree86/dri \
-	-I$(top_srcdir)/mi
+	-I$(top_srcdir)/mi \
+	-I$(top_srcdir)/present
 
 if DRI2_AIGLX
 AM_CPPFLAGS += -I$(top_srcdir)/hw/xfree86/dri2
diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index efa4aec..b8da048 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -2468,3 +2468,64 @@ __glXDisp_ClientInfo(__GLXclientState * cl, GLbyte * pc)
 
     return Success;
 }
+
+#include <GL/glxtokens.h>
+
+void
+__glXsendSwapEvent(__GLXdrawable *drawable, int type, CARD64 ust,
+                   CARD64 msc, CARD32 sbc)
+{
+    ClientPtr client = clients[CLIENT_ID(drawable->drawId)];
+
+    xGLXBufferSwapComplete2 wire =  {
+        .type = __glXEventBase + GLX_BufferSwapComplete
+    };
+
+    if (!client)
+        return;
+
+    if (!(drawable->eventMask & GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK))
+        return;
+
+    wire.event_type = type;
+    wire.drawable = drawable->drawId;
+    wire.ust_hi = ust >> 32;
+    wire.ust_lo = ust & 0xffffffff;
+    wire.msc_hi = msc >> 32;
+    wire.msc_lo = msc & 0xffffffff;
+    wire.sbc = sbc;
+
+    WriteEventsToClient(client, 1, (xEvent *) &wire);
+}
+
+#if PRESENT
+static void
+__glXpresentCompleteNotify(WindowPtr window, CARD8 present_mode, CARD32 serial,
+                           uint64_t ust, uint64_t msc)
+{
+    __GLXdrawable *drawable;
+    int glx_type;
+    int rc;
+
+    rc = dixLookupResourceByType((pointer *) &drawable, window->drawable.id,
+                                 __glXDrawableRes, serverClient, DixGetAttrAccess);
+
+    if (rc != Success)
+        return;
+
+    if (present_mode == PresentCompleteModeFlip)
+        glx_type = GLX_FLIP_COMPLETE_INTEL;
+    else
+        glx_type = GLX_BLIT_COMPLETE_INTEL;
+        
+    __glXsendSwapEvent(drawable, glx_type, ust, msc, serial);
+}
+
+#include <present.h>
+
+void
+__glXregisterPresentCompleteNotify(void)
+{
+    present_register_complete_notify(__glXpresentCompleteNotify);
+}
+#endif
diff --git a/glx/glxdri2.c b/glx/glxdri2.c
index fbbd1fd..e245e81 100644
--- a/glx/glxdri2.c
+++ b/glx/glxdri2.c
@@ -177,36 +177,25 @@ __glXdriSwapEvent(ClientPtr client, void *data, int type, CARD64 ust,
                   CARD64 msc, CARD32 sbc)
 {
     __GLXdrawable *drawable = data;
-    xGLXBufferSwapComplete2 wire =  {
-        .type = __glXEventBase + GLX_BufferSwapComplete
-    };
-
-    if (!(drawable->eventMask & GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK))
-        return;
-
+    int glx_type;
     switch (type) {
     case DRI2_EXCHANGE_COMPLETE:
-        wire.event_type = GLX_EXCHANGE_COMPLETE_INTEL;
+        glx_type = GLX_EXCHANGE_COMPLETE_INTEL;
         break;
+    default:
+        /* unknown swap completion type,
+         * BLIT is a reasonable default, so
+         * fall through ...
+         */
     case DRI2_BLIT_COMPLETE:
-        wire.event_type = GLX_BLIT_COMPLETE_INTEL;
+        glx_type = GLX_BLIT_COMPLETE_INTEL;
         break;
     case DRI2_FLIP_COMPLETE:
-        wire.event_type = GLX_FLIP_COMPLETE_INTEL;
-        break;
-    default:
-        /* unknown swap completion type */
-        wire.event_type = 0;
+        glx_type = GLX_FLIP_COMPLETE_INTEL;
         break;
     }
-    wire.drawable = drawable->drawId;
-    wire.ust_hi = ust >> 32;
-    wire.ust_lo = ust & 0xffffffff;
-    wire.msc_hi = msc >> 32;
-    wire.msc_lo = msc & 0xffffffff;
-    wire.sbc = sbc;
-
-    WriteEventsToClient(client, 1, (xEvent *) &wire);
+    
+    __glXsendSwapEvent(drawable, glx_type, ust, msc, sbc);
 }
 
 /*
diff --git a/glx/glxext.c b/glx/glxext.c
index 3a7de28..601d08a 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -399,6 +399,9 @@ GlxExtensionInit(void)
 
     __glXErrorBase = extEntry->errorBase;
     __glXEventBase = extEntry->eventBase;
+#if PRESENT
+    __glXregisterPresentCompleteNotify();
+#endif
 }
 
 /************************************************************************/
diff --git a/glx/glxserver.h b/glx/glxserver.h
index 5e29abb..f862b63 100644
--- a/glx/glxserver.h
+++ b/glx/glxserver.h
@@ -120,6 +120,15 @@ void glxResumeClients(void);
 void __glXsetGetProcAddress(void (*(*get_proc_address) (const char *)) (void));
 void *__glGetProcAddress(const char *);
 
+void
+__glXsendSwapEvent(__GLXdrawable *drawable, int type, CARD64 ust,
+                   CARD64 msc, CARD32 sbc);
+
+#if PRESENT
+void
+__glXregisterPresentCompleteNotify(void);
+#endif
+
 /*
 ** State kept per client.
 */
diff --git a/present/present.h b/present/present.h
index 6a451fb..0e3bdc0 100644
--- a/present/present.h
+++ b/present/present.h
@@ -115,4 +115,13 @@ present_event_abandon(RRCrtcPtr crtc);
 extern _X_EXPORT Bool
 present_screen_init(ScreenPtr screen, present_screen_info_ptr info);
 
+typedef void (*present_complete_notify_proc)(WindowPtr window,
+                                             CARD8 mode,
+                                             CARD32 serial,
+                                             uint64_t ust,
+                                             uint64_t msc);
+
+extern _X_EXPORT void
+present_register_complete_notify(present_complete_notify_proc proc);
+
 #endif /* _PRESENT_H_ */
diff --git a/present/present_event.c b/present/present_event.c
index a8f7176..f0d509e 100644
--- a/present/present_event.c
+++ b/present/present_event.c
@@ -137,6 +137,14 @@ present_send_config_notify(WindowPtr window, int x, int y, int w, int h, int bw,
     }
 }
 
+static present_complete_notify_proc complete_notify;
+
+void
+present_register_complete_notify(present_complete_notify_proc proc)
+{
+    complete_notify = proc;
+}
+
 void
 present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 serial, uint64_t ust, uint64_t msc)
 {
@@ -165,6 +173,8 @@ present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 se
             }
         }
     }
+    if (complete_notify)
+        (*complete_notify)(window, mode, serial, ust, msc);
 }
 
 void
commit cde86e68fcb716f34c90f5a16eb868870f5c85e4
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Nov 25 23:06:08 2013 -0800

    present: Set window pixmap to flipped pixmap
    
    This makes other drawing to the window appear on the screen.
    
    Note that no child windows can be affected because only full-screen
    windows are eligible for flipping, and so we only need to set pixmap
    for the window itself.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index af5bf64..76e12ed 100644
--- a/present/present.c
+++ b/present/present.c
@@ -115,7 +115,8 @@ present_check_flip(RRCrtcPtr    crtc,
     }
 
     /* Make sure the window hasn't been redirected with Composite */
-    if (screen->GetWindowPixmap(window) != screen->GetScreenPixmap(screen))
+    if (screen->GetWindowPixmap(window) != screen->GetScreenPixmap(screen) &&
+        screen->GetWindowPixmap(window) != screen_priv->flip_pixmap)
         return FALSE;
 
     /* Check for full-screen window */
@@ -319,6 +320,10 @@ present_unflip(ScreenPtr screen)
     assert (!screen_priv->unflip_event_id);
     assert (!screen_priv->flip_pending);
 
+    if (screen_priv->flip_window)
+        (*screen->SetWindowPixmap)(screen_priv->flip_window,
+                                   (*screen->GetScreenPixmap)(screen));
+
     /* Update the screen pixmap with the current flip pixmap contents
      */
     if (screen_priv->flip_pixmap && screen_priv->flip_window) {
@@ -486,7 +491,8 @@ static void
 present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
 {
     WindowPtr                   window = vblank->window;
-    present_screen_priv_ptr     screen_priv = present_screen_priv(window->drawable.pScreen);
+    ScreenPtr                   screen = window->drawable.pScreen;
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
 
     if (vblank->wait_fence) {
         if (!present_fence_check_triggered(vblank->wait_fence)) {
@@ -511,8 +517,18 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
             xorg_list_add(&vblank->event_queue, &present_flip_queue);
             /* Try to flip
              */
-            if (present_flip(vblank->crtc, vblank->event_id, vblank->target_msc, vblank->pixmap, vblank->sync_flip))
+            if (present_flip(vblank->crtc, vblank->event_id, vblank->target_msc, vblank->pixmap, vblank->sync_flip)) {
+
+                /* Fix window pixmaps:
+                 *  1) Restore previous flip window pixmap
+                 *  2) Set current flip window pixmap to the new pixmap
+                 */
+                if (screen_priv->flip_window && screen_priv->flip_window != window)
+                    (*screen->SetWindowPixmap)(screen_priv->flip_window,
+                                               (*screen->GetScreenPixmap)(screen));
+                (*screen->SetWindowPixmap)(vblank->window, vblank->pixmap);
                 return;
+            }
 
             xorg_list_del(&vblank->event_queue);
             /* Oops, flip failed. Clear the flip_pending field
@@ -532,7 +548,7 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
             /* Check current flip
              */
             if (window == screen_priv->flip_window)
-                present_unflip(window->drawable.pScreen);
+                present_unflip(screen);
         }
         present_copy_region(&window->drawable, vblank->pixmap, vblank->update, vblank->x_off, vblank->y_off);
 
commit 04e138846e128670d409798aa2e797c3c5503a47
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Nov 25 23:10:17 2013 -0800

    present: Leave vblank on window list until flip complete
    
    If the window is destroyed, then we've got cleanup work to do, even if
    the vblank has already been executed -- we need to clear the window
    pointer so that we don't try to deliver events to it.
    
    Leaving it on the window list meant that when walking that list, we
    need to know whether the vblank is waiting to be executed or waiting
    for the flip to complete, so a new 'queued' flag was added to the
    vblank to distinguish between the two states.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index f446feb..af5bf64 100644
--- a/present/present.c
+++ b/present/present.c
@@ -348,6 +348,8 @@ present_flip_notify(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
 
     present_flip_idle(screen);
 
+    xorg_list_del(&vblank->event_queue);
+
     /* Transfer reference for pixmap and fence from vblank to screen_priv */
     screen_priv->flip_crtc = vblank->crtc;
     screen_priv->flip_window = vblank->window;
@@ -378,14 +380,12 @@ present_event_notify(uint64_t event_id, uint64_t ust, uint64_t msc)
     DebugPresent(("\te %lld ust %lld msc %lld\n", event_id, ust, msc));
     xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) {
         if (vblank->event_id == event_id) {
-            xorg_list_del(&vblank->event_queue);
             present_execute(vblank, ust, msc);
             return;
         }
     }
     xorg_list_for_each_entry_safe(vblank, tmp, &present_flip_queue, event_queue) {
         if (vblank->event_id == event_id) {
-            xorg_list_del(&vblank->event_queue);
             present_flip_notify(vblank, ust, msc);
             return;
         }
@@ -447,7 +447,7 @@ present_check_flip_window (WindowPtr window)
 
     /* Now check any queued vblanks */
     xorg_list_for_each_entry(vblank, &window_priv->vblank, window_list) {
-        if (vblank->flip && !present_check_flip(vblank->crtc, window, vblank->pixmap, FALSE, NULL, 0, 0))
+        if (vblank->queued && vblank->flip && !present_check_flip(vblank->crtc, window, vblank->pixmap, FALSE, NULL, 0, 0))
             vblank->flip = FALSE;
     }
 }
@@ -496,16 +496,17 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
     }
 
     xorg_list_del(&vblank->event_queue);
+    vblank->queued = FALSE;
+
     if (vblank->pixmap && vblank->window) {
 
         if (vblank->flip && screen_priv->flip_pending == NULL && !screen_priv->unflip_event_id) {
 
             DebugPresent(("\tf %p %8lld: %08lx -> %08lx\n", vblank, crtc_msc, vblank->pixmap->drawable.id, vblank->window->drawable.id));
-            /* Prepare to flip by removing from the window/screen lists
+            /* Prepare to flip by placing it in the flip queue and
              * and sticking it into the flip_pending field
              */
             screen_priv->flip_pending = vblank;
-            xorg_list_del(&vblank->window_list);
 
             xorg_list_add(&vblank->event_queue, &present_flip_queue);
             /* Try to flip
@@ -701,10 +702,12 @@ present_pixmap(WindowPtr window,
                       target_crtc));
 
     xorg_list_add(&vblank->event_queue, &present_exec_queue);
+    vblank->queued = TRUE;
     if (target_msc >= crtc_msc) {
         ret = present_queue_vblank(screen, target_crtc, vblank->event_id, target_msc);
         if (ret != Success) {
             xorg_list_del(&vblank->event_queue);
+            vblank->queued = FALSE;
             goto failure;
         }
     } else
@@ -737,6 +740,7 @@ present_abort_vblank(ScreenPtr screen, RRCrtcPtr crtc, uint64_t event_id, uint64
     xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) {
         if (vblank->event_id == event_id) {
             xorg_list_del(&vblank->event_queue);
+            vblank->queued = FALSE;
             return;
         }
     }
diff --git a/present/present_priv.h b/present/present_priv.h
index 500c7c2..8d3e007 100644
--- a/present/present_priv.h
+++ b/present/present_priv.h
@@ -69,9 +69,10 @@ struct present_vblank {
     present_fence_ptr   wait_fence;
     present_notify_ptr  notifies;
     int                 num_notifies;
-    Bool                flip;
-    Bool                sync_flip;
-    Bool                abort_flip;
+    Bool                queued;         /* on present_exec_queue */
+    Bool                flip;           /* planning on using flip */
+    Bool                sync_flip;      /* do flip synchronous to vblank */
+    Bool                abort_flip;     /* aborting this flip */
 };
 
 typedef struct present_screen_priv {
commit b121d62accb8c346b4e1b1bce99586e13712f04a
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Nov 26 03:07:55 2013 -0800

    present: Add a debug output line when skipping a pending present
    
    When an application provides two pixmaps for the same MSC, the
    previous one is skipped. This just dumps out some information at that point
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index f9eef6b..f446feb 100644
--- a/present/present.c
+++ b/present/present.c
@@ -621,6 +621,11 @@ present_pixmap(WindowPtr window,
             if (vblank->crtc != target_crtc || vblank->target_msc != target_msc)
                 continue;
 
+            DebugPresent(("\tx %lld %p %8lld: %08lx -> %08lx (crtc %p)\n",
+                          vblank->event_id, vblank, target_msc,
+                          vblank->pixmap->drawable.id, vblank->window->drawable.id,
+                          vblank->crtc));
+
             present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
             present_fence_destroy(vblank->idle_fence);
             dixDestroyPixmap(vblank->pixmap, vblank->pixmap->drawable.id);
commit eafba23b34be31c141ddafb8380520ac9a0622ac
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Nov 21 22:45:18 2013 -0800

    miext/sync: Handle libxshmfence API change
    
    libxshmfence had an unfortunate 'int32_t' type for the mapped fence.
    That changed to exposing a 'struct shmfence' instead, which is nice
    and opaque and offers fine type checking across the API.
    
    This patch requires the newer version of the library and uses
    the new interface type.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/configure.ac b/configure.ac
index f6ecdc6..5a36e54 100644
--- a/configure.ac
+++ b/configure.ac
@@ -787,7 +787,7 @@ DMXPROTO="dmxproto >= 2.2.99.1"
 VIDMODEPROTO="xf86vidmodeproto >= 2.2.99.1"
 WINDOWSWMPROTO="windowswmproto"
 APPLEWMPROTO="applewmproto >= 1.4"
-XSHMFENCE="xshmfence"
+XSHMFENCE="xshmfence >= 1.1"
 
 dnl Required modules
 XPROTO="xproto >= 7.0.22"
diff --git a/miext/sync/misyncshm.c b/miext/sync/misyncshm.c
index 20780fd..01f82fc 100644
--- a/miext/sync/misyncshm.c
+++ b/miext/sync/misyncshm.c
@@ -38,7 +38,7 @@
 static DevPrivateKeyRec syncShmFencePrivateKey;
 
 typedef struct _SyncShmFencePrivate {
-    int32_t             *fence;
+    struct xshmfence    *fence;
     int                 fd;
 } SyncShmFencePrivateRec, *SyncShmFencePrivatePtr;
 
commit b6d7ed4d787a652e8150532f384bfdf51760f3c2
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Nov 21 22:12:34 2013 -0800

    miext: Move SyncShm FDs out of the way of clients
    
    Applications may end up allocating a bunch of shmfence objects, each
    of which uses a file descriptor, which must be kept open lest some
    other client ask for a copy of it later on.
    
    Lacking an API that can turn a memory mapping back into a file
    descriptor, about the best we can do is push the file descriptors out
    of the way of other X clients so that we don't run out of the ability
    to accept new connections.
    
    This uses fcntl F_GETFD to push the FD up above MAXCLIENTS.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/include/os.h b/include/os.h
index 450e1a8..9b67294 100644
--- a/include/os.h
+++ b/include/os.h
@@ -686,4 +686,7 @@ LogPrintMarkers(void);
 extern _X_EXPORT void
 xorg_backtrace(void);
 
+extern _X_EXPORT int
+os_move_fd(int fd);
+
 #endif                          /* OS_H */
diff --git a/miext/sync/misyncshm.c b/miext/sync/misyncshm.c
index 3f9350a..20780fd 100644
--- a/miext/sync/misyncshm.c
+++ b/miext/sync/misyncshm.c
@@ -32,6 +32,7 @@
 #include "pixmapstr.h"
 #include <sys/mman.h>
 #include <unistd.h>
+#include <fcntl.h>
 #include <X11/xshmfence.h>
 
 static DevPrivateKeyRec syncShmFencePrivateKey;
@@ -126,6 +127,7 @@ miSyncShmCreateFenceFromFd(ScreenPtr pScreen, SyncFence *pFence, int fd, Bool in
 
     miSyncInitFence(pScreen, pFence, initially_triggered);
 
+    fd = os_move_fd(fd);
     pPriv->fence = xshmfence_map_shm(fd);
     if (pPriv->fence) {
         pPriv->fd = fd;
@@ -145,6 +147,7 @@ miSyncShmGetFenceFd(ScreenPtr pScreen, SyncFence *pFence)
         pPriv->fd = xshmfence_alloc_shm();
         if (pPriv->fd < 0)
             return -1;
+        pPriv->fd = os_move_fd(pPriv->fd);
         pPriv->fence = xshmfence_map_shm(pPriv->fd);
         if (!pPriv->fence) {
             close (pPriv->fd);
diff --git a/os/utils.c b/os/utils.c
index fb20da7..608ee6a 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -2071,3 +2071,27 @@ FormatUInt64Hex(uint64_t num, char *string)
 
     string[len] = '\0';
 }
+
+/* Move a file descriptor out of the way of our select mask; this
+ * is useful for file descriptors which will never appear in the
+ * select mask to avoid reducing the number of clients that can
+ * connect to the server
+ */
+int
+os_move_fd(int fd)
+{
+    int newfd;
+
+#ifdef F_DUPFD_CLOEXEC
+    newfd = fcntl(fd, F_DUPFD_CLOEXEC, MAXCLIENTS);
+#else
+    newfd = fcntl(fd, F_DUPFD, MAXCLIENTS);
+#endif
+    if (newfd < 0)
+        return fd;
+#ifndef F_DUPFD_CLOEXEC
+    fcntl(newfd, F_SETFD, FD_CLOEXEC);
+#endif
+    close(fd);
+    return newfd;
+}
commit cc63204926c6da83d9221c5f8c0dc8f5e2f2481d
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Nov 13 14:16:33 2013 +0900

    Xext: Use SHMDIR and O_TMPFILE when creating mapping files
    
    ShmCreateSegment asks for a file descriptor for a memory mapped file
    created by the X server. This patch uses O_TMPFILE where available,
    and also uses the SHMDIR directory to store the files, both for the
    O_TMPFILE and mkstemp cases.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/Xext/shm.c b/Xext/shm.c
index d014b91..1957a95 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -37,6 +37,7 @@ in this Software without prior written authorization from The Open Group.
 #include <sys/shm.h>
 #include <unistd.h>
 #include <sys/stat.h>
+#include <fcntl.h>
 #include <X11/X.h>
 #include <X11/Xproto.h>
 #include "misc.h"
@@ -1177,6 +1178,35 @@ ProcShmAttachFd(ClientPtr client)
 }
 
 static int
+shm_tmpfile(void)
+{
+#ifdef SHMDIR
+	int	fd;
+	int	flags;
+	char	template[] = SHMDIR "/shmfd-XXXXXX";
+#ifdef O_TMPFILE
+	fd = open(SHMDIR, O_TMPFILE|O_RDWR|O_CLOEXEC|O_EXCL, 0666);
+	if (fd >= 0) {
+		ErrorF ("Using O_TMPFILE\n");
+		return fd;
+	}
+	ErrorF ("Not using O_TMPFILE\n");
+#endif
+	fd = mkstemp(template);
+	if (fd < 0)
+		return -1;
+	unlink(template);
+	if (fcntl(fd, F_GETFD, &flags) >= 0) {
+		flags |= FD_CLOEXEC;
+		(void) fcntl(fd, F_SETFD, &flags);
+	}
+	return fd;
+#else
+        return -1;
+#endif
+}
+
+static int
 ProcShmCreateSegment(ClientPtr client)
 {
     int fd;
@@ -1188,17 +1218,15 @@ ProcShmCreateSegment(ClientPtr client)
         .sequenceNumber = client->sequence,
         .length = 0,
     };
-    char template[] = "/tmp/shm-XXXXXX";
 
     REQUEST_SIZE_MATCH(xShmCreateSegmentReq);
     if ((stuff->readOnly != xTrue) && (stuff->readOnly != xFalse)) {
         client->errorValue = stuff->readOnly;
         return BadValue;
     }
-    fd = mkstemp(template);
+    fd = shm_tmpfile();
     if (fd < 0)
         return BadAlloc;
-    unlink(template);
     if (ftruncate(fd, stuff->size) < 0) {
         close(fd);
         return BadAlloc;
commit 5a969f0928b84da5cfe0777dfb542caaacc915ad
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Nov 13 12:17:10 2013 +0900

    Select directory for MIT-SHM temp files at configure time
    
    By default, this looks through a list of directories to find one which
    exists, but can be overridden with --with-shared-memory-dir=PATH
    
    This patch doesn't actually do anything with this directory, just
    makes it available in the configuration
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/configure.ac b/configure.ac
index 6197e9b..f6ecdc6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1086,6 +1086,49 @@ case "$DRI2,$HAVE_DRI2PROTO" in
 esac
 AM_CONDITIONAL(DRI2, test "x$DRI2" = xyes)
 
+dnl
+dnl Locate a suitable tmp file system for creating shared memeory files
+dnl
+
+AC_ARG_WITH(shared-memory-dir, AS_HELP_STRING([--with-shared-memory-dir=PATH], [Path to directory in a world-writable temporary directory for anonymous shared memory (default: auto)]),
+[],
+[with_shared_memory_dir=yes])
+
+shmdirs="/run/shm /var/tmp /tmp"
+
+case x"$with_shared_memory_dir" in
+xyes)
+	for dir in $shmdirs; do
+		case x"$with_shared_memory_dir" in
+		xyes)
+			echo Checking temp dir "$dir"
+			if test -d "$dir"; then
+				with_shared_memory_dir="$dir"
+			fi
+			;;
+		esac
+	done
+	;;
+x/*)
+	;;
+xno)
+	;;
+*)
+	AC_MSG_ERROR([Invalid directory specified for --with-shared-memory-dir: $with_shared_memory_dir])
+	;;
+esac
+
+case x"$with_shared_memory_dir" in
+xyes)
+	AC_MSG_ERROR([No directory found for shared memory temp files.])
+	;;
+xno)
+	;;
+*)
+	AC_DEFINE_UNQUOTED(SHMDIR, ["$with_shared_memory_dir"], [Directory for shared memory temp files])
+	;;
+esac
+
 AC_ARG_ENABLE(xtrans-send-fds,	AS_HELP_STRING([--disable-xtrans-send-fds], [Use Xtrans support for fd passing (default: auto)]), [XTRANS_SEND_FDS=$enableval], [XTRANS_SEND_FDS=auto])
 
 case "x$XTRANS_SEND_FDS" in
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index d4fbe99..3066100 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -466,4 +466,7 @@
 /* Wrap SIGBUS to catch MIT-SHM faults */
 #undef BUSFAULT
 
+/* Directory for shared memory temp files */
+#undef SHMDIR
+
 #endif /* _DIX_CONFIG_H_ */
commit d695cb7fb6bb8fd159a332d902673edbbd2237d7
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date:   Mon Nov 25 22:19:34 2013 -0800

    Xdmx: Initialize DMX extension even if not built with GLX support
    
    dmxAddExtensions takes an argument to determine if it should just
    initialize the DMX extension, or both DMX & GLX, but if GLX wasn't
    compiled in, the entire call was #ifdef'ed out, leaving the DMX
    extension unavailable.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
    Reviewed-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/dmx/dmxinit.c b/hw/dmx/dmxinit.c
index bd868a0..7adcba0 100644
--- a/hw/dmx/dmxinit.c
+++ b/hw/dmx/dmxinit.c
@@ -612,6 +612,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[])
 
 #ifdef GLXEXT
     static Bool glxSupported = TRUE;
+#else
+    const Bool glxSupported = FALSE;
 #endif
 
     if (dmxGeneration != serverGeneration) {
@@ -740,10 +742,10 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[])
     /* Check if GLX extension exists on all back-end servers */
     for (i = 0; i < dmxNumScreens; i++)
         glxSupported &= (dmxScreens[i].glxMajorOpcode > 0);
+#endif
 
     if (serverGeneration == 1)
         dmxAddExtensions(glxSupported);
-#endif
 
     /* Tell dix layer about the backend displays */
     for (i = 0; i < dmxNumScreens; i++) {
commit bd70def07754357d26b86c287037eb3884631daf
Author: Connor Behan <connor.behan at gmail.com>
Date:   Fri Nov 15 17:00:40 2013 -0800

    configure.ac: Require libpciaccess for int10
    
    A --disable-pciaccess build will fail with an int10 module other than
    stub.
    
    Signed-off-by: Connor Behan <connor.behan at gmail.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index c7ec947..6197e9b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1830,6 +1830,9 @@ if test "x$XORG" = xyes; then
 		if test "x$CONFIG_UDEV_KMS" = xyes; then
 			AC_MSG_ERROR([Platform device enumeration requires libpciaccess])
 		fi
+		if test "x$INT10" != xstub; then
+			AC_MSG_ERROR([Cannot build int10 without libpciaccess])
+		fi
 	fi
 	AC_MSG_RESULT([$PCI])
 
commit a575c1dc64c10bc88bd0e963ebb8ab137f59a078
Author: Connor Behan <connor.behan at gmail.com>
Date:   Fri Nov 15 17:00:20 2013 -0800

    configure.ac: Require libpciaccess for platform bus support
    
    There is currently no reason to build with --enable-config-udev-kms and
    --disable-pciaccess but anyone who tries this should know that the build
    will fail.
    
    Signed-off-by: Connor Behan <connor.behan at gmail.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index b8c85d5..c7ec947 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1826,6 +1826,10 @@ if test "x$XORG" = xyes; then
 			xorg_bus_sparc="yes"
 			;;
 		esac
+	else
+		if test "x$CONFIG_UDEV_KMS" = xyes; then
+			AC_MSG_ERROR([Platform device enumeration requires libpciaccess])
+		fi
 	fi
 	AC_MSG_RESULT([$PCI])
 
commit 361dfe74eaa2f1eddb54abdecca1d8b1b3f58704
Author: Connor Behan <connor.behan at gmail.com>
Date:   Fri Nov 15 17:00:00 2013 -0800

    configure.ac: Add whitespace near PCI configuration
    
    Signed-off-by: Connor Behan <connor.behan at gmail.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 6c4a609..b8c85d5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1809,24 +1809,23 @@ if test "x$XORG" = xyes; then
 
 	AC_MSG_CHECKING([whether to build Xorg PCI functions])
 	if test "x$PCI" = xyes; then
-
-	PKG_CHECK_MODULES([PCIACCESS], $LIBPCIACCESS)
-	SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $LIBPCIACCESS"
-	XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $GLX_SYS_LIBS $LIBDRM_LIBS"
-	XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS $LIBDRM_CFLAGS"
-
-	AC_DEFINE(XSERVER_LIBPCIACCESS, 1, [Use libpciaccess for all pci manipulation])
-	AC_DEFINE_DIR(PCI_TXT_IDS_PATH, PCI_TXT_IDS_DIR, [Default PCI text file ID path])
-	case $host_os in
-	  gnu* | freebsd* | kfreebsd*-gnu | netbsd* | openbsd* | solaris* | dragonfly*)
-		xorg_bus_bsdpci="yes"
-		;;
-	esac
-	case $host_cpu in
-	  sparc*)
-		xorg_bus_sparc="yes"
-		;;
-	esac
+		PKG_CHECK_MODULES([PCIACCESS], $LIBPCIACCESS)
+		SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $LIBPCIACCESS"
+		XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $GLX_SYS_LIBS $LIBDRM_LIBS"
+		XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS $LIBDRM_CFLAGS"
+
+		AC_DEFINE(XSERVER_LIBPCIACCESS, 1, [Use libpciaccess for all pci manipulation])
+		AC_DEFINE_DIR(PCI_TXT_IDS_PATH, PCI_TXT_IDS_DIR, [Default PCI text file ID path])
+		case $host_os in
+		  gnu* | freebsd* | kfreebsd*-gnu | netbsd* | openbsd* | solaris* | dragonfly*)
+			xorg_bus_bsdpci="yes"
+			;;
+		esac
+		case $host_cpu in
+		  sparc*)
+			xorg_bus_sparc="yes"
+			;;
+		esac
 	fi
 	AC_MSG_RESULT([$PCI])
 
commit 80481267662c8687e73081237913fa561e7a6561
Author: Keith Packard <keithp at keithp.com>
Date:   Sat Nov 23 22:22:37 2013 -0800

    Bump release to 1.14.99.903 (1.15 RC3)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 2f4edee..6c4a609 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.14.99.902, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2013-11-14"
-RELEASE_NAME="English Breakfast"
+AC_INIT([xorg-server], 1.14.99.903, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2013-11-23"
+RELEASE_NAME="Apple Pie"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AC_USE_SYSTEM_EXTENSIONS
commit f1604002a32b7f098c2a16b4a8649c694af570c8
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Nov 18 22:36:17 2013 -0800

    miext: Ensure xshmfence is only called when driver supports it
    
    This provides a place for drivers to insert their own FD-based
    SyncFence implementations, and prevents applications from using DRI3
    SyncFence creation functions unless the driver has some support for
    them.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Tested-by: Fredrik Höglund <fredrik at kde.org>

diff --git a/miext/sync/Makefile.am b/miext/sync/Makefile.am
index ac13c52..34961d5 100644
--- a/miext/sync/Makefile.am
+++ b/miext/sync/Makefile.am
@@ -5,7 +5,7 @@ AM_CFLAGS = $(DIX_CFLAGS)
 AM_CPPFLAGS = 
 
 if XORG
-sdk_HEADERS = misync.h misyncstr.h misyncshm.h
+sdk_HEADERS = misync.h misyncstr.h misyncshm.h misyncfd.h
 endif
 
 XSHMFENCE_SRCS = misyncshm.c
@@ -13,6 +13,7 @@ XSHMFENCE_SRCS = misyncshm.c
 libsync_la_SOURCES =	\
 	misync.c	\
 	misync.h	\
+	misyncfd.c	\
 	misyncstr.h
 
 if XSHMFENCE
diff --git a/miext/sync/misync.h b/miext/sync/misync.h
index f63ec2b..dc78c5f 100644
--- a/miext/sync/misync.h
+++ b/miext/sync/misync.h
@@ -42,8 +42,8 @@ typedef struct _syncScreenFuncs {
     SyncScreenDestroyFenceFunc DestroyFence;
 } SyncScreenFuncsRec, *SyncScreenFuncsPtr;
 
-extern _X_EXPORT void
 
+extern _X_EXPORT void
 miSyncScreenCreateFence(ScreenPtr pScreen, SyncFence * pFence,
                         Bool initially_triggered);
 extern _X_EXPORT void
diff --git a/miext/sync/misyncfd.c b/miext/sync/misyncfd.c
new file mode 100644
index 0000000..93ff85f
--- /dev/null
+++ b/miext/sync/misyncfd.c
@@ -0,0 +1,99 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "scrnintstr.h"
+#include "misync.h"
+#include "misyncstr.h"
+#include "misyncfd.h"
+#include "pixmapstr.h"
+
+static DevPrivateKeyRec syncFdScreenPrivateKey;
+
+typedef struct _SyncFdScreenPrivate {
+    SyncFdScreenFuncsRec        funcs;
+} SyncFdScreenPrivateRec, *SyncFdScreenPrivatePtr;
+
+static inline SyncFdScreenPrivatePtr sync_fd_screen_priv(ScreenPtr pScreen)
+{
+    if (!dixPrivateKeyRegistered(&syncFdScreenPrivateKey))
+        return NULL;
+    return dixLookupPrivate(&pScreen->devPrivates, &syncFdScreenPrivateKey);
+}
+
+int
+miSyncInitFenceFromFD(DrawablePtr pDraw, SyncFence *pFence, int fd, BOOL initially_triggered)
+
+{
+    SyncFdScreenPrivatePtr      priv = sync_fd_screen_priv(pDraw->pScreen);
+
+    if (!priv)
+        return BadMatch;
+
+    return (*priv->funcs.CreateFenceFromFd)(pDraw->pScreen, pFence, fd, initially_triggered);
+}
+
+int
+miSyncFDFromFence(DrawablePtr pDraw, SyncFence *pFence)
+{
+    SyncFdScreenPrivatePtr      priv = sync_fd_screen_priv(pDraw->pScreen);
+
+    if (!priv)
+        return -1;
+
+    return (*priv->funcs.GetFenceFd)(pDraw->pScreen, pFence);
+}
+
+_X_EXPORT Bool miSyncFdScreenInit(ScreenPtr pScreen,
+                                  const SyncFdScreenFuncsRec *funcs)
+{
+    SyncFdScreenPrivatePtr     priv;
+
+    /* Check to see if we've already been initialized */
+    if (sync_fd_screen_priv(pScreen) != NULL)
+        return FALSE;
+
+    if (!miSyncSetup(pScreen))
+        return FALSE;
+    
+    if (!dixPrivateKeyRegistered(&syncFdScreenPrivateKey)) {
+        if (!dixRegisterPrivateKey(&syncFdScreenPrivateKey, PRIVATE_SCREEN, 0))
+            return FALSE;
+    }
+
+    priv = calloc(1, sizeof (SyncFdScreenPrivateRec));
+    if (!priv)
+        return FALSE;
+
+    /* Will require version checks when there are multiple versions
+     * of the funcs structure
+     */
+
+    priv->funcs = *funcs;
+
+    dixSetPrivate(&pScreen->devPrivates, &syncFdScreenPrivateKey, priv);
+    
+    return TRUE;
+}
diff --git a/miext/sync/misyncfd.h b/miext/sync/misyncfd.h
new file mode 100644
index 0000000..c1d05f9
--- /dev/null
+++ b/miext/sync/misyncfd.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _MISYNCFD_H_
+#define _MISYNCFD_H_
+
+typedef int (*SyncScreenCreateFenceFromFdFunc) (ScreenPtr screen,
+                                                SyncFence *fence,
+                                                int fd,
+                                                Bool initially_triggered);
+
+typedef int (*SyncScreenGetFenceFdFunc) (ScreenPtr screen,
+                                      SyncFence *fence);
+
+#define SYNC_FD_SCREEN_FUNCS_VERSION    1
+
+typedef struct _syncFdScreenFuncs {
+    int                                 version;
+    SyncScreenCreateFenceFromFdFunc     CreateFenceFromFd;
+    SyncScreenGetFenceFdFunc            GetFenceFd;
+} SyncFdScreenFuncsRec, *SyncFdScreenFuncsPtr;
+
+extern _X_EXPORT Bool miSyncFdScreenInit(ScreenPtr pScreen,
+                                         const SyncFdScreenFuncsRec *funcs);
+
+#endif /* _MISYNCFD_H_ */
diff --git a/miext/sync/misyncshm.c b/miext/sync/misyncshm.c
index ddd15ae..3f9350a 100644
--- a/miext/sync/misyncshm.c
+++ b/miext/sync/misyncshm.c
@@ -28,6 +28,7 @@
 #include "misync.h"
 #include "misyncstr.h"
 #include "misyncshm.h"
+#include "misyncfd.h"
 #include "pixmapstr.h"
 #include <sys/mman.h>
 #include <unistd.h>
@@ -118,13 +119,12 @@ miSyncShmScreenDestroyFence(ScreenPtr pScreen, SyncFence * pFence)
     miSyncScreenDestroyFence(pScreen, pFence);
 }
 
-int
-miSyncInitFenceFromFD(DrawablePtr pDraw, SyncFence *pFence, int fd, BOOL initially_triggered)
-
+static int
+miSyncShmCreateFenceFromFd(ScreenPtr pScreen, SyncFence *pFence, int fd, Bool initially_triggered)
 {
     SyncShmFencePrivatePtr      pPriv = SYNC_FENCE_PRIV(pFence);
 
-    miSyncInitFence(pDraw->pScreen, pFence, initially_triggered);
+    miSyncInitFence(pScreen, pFence, initially_triggered);
 
     pPriv->fence = xshmfence_map_shm(fd);
     if (pPriv->fence) {
@@ -136,8 +136,8 @@ miSyncInitFenceFromFD(DrawablePtr pDraw, SyncFence *pFence, int fd, BOOL initial
     return BadValue;
 }
 
-int
-miSyncFDFromFence(DrawablePtr pDraw, SyncFence *pFence)
+static int
+miSyncShmGetFenceFd(ScreenPtr pScreen, SyncFence *pFence)
 {
     SyncShmFencePrivatePtr      pPriv = SYNC_FENCE_PRIV(pFence);
 
@@ -154,11 +154,17 @@ miSyncFDFromFence(DrawablePtr pDraw, SyncFence *pFence)
     return pPriv->fd;
 }
 
+static const SyncFdScreenFuncsRec miSyncShmScreenFuncs = {
+    .version = SYNC_FD_SCREEN_FUNCS_VERSION,
+    .CreateFenceFromFd = miSyncShmCreateFenceFromFd,
+    .GetFenceFd = miSyncShmGetFenceFd
+};
+
 _X_EXPORT Bool miSyncShmScreenInit(ScreenPtr pScreen)
 {
     SyncScreenFuncsPtr  funcs;
 
-    if (!miSyncSetup(pScreen))
+    if (!miSyncFdScreenInit(pScreen, &miSyncShmScreenFuncs))
         return FALSE;
 
     if (!dixPrivateKeyRegistered(&syncShmFencePrivateKey)) {
@@ -171,6 +177,7 @@ _X_EXPORT Bool miSyncShmScreenInit(ScreenPtr pScreen)
 
     funcs->CreateFence = miSyncShmScreenCreateFence;
     funcs->DestroyFence = miSyncShmScreenDestroyFence;
+
     return TRUE;
 }
 
diff --git a/miext/sync/misyncshm.h b/miext/sync/misyncshm.h
index 4edbb50..23c001a 100644
--- a/miext/sync/misyncshm.h
+++ b/miext/sync/misyncshm.h
@@ -21,7 +21,7 @@
  */
 
 #ifndef _MISYNCSHM_H_
-#define _MISYNCSYM_H_
+#define _MISYNCSHM_H_
 
 extern _X_EXPORT Bool miSyncShmScreenInit(ScreenPtr pScreen);
 
commit 037566c57caff93fd7717f385d4b532b81f19c77
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Nov 18 22:33:27 2013 -0800

    Xext: Recover from miSyncInitFenceFromFD failure without crashing
    
    miSyncDestroyFence must not be called unless miSyncInitFence has been
    invoked, so if miSyncInitFenceFromFD fails, we must free the fence
    manually.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Tested-by: Fredrik Höglund <fredrik at kde.org>

diff --git a/Xext/sync.c b/Xext/sync.c
index dd18cde..2d58ea1 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -929,7 +929,7 @@ SyncCreateFenceFromFD(ClientPtr client, DrawablePtr pDraw, XID id, int fd, BOOL
 
     status = miSyncInitFenceFromFD(pDraw, pFence, fd, initially_triggered);
     if (status != Success) {
-        miSyncDestroyFence(pFence);
+        dixFreeObjectWithPrivates(pFence, PRIVATE_SYNC_FENCE);
         return status;
     }
 
commit e7000534a456fdf9cd4eaada3193846c8525f740
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat Oct 5 08:47:03 2013 +0100

    glx/glxdri2: Unwrap EnterVT/LeaveVT upon CloseScreen
    
    In a similar spirit to
    
    commit d75e8146c414bfd512ba5dbd4a83acb334bbe19b
    Author: Keith Packard <keithp at keithp.com>
    Date:   Mon Jul 12 16:01:34 2010 -0700
    
        Unwrap/rewrap EnterVT/LeaveVT completely, Fixes 28998
    
    we need to unwrap our pScrn->EnterVT/LeaveVT hooks around server
    regeneration or else we cause an infinite recursion on the next VT
    switch afterwards.
    
    Bugzilla: https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/1235516
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/glx/glxdri2.c b/glx/glxdri2.c
index 1d74c8f..fbbd1fd 100644
--- a/glx/glxdri2.c
+++ b/glx/glxdri2.c
@@ -371,6 +371,7 @@ __glXDRIscreenDestroy(__GLXscreen * baseScreen)
 {
     int i;
 
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(baseScreen->pScreen);
     __GLXDRIscreen *screen = (__GLXDRIscreen *) baseScreen;
 
     (*screen->core->destroyScreen) (screen->driScreen);
@@ -385,6 +386,9 @@ __glXDRIscreenDestroy(__GLXscreen * baseScreen)
         free(screen->driConfigs);
     }
 
+    pScrn->EnterVT = screen->enterVT;
+    pScrn->LeaveVT = screen->leaveVT;
+
     free(screen);
 }
 
commit 6d5883bd7e5b765f8f0548501b825d9e56840799
Author: Keith Packard <keithp at keithp.com>
Date:   Sat Nov 23 16:19:46 2013 -0800

    xnest: Ignore GetImage() error in xnestGetImage() (v3)
    
    (I found an amended version of this patch and applied the difference
    here - keithp)
    
    v3: Don't call Xsync before restoring error handler as any errors
        generated by XGetImage() should be processed when this call
        returns as suggested by Jamey Sharp <jamey at minilop.net>
    
    Signed-off-by: Egbert Eich <eich at freedesktop.org>
    Reviewed-by: Jamey Sharp <jamey at minilop.net>

diff --git a/hw/xnest/GCOps.c b/hw/xnest/GCOps.c
index 7b1956d..d00511d 100644
--- a/hw/xnest/GCOps.c
+++ b/hw/xnest/GCOps.c
@@ -115,7 +115,6 @@ xnestGetImage(DrawablePtr pDrawable, int x, int y, int w, int h,
 
     ximage = XGetImage(xnestDisplay, xnestDrawable(pDrawable),
                        x, y, w, h, planeMask, format);
-    XSync(xnestDisplay, False);
     XSetErrorHandler(old_handler);
 
     if (ximage) {
commit 6403cbb143c67872ca9c58e3116ae7942def0ae1
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Nov 19 22:13:54 2013 -0800

    present: When unflipping, copy to flip window rather than screen
    
    unflip happens after the clip lists have been updated, so instead of
    smashing the whole screen and drawing over other windows, just draw to
    the original flip window; it'll have the right clip list and so the
    copy will work just fine.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index 16dc381..f9eef6b 100644
--- a/present/present.c
+++ b/present/present.c
@@ -321,8 +321,8 @@ present_unflip(ScreenPtr screen)
 
     /* Update the screen pixmap with the current flip pixmap contents
      */
-    if (screen_priv->flip_pixmap) {
-        present_copy_region(&screen->GetScreenPixmap(screen)->drawable,
+    if (screen_priv->flip_pixmap && screen_priv->flip_window) {
+        present_copy_region(&screen_priv->flip_window->drawable,
                             screen_priv->flip_pixmap,
                             NULL, 0, 0);
     }
commit 8bdd2ccc776ded3f527596b5009ef25129aa3287
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Nov 11 18:03:42 2013 -0800

    present: Block for wait_fence in present_execute
    
    Pend presentation until wait_fence is also triggered by having the
    SyncFence trigger invoke present_execute once triggered.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index 67d7f6e..16dc381 100644
--- a/present/present.c
+++ b/present/present.c
@@ -453,6 +453,26 @@ present_check_flip_window (WindowPtr window)
 }
 
 /*
+ * Called when the wait fence is triggered; just gets the current msc/ust and
+ * calls present_execute again. That will re-check the fence and pend the
+ * request again if it's still not actually ready
+ */
+static void
+present_wait_fence_triggered(void *param)
+{
+    present_vblank_ptr  vblank = param;
+    WindowPtr           window = vblank->window;
+    uint64_t            ust = 0, crtc_msc = 0;
+
+    if (window) {
+        present_window_priv_ptr     window_priv = present_get_window_priv(window, TRUE);
+        if (window_priv)
+            (void) present_get_ust_msc(window, window_priv->crtc, &ust, &crtc_msc);
+    }
+    present_execute(vblank, ust, crtc_msc);
+}
+
+/*
  * Once the required MSC has been reached, execute the pending request.
  *
  * For requests to actually present something, either blt contents to
@@ -469,7 +489,10 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
     present_screen_priv_ptr     screen_priv = present_screen_priv(window->drawable.pScreen);
 
     if (vblank->wait_fence) {
-        /* XXX check fence, queue if not ready */
+        if (!present_fence_check_triggered(vblank->wait_fence)) {
+            present_fence_set_callback(vblank->wait_fence, present_wait_fence_triggered, vblank);
+            return;
+        }
     }
 
     xorg_list_del(&vblank->event_queue);
@@ -654,6 +677,12 @@ present_pixmap(WindowPtr window,
             target_msc--;
     }
 
+    if (wait_fence) {
+        vblank->wait_fence = present_fence_create(wait_fence);
+        if (!vblank->wait_fence)
+            goto no_mem;
+    }
+
     if (idle_fence) {
         vblank->idle_fence = present_fence_create(idle_fence);
         if (!vblank->idle_fence)
@@ -764,6 +793,9 @@ present_vblank_destroy(present_vblank_ptr vblank)
     if (vblank->update)
         RegionDestroy(vblank->update);
 
+    if (vblank->wait_fence)
+        present_fence_destroy(vblank->wait_fence);
+
     if (vblank->idle_fence)
         present_fence_destroy(vblank->idle_fence);
 
diff --git a/present/present_event.c b/present/present_event.c
index a30bc82..a8f7176 100644
--- a/present/present_event.c
+++ b/present/present_event.c
@@ -26,8 +26,6 @@
 
 #include "present_priv.h"
 
-#include "present_priv.h"
-
 RESTYPE present_event_type;
 
 static int
diff --git a/present/present_fence.c b/present/present_fence.c
index db5efca..e09657d 100644
--- a/present/present_fence.c
+++ b/present/present_fence.c
@@ -37,6 +37,8 @@
 struct present_fence {
     SyncTrigger         trigger;
     SyncFence           *fence;
+    void                (*callback)(void *param);
+    void                *param;
 };
 
 /*
@@ -45,12 +47,18 @@ struct present_fence {
 static Bool
 present_fence_sync_check_trigger(SyncTrigger *trigger, XSyncValue oldval)
 {
-    return FALSE;
+    struct present_fence        *present_fence = container_of(trigger, struct present_fence, trigger);
+
+    return present_fence->callback != NULL;
 }
 
 static void
 present_fence_sync_trigger_fired(SyncTrigger *trigger)
 {
+    struct present_fence        *present_fence = container_of(trigger, struct present_fence, trigger);
+
+    if (present_fence->callback)
+        (*present_fence->callback)(present_fence->param);
 }
 
 static void
@@ -101,6 +109,25 @@ present_fence_set_triggered(struct present_fence *present_fence)
             (*present_fence->fence->funcs.SetTriggered) (present_fence->fence);
 }
 
+Bool
+present_fence_check_triggered(struct present_fence *present_fence)
+{
+    if (!present_fence)
+        return TRUE;
+    if (!present_fence->fence)
+        return TRUE;
+    return (*present_fence->fence->funcs.CheckTriggered)(present_fence->fence);
+}
+
+void
+present_fence_set_callback(struct present_fence *present_fence,
+                           void (*callback) (void *param),
+                           void *param)
+{
+    present_fence->callback = callback;
+    present_fence->param = param;
+}
+
 XID
 present_fence_id(struct present_fence *present_fence)
 {
diff --git a/present/present_priv.h b/present/present_priv.h
index 40c88dd..500c7c2 100644
--- a/present/present_priv.h
+++ b/present/present_priv.h
@@ -249,6 +249,14 @@ present_fence_destroy(struct present_fence *present_fence);
 void
 present_fence_set_triggered(struct present_fence *present_fence);
 
+Bool
+present_fence_check_triggered(struct present_fence *present_fence);
+
+void
+present_fence_set_callback(struct present_fence *present_fence,
+                           void (*callback)(void *param),
+                           void *param);
+
 XID
 present_fence_id(struct present_fence *present_fence);
 
@@ -271,6 +279,13 @@ void
 present_destroy_notifies(present_notify_ptr notifies, int num_notifies);
 
 /*
+ * present_redirect.c
+ */
+
+WindowPtr
+present_redirect(ClientPtr client, WindowPtr target);
+
+/*
  * present_request.c
  */
 int
commit e5a188cb919edee2e3a03054276bce0db02f7b62
Author: Keith Packard <keithp at keithp.com>
Date:   Sat Nov 9 12:36:47 2013 -0800

    present: Signal destroyed flip window with vblank->window == NULL
    
    This eliminates dereferencing freed window pointers when there is a
    flip for that window in progress. The flip will complete, and then
    immediately get undone (as we can't stop an in-progress flip).
    
    Remove the vblank->window_destroyed field as we can signal this with
    vblank->window == NULL instead.
    
    Change check to vblank->window == NULL in:
    
    	present_flip_notify
    
    Add check for vblank->window == NULL in:
    	present_vblank_notify
    	present_execute
    
    present_flip_notify was also using vblank->window->drawable.pScreen,
    so stop doing that and use vblank->screen instead.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index bfafa92..67d7f6e 100644
--- a/present/present.c
+++ b/present/present.c
@@ -171,7 +171,8 @@ present_vblank_notify(present_vblank_ptr vblank, CARD8 kind, CARD8 mode, uint64_
 {
     int         n;
 
-    present_send_complete_notify(vblank->window, kind, mode, vblank->serial, ust, crtc_msc - vblank->msc_offset);
+    if (vblank->window)
+        present_send_complete_notify(vblank->window, kind, mode, vblank->serial, ust, crtc_msc - vblank->msc_offset);
     for (n = 0; n < vblank->num_notifies; n++) {
         WindowPtr   window = vblank->notifies[n].window;
         CARD32      serial = vblank->notifies[n].serial;
@@ -336,8 +337,7 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc);
 static void
 present_flip_notify(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
 {
-    WindowPtr                   window = vblank->window;
-    ScreenPtr                   screen = window->drawable.pScreen;
+    ScreenPtr                   screen = vblank->screen;
     present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
 
     DebugPresent(("\tn %p %8lld: %08lx -> %08lx\n", vblank, vblank->target_msc,
@@ -363,8 +363,7 @@ present_flip_notify(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
     if (vblank->abort_flip)
         present_unflip(screen);
 
-    if (!vblank->window_destroyed)
-        present_vblank_notify(vblank, PresentCompleteKindPixmap, PresentCompleteModeFlip, ust, crtc_msc);
+    present_vblank_notify(vblank, PresentCompleteKindPixmap, PresentCompleteModeFlip, ust, crtc_msc);
     present_vblank_destroy(vblank);
 }
 
@@ -474,7 +473,7 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
     }
 
     xorg_list_del(&vblank->event_queue);
-    if (vblank->pixmap) {
+    if (vblank->pixmap && vblank->window) {
 
         if (vblank->flip && screen_priv->flip_pending == NULL && !screen_priv->unflip_event_id) {
 
diff --git a/present/present_priv.h b/present/present_priv.h
index a92b62a..40c88dd 100644
--- a/present/present_priv.h
+++ b/present/present_priv.h
@@ -72,8 +72,6 @@ struct present_vblank {
     Bool                flip;
     Bool                sync_flip;
     Bool                abort_flip;
-
-    Bool                window_destroyed;
 };
 
 typedef struct present_screen_priv {
diff --git a/present/present_screen.c b/present/present_screen.c
index 50b2b2d..2702cd6 100644
--- a/present/present_screen.c
+++ b/present/present_screen.c
@@ -92,7 +92,7 @@ present_clear_window_flip(WindowPtr window)
 
     if (flip_pending && flip_pending->window == window) {
         assert (flip_pending->abort_flip);
-        flip_pending->window_destroyed = TRUE;
+        flip_pending->window = NULL;
     }
     if (screen_priv->flip_window == window)
         screen_priv->flip_window = NULL;
commit a5bcc4f7b9499caf8993f0a6ef96088553399ca3
Author: Keith Packard <keithp at keithp.com>
Date:   Sat Nov 9 12:33:02 2013 -0800

    present: Ignore event_id 0 from driver vblank notify
    
    We use event_id 0 to mean 'no such event'; if a driver sends us that
    event_id, make sure we don't accidentally match it.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index 228d43a..bfafa92 100644
--- a/present/present.c
+++ b/present/present.c
@@ -374,6 +374,8 @@ present_event_notify(uint64_t event_id, uint64_t ust, uint64_t msc)
     present_vblank_ptr  vblank, tmp;
     int                 s;
 
+    if (!event_id)
+        return;
     DebugPresent(("\te %lld ust %lld msc %lld\n", event_id, ust, msc));
     xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) {
         if (vblank->event_id == event_id) {
@@ -398,6 +400,7 @@ present_event_notify(uint64_t event_id, uint64_t ust, uint64_t msc)
             DebugPresent(("\tun %lld\n", event_id));
             screen_priv->unflip_event_id = 0;
             present_flip_idle(screen);
+            return;
         }
     }
 }
commit 4f3c37a1f17ffcfbbff71d217e1caad3d0148c90
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Nov 7 14:17:12 2013 -0800

    present: Round fake MSC computations intead of truncating
    
    If the timer fired too early, we'd sometimes mis-compute the MSC for
    fake vblanks. Rounding the computation to the nearest MSC fixes this nicely.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present_fake.c b/present/present_fake.c
index a677592..e550e98 100644
--- a/present/present_fake.c
+++ b/present/present_fake.c
@@ -42,7 +42,7 @@ present_fake_get_ust_msc(ScreenPtr screen, uint64_t *ust, uint64_t *msc)
     present_screen_priv_ptr screen_priv = present_screen_priv(screen);
 
     *ust = GetTimeInMicros();
-    *msc = *ust / screen_priv->fake_interval;
+    *msc = (*ust + screen_priv->fake_interval / 2) / screen_priv->fake_interval;
     return Success;
 }
 
commit da9997f89f14ab619f244d5b2e80a423b028c789
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Nov 19 08:07:09 2013 +1000

    configure: allow for --enable-libunwind and --disable-libunwind
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 1e6f813..2f4edee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -305,13 +305,6 @@ AC_CHECK_HEADER([execinfo.h],[
     ])]
 )
 
-PKG_CHECK_MODULES(LIBUNWIND, libunwind, [HAVE_LIBUNWIND=yes], [HAVE_LIBUNWIND=no])
-if test "x$HAVE_LIBUNWIND" = xyes; then
-	AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
-fi
-AM_CONDITIONAL(HAVE_LIBUNWIND, [test "x$HAVE_LIBUNWIND" = xyes])
-
-
 dnl ---------------------------------------------------------------------------
 dnl Bus options and CPU capabilities.  Replaces logic in
 dnl hw/xfree86/os-support/bus/Makefile.am, among others.
@@ -654,6 +647,7 @@ dnl kdrive options
 AC_ARG_ENABLE(kdrive-kbd,     AS_HELP_STRING([--enable-kdrive-kbd], [Build kbd driver for kdrive (default: auto)]), [KDRIVE_KBD=$enableval], [KDRIVE_KBD=auto])
 AC_ARG_ENABLE(kdrive-mouse,   AC_HELP_STRING([--enable-kdrive-mouse], [Build mouse driver for kdrive (default: auto)]), [KDRIVE_MOUSE=$enableval], [KDRIVE_MOUSE=auto])
 AC_ARG_ENABLE(kdrive-evdev,   AC_HELP_STRING([--enable-kdrive-evdev], [Build evdev driver for kdrive (default: auto)]), [KDRIVE_EVDEV=$enableval], [KDRIVE_EVDEV=auto])
+AC_ARG_ENABLE(libunwind,      AS_HELP_STRING([--enable-libunwind], [Use libunwind for backtracing (default: auto)]), [LIBUNWIND="$enableval"], [LIBUNWIND="auto"])
 
 
 dnl chown/chmod to be setuid root as part of build
@@ -1616,6 +1610,20 @@ AC_SUBST(SHA1_CFLAGS)
 PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
 PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
 
+PKG_CHECK_MODULES(LIBUNWIND, libunwind, [HAVE_LIBUNWIND=yes], [HAVE_LIBUNWIND=no])
+if test "x$LIBUNWIND" = "xauto"; then
+    LIBUNWIND="$HAVE_LIBUNWIND"
+fi
+
+if test "x$LIBUNWIND" = "xyes"; then
+    if test "x$HAVE_LIBUNWIND" != "xyes"; then
+        AC_MSG_ERROR([libunwind requested but not installed.])
+    fi
+    AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
+fi
+
+AM_CONDITIONAL(HAVE_LIBUNWIND, [test "x$LIBUNWIND" = xyes])
+
 # Autotools has some unfortunate issues with library handling.  In order to
 # get a server to rebuild when a dependency in the tree is changed, it must
 # be listed in SERVERNAME_DEPENDENCIES.  However, no system libraries may be
commit 29240e5cbf6e7f875b128fc7bfc4d56b2350835a
Merge: 0492deb 8ff7e32
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Nov 14 17:02:04 2013 +0900

    Merge remote-tracking branch 'whot/for-keith'

commit 0492deb8f8238b7782e5a706ec6219d88aa1091d
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 29 12:09:27 2013 -0400

    mieq: Bump default queue size to 512
    
    Based on some bugzilla scraping I did around November 2012.  Of xserver
    bugs in Red Hat bugzilla with an EQ size message in the log, the
    distribution looked like:
    
    String                      | Matches
    -------------------------------------
    Increasing EQ size to 512   | 460
    Increasing EQ size to 1024  | 52
    Increasing EQ size to 2048  | 6
    Increasing EQ size to 4096  | 0
    
    Most of the "512" ones appear to be mostly harmless, some relatively
    expensive path in either rendering or resource destruction simply taking
    too long due to external pressures like paging or CPU contention.  So
    let's raise the initial queue size, both to reduce the number of
    spurious abrt reports and to drop fewer events in all but the most
    pathological cases.
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Jasper St. Pierre <jstpierre at mecheye.net>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/mi/mieq.c b/mi/mieq.c
index d7d73de..4c07480 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -60,7 +60,7 @@ in this Software without prior written authorization from The Open Group.
 #endif
 
 /* Maximum size should be initial size multiplied by a power of 2 */
-#define QUEUE_INITIAL_SIZE                 256
+#define QUEUE_INITIAL_SIZE                 512
 #define QUEUE_RESERVED_SIZE                 64
 #define QUEUE_MAXIMUM_SIZE                4096
 #define QUEUE_DROP_BACKTRACE_FREQUENCY     100
commit d1440783a7367ff0d0c47d256bbca3b3cf8a5034
Author: Dave Airlie <airlied at redhat.com>
Date:   Tue Oct 29 12:09:26 2013 -0400

    xfree86: return NULL for compat output if no outputs.
    
    With outputless GPUs showing up we crash here if there are not outputs
    try and recover with a bit of grace.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Dave Airlie <airlied at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index 2a02c85..a441fd1 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -1863,6 +1863,9 @@ SetCompatOutput(xf86CrtcConfigPtr config)
     DisplayModePtr maxmode = NULL, testmode, mode;
     int o, compat = -1, count, mincount = 0;
 
+    if (config->num_output == 0)
+        return NULL;
+
     /* Look for one that's definitely connected */
     for (o = 0; o < config->num_output; o++) {
         test = config->output[o];
commit d7ee27e5e415778240919082c83a65226c6f17e6
Author: Dan Horák <dan at danny.cz>
Date:   Tue Oct 29 12:09:25 2013 -0400

    test: build the touch test only when building Xorg
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Dan Horák <dan at danny.cz>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/test/Makefile.am b/test/Makefile.am
index e59c412..2852bb3 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,11 +1,11 @@
 if ENABLE_UNIT_TESTS
 SUBDIRS= .
-noinst_PROGRAMS = list string touch
+noinst_PROGRAMS = list string
 if XORG
 # Tests that require at least some DDX functions in order to fully link
 # For now, requires xf86 ddx, could be adjusted to use another
 SUBDIRS += xi2
-noinst_PROGRAMS += xkb input xtest misc fixes xfree86 hashtabletest os signal-logging
+noinst_PROGRAMS += xkb input xtest misc fixes xfree86 hashtabletest os signal-logging touch
 endif
 check_LTLIBRARIES = libxservertest.la
 
commit 8ff7e32c3ef7b0c13c4ab9664f651e9782d35a85
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Nov 13 17:14:11 2013 +1000

    include: export key_is_down and friends
    
    VNC needs key_is_down to check if a key is processed as down before it
    simulates various key releases. Make it available, because I seriously can't
    be bothered thinking about how to rewrite VNC to not need that.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Acked-by: Keith Packard <keithp at keithp.com>

diff --git a/include/input.h b/include/input.h
index 350daba..2d5e531 100644
--- a/include/input.h
+++ b/include/input.h
@@ -244,12 +244,12 @@ typedef struct _InputAttributes {
 #define KEY_POSTED 2
 #define BUTTON_POSTED 2
 
-extern void set_key_down(DeviceIntPtr pDev, int key_code, int type);
-extern void set_key_up(DeviceIntPtr pDev, int key_code, int type);
-extern int key_is_down(DeviceIntPtr pDev, int key_code, int type);
-extern void set_button_down(DeviceIntPtr pDev, int button, int type);
-extern void set_button_up(DeviceIntPtr pDev, int button, int type);
-extern int button_is_down(DeviceIntPtr pDev, int button, int type);
+extern _X_EXPORT void set_key_down(DeviceIntPtr pDev, int key_code, int type);
+extern _X_EXPORT void set_key_up(DeviceIntPtr pDev, int key_code, int type);
+extern _X_EXPORT int key_is_down(DeviceIntPtr pDev, int key_code, int type);
+extern _X_EXPORT void set_button_down(DeviceIntPtr pDev, int button, int type);
+extern _X_EXPORT void set_button_up(DeviceIntPtr pDev, int button, int type);
+extern _X_EXPORT int button_is_down(DeviceIntPtr pDev, int button, int type);
 
 extern void InitCoreDevices(void);
 extern void InitXTestDevices(void);
commit 0ba7fc8472f1227fd1cd51bd58048f164b8ea1ab
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date:   Tue Nov 12 14:46:04 2013 -0800

    Stop including inline assembly .il file for Solaris Studio builds
    
    Since all the inb/outb/etc. use in the X server itself (except for
    xf86SlowBcopy) has been replaced by calls to libpciaccess, we no
    longer need to pass inline assembly files to replace the gcc inline
    assembly from hw/xfree86/common/compiler.h when building Xorg itself.
    
    The .il files are still generated and installed in the SDK for the
    benefit of drivers who may use them.
    
    Binary diff of before and after showed that xf86SlowBcopy was the
    only function changed across the Xorg binary and all modules built
    in the Xserver build, it just calls the outb() function now instead
    of having the outb instructions inlined, making it a slightly slower
    bcopy.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 4be8fcb..1e6f813 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1879,9 +1879,6 @@ if test "x$XORG" = xyes; then
 		if test "${OS_MINOR}" -lt 8 ; then
 			AC_MSG_ERROR([This release no longer supports Solaris versions older than Solaris 8.])
 		fi
-		if test "x$SUNCC" = "xyes"; then
-			solaris_asm_inline="yes"
-		fi
 		AC_CHECK_DECL([_LP64], [SOLARIS_64="yes"], [SOLARIS_64="no"])
 			
 		case $host_cpu in
@@ -1902,11 +1899,6 @@ if test "x$XORG" = xyes; then
 			xorg at lists.freedesktop.org.]) ;;
 		esac
 		AC_SUBST([SOLARIS_INOUT_ARCH])
-		if test x$solaris_asm_inline = xyes ; then
-			SOLARIS_ASM_CFLAGS='$(top_srcdir)/hw/xfree86/os-support/solaris/solaris-$(SOLARIS_INOUT_ARCH).il'
-			XORG_CFLAGS="${XORG_CFLAGS} "'$(SOLARIS_ASM_CFLAGS)'
-		fi
-		AC_SUBST([SOLARIS_ASM_CFLAGS])
 		;;
 	  gnu*)
 		XORG_OS_SUBDIR="hurd"
@@ -2012,7 +2004,6 @@ AM_CONDITIONAL([XORG_BUS_SPARC], [test "x$xorg_bus_sparc" = xyes])
 AM_CONDITIONAL([LINUX_ALPHA], [test "x$linux_alpha" = xyes])
 AM_CONDITIONAL([LNXACPI], [test "x$linux_acpi" = xyes])
 AM_CONDITIONAL([LNXAPM], [test "x$linux_apm" = xyes])
-AM_CONDITIONAL([SOLARIS_ASM_INLINE], [test "x$solaris_asm_inline" = xyes])
 AM_CONDITIONAL([SOLARIS_VT], [test "x$solaris_vt" = xyes])
 AM_CONDITIONAL([DGA], [test "x$DGA" = xyes])
 AM_CONDITIONAL([XF86VIDMODE], [test "x$XF86VIDMODE" = xyes])
diff --git a/exa/Makefile.am b/exa/Makefile.am
index c1f1e86..6a09966 100644
--- a/exa/Makefile.am
+++ b/exa/Makefile.am
@@ -1,9 +1,5 @@
 noinst_LTLIBRARIES = libexa.la
 
-# Override these since EXA doesn't need them and the needed files aren't
-# built (in hw/xfree86/os-support/solaris) until after EXA is built
-SOLARIS_ASM_CFLAGS=""
-
 if XORG
 sdk_HEADERS = exa.h
 endif
diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index 485386f..15670d0 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -80,17 +80,6 @@ BUILT_SOURCES = xorg.conf.example
 DISTCLEANFILES = xorg.conf.example
 EXTRA_DIST = xorgconf.cpp
 
-if SOLARIS_ASM_INLINE
-# Needs to be built before any files are compiled when using Sun compilers
-# so in*/out* inline definitions are properly processed.
-
-BUILT_SOURCES += os-support/solaris/solaris- at SOLARIS_INOUT_ARCH@.il
-
-os-support/solaris/solaris- at SOLARIS_INOUT_ARCH@.il:
-	cd os-support/solaris ; \
-	 $(MAKE) $(AM_MAKEFLAGS) solaris- at SOLARIS_INOUT_ARCH@.il
-endif
-
 # Without logdir, X will post an error on the terminal and will not start
 install-data-local:
 	$(AM_V_GEN)$(MKDIR_P) $(DESTDIR)$(logdir)
commit 550baf38f6096658f0bcf0ad647c4fedf93132f2
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Fri Oct 4 10:55:52 2013 +1000

    kdrive: fix cursor jumps on CursorOffScreen behavior
    
    This patch fixes cursor jumps when there is a grab on the Xephyr window and
    the pointer moves outside the window.
    
    So on two side-by-side 640x480 screens, a coordinate of 0/481
    triggers KdCursorOffscreen.
    
    If the delta between two screens is 0, they share the same offset for
    that dimension. When searching for the new screen, the loop always rules out
    the current screen. So we get to the second screen, trigger the conditions
    where dy <= 0 and decide that this new screen is the correct one. The result
    is that whenever KdCursorOffScreen is called, the pointer jumps to the other
    screen.
    
    Change to check for dy < 0 etc. so that the cursor stays on the same screen if
    there is no other screen at the target location.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index abda693..a9a9fa5 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -2030,25 +2030,25 @@ KdCursorOffScreen(ScreenPtr *ppScreen, int *x, int *y)
         dx = KdScreenOrigin(pNewScreen)->x - KdScreenOrigin(pScreen)->x;
         dy = KdScreenOrigin(pNewScreen)->y - KdScreenOrigin(pScreen)->y;
         if (*x < 0) {
-            if (dx <= 0 && -dx < best_x) {
+            if (dx < 0 && -dx < best_x) {
                 best_x = -dx;
                 n_best_x = n;
             }
         }
         else if (*x >= pScreen->width) {
-            if (dx >= 0 && dx < best_x) {
+            if (dx > 0 && dx < best_x) {
                 best_x = dx;
                 n_best_x = n;
             }
         }
         if (*y < 0) {
-            if (dy <= 0 && -dy < best_y) {
+            if (dy < 0 && -dy < best_y) {
                 best_y = -dy;
                 n_best_y = n;
             }
         }
         else if (*y >= pScreen->height) {
-            if (dy >= 0 && dy < best_y) {
+            if (dy > 0 && dy < best_y) {
                 best_y = dy;
                 n_best_y = n;
             }
commit a94d945065177d73f3ee8dc0b9147264ba281136
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Oct 29 14:24:41 2013 +1000

    kdrive: modify ephyr events to use POINTER_DESKTOP and scale them to that
    
    A multi-head Xephyr instance has the pointer stuck on one screen
    because of bad coordinate calculation. The coordinates passed to
    GetPointerEvents are per-screen, so the cursor gets stuck on the left-most
    screen by default.
    
    Adjust and mark the events as POINTER_DESKTOP, so the DIX
    can adjust them accordingly.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index 91e949d..ef4b321 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -959,7 +959,14 @@ ephyrProcessMouseMotion(xcb_generic_event_t *xev)
         }
         EPHYR_LOG("final (x,y):(%d,%d)\n", x, y);
 #endif
-        KdEnqueuePointerEvent(ephyrMouse, mouseState, x, y, 0);
+
+        /* convert coords into desktop-wide coordinates.
+         * fill_pointer_events will convert that back to
+         * per-screen coordinates where needed */
+        x += screen->pScreen->x;
+        y += screen->pScreen->y;
+
+        KdEnqueuePointerEvent(ephyrMouse, mouseState | KD_POINTER_DESKTOP, x, y, 0);
     }
 }
 
diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h
index d5d0799..296d611 100644
--- a/hw/kdrive/src/kdrive.h
+++ b/hw/kdrive/src/kdrive.h
@@ -506,6 +506,7 @@ KdEnqueueKeyboardEvent(KdKeyboardInfo * ki, unsigned char scan_code,
 #define KD_BUTTON_4	0x08
 #define KD_BUTTON_5	0x10
 #define KD_BUTTON_8	0x80
+#define KD_POINTER_DESKTOP 0x40000000
 #define KD_MOUSE_DELTA	0x80000000
 
 void
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index d845830..abda693 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -1895,6 +1895,8 @@ KdEnqueuePointerEvent(KdPointerInfo * pi, unsigned long flags, int rx, int ry,
     }
     else {
         dixflags = POINTER_ABSOLUTE;
+        if (flags & KD_POINTER_DESKTOP)
+            dixflags |= POINTER_DESKTOP;
         if (x != pi->dixdev->last.valuators[0] ||
             y != pi->dixdev->last.valuators[1])
             _KdEnqueuePointerEvent(pi, MotionNotify, x, y, z, 0, dixflags,
commit d66832a3b8a8675f1e5f3656dcb1bbe95598f0ea
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Nov 14 13:21:54 2013 +1000

    kdrive: handle WxH as valid geometry spec
    
    If a screen size was specified as WxH, the loop returned early and kdOrigin
    was never advanced. Thus, screen->origin was always 0 (or whatever was given
    at the -origin commandline flag).
    
    If a screen size was given with a bit depth (WxHxD), kdOrigin would always
    advance by the current screen, offsetting the next screen.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c
index f8949be..3829684 100644
--- a/hw/kdrive/src/kdrive.c
+++ b/hw/kdrive/src/kdrive.c
@@ -328,7 +328,8 @@ KdParseScreen(KdScreenInfo * screen, const char *arg)
             screen->height = pixels;
             screen->height_mm = mm;
         }
-        if (delim != 'x' && delim != '@' && delim != 'X' && delim != 'Y')
+        if (delim != 'x' && delim != '@' && delim != 'X' && delim != 'Y' &&
+            (delim != '\0' || i == 0))
             return;
     }
 
commit c8c5105c1d5c093675d7f571f158147f22f7572b
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Oct 29 14:33:56 2013 +1000

    ephyr: xcb_connect returns an error, not NULL
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index ee9ae45..3e01a47 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -304,8 +304,8 @@ hostx_init(void)
         | XCB_EVENT_MASK_STRUCTURE_NOTIFY;
 
     EPHYR_DBG("mark");
-
-    if ((HostX.conn = xcb_connect(NULL, &HostX.screen)) == NULL) {
+    HostX.conn = xcb_connect(NULL, &HostX.screen);
+    if (xcb_connection_has_error(HostX.conn)) {
         fprintf(stderr, "\nXephyr cannot open host display. Is DISPLAY set?\n");
         exit(1);
     }
commit 2aa67ccef6ad8f51deb94b66defc668ddb7d226c
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Nov 14 10:26:20 2013 +0900

    Update to version 1.14.99.902
    
    1.15 RC2
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index eb90b1a..4be8fcb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.14.99.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2013-10-31"
-RELEASE_NAME="Bom Retiro"
+AC_INIT([xorg-server], 1.14.99.902, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2013-11-14"
+RELEASE_NAME="English Breakfast"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AC_USE_SYSTEM_EXTENSIONS
commit 9309d2a009a6a3b6090fc377fc7a3eded1a34dc0
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Nov 13 07:01:45 2013 +0900

    xext: Fix shmint.h to not use headers outside of sdk_HEADERS
    
    shmint.h is part of sdk_HEADERS, and so can't use anything not
    included in sdk_HEADERS.
    
    busfault.h includes dix-config.h which is not. Leave the use of
    struct busfault in shmint.h and move the include of busfault.h to
    shm.c.
    
    protocol-versions.h is not part of sdk_HEADERS, so instead of using
    that, just use XTRANS_SEND_FDS to choose whether to expose the fd
    passing requests directly.
    
    Reported-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Tested-by: Knut Petersen <Knut_Petersen at t-online.de>
    Reviewed-by: Julien Cristau <jcristau at debian.org>
    
    v2: also avoid using protocol-versions.h

diff --git a/Xext/shm.c b/Xext/shm.c
index 46ce521..d014b91 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -55,6 +55,7 @@ in this Software without prior written authorization from The Open Group.
 #include <X11/Xfuncproto.h>
 #include <sys/mman.h>
 #include "protocol-versions.h"
+#include "busfault.h"
 
 /* Needed for Solaris cross-zone shared memory extension */
 #ifdef HAVE_SHMCTL64
diff --git a/Xext/shmint.h b/Xext/shmint.h
index 21d6cc4..9dadea7 100644
--- a/Xext/shmint.h
+++ b/Xext/shmint.h
@@ -56,16 +56,10 @@ typedef struct _ShmFuncs {
     void (*PutImage) (XSHM_PUT_IMAGE_ARGS);
 } ShmFuncs, *ShmFuncsPtr;
 
-#include <protocol-versions.h>
-
-#if SERVER_SHM_MAJOR_VERSION == 1 && SERVER_SHM_MINOR_VERSION >= 2
+#if XTRANS_SEND_FDS
 #define SHM_FD_PASSING  1
 #endif
 
-#ifdef SHM_FD_PASSING
-#include "busfault.h"
-#endif
-
 typedef struct _ShmDesc {
     struct _ShmDesc *next;
     int shmid;
diff --git a/include/Makefile.am b/include/Makefile.am
index 13d91e2..93d8616 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -2,7 +2,6 @@ if XORG
 sdk_HEADERS =		\
 	XIstubs.h	\
 	Xprintf.h	\
-	busfault.h	\
 	callback.h	\
 	client.h	\
 	closestr.h	\
@@ -69,6 +68,7 @@ endif
 AM_CFLAGS = $(DIX_CFLAGS)
 
 EXTRA_DIST = 	\
+	busfault.h	\
 	dix-config-apple-verbatim.h \
 	dixfontstubs.h eventconvert.h eventstr.h inpututils.h \
 	protocol-versions.h \
commit 4a251f5883b042cd902c192060a0be2b11148f2b
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Fri Nov 8 14:55:33 2013 -0800

    xfree86: Fix build without libpciaccess
    
    Regression fix from commit 04ab07ca19236d6c9a947e065fb69b0dd0d16639
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
    Reviewed-by: Connor Behan <connor.behan at gmail.com>

diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
index 329d0b3..d463e91 100644
--- a/hw/xfree86/common/xf86Bus.c
+++ b/hw/xfree86/common/xf86Bus.c
@@ -266,9 +266,12 @@ xf86IsEntityPrimary(int entityIndex)
 {
     EntityPtr pEnt = xf86Entities[entityIndex];
 
+#ifdef XSERVER_LIBPCIACCESS
     if (primaryBus.type == BUS_PLATFORM && pEnt->bus.type == BUS_PCI)
 	return MATCH_PCI_DEVICES(pEnt->bus.id.pci, primaryBus.id.plat->pdev);
-    else if (primaryBus.type != pEnt->bus.type)
+#endif
+
+    if (primaryBus.type != pEnt->bus.type)
         return FALSE;
 
     switch (pEnt->bus.type) {
commit 5b02d5b7aaabf1ba8dcbdfe4525b7995b4e79f92
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date:   Thu Nov 7 21:08:56 2013 -0800

    Enable XTRANS_SEND_FDS on Solaris too.
    
    Requires passing through the __EXTENSIONS__ and _XOPEN_SOURCE defines
    in order to expose the msg_control members in struct msghdr.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/configure.ac b/configure.ac
index ff3f4a9..eb90b1a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -31,6 +31,7 @@ RELEASE_DATE="2013-10-31"
 RELEASE_NAME="Bom Retiro"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
+AC_USE_SYSTEM_EXTENSIONS
 
 # Require xorg-macros minimum of 1.14 for XORG_COMPILER_BRAND in XORG_DEFAULT_OPTIONS
 m4_ifndef([XORG_MACROS_VERSION],
@@ -1096,7 +1097,7 @@ AC_ARG_ENABLE(xtrans-send-fds,	AS_HELP_STRING([--disable-xtrans-send-fds], [Use
 case "x$XTRANS_SEND_FDS" in
 xauto)
 	case "$host_os" in
-	linux*)
+	linux*|solaris*)
 		XTRANS_SEND_FDS=yes
 		;;
 	*)
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index 9bdbe53..d4fbe99 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -449,6 +449,14 @@
 #include "dix-config-apple-verbatim.h"
 #endif
 
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+/* Defined if needed to expose struct msghdr.msg_control */
+#undef _XOPEN_SOURCE
+
 /* Have support for X shared memory fence library (xshmfence) */
 #undef HAVE_XSHMFENCE
 
commit c4c154d18ef42dc550f2675a9ee88e07b1ca6bed
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date:   Thu Nov 7 21:05:33 2013 -0800

    Avoid conflicts with Solaris <sys/regset.h> defines that clash with our names
    
    When building on Solaris with _XOPEN_SOURCE set to a recent XPG release,
    <stdlib.h> and other core headers start including <sys/regset.h>, which
    has a bunch of unfortunately named macros such as "CS", "ES", etc. for
    x86 & x64 registers which clash with existing variable & struct member
    names in Xorg - so #undef these so they don't interfere with our use.
    
    (Yes, have filed a bug against the system headers for exposing these,
     but this solves the problem for building on existing releases.)
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/xfree86/x86emu/decode.c b/hw/xfree86/x86emu/decode.c
index 12f8fb8..08a07b1 100644
--- a/hw/xfree86/x86emu/decode.c
+++ b/hw/xfree86/x86emu/decode.c
@@ -38,6 +38,16 @@
 ****************************************************************************/
 
 #include <stdlib.h>
+
+#if defined(__sun) && defined(CS) /* avoid conflicts with Solaris sys/regset.h */
+# undef CS
+# undef DS
+# undef SS
+# undef ES
+# undef FS
+# undef GS
+#endif
+
 #include "x86emu/x86emui.h"
 
 /*----------------------------- Implementation ----------------------------*/
diff --git a/hw/xfree86/x86emu/x86emu/regs.h b/hw/xfree86/x86emu/x86emu/regs.h
index 6bd0611..2ecafa0 100644
--- a/hw/xfree86/x86emu/x86emu/regs.h
+++ b/hw/xfree86/x86emu/x86emu/regs.h
@@ -112,6 +112,15 @@ struct i386_special_regs {
  * CS, DS, ES, SS.
  */
 
+#if defined(__sun) && defined(CS) /* avoid conflicts with Solaris sys/regset.h */
+# undef CS
+# undef DS
+# undef SS
+# undef ES
+# undef FS
+# undef GS
+#endif
+
 struct i386_segment_regs {
     u16 CS, DS, SS, ES, FS, GS;
 };
diff --git a/hw/xfree86/x86emu/x86emu/x86emui.h b/hw/xfree86/x86emu/x86emu/x86emui.h
index f11dc10..5e20d97 100644
--- a/hw/xfree86/x86emu/x86emu/x86emui.h
+++ b/hw/xfree86/x86emu/x86emu/x86emui.h
@@ -73,7 +73,17 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#endif
+/* avoid conflicts with Solaris sys/regset.h */
+# if defined(__sun) && defined(CS)
+#  undef CS
+#  undef DS
+#  undef SS
+#  undef ES
+#  undef FS
+#  undef GS
+# endif
+#endif /* NO_SYS_HEADERS */
+
 /*--------------------------- Inline Functions ----------------------------*/
 
 #ifdef  __cplusplus
diff --git a/record/record.c b/record/record.c
index f3a26a7..2c70460 100644
--- a/record/record.c
+++ b/record/record.c
@@ -1393,6 +1393,10 @@ typedef struct {
     short first, last;          /* if for extension, major opcode interval */
 } SetInfoRec, *SetInfoPtr;
 
+#if defined(ERR) && defined(__sun)
+#undef ERR /* Avoid conflict with Solaris <sys/regset.h> */
+#endif
+
 /* These constant are used to index into an array of SetInfoRec. */
 enum { REQ,                     /* set info for requests */
     REP,                        /* set info for replies */
commit d7f9be0f8541368bf1a095ad1fbe7f38be6d3d15
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Nov 11 15:48:41 2013 -0800

    Proper spelling of MAP_ANONYMOUS is MAP_ANON.
    
    The former doesn't exist on BSD and the latter is available everywhere
    AFAIK (checked Solaris and Linux).
    
    You also might want to wrap that line ;).
    
    Reported-by: Mark Kettenis <mark.kettenis at xs4all.nl>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/os/busfault.c b/os/busfault.c
index 78e7693..43bb6ea 100644
--- a/os/busfault.c
+++ b/os/busfault.c
@@ -121,7 +121,8 @@ busfault_sigaction(int sig, siginfo_t *info, void *param)
      * /dev/zero over that area and keep going
      */
 
-    new_addr = mmap(busfault->addr, busfault->size, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE|MAP_FIXED, -1, 0);
+    new_addr = mmap(busfault->addr, busfault->size, PROT_READ|PROT_WRITE,
+                    MAP_ANON|MAP_PRIVATE|MAP_FIXED, -1, 0);
 
     if (new_addr == MAP_FAILED)
         goto panic;
commit fc84166e65c35ad75f566b135dcfc305ad5a2fde
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Nov 7 15:18:28 2013 -0800

    Get rid of the rest of the FD passing code when XTRANS_SEND_FDS isn't set
    
    req_fds and SetReqFds in include/dixstruct.h
    
    ReadFdFromClient, WriteFdToClient and the FD flushing in os/io.c
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/include/dixstruct.h b/include/dixstruct.h
index 456e633..6f5667f 100644
--- a/include/dixstruct.h
+++ b/include/dixstruct.h
@@ -110,15 +110,19 @@ typedef struct _Client {
 
     DeviceIntPtr clientPtr;
     ClientIdPtr clientIds;
+#if XTRANS_SEND_FDS
     int req_fds;
+#endif
 } ClientRec;
 
+#if XTRANS_SEND_FDS
 static inline void
 SetReqFds(ClientPtr client, int req_fds) {
     if (client->req_fds != 0 && req_fds != client->req_fds)
         LogMessage(X_ERROR, "Mismatching number of request fds %d != %d\n", req_fds, client->req_fds);
     client->req_fds = req_fds;
 }
+#endif
 
 /*
  * Scheduling interface
diff --git a/include/os.h b/include/os.h
index 11b2198..450e1a8 100644
--- a/include/os.h
+++ b/include/os.h
@@ -98,9 +98,11 @@ extern _X_EXPORT int WaitForSomething(int *     /*pClientsReady */
 
 extern _X_EXPORT int ReadRequestFromClient(ClientPtr /*client */ );
 
+#if XTRANS_SEND_FDS
 extern _X_EXPORT int ReadFdFromClient(ClientPtr client);
 
 extern _X_EXPORT int WriteFdToClient(ClientPtr client, int fd, Bool do_close);
+#endif
 
 extern _X_EXPORT Bool InsertFakeRequest(ClientPtr /*client */ ,
                                         char * /*data */ ,
diff --git a/os/io.c b/os/io.c
index a20faa5..922a8eb 100644
--- a/os/io.c
+++ b/os/io.c
@@ -259,12 +259,14 @@ ReadRequestFromClient(ClientPtr client)
         oc->input = oci;
     }
 
+#if XTRANS_SEND_FDS
     /* Discard any unused file descriptors */
     while (client->req_fds > 0) {
         int req_fd = ReadFdFromClient(client);
         if (req_fd >= 0)
             close(req_fd);
     }
+#endif
     /* advance to start of next request */
 
     oci->bufptr += oci->lenLastReq;
@@ -491,6 +493,7 @@ ReadRequestFromClient(ClientPtr client)
     return needed;
 }
 
+#if XTRANS_SEND_FDS
 int
 ReadFdFromClient(ClientPtr client)
 {
@@ -513,6 +516,7 @@ WriteFdToClient(ClientPtr client, int fd, Bool do_close)
 
     return _XSERVTransSendFd(oc->trans_conn, fd, do_close);
 }
+#endif
 
 /*****************************************************************
  * InsertFakeRequest
commit a239e6faf3fce848ac0d10c48f8e817db68a493c
Merge: 43e5a43 f70a8bf
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Nov 11 15:26:12 2013 -0800

    Merge remote-tracking branch 'jeremyhu/master'

commit 43e5a43fa8994e50cf01dd954118f4ef2c4e7933
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Nov 7 12:01:41 2013 -0500

    present: Don't try to initialize when building without present support
    
    There's a --disable-present, so it'd be nice if it worked.
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Jasper St. Pierre <jstpierre at mecheye.net>
    Reviewed-by: Mark Kettenis <kettenis at openbsd.org>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/mi/miinitext.c b/mi/miinitext.c
index 6366182..67511b8 100644
--- a/mi/miinitext.c
+++ b/mi/miinitext.c
@@ -287,7 +287,9 @@ static ExtensionModule staticExtensions[] = {
 #ifdef DPMSExtension
     {DPMSExtensionInit, DPMSExtensionName, &noDPMSExtension},
 #endif
+#ifdef PRESENT
     {present_extension_init, PRESENT_NAME, NULL},
+#endif
 #ifdef DRI3
     {dri3_extension_init, DRI3_NAME, NULL},
 #endif
commit 0822a23e048b12c98c654e8b6af711c5f2c97141
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Nov 7 03:19:42 2013 -0800

    present: Change debug output a bit to help diagnose missing vblank signals
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index fab105d..228d43a 100644
--- a/present/present.c
+++ b/present/present.c
@@ -374,6 +374,7 @@ present_event_notify(uint64_t event_id, uint64_t ust, uint64_t msc)
     present_vblank_ptr  vblank, tmp;
     int                 s;
 
+    DebugPresent(("\te %lld ust %lld msc %lld\n", event_id, ust, msc));
     xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) {
         if (vblank->event_id == event_id) {
             xorg_list_del(&vblank->event_queue);
@@ -658,8 +659,10 @@ present_pixmap(WindowPtr window,
     }
 
     if (pixmap)
-        DebugPresent(("q %p %8lld: %08lx -> %08lx (crtc %d)\n",
-                      vblank, target_msc, vblank->pixmap->drawable.id, vblank->window->drawable.id, target_crtc ? 1 : 0));
+        DebugPresent(("q %lld %p %8lld: %08lx -> %08lx (crtc %p)\n",
+                      vblank->event_id, vblank, target_msc,
+                      vblank->pixmap->drawable.id, vblank->window->drawable.id,
+                      target_crtc));
 
     xorg_list_add(&vblank->event_queue, &present_exec_queue);
     if (target_msc >= crtc_msc) {
commit 20bb49ae9ba11d3dccfba191483cd682d9c9d96c
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Nov 6 23:56:26 2013 -0800

    Present: Check for window/fence destroyed when idling pixmaps
    
    A client destroying objects in the middle of an unflip can end up
    having the screen flip window or fence set to NULL in the unflip
    notify path. Check for these and don't try to use those objects.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/present/present.c b/present/present.c
index 4c97ce4..fab105d 100644
--- a/present/present.c
+++ b/present/present.c
@@ -184,8 +184,10 @@ present_vblank_notify(present_vblank_ptr vblank, CARD8 kind, CARD8 mode, uint64_
 static void
 present_pixmap_idle(PixmapPtr pixmap, WindowPtr window, CARD32 serial, struct present_fence *present_fence)
 {
-    present_fence_set_triggered(present_fence);
-    present_send_idle_notify(window, serial, pixmap, present_fence);
+    if (present_fence)
+        present_fence_set_triggered(present_fence);
+    if (window)
+        present_send_idle_notify(window, serial, pixmap, present_fence);
 }
 
 RRCrtcPtr
@@ -297,7 +299,8 @@ present_flip_idle(ScreenPtr screen)
     if (screen_priv->flip_pixmap) {
         present_pixmap_idle(screen_priv->flip_pixmap, screen_priv->flip_window,
                             screen_priv->flip_serial, screen_priv->flip_idle_fence);
-        present_fence_destroy(screen_priv->flip_idle_fence);
+        if (screen_priv->flip_idle_fence)
+            present_fence_destroy(screen_priv->flip_idle_fence);
         dixDestroyPixmap(screen_priv->flip_pixmap, screen_priv->flip_pixmap->drawable.id);
         screen_priv->flip_crtc = NULL;
         screen_priv->flip_window = NULL;
commit 41da295eb50fa08eaacd0ecde99f43a716fcb41a
Author: Keith Packard <keithp at keithp.com>
Date:   Sun Nov 3 13:12:40 2013 -0800

    Trap SIGBUS to handle truncated shared memory segments
    
    If a client passes a section of memory via file descriptor and then
    subsequently truncates that file, the underlying pages will be freed
    and the addresses invalidated. Subsequent accesses to the page will
    fail with a SIGBUS error.
    
    Trap that SIGBUS, figure out which segment was causing the error and
    then allocate new pages to fill in for that region. Mark the offending
    shared segment as invalid and free the resource ID so that the client
    will be able to tell when subsequently attempting to use the segment.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    
    v2: Use MAP_FIXED to simplify the recovery logic (Mark Kettenis)
    v3: Also catch errors in ShmCreateSegment
    
    Conflicts:
    	include/dix-config.h.in
    	include/xorg-config.h.in

diff --git a/Xext/shm.c b/Xext/shm.c
index 109a381..46ce521 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -438,9 +438,11 @@ ShmDetachSegment(pointer value, /* must conform to DeleteType */
     if (--shmdesc->refcnt)
         return TRUE;
 #if SHM_FD_PASSING
-    if (shmdesc->is_fd)
+    if (shmdesc->is_fd) {
+        if (shmdesc->busfault)
+            busfault_unregister(shmdesc->busfault);
         munmap(shmdesc->addr, shmdesc->size);
-    else
+    } else
 #endif
         shmdt(shmdesc->addr);
     for (prev = &Shmsegs; *prev != shmdesc; prev = &(*prev)->next);
@@ -1099,6 +1101,19 @@ ProcShmCreatePixmap(ClientPtr client)
 }
 
 #ifdef SHM_FD_PASSING
+
+static void
+ShmBusfaultNotify(void *context)
+{
+    ShmDescPtr shmdesc = context;
+
+    ErrorF("shared memory 0x%x truncated by client\n",
+           (unsigned int) shmdesc->resource);
+    busfault_unregister(shmdesc->busfault);
+    shmdesc->busfault = NULL;
+    FreeResource (shmdesc->resource, RT_NONE);
+}
+
 static int
 ProcShmAttachFd(ClientPtr client)
 {
@@ -1143,6 +1158,15 @@ ProcShmAttachFd(ClientPtr client)
     shmdesc->refcnt = 1;
     shmdesc->writable = !stuff->readOnly;
     shmdesc->size = statb.st_size;
+    shmdesc->resource = stuff->shmseg;
+
+    shmdesc->busfault = busfault_register_mmap(shmdesc->addr, shmdesc->size, ShmBusfaultNotify, shmdesc);
+    if (!shmdesc->busfault) {
+        munmap(shmdesc->addr, shmdesc->size);
+        free(shmdesc);
+        return BadAlloc;
+    }
+
     shmdesc->next = Shmsegs;
     Shmsegs = shmdesc;
 
@@ -1198,6 +1222,15 @@ ProcShmCreateSegment(ClientPtr client)
     shmdesc->refcnt = 1;
     shmdesc->writable = !stuff->readOnly;
     shmdesc->size = stuff->size;
+
+    shmdesc->busfault = busfault_register_mmap(shmdesc->addr, shmdesc->size, ShmBusfaultNotify, shmdesc);
+    if (!shmdesc->busfault) {
+        close(fd);
+        munmap(shmdesc->addr, shmdesc->size);
+        free(shmdesc);
+        return BadAlloc;
+    }
+
     shmdesc->next = Shmsegs;
     Shmsegs = shmdesc;
 
diff --git a/Xext/shmint.h b/Xext/shmint.h
index 7b3ea9b..21d6cc4 100644
--- a/Xext/shmint.h
+++ b/Xext/shmint.h
@@ -62,6 +62,10 @@ typedef struct _ShmFuncs {
 #define SHM_FD_PASSING  1
 #endif
 
+#ifdef SHM_FD_PASSING
+#include "busfault.h"
+#endif
+
 typedef struct _ShmDesc {
     struct _ShmDesc *next;
     int shmid;
@@ -71,6 +75,7 @@ typedef struct _ShmDesc {
     unsigned long size;
 #ifdef SHM_FD_PASSING
     Bool is_fd;
+    struct busfault *busfault;
     XID resource;
 #endif
 } ShmDescRec, *ShmDescPtr;
diff --git a/configure.ac b/configure.ac
index 04de2cd..01f2a2e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1171,6 +1171,25 @@ case "$DRI3,$HAVE_DRI3PROTO" in
 		;;
 esac
 
+AC_CHECK_FUNCS([sigaction])
+
+BUSFAULT=no
+
+case x"$ac_cv_func_sigaction" in
+	xyes)
+		AC_DEFINE(HAVE_SIGACTION, 1, [Have sigaction function])
+		BUSFAULT=yes
+		;;
+esac
+
+case x"$BUSFAULT" in
+	xyes)
+		AC_DEFINE(BUSFAULT, 1, [Include busfault OS API])
+		;;
+esac
+
+AM_CONDITIONAL(BUSFAULT, test x"$BUSFAULT" = xyes)
+
 PKG_CHECK_MODULES([XSHMFENCE], $XSHMFENCE,
 		  [HAVE_XSHMFENCE=yes], [HAVE_XSHMFENCE=no])
 
diff --git a/include/Makefile.am b/include/Makefile.am
index 5cdea1d..13d91e2 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -2,6 +2,7 @@ if XORG
 sdk_HEADERS =		\
 	XIstubs.h	\
 	Xprintf.h	\
+	busfault.h	\
 	callback.h	\
 	client.h	\
 	closestr.h	\
diff --git a/include/busfault.h b/include/busfault.h
new file mode 100644
index 0000000..3b66881
--- /dev/null
+++ b/include/busfault.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _BUSFAULT_H_
+#define _BUSFAULT_H_
+
+#include <dix-config.h>
+
+#ifdef BUSFAULT
+
+#include <sys/types.h>
+
+typedef void (*busfault_notify_ptr) (void *context);
+
+struct busfault *
+busfault_register_mmap(void *addr, size_t size, busfault_notify_ptr notify, void *context);
+
+void
+busfault_unregister(struct busfault *busfault);
+
+void
+busfault_check(void);
+
+Bool
+busfault_init(void);
+
+#endif
+
+#endif /* _BUSFAULT_H_ */
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index e4eea8d..9bdbe53 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -455,4 +455,7 @@
 /* Use XTrans FD passing support */
 #undef XTRANS_SEND_FDS
 
+/* Wrap SIGBUS to catch MIT-SHM faults */
+#undef BUSFAULT
+
 #endif /* _DIX_CONFIG_H_ */
diff --git a/os/Makefile.am b/os/Makefile.am
index 364b6da..a1bbb4d 100644
--- a/os/Makefile.am
+++ b/os/Makefile.am
@@ -5,6 +5,7 @@ AM_CFLAGS = $(DIX_CFLAGS) $(SHA1_CFLAGS)
 SECURERPC_SRCS = rpcauth.c
 XDMCP_SRCS = xdmcp.c
 XORG_SRCS = log.c
+BUSFAULT_SRCS = busfault.c
 
 libos_la_SOURCES = 	\
 	WaitFor.c	\
@@ -39,6 +40,10 @@ AM_CFLAGS += $(LIBUNWIND_CFLAGS)
 libos_la_LIBADD += $(LIBUNWIND_LIBS)
 endif
 
+if BUSFAULT
+libos_la_SOURCES += $(BUSFAULT_SRCS)
+endif
+
 EXTRA_DIST = $(SECURERPC_SRCS) $(XDMCP_SRCS)
 
 if SPECIAL_DTRACE_OBJECTS
diff --git a/os/WaitFor.c b/os/WaitFor.c
index c5f4cd7..39fedd9 100644
--- a/os/WaitFor.c
+++ b/os/WaitFor.c
@@ -72,6 +72,7 @@ SOFTWARE.
 #ifdef DPMSExtension
 #include "dpmsproc.h"
 #endif
+#include "busfault.h"
 
 #ifdef WIN32
 /* Error codes from windows sockets differ from fileio error codes  */
@@ -162,6 +163,10 @@ WaitForSomething(int *pClientsReady)
         SmartScheduleStopTimer();
     nready = 0;
 
+#ifdef BUSFAULT
+    busfault_check();
+#endif
+
     /* We need a while loop here to handle 
        crashed connections and the screen saver timeout */
     while (1) {
diff --git a/os/busfault.c b/os/busfault.c
new file mode 100644
index 0000000..78e7693
--- /dev/null
+++ b/os/busfault.c
@@ -0,0 +1,149 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <X11/Xos.h>
+#include <X11/Xdefs.h>
+#include "misc.h"
+#include <busfault.h>
+#include <list.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <sys/mman.h>
+#include <signal.h>
+
+struct busfault {
+    struct xorg_list    list;
+
+    void                *addr;
+    size_t              size;
+
+    Bool                valid;
+
+    busfault_notify_ptr notify;
+    void                *context;
+};
+
+static Bool             busfaulted;        
+static struct xorg_list busfaults;
+
+struct busfault *
+busfault_register_mmap(void *addr, size_t size, busfault_notify_ptr notify, void *context)
+{
+    struct busfault     *busfault;
+
+    busfault = calloc(1, sizeof (struct busfault));
+    if (!busfault)
+        return NULL;
+
+    busfault->addr = addr;
+    busfault->size = size;
+    busfault->notify = notify;
+    busfault->context = context;
+    busfault->valid = TRUE;
+
+    xorg_list_add(&busfault->list, &busfaults);
+    return busfault;
+}
+
+void
+busfault_unregister(struct busfault *busfault)
+{
+    xorg_list_del(&busfault->list);
+    free(busfault);
+}
+
+void
+busfault_check(void)
+{
+    struct busfault     *busfault, *tmp;
+
+    if (!busfaulted)
+        return;
+
+    busfaulted = FALSE;
+
+    xorg_list_for_each_entry_safe(busfault, tmp, &busfaults, list) {
+        if (!busfault->valid)
+            (*busfault->notify)(busfault->context);
+    }
+}
+
+static void (*previous_busfault_sigaction)(int sig, siginfo_t *info, void *param);
+
+static void
+busfault_sigaction(int sig, siginfo_t *info, void *param)
+{
+    void                *fault = info->si_addr;
+    struct busfault     *busfault = NULL;
+    void                *new_addr;
+
+    /* Locate the faulting address in our list of shared segments
+     */
+    xorg_list_for_each_entry(busfault, &busfaults, list) {
+        if ((char *) busfault->addr <= (char *) fault && (char *) fault < (char *) busfault->addr + busfault->size) {
+            break;
+        }
+    }
+    if (!busfault)
+        goto panic;
+
+    if (!busfault->valid)
+        goto panic;
+
+    busfault->valid = FALSE;
+    busfaulted = TRUE;
+
+    /* The client truncated the file; unmap the shared file, map
+     * /dev/zero over that area and keep going
+     */
+
+    new_addr = mmap(busfault->addr, busfault->size, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE|MAP_FIXED, -1, 0);
+
+    if (new_addr == MAP_FAILED)
+        goto panic;
+
+    return;
+panic:
+    if (previous_busfault_sigaction)
+        (*previous_busfault_sigaction)(sig, info, param);
+    else
+        FatalError("bus error");
+}
+
+Bool
+busfault_init(void)
+{
+    struct sigaction    act, old_act;
+
+    act.sa_sigaction = busfault_sigaction;
+    act.sa_flags = SA_SIGINFO;
+    if (sigaction(SIGBUS, &act, &old_act) < 0)
+        return FALSE;
+    previous_busfault_sigaction = old_act.sa_sigaction;
+    xorg_list_init(&busfaults);
+    return TRUE;
+}
diff --git a/os/osinit.c b/os/osinit.c
index 6c66f9c..60d1069 100644
--- a/os/osinit.c
+++ b/os/osinit.c
@@ -149,6 +149,8 @@ OsSigHandler(int signo)
 }
 #endif /* !WIN32 || __CYGWIN__ */
 
+#include "busfault.h"
+
 void
 OsInit(void)
 {
@@ -185,6 +187,9 @@ OsInit(void)
             }
         }
 #endif /* !WIN32 || __CYGWIN__ */
+#ifdef BUSFAULT
+        busfault_init();
+#endif
 
 #ifdef HAVE_BACKTRACE
         /*
commit 719e880d7698d92f9b854b217ef9680aaa446f2e
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Nov 6 23:22:51 2013 -0800

    Require libXtrans version 1.3.2
    
    This has the FD passing support included
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/configure.ac b/configure.ac
index 96ceb4c..04de2cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -806,7 +806,7 @@ FIXESPROTO="fixesproto >= 5.0"
 DAMAGEPROTO="damageproto >= 1.1"
 XCMISCPROTO="xcmiscproto >= 1.2.0"
 BIGREQSPROTO="bigreqsproto >= 1.1.0"
-XTRANS="xtrans >= 1.2.2"
+XTRANS="xtrans >= 1.3.2"
 PRESENTPROTO="presentproto >= 1.0"
 
 dnl List of libraries that require a specific version
commit bee2ec54049377e0033d49abff20d7bd069c62aa
Author: Keith Packard <keithp at keithp.com>
Date:   Sun Nov 3 10:08:15 2013 -0800

    Xext: Enable MIT-SHM FD-passing request definitions only when possible
    
    Check to see if xtrans FD passing is available and use that to
    advertise the appropriate version of the SHM extension
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>

diff --git a/Xext/shm.c b/Xext/shm.c
index 1a70260..109a381 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -384,7 +384,7 @@ ProcShmAttach(ClientPtr client)
         return BadValue;
     }
     for (shmdesc = Shmsegs; shmdesc; shmdesc = shmdesc->next) {
-        if (!shmdesc->is_fd && shmdesc->shmid == stuff->shmid)
+        if (!SHMDESC_IS_FD(shmdesc) && shmdesc->shmid == stuff->shmid)
             break;
     }
     if (shmdesc) {
@@ -396,7 +396,9 @@ ProcShmAttach(ClientPtr client)
         shmdesc = malloc(sizeof(ShmDescRec));
         if (!shmdesc)
             return BadAlloc;
+#ifdef SHM_FD_PASSING
         shmdesc->is_fd = FALSE;
+#endif
         shmdesc->addr = shmat(stuff->shmid, 0,
                               stuff->readOnly ? SHM_RDONLY : 0);
         if ((shmdesc->addr == ((char *) -1)) || SHMSTAT(stuff->shmid, &buf)) {
@@ -435,9 +437,11 @@ ShmDetachSegment(pointer value, /* must conform to DeleteType */
 
     if (--shmdesc->refcnt)
         return TRUE;
+#if SHM_FD_PASSING
     if (shmdesc->is_fd)
         munmap(shmdesc->addr, shmdesc->size);
     else
+#endif
         shmdt(shmdesc->addr);
     for (prev = &Shmsegs; *prev != shmdesc; prev = &(*prev)->next);
     *prev = shmdesc->next;
@@ -1094,6 +1098,7 @@ ProcShmCreatePixmap(ClientPtr client)
     return BadAlloc;
 }
 
+#ifdef SHM_FD_PASSING
 static int
 ProcShmAttachFd(ClientPtr client)
 {
@@ -1209,6 +1214,7 @@ ProcShmCreateSegment(ClientPtr client)
     WriteToClient(client, sizeof (xShmCreateSegmentReply), &rep);
     return Success;
 }
+#endif /* SHM_FD_PASSING */
 
 static int
 ProcShmDispatch(ClientPtr client)
@@ -1239,10 +1245,12 @@ ProcShmDispatch(ClientPtr client)
             return ProcPanoramiXShmCreatePixmap(client);
 #endif
         return ProcShmCreatePixmap(client);
+#ifdef SHM_FD_PASSING
     case X_ShmAttachFd:
         return ProcShmAttachFd(client);
     case X_ShmCreateSegment:
         return ProcShmCreateSegment(client);
+#endif
     default:
         return BadRequest;
     }
@@ -1343,6 +1351,7 @@ SProcShmCreatePixmap(ClientPtr client)
     return ProcShmCreatePixmap(client);
 }
 
+#ifdef SHM_FD_PASSING
 static int
 SProcShmAttachFd(ClientPtr client)
 {
@@ -1364,6 +1373,7 @@ SProcShmCreateSegment(ClientPtr client)
     swapl(&stuff->size);
     return ProcShmCreateSegment(client);
 }
+#endif  /* SHM_FD_PASSING */
 
 static int
 SProcShmDispatch(ClientPtr client)
@@ -1382,10 +1392,12 @@ SProcShmDispatch(ClientPtr client)
         return SProcShmGetImage(client);
     case X_ShmCreatePixmap:
         return SProcShmCreatePixmap(client);
+#ifdef SHM_FD_PASSING
     case X_ShmAttachFd:
         return SProcShmAttachFd(client);
     case X_ShmCreateSegment:
         return SProcShmCreateSegment(client);
+#endif
     default:
         return BadRequest;
     }
diff --git a/Xext/shmint.h b/Xext/shmint.h
index db35fbb..7b3ea9b 100644
--- a/Xext/shmint.h
+++ b/Xext/shmint.h
@@ -56,16 +56,31 @@ typedef struct _ShmFuncs {
     void (*PutImage) (XSHM_PUT_IMAGE_ARGS);
 } ShmFuncs, *ShmFuncsPtr;
 
+#include <protocol-versions.h>
+
+#if SERVER_SHM_MAJOR_VERSION == 1 && SERVER_SHM_MINOR_VERSION >= 2
+#define SHM_FD_PASSING  1
+#endif
+
 typedef struct _ShmDesc {
     struct _ShmDesc *next;
     int shmid;
     int refcnt;
     char *addr;
-    Bool is_fd;
     Bool writable;
     unsigned long size;
+#ifdef SHM_FD_PASSING
+    Bool is_fd;
+    XID resource;
+#endif
 } ShmDescRec, *ShmDescPtr;
 
+#ifdef SHM_FD_PASSING
+#define SHMDESC_IS_FD(shmdesc)  ((shmdesc)->is_fd)
+#else
+#define SHMDESC_IS_FD(shmdesc)  (0)
+#endif
+
 extern _X_EXPORT void
  ShmRegisterFuncs(ScreenPtr pScreen, ShmFuncsPtr funcs);
 
diff --git a/include/protocol-versions.h b/include/protocol-versions.h
index 5ceaeb0..95df8ce 100644
--- a/include/protocol-versions.h
+++ b/include/protocol-versions.h
@@ -93,7 +93,11 @@
 
 /* SHM */
 #define SERVER_SHM_MAJOR_VERSION		1
+#if XTRANS_SEND_FDS
+#define SERVER_SHM_MINOR_VERSION		2
+#else
 #define SERVER_SHM_MINOR_VERSION		1
+#endif
 
 /* Sync */
 #define SERVER_SYNC_MAJOR_VERSION		3
commit ea8acfe3e2f74a46c3f1e91809b4b99af18502b7
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Nov 6 23:06:28 2013 -0800

    Require xextproto version 7.2.99.901
    
    This includes the MIT-SHM FD passing requests
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>

diff --git a/configure.ac b/configure.ac
index e223202..96ceb4c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -798,7 +798,7 @@ dnl Required modules
 XPROTO="xproto >= 7.0.22"
 RANDRPROTO="randrproto >= 1.4.0"
 RENDERPROTO="renderproto >= 0.11"
-XEXTPROTO="xextproto >= 7.1.99"
+XEXTPROTO="xextproto >= 7.2.99.901"
 INPUTPROTO="inputproto >= 2.3"
 KBPROTO="kbproto >= 1.0.3"
 FONTSPROTO="fontsproto"
commit 914672fefacc15386041e7c2bc3beed4faf45e9d
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Nov 7 14:20:26 2013 -0800

    Remove dix-config.h config variables from xorg-config.h
    
    xorg-config.h includes dix-config, so there's no need to duplicate.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in
index e3444da..487d7ad 100644
--- a/include/xorg-config.h.in
+++ b/include/xorg-config.h.in
@@ -145,7 +145,4 @@
 /* Support APM/ACPI power management in the server */
 #undef XF86PM
 
-/* Have support for X shared memory fence library (xshmfence) */
-#undef HAVE_XSHMFENCE
-
 #endif /* _XORG_CONFIG_H_ */
commit 7aad79c5a582ece301d950bd65f0bcb4b9956e86
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Nov 6 23:05:46 2013 -0800

    Make XTrans FD passing support optional. Define only on Linux
    
    Until other operating systems have a libXtrans port for FD passing,
    disable this on non-Linux systems.
    
    Note that this define affects how libXtrans gets built into the X
    server, which is why it need only define the symbol
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 6925df8..e223202 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1118,6 +1118,41 @@ case "$DRI2,$HAVE_DRI2PROTO" in
 esac
 AM_CONDITIONAL(DRI2, test "x$DRI2" = xyes)
 
+AC_ARG_ENABLE(xtrans-send-fds,	AS_HELP_STRING([--disable-xtrans-send-fds], [Use Xtrans support for fd passing (default: auto)]), [XTRANS_SEND_FDS=$enableval], [XTRANS_SEND_FDS=auto])
+
+case "x$XTRANS_SEND_FDS" in
+xauto)
+	case "$host_os" in
+	linux*)
+		XTRANS_SEND_FDS=yes
+		;;
+	*)
+		XTRANS_SEND_FDS=no
+		;;
+	esac
+esac
+
+case "x$XTRANS_SEND_FDS" in
+xyes)
+	AC_DEFINE(XTRANS_SEND_FDS, 1, [Enable xtrans fd passing support])
+	;;
+esac
+
+case "$DRI3,$XTRANS_SEND_FDS" in
+	yes,yes | auto,yes)
+		;;
+	yes,no)
+		AC_MSG_ERROR([DRI3 requested, but xtrans fd passing support not found.])
+		DRI3=no
+		;;
+	no,*)
+		;;
+	*)
+		AC_MSG_NOTICE([DRI3 disabled because xtrans fd passing support not found.])
+		DRI3=no
+		;;
+esac
+
 PKG_CHECK_MODULES([DRI3PROTO], $DRI3PROTO,
                   [HAVE_DRI3PROTO=yes], [HAVE_DRI3PROTO=no])
 
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index 156383b..e4eea8d 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -452,4 +452,7 @@
 /* Have support for X shared memory fence library (xshmfence) */
 #undef HAVE_XSHMFENCE
 
+/* Use XTrans FD passing support */
+#undef XTRANS_SEND_FDS
+
 #endif /* _DIX_CONFIG_H_ */
diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in
index 960817e..0c651bf 100644
--- a/include/xorg-server.h.in
+++ b/include/xorg-server.h.in
@@ -221,4 +221,7 @@
 /* Have support for X shared memory fence library (xshmfence) */
 #undef HAVE_XSHMFENCE
 
+/* Use XTrans FD passing support */
+#undef XTRANS_SEND_FDS
+
 #endif /* _XORG_SERVER_H_ */
commit f70a8bf3714d89bccaad36841ef9149e91ad3bba
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Sun Nov 10 11:40:27 2013 -0800

    XQuartz: Don't sleep forever on exit if usleep() returns an error
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>

diff --git a/hw/xquartz/X11Controller.m b/hw/xquartz/X11Controller.m
index 737db42..3d094bf 100644
--- a/hw/xquartz/X11Controller.m
+++ b/hw/xquartz/X11Controller.m
@@ -936,7 +936,7 @@ extern char *bundle_id_prefix;
 
 - (void) applicationWillTerminate:(NSNotification *)aNotification
 {
-    unsigned remain;
+    int remain;
     [X11App prefs_synchronize];
 
     /* shutdown the X server, it will exit () for us. */
commit ebcc1c214c466582d7b92826b4860256fd9c582a
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Sun Nov 10 11:26:49 2013 -0800

    XQuartz: Update Info.plist copyright years
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>

diff --git a/hw/xquartz/bundle/Info.plist.cpp b/hw/xquartz/bundle/Info.plist.cpp
index b99e417..5fbb0ad 100644
--- a/hw/xquartz/bundle/Info.plist.cpp
+++ b/hw/xquartz/bundle/Info.plist.cpp
@@ -39,9 +39,9 @@
 	<key>LSApplicationCategoryType</key>
 		<string>public.app-category.utilities</string>
 	<key>NSHumanReadableCopyright</key>
-		<string>© 2003-2012 Apple Inc.
+		<string>© 2003-2013 Apple Inc.
 © 2003 XFree86 Project, Inc.
-© 2003-2012 X.org Foundation, Inc.
+© 2003-2013 X.org Foundation, Inc.
 </string>
 	<key>NSMainNibFile</key>
 		<string>main</string>
commit 81c123ea2dd833864f7ba217791e59acca0f7c97
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Mon Nov 4 12:13:45 2013 -0800

    configure.ac: Move GLX section after DRI
    
    The GLX section of configura.ac checks the state of DRI2, so it
    needs to be after DRI2=auto is resolved.
    
    Also reset libgl requirement to 7.1.0 in non-dri2 case.
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/configure.ac b/configure.ac
index 6925df8..920a450 100644
--- a/configure.ac
+++ b/configure.ac
@@ -814,7 +814,7 @@ LIBAPPLEWM="applewm >= 1.4"
 LIBDMX="dmx >= 1.0.99.1"
 LIBDRI="dri >= 7.8.0"
 LIBDRM="libdrm >= 2.3.0"
-LIBGL="gl >= 9.2.0"
+LIBGL="gl >= 7.1.0"
 LIBXEXT="xext >= 1.0.99.4"
 LIBXFONT="xfont >= 1.4.2"
 LIBXI="xi >= 1.2.99.1"
@@ -1069,34 +1069,6 @@ fi
 AC_MSG_RESULT([$CLIENTIDS])
 AM_CONDITIONAL(CLIENTIDS, [test "x$CLIENTIDS" = xyes])
 
-if test "x$GLX" = xyes; then
-	PKG_CHECK_MODULES([XLIB], [x11])
-	PKG_CHECK_MODULES([GL], $GLPROTO $LIBGL)
-	AC_SUBST(XLIB_CFLAGS)
-	AC_DEFINE(GLXEXT, 1, [Build GLX extension])
-	GLX_LIBS='$(top_builddir)/glx/libglx.la'
-	GLX_SYS_LIBS="$GLX_SYS_LIBS $GL_LIBS"
-else
-        GLX=no
-fi
-AM_CONDITIONAL(GLX, test "x$GLX" = xyes)
-
-if test "x$GLX" = xno; then
-        AIGLX=no
-fi
-
-if test "x$AIGLX" = xyes -a \( "x$DRI2" = xyes \); then
-	AC_DEFINE(AIGLX, 1, [Build AIGLX loader])
-fi
-AM_CONDITIONAL(AIGLX_DRI_LOADER, { test "x$DRI2" = xyes; } && test "x$AIGLX" = xyes)
-
-if test "x$GLX_USE_TLS" = xyes ; then
-	GLX_DEFINES="-DGLX_USE_TLS -DPTHREADS"
-	GLX_SYS_LIBS="$GLX_SYS_LIBS -lpthread"
-fi
-AC_SUBST([GLX_DEFINES])
-AC_SUBST([GLX_SYS_LIBS])
-
 AM_CONDITIONAL(DRI, test "x$DRI" = xyes)
 if test "x$DRI" = xyes; then
 	AC_DEFINE(XF86DRI, 1, [Build DRI extension])
@@ -1113,6 +1085,7 @@ case "$DRI2,$HAVE_DRI2PROTO" in
 	yes,yes | auto,yes)
 		AC_DEFINE(DRI2, 1, [Build DRI2 extension])
 		DRI2=yes
+		LIBGL="gl >= 9.2.0"
 		SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRI2PROTO"
 		;;
 esac
@@ -1204,6 +1177,34 @@ if test "x$DRI2" = xyes; then
 fi
 AM_CONDITIONAL(DRI2_AIGLX, test "x$DRI2_AIGLX" = xyes)
 
+if test "x$GLX" = xyes; then
+	PKG_CHECK_MODULES([XLIB], [x11])
+	PKG_CHECK_MODULES([GL], $GLPROTO $LIBGL)
+	AC_SUBST(XLIB_CFLAGS)
+	AC_DEFINE(GLXEXT, 1, [Build GLX extension])
+	GLX_LIBS='$(top_builddir)/glx/libglx.la'
+	GLX_SYS_LIBS="$GLX_SYS_LIBS $GL_LIBS"
+else
+        GLX=no
+fi
+AM_CONDITIONAL(GLX, test "x$GLX" = xyes)
+
+if test "x$GLX" = xno; then
+        AIGLX=no
+fi
+
+if test "x$AIGLX" = xyes -a \( "x$DRI2" = xyes \); then
+	AC_DEFINE(AIGLX, 1, [Build AIGLX loader])
+fi
+AM_CONDITIONAL(AIGLX_DRI_LOADER, { test "x$DRI2" = xyes; } && test "x$AIGLX" = xyes)
+
+if test "x$GLX_USE_TLS" = xyes ; then
+	GLX_DEFINES="-DGLX_USE_TLS -DPTHREADS"
+	GLX_SYS_LIBS="$GLX_SYS_LIBS -lpthread"
+fi
+AC_SUBST([GLX_DEFINES])
+AC_SUBST([GLX_SYS_LIBS])
+
 AM_CONDITIONAL(PRESENT, [test "x$PRESENT" = xyes])
 if test "x$PRESENT" = xyes; then
 	AC_DEFINE(PRESENT, 1, [Support Present extension])
commit ab4b1fb38a61feb73d8336cc7a3399eb9d3d25be
Author: Andreas Schwab <schwab at suse.de>
Date:   Thu Aug 15 12:03:42 2013 +0200

    ARM64: Add support for aarch64
    
    Signed-off-by: Andreas Schwab <schwab at suse.de>
    Reviewed-by: Mark Kettenis <kettenis at openbsd.org>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h
index c980bee..3a57186 100644
--- a/hw/xfree86/common/compiler.h
+++ b/hw/xfree86/common/compiler.h
@@ -1351,7 +1351,7 @@ stl_u(unsigned long val, unsigned int *p)
 #else                           /* ix86 */
 
 #if !defined(__SUNPRO_C)
-#if !defined(FAKEIT) && !defined(__mc68000__) && !defined(__arm__) && !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && !defined(__m32r__)
+#if !defined(FAKEIT) && !defined(__mc68000__) && !defined(__arm__) && !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && !defined(__m32r__) && !defined(__aarch64__)
 #ifdef GCCUSESGAS
 
 /*
diff --git a/hw/xfree86/os-support/linux/lnx_video.c b/hw/xfree86/os-support/linux/lnx_video.c
index d9a5da1..43d0a36 100644
--- a/hw/xfree86/os-support/linux/lnx_video.c
+++ b/hw/xfree86/os-support/linux/lnx_video.c
@@ -58,7 +58,8 @@ static Bool ExtendedEnabled = FALSE;
       !defined(__sparc__) && \
       !defined(__mips__) && \
       !defined(__nds32__) && \
-      !defined(__arm__)
+      !defined(__arm__) && \
+      !defined(__aarch64__)
 
 /*
  * Due to conflicts with "compiler.h", don't rely on <sys/io.h> to declare
diff --git a/include/servermd.h b/include/servermd.h
index d6a9a3a..11f6c10 100644
--- a/include/servermd.h
+++ b/include/servermd.h
@@ -286,6 +286,20 @@ SOFTWARE.
 #define GLYPHPADBYTES		4
 #endif                          /* linux/s390 */
 
+#ifdef __aarch64__
+
+#ifdef __AARCH64EL__
+#define IMAGE_BYTE_ORDER        LSBFirst
+#define BITMAP_BIT_ORDER        LSBFirst
+#endif
+#ifdef __AARCH64EB__
+#define IMAGE_BYTE_ORDER        MSBFirst
+#define BITMAP_BIT_ORDER        MSBFirst
+#endif
+#define GLYPHPADBYTES           4
+
+#endif                          /* __aarch64__ */
+
 /* size of buffer to use with GetImage, measured in bytes. There's obviously
  * a trade-off between the amount of heap used and the number of times the
  * ddx routine has to be called.
commit 8fcf82cbf015609e00b3feb9bc567133c7aee5cf
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Nov 5 18:39:11 2013 -0800

    Use $GL_LIBS instead of -lGL for linking
    
    -lGL presumes that the GL library is in the system path, while
     $GL_LIBS is auto-detected.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index feeae04..6925df8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1075,7 +1075,7 @@ if test "x$GLX" = xyes; then
 	AC_SUBST(XLIB_CFLAGS)
 	AC_DEFINE(GLXEXT, 1, [Build GLX extension])
 	GLX_LIBS='$(top_builddir)/glx/libglx.la'
-	GLX_SYS_LIBS="$GLX_SYS_LIBS -lGL"
+	GLX_SYS_LIBS="$GLX_SYS_LIBS $GL_LIBS"
 else
         GLX=no
 fi
commit f348935e7d2c84a438aba08eee2f2c4e0dc77d20
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Nov 5 18:37:12 2013 -0800

    Link with xshmfence, reference miSyncShmScreenInit in sdksyms
    
    This gets the server to link with xshmfence again, and also ensures
    that the miSyncShm code is linked into the server with the reference
    from sdksyms.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index a7515a3..feeae04 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1144,6 +1144,7 @@ AM_CONDITIONAL(XSHMFENCE, test "x$HAVE_XSHMFENCE" = xyes)
 case x"$HAVE_XSHMFENCE" in
 	xyes)
 		AC_DEFINE(HAVE_XSHMFENCE, 1, [Have X Shared Memory Fence library])
+		REQUIRED_LIBS="$REQUIRED_LIBS xshmfence"
 		;;
 esac
 
diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh
index 7c9734c..d7f259d 100755
--- a/hw/xfree86/sdksyms.sh
+++ b/hw/xfree86/sdksyms.sh
@@ -44,6 +44,9 @@ cat > sdksyms.c << EOF
 /* miext/sync/Makefile.am */
 #include "misync.h"
 #include "misyncstr.h"
+#if HAVE_XSHMFENCE
+#include "misyncshm.h"
+#endif
 
 /* Xext/Makefile.am -- half is module, half is builtin */
 #ifdef XV
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index 397ee96..156383b 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -449,4 +449,7 @@
 #include "dix-config-apple-verbatim.h"
 #endif
 
+/* Have support for X shared memory fence library (xshmfence) */
+#undef HAVE_XSHMFENCE
+
 #endif /* _DIX_CONFIG_H_ */
diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in
index 487d7ad..e3444da 100644
--- a/include/xorg-config.h.in
+++ b/include/xorg-config.h.in
@@ -145,4 +145,7 @@
 /* Support APM/ACPI power management in the server */
 #undef XF86PM
 
+/* Have support for X shared memory fence library (xshmfence) */
+#undef HAVE_XSHMFENCE
+
 #endif /* _XORG_CONFIG_H_ */
commit 5f1e832694e57986c0185048a941b3af51b2f85f
Author: Julien Cristau <jcristau at debian.org>
Date:   Tue Nov 5 07:08:21 2013 -0800

    os: Actually use the computed clockid in GetTimeInMicros
    
    The selection of which clock to use for this function was not actually
    getting used when fetching the final clock value.
    
    Reported-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/os/utils.c b/os/utils.c
index 995f62a..fb20da7 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -480,7 +480,7 @@ GetTimeInMicros(void)
         else
             clockid = ~0L;
     }
-    if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
+    if (clockid != ~0L && clock_gettime(clockid, &tp) == 0)
         return (CARD64) tp.tv_sec * (CARD64)1000000 + tp.tv_nsec / 1000;
 #endif
 
commit 903a058370645ea075ea98d380fd565efb6160c9
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Nov 4 19:01:26 2013 -0800

    hw/xfree86: Link libdri3 only when DRI3 is defined
    
    Don't attempt to link non-existant libraries...
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index eea16a8..485386f 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -9,6 +9,11 @@ DRI2_SUBDIR = dri2
 DRI2_LIB = dri2/libdri2.la
 endif
 
+if DRI3
+DRI3_BUILDDIR = $(top_builddir)/dri3
+DRI3_LIB = $(DRI3_BUILDDIR)/libdri3.la
+endif
+
 if XF86UTILS
 XF86UTILS_SUBDIR = utils
 endif
@@ -59,7 +64,7 @@ LOCAL_LIBS = \
             dixmods/libxorgxkb.la \
             $(DRI_LIB) \
             $(DRI2_LIB) \
-	    $(top_builddir)/dri3/libdri3.la \
+	    $(DRI3_LIB) \
 	    $(top_builddir)/miext/sync/libsync.la \
             $(top_builddir)/mi/libmi.la \
             $(top_builddir)/os/libos.la
commit aaf0e29619196a283fee7ead2020a91032d84f48
Author: Keith Packard <keithp at keithp.com>
Date:   Sun Nov 3 09:56:02 2013 -0800

    Disable DRI3 and sync fence FD functions if xshmfence isn't available
    
    Make sure the server can build when the xshmfence library isn't present
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/Xext/sync.c b/Xext/sync.c
index a04c383..dd18cde 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -919,6 +919,7 @@ SyncCreate(ClientPtr client, XID id, unsigned char type)
 int
 SyncCreateFenceFromFD(ClientPtr client, DrawablePtr pDraw, XID id, int fd, BOOL initially_triggered)
 {
+#if HAVE_XSHMFENCE
     SyncFence  *pFence;
     int         status;
 
@@ -936,12 +937,19 @@ SyncCreateFenceFromFD(ClientPtr client, DrawablePtr pDraw, XID id, int fd, BOOL
         return BadAlloc;
 
     return Success;
+#else
+    return BadImplementation;
+#endif
 }
 
 int
 SyncFDFromFence(ClientPtr client, DrawablePtr pDraw, SyncFence *pFence)
 {
+#if HAVE_XSHMFENCE
     return miSyncFDFromFence(pDraw, pFence);
+#else
+    return BadImplementation;
+#endif
 }
 
 static SyncCounter *
diff --git a/configure.ac b/configure.ac
index 0d855f2..a7515a3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -792,6 +792,7 @@ DMXPROTO="dmxproto >= 2.2.99.1"
 VIDMODEPROTO="xf86vidmodeproto >= 2.2.99.1"
 WINDOWSWMPROTO="windowswmproto"
 APPLEWMPROTO="applewmproto >= 1.4"
+XSHMFENCE="xshmfence"
 
 dnl Required modules
 XPROTO="xproto >= 7.0.22"
@@ -1119,17 +1120,59 @@ AM_CONDITIONAL(DRI2, test "x$DRI2" = xyes)
 
 PKG_CHECK_MODULES([DRI3PROTO], $DRI3PROTO,
                   [HAVE_DRI3PROTO=yes], [HAVE_DRI3PROTO=no])
+
 case "$DRI3,$HAVE_DRI3PROTO" in
+	yes,yes | auto,yes)
+		;;
 	yes,no)
 		AC_MSG_ERROR([DRI3 requested, but dri3proto not found.])
+		DRI3=no
+		;;
+	no,*)
+		;;
+	*)
+		AC_MSG_NOTICE([DRI3 disabled because dri3proto not found.])
+		DRI3=no
 		;;
+esac
+
+PKG_CHECK_MODULES([XSHMFENCE], $XSHMFENCE,
+		  [HAVE_XSHMFENCE=yes], [HAVE_XSHMFENCE=no])
+
+AM_CONDITIONAL(XSHMFENCE, test "x$HAVE_XSHMFENCE" = xyes)
+
+case x"$HAVE_XSHMFENCE" in
+	xyes)
+		AC_DEFINE(HAVE_XSHMFENCE, 1, [Have X Shared Memory Fence library])
+		;;
+esac
+
+
+case "$DRI3,$HAVE_XSHMFENCE" in
 	yes,yes | auto,yes)
-		AC_DEFINE(DRI3, 1, [Build DRI3 extension])
+		;;
+	yes,no)
+		AC_MSG_ERROR("DRI3 requested, but xshmfence not found.])
+		DRI3=no
+		;;
+	no,*)
+		;;
+	*)
+		AC_MSG_NOTICE([DRI3 disabled because xshmfence not found.])
+		DRI3=no
+		;;
+esac
+
+case x"$DRI3" in
+	xyes|xauto)
 		DRI3=yes
+		AC_DEFINE(DRI3, 1, [Build DRI3 extension])
 		DRI3_LIB='$(top_builddir)/dri3/libdri3.la'
 		SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRI3PROTO"
+		AC_MSG_NOTICE([DRI3 enabled]);
 		;;
 esac
+
 AM_CONDITIONAL(DRI3, test "x$DRI3" = xyes)
 
 if test "x$DRI" = xyes || test "x$DRI2" = xyes || test "x$DRI3" = xyes || test "x$CONFIG_UDEV_KMS" = xyes; then
@@ -1333,7 +1376,6 @@ if test "x$XDMAUTH" = xyes; then
 		XDMCP_MODULES="xdmcp"
 	fi
 fi
-REQUIRED_LIBS="$REQUIRED_LIBS xshmfence"
 
 AC_DEFINE_DIR(COMPILEDDEFAULTFONTPATH, FONTPATH, [Default font path])
 AC_DEFINE_DIR(SERVER_MISC_CONFIG_PATH, SERVERCONFIG, [Server miscellaneous config path])
diff --git a/dri3/dri3.h b/dri3/dri3.h
index 7774c87..7c0c330 100644
--- a/dri3/dri3.h
+++ b/dri3/dri3.h
@@ -23,6 +23,10 @@
 #ifndef _DRI3_H_
 #define _DRI3_H_
 
+#include <xorg-server.h>
+
+#ifdef DRI3
+
 #include <X11/extensions/dri3proto.h>
 #include <randrstr.h>
 
@@ -56,4 +60,6 @@ typedef struct dri3_screen_info {
 extern _X_EXPORT Bool
 dri3_screen_init(ScreenPtr screen, dri3_screen_info_ptr info);
 
+#endif
+
 #endif /* _DRI3_H_ */
diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in
index 1281b3e..960817e 100644
--- a/include/xorg-server.h.in
+++ b/include/xorg-server.h.in
@@ -218,4 +218,7 @@
 #define _XSERVER64 1
 #endif
 
+/* Have support for X shared memory fence library (xshmfence) */
+#undef HAVE_XSHMFENCE
+
 #endif /* _XORG_SERVER_H_ */
diff --git a/miext/sync/Makefile.am b/miext/sync/Makefile.am
index e25ceac..ac13c52 100644
--- a/miext/sync/Makefile.am
+++ b/miext/sync/Makefile.am
@@ -8,8 +8,13 @@ if XORG
 sdk_HEADERS = misync.h misyncstr.h misyncshm.h
 endif
 
+XSHMFENCE_SRCS = misyncshm.c
+
 libsync_la_SOURCES =	\
 	misync.c	\
 	misync.h	\
-	misyncshm.c	\
 	misyncstr.h
+
+if XSHMFENCE
+libsync_la_SOURCES += $(XSHMFENCE_SRCS)
+endif
commit 33c85beed521c9db140cadd8c5aa9992398ee1fe
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Nov 1 01:01:58 2013 -0700

    Set version to 1.14.99.901 (1.15 RC1)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 3d9832b..0d855f2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.14.99.3, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2013-10-18"
-RELEASE_NAME="Bundaberg"
+AC_INIT([xorg-server], 1.14.99.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2013-10-31"
+RELEASE_NAME="Bom Retiro"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 
commit 9db1d66f6d2c6857de220d8f1c08965962fe1416
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Nov 1 01:43:59 2013 -0700

    Add dri3 and present directorys to distribution
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/Makefile.am b/Makefile.am
index 28266c5..5bf760b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -101,6 +101,8 @@ DIST_SUBDIRS = \
 	glx \
 	exa \
 	config \
+	dri3 \
+	present \
 	hw \
 	test
 
commit 977e2644b1d9e13b44debcb9a372bbc832ee32a3
Merge: 66c5ee0 f36f5a6
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Nov 1 00:34:18 2013 -0700

    Merge remote-tracking branch 'whot/for-keith'

commit 66c5ee0ff4690e630a69656331fd9d545c99c26c
Author: Egbert Eich <eich at freedesktop.org>
Date:   Wed Aug 14 18:18:56 2013 +0200

    config/APM: Add option to disable building of APM support on Linux
    
        APM support in the Xserver was used to restore the console mode
        prior to a power management event. This was to ensure the mode
        upon suspend/resume was one that the system firmware or kernel
        could deal with.
        APM support is now largely obsolete, KMS drivers don't require a
        mode restoration anyhow. Therefore it should be possible to disable
        this feature.
    
    (small modification by keithp - move test for XF86PM flag after check
    for APM, then move XF86PM flag to xorg-config.h.in)
    
    Signed-off-by: Egbert Eich <eich at freedesktop.org>
    Tested-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 9b8b89f..c48d2aa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -228,10 +228,6 @@ dnl AGPGART headers
 AC_CHECK_HEADERS([linux/agpgart.h sys/agpio.h sys/agpgart.h], AGP=yes)
 AM_CONDITIONAL(AGP, [test "x$AGP" = xyes])
 
-dnl APM header
-AC_CHECK_HEADERS([linux/apm_bios.h], LNXAPM=yes)
-AM_CONDITIONAL(LNXAPM, [test "x$LNXAPM" = xyes])
-
 dnl fbdev header
 AC_CHECK_HEADERS([linux/fb.h], FBDEV=yes)
 AM_CONDITIONAL(FBDEVHW, [test "x$FBDEV" = xyes])
@@ -638,6 +634,7 @@ AC_ARG_ENABLE(libdrm,         AS_HELP_STRING([--enable-libdrm], [Build Xorg with
 AC_ARG_ENABLE(clientids,      AS_HELP_STRING([--disable-clientids], [Build Xorg with client ID tracking (default: enabled)]), [CLIENTIDS=$enableval], [CLIENTIDS=yes])
 AC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess], [Build Xorg with pciaccess library (default: enabled)]), [PCI=$enableval], [PCI=yes])
 AC_ARG_ENABLE(linux_acpi, AC_HELP_STRING([--disable-linux-acpi], [Disable building ACPI support on Linux (if available).]), [enable_linux_acpi=$enableval], [enable_linux_acpi=yes])
+AC_ARG_ENABLE(linux_apm, AC_HELP_STRING([--disable-linux-apm], [Disable building APM support on Linux (if available).]), [enable_linux_apm=$enableval], [enable_linux_apm=yes])
 
 dnl DDXes.
 AC_ARG_ENABLE(xorg,    	      AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
@@ -1736,9 +1733,6 @@ if test "x$XORG" = xyes; then
 
 	case $host_os in
 	  linux*)
-		if test "x$LNXAPM" = xyes; then
-			XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
-		fi
 		XORG_OS_SUBDIR="linux"
 		linux_acpi="no"
 		case $host_cpu in
@@ -1751,6 +1745,11 @@ if test "x$XORG" = xyes; then
 		  *)
 			;;
 		esac
+		dnl APM header
+		AC_CHECK_HEADERS([linux/apm_bios.h], [linux_apm=$enable_linux_apm])
+		if test "x$linux_apm" = xyes -o "x$linux_acpi" = xyes; then
+			AC_DEFINE(XF86PM, 1, [Support APM/ACPI power management in the server])
+		fi
 		;;
 	  freebsd* | kfreebsd*-gnu | dragonfly*)
 		XORG_OS_SUBDIR="bsd"
@@ -1913,6 +1912,7 @@ AM_CONDITIONAL([XORG_BUS_BSDPCI], [test "x$xorg_bus_bsdpci" = xyes])
 AM_CONDITIONAL([XORG_BUS_SPARC], [test "x$xorg_bus_sparc" = xyes])
 AM_CONDITIONAL([LINUX_ALPHA], [test "x$linux_alpha" = xyes])
 AM_CONDITIONAL([LNXACPI], [test "x$linux_acpi" = xyes])
+AM_CONDITIONAL([LNXAPM], [test "x$linux_apm" = xyes])
 AM_CONDITIONAL([SOLARIS_ASM_INLINE], [test "x$solaris_asm_inline" = xyes])
 AM_CONDITIONAL([SOLARIS_VT], [test "x$solaris_vt" = xyes])
 AM_CONDITIONAL([DGA], [test "x$DGA" = xyes])
diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in
index 0df31ae..487d7ad 100644
--- a/include/xorg-config.h.in
+++ b/include/xorg-config.h.in
@@ -142,4 +142,7 @@
 /* Define to 1 if you have the `seteuid' function. */
 #undef HAVE_SETEUID
 
+/* Support APM/ACPI power management in the server */
+#undef XF86PM
+
 #endif /* _XORG_CONFIG_H_ */
commit f36f5a65f639b6524191d888d5bf89e73027156c
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Oct 30 15:40:58 2013 +1000

    sync: fix corner-case in triggering idle alarms
    
    ProcessInputEvent() resets the device idle times. If idle time was higher than
    the lower bracket, this should trigger an event in the idle time wakeup
    handler.
    
    If processing is slow, the idle time may advance past the lower bracket
    between the reset and the time the BlockHandler is called. In that case, we'd
    never schedule a wakeup to handle the event, causing us to randomly miss
    events.
    
    Ran tests with a neg transition trigger on 5ms with 200 repeats of the test
    and it succeeded. Anything below that gets a bit tricky to make sure the
    server sees the same idle time as the client usleeps for.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/Xext/sync.c b/Xext/sync.c
index b2ee92e..53f769d 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -2654,7 +2654,16 @@ IdleTimeBlockHandler(pointer pCounter, struct timeval **wt, pointer LastSelectMa
     IdleTimeQueryValue(counter, &idle);
     counter->value = idle;      /* push, so CheckTrigger works */
 
-    if (less && XSyncValueLessOrEqual(idle, *less)) {
+    /**
+     * There's an indefinite amount of time between ProcessInputEvents()
+     * where the idle time is reset and the time we actually get here. idle
+     * may be past the lower bracket if we dawdled with the events, so
+     * check for whether we did reset and bomb out of select immediately.
+     */
+    if (less && XSyncValueGreaterThan(idle, *less) &&
+        LastEventTimeWasReset(priv->deviceid)) {
+        AdjustWaitForDelay(wt, 0);
+    } else if (less && XSyncValueLessOrEqual(idle, *less)) {
         /*
          * We've been idle for less than the threshold value, and someone
          * wants to know about that, but now we need to know whether they
commit f994d99539192a10a8c83047e11991f52e0ca677
Author: Egbert Eich <eich at freedesktop.org>
Date:   Wed Aug 14 18:18:39 2013 +0200

    config/ACPI: Add option to disable building of ACPI support on Linux
    
    ACPI support in the Xserver was used to restore the console mode
    prior to a power management event. This was to ensure the mode
    upon suspend/resume was one that the system firmware or kernel
    could deal with.
    The feature depended on acpid to be running. Most of this functionality
    is now take over by systemd, KMS drivers don't require a mode restoration
    anyhow. Therefore it should be possible to disable this feature under
    some circumstances.
    
    Tested-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 7432912..9b8b89f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -637,6 +637,7 @@ AC_ARG_ENABLE(windowswm,      AS_HELP_STRING([--enable-windowswm], [Build XWin w
 AC_ARG_ENABLE(libdrm,         AS_HELP_STRING([--enable-libdrm], [Build Xorg with libdrm support (default: enabled)]), [DRM=$enableval],[DRM=yes])
 AC_ARG_ENABLE(clientids,      AS_HELP_STRING([--disable-clientids], [Build Xorg with client ID tracking (default: enabled)]), [CLIENTIDS=$enableval], [CLIENTIDS=yes])
 AC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess], [Build Xorg with pciaccess library (default: enabled)]), [PCI=$enableval], [PCI=yes])
+AC_ARG_ENABLE(linux_acpi, AC_HELP_STRING([--disable-linux-acpi], [Disable building ACPI support on Linux (if available).]), [enable_linux_acpi=$enableval], [enable_linux_acpi=yes])
 
 dnl DDXes.
 AC_ARG_ENABLE(xorg,    	      AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
@@ -1745,7 +1746,7 @@ if test "x$XORG" = xyes; then
 		  	linux_alpha=yes
 			;;
 		  i*86|amd64*|x86_64*|ia64*)
-			linux_acpi="yes"
+			linux_acpi=$enable_linux_acpi
 			;;
 		  *)
 			;;
commit 2aa5092b88174cb9988076ae96298217c97ad75f
Author: Egbert Eich <eich at freedesktop.org>
Date:   Mon Aug 12 18:21:33 2013 +0200

    DDX/Randr: Avoid server crash when xrandr SetConfig is called while switched away
    
    A call to Xrandr SetScreenConfig (for randr 1.1) causes the Xserver to
    crash when xf86SetViewport() which does not check if the hardware is
    accessible.
    Wrap accesses to xf86SetViewport() with if (vtSema) { ... } to avoid that.
    
    Signed-off-by: Egbert Eich <eich at freedesktop.org>
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/common/xf86RandR.c b/hw/xfree86/common/xf86RandR.c
index 5606bee..2418731 100644
--- a/hw/xfree86/common/xf86RandR.c
+++ b/hw/xfree86/common/xf86RandR.c
@@ -214,13 +214,15 @@ xf86RandRSetMode(ScreenPtr pScreen,
      */
     xf86ReconfigureLayout();
 
-    /*
-     * Make sure the whole screen is visible
-     */
-    xf86SetViewport(pScreen, pScreen->width, pScreen->height);
-    xf86SetViewport(pScreen, 0, 0);
-    if (pRoot && scrp->vtSema)
-        (*scrp->EnableDisableFBAccess) (scrp, TRUE);
+    if (scrp->vtSema) {
+        /*
+         * Make sure the whole screen is visible
+         */
+        xf86SetViewport (pScreen, pScreen->width, pScreen->height);
+        xf86SetViewport (pScreen, 0, 0);
+        if (pRoot)
+            (*scrp->EnableDisableFBAccess) (scrp, TRUE);
+    }
     return ret;
 }
 
commit 508e05777aba823c93a2417cc26d18c9f061ca26
Author: Egbert Eich <eich at freedesktop.org>
Date:   Mon Aug 12 18:20:36 2013 +0200

    DDX/Events: Distinguish between Input- and GeneralHandlers in xf86VTSwitch()
    
    When enabling/disabling input handlers in xf86VTSwitch() we treat Input-
    and GeneralHandlers equally. The result is that after a VT switch the
    masks for EnabledDevices and AllSockets are equal and the distiction
    between both types is lost.
    
    Signed-off-by: Egbert Eich <eich at freedesktop.org>
    Reviewed-by: Daniel Stone <daniel at fooishbar.org>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
index 7a949fd..d0b1431 100644
--- a/hw/xfree86/common/xf86Events.c
+++ b/hw/xfree86/common/xf86Events.c
@@ -116,6 +116,7 @@ typedef struct x_IHRec {
     InputHandlerProc ihproc;
     pointer data;
     Bool enabled;
+    Bool is_input;
     struct x_IHRec *next;
 } IHRec, *IHPtr;
 
@@ -446,8 +447,12 @@ xf86VTSwitch(void)
          * Keep the order: Disable Device > LeaveVT
          *                        EnterVT > EnableDevice
          */
-        for (ih = InputHandlers; ih; ih = ih->next)
-            xf86DisableInputHandler(ih);
+        for (ih = InputHandlers; ih; ih = ih->next) {
+            if (ih->is_input)
+                xf86DisableInputHandler(ih);
+            else
+                xf86DisableGeneralHandler(ih);
+        }
         for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next) {
             if (pInfo->dev) {
                 if (!pInfo->dev->enabled)
@@ -496,9 +501,12 @@ xf86VTSwitch(void)
                 pInfo->flags &= ~XI86_DEVICE_DISABLED;
                 pInfo = pInfo->next;
             }
-            for (ih = InputHandlers; ih; ih = ih->next)
-                xf86EnableInputHandler(ih);
-
+            for (ih = InputHandlers; ih; ih = ih->next) {
+                if (ih->is_input)
+                    xf86EnableInputHandler(ih);
+                else
+                    xf86EnableGeneralHandler(ih);
+            }
             OsReleaseSIGIO();
 
         }
@@ -558,9 +566,12 @@ xf86VTSwitch(void)
             pInfo = pInfo->next;
         }
 
-        for (ih = InputHandlers; ih; ih = ih->next)
-            xf86EnableInputHandler(ih);
-
+        for (ih = InputHandlers; ih; ih = ih->next) {
+            if (ih->is_input)
+                xf86EnableInputHandler(ih);
+            else
+                xf86EnableGeneralHandler(ih);
+        }
 #ifdef XSERVER_PLATFORM_BUS
         /* check for any new output devices */
         xf86platformVTProbe();
@@ -600,8 +611,10 @@ xf86AddInputHandler(int fd, InputHandlerProc proc, pointer data)
 {
     IHPtr ih = addInputHandler(fd, proc, data);
 
-    if (ih)
+    if (ih) {
         AddEnabledDevice(fd);
+        ih->is_input = TRUE;
+    }
     return ih;
 }
 
commit 0cb33ce34081d7d123ec565582d7d19bdb3964ad
Author: Egbert Eich <eich at freedesktop.org>
Date:   Sat Oct 5 08:02:28 2013 +0200

    DDX/modes: Add a sanity check when using screen sizes from EDID
    
    EDID sometimes lies about screen sizes. Since the screen size is used
    by clients to determine the DPI a wrong ration will lead to terrible
    looking fonts.
    Add a sanity check for the h/v ratio cutting off at 2.4. This would
    still accept the cinemascope aspect ratio as valid.
    Also add message suggesting to add a quirk table entry.
    
    Signed-off-by: Egbert Eich <eich at freedesktop.org>
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index 35845e8..2a02c85 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -3045,10 +3045,22 @@ handle_detailed_physical_size(struct detailed_monitor_section
     if (det_mon->type == DT &&
         det_mon->section.d_timings.h_size != 0 &&
         det_mon->section.d_timings.v_size != 0) {
-
-        p->output->mm_width = det_mon->section.d_timings.h_size;
-        p->output->mm_height = det_mon->section.d_timings.v_size;
-        p->ret = TRUE;
+        /* some sanity checking for aspect ratio:
+           assume any h / v (or v / h) > 2.4 to be bogus.
+           This would even include cinemascope */
+        if (((det_mon->section.d_timings.h_size * 5) <
+             (det_mon->section.d_timings.v_size * 12)) &&
+            ((det_mon->section.d_timings.v_size * 5) <
+             (det_mon->section.d_timings.h_size * 12))) {
+            p->output->mm_width = det_mon->section.d_timings.h_size;
+            p->output->mm_height = det_mon->section.d_timings.v_size;
+            p->ret = TRUE;
+        } else
+            xf86DrvMsg(p->output->scrn->scrnIndex, X_WARNING,
+                       "Output %s: Strange aspect ratio (%i/%i), "
+                       "consider adding a quirk\n", p->output->name,
+                       det_mon->section.d_timings.h_size,
+                       det_mon->section.d_timings.v_size);
     }
 }
 
commit 41d4beb2616ceb3f1a1b8694733e85bae70de59a
Author: Egbert Eich <eich at freedesktop.org>
Date:   Wed Aug 14 11:50:26 2013 +0200

    DDX/DPMS: Call dixSaveScreens() also when screen is turned on
    
    DMPS calls dixSaveScreens() when turned off but not when turned
    on. In most cases this is irrelevant as DPMS is done when a
    key is hit in which case dixSaveScreens() will be called to
    unblank anyhow. This isn't the case if we use xset (or the
    DPMS extension directly) to unblank.
    Check screenIsSaved to make sure the state needs to be changed
    before calling dixSaveScreens().
    
    Signed-off-by: Egbert Eich <eich at freedesktop.org>
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/common/xf86DPMS.c b/hw/xfree86/common/xf86DPMS.c
index 3f1e142..881cb27 100644
--- a/hw/xfree86/common/xf86DPMS.c
+++ b/hw/xfree86/common/xf86DPMS.c
@@ -36,6 +36,7 @@
 #include <X11/X.h>
 #include "os.h"
 #include "globals.h"
+#include "windowstr.h"
 #include "xf86.h"
 #include "xf86Priv.h"
 #ifdef DPMSExtension
@@ -159,7 +160,13 @@ DPMSSet(ClientPtr client, int level)
         return Success;
 
     if (level != DPMSModeOn) {
-        rc = dixSaveScreens(client, SCREEN_SAVER_FORCER, ScreenSaverActive);
+        if (xf86IsUnblank(screenIsSaved)) {
+            rc = dixSaveScreens(client, SCREEN_SAVER_FORCER, ScreenSaverActive);
+            if (rc != Success)
+                return rc;
+        }
+    } else if (!xf86IsUnblank(screenIsSaved)) {
+        rc = dixSaveScreens(client, SCREEN_SAVER_FORCER, ScreenSaverReset);
         if (rc != Success)
             return rc;
     }
commit 623c4147650d0404cfbea0f9b7df66dc7d928e00
Author: Søren Sandmann Pedersen <ssp at redhat.com>
Date:   Mon Oct 21 17:11:56 2013 -0400

    ephyr: Ensure stride of private framebuffer is multiple of 4
    
    The fb layer of X can't deal with strides that are not a multiple of
    4, so when Xephyr allocates its own framebuffer it should make sure to
    align it.
    
    This fixes crashes and rendering corruption when Xephyr runs in a
    depth that is different from the host X server and its screen size is
    not a multiple of 4 / depth. (This is particularly easy to trigger if
    you use the -resizeable option).
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Soren Sandmann <ssp at redhat.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 6020e8d..ee9ae45 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -721,12 +721,14 @@ hostx_screen_init(KdScreenInfo *screen,
         return scrpriv->ximg->data;
     }
     else {
-        *bytes_per_line = width * (scrpriv->server_depth >> 3);
+        int bytes_per_pixel = scrpriv->server_depth >> 3;
+        int stride = (width * bytes_per_pixel + 0x3) & ~0x3;
+
+        *bytes_per_line = stride;
         *bits_per_pixel = scrpriv->server_depth;
 
-        EPHYR_DBG("server bpp %i", scrpriv->server_depth >> 3);
-        scrpriv->fb_data =
-            malloc(width * buffer_height * (scrpriv->server_depth >> 3));
+        EPHYR_DBG("server bpp %i", bytes_per_pixel);
+        scrpriv->fb_data = malloc (stride * buffer_height);
         return scrpriv->fb_data;
     }
 }
@@ -765,15 +767,14 @@ hostx_paint_rect(KdScreenInfo *screen,
 
     if (!host_depth_matches_server(scrpriv)) {
         int x, y, idx, bytes_per_pixel = (scrpriv->server_depth >> 3);
+        int stride = (scrpriv->win_width * bytes_per_pixel + 0x3) & ~0x3;
         unsigned char r, g, b;
         unsigned long host_pixel;
 
         EPHYR_DBG("Unmatched host depth scrpriv=%p\n", scrpriv);
         for (y = sy; y < sy + height; y++)
             for (x = sx; x < sx + width; x++) {
-                idx =
-                    (scrpriv->win_width * y * bytes_per_pixel) +
-                    (x * bytes_per_pixel);
+                idx = y * stride + x * bytes_per_pixel;
 
                 switch (scrpriv->server_depth) {
                 case 16:
commit 97cf53cc2ad7ecfdd495133bad31d0ec7d939326
Author: Søren Sandmann Pedersen <ssp at redhat.com>
Date:   Mon Oct 21 16:58:54 2013 -0400

    ephyr: hostx_screen_init(): Fix bits_per_pixel and bytes_per_line
    
    When the depth of the Xephyr server matches that of the host X server,
    Xephyr simply uses the buffer associated with the XImage as its
    framebuffer. In this case, it is correct to get the bits_per_pixel and
    bytes_per_line values returned from hostx_screen_init() from the XImage.
    
    However, when the depth doesn't match the host, Xephyr uses a private
    framebuffer that is periodically copied to the XImage. In this case,
    the returned values of bits_per_pixel and bytes_per_line should be
    those of the private framebuffer, not those of the XImage.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Soren Sandmann <ssp at redhat.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 5fa33b9..6020e8d 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -695,9 +695,6 @@ hostx_screen_init(KdScreenInfo *screen,
             malloc(scrpriv->ximg->stride * buffer_height);
     }
 
-    *bytes_per_line = scrpriv->ximg->stride;
-    *bits_per_pixel = scrpriv->ximg->bpp;
-
     if (scrpriv->win_pre_existing == None && !EphyrWantResize) {
         /* Ask the WM to keep our size static */
         xcb_size_hints_t size_hints = {0};
@@ -717,10 +714,16 @@ hostx_screen_init(KdScreenInfo *screen,
     scrpriv->win_height = height;
 
     if (host_depth_matches_server(scrpriv)) {
+        *bytes_per_line = scrpriv->ximg->stride;
+        *bits_per_pixel = scrpriv->ximg->bpp;
+
         EPHYR_DBG("Host matches server");
         return scrpriv->ximg->data;
     }
     else {
+        *bytes_per_line = width * (scrpriv->server_depth >> 3);
+        *bits_per_pixel = scrpriv->server_depth;
+
         EPHYR_DBG("server bpp %i", scrpriv->server_depth >> 3);
         scrpriv->fb_data =
             malloc(width * buffer_height * (scrpriv->server_depth >> 3));
commit 55246b67b755d4c1039d54971fe3f77ea60d604e
Author: Søren Sandmann Pedersen <ssp at redhat.com>
Date:   Tue Oct 8 17:45:40 2013 -0400

    xf86AddBusDeviceToConfigure(): Store device in DevToConfig[i].pVideo
    
    After fc3ab84d the pVideo field in DevToConfig[i] is no longer
    initialized, so it's always NULL. This causes the duplicate finding
    algorithm in the beginning of the function to not work anymore as it
    is based on this field.
    
    The symptom of this bug is that X -configure reports
    
        Number of created screens does not match number of detected devices.
          Configuration failed.
        Server terminated with error (2). Closing log file.
    
    rather than producing a working config file.
    
    This patch fixes that bug by initializing the field before calling
    xf86PciConfigureNewDev().
    
    Cc: tvignatti at gmail.com
    Signed-off-by: Soren Sandmann <ssp at redhat.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/xfree86/common/xf86Configure.c b/hw/xfree86/common/xf86Configure.c
index 6c5e359..91e8df9 100644
--- a/hw/xfree86/common/xf86Configure.c
+++ b/hw/xfree86/common/xf86Configure.c
@@ -123,12 +123,14 @@ xf86AddBusDeviceToConfigure(const char *driver, BusType bus, void *busData,
     switch (bus) {
 #ifdef XSERVER_LIBPCIACCESS
     case BUS_PCI:
+	DevToConfig[i].pVideo = busData;
         xf86PciConfigureNewDev(busData, DevToConfig[i].pVideo,
                                &DevToConfig[i].GDev, &chipset);
         break;
 #endif
 #if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
     case BUS_SBUS:
+	DevToConfig[i].sVideo = busData;
         xf86SbusConfigureNewDev(busData, DevToConfig[i].sVideo,
                                 &DevToConfig[i].GDev);
         break;
commit 95bf478b78e466002c382bcde7d4d62591e9215d
Merge: abf5d5a bb745f2
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Oct 31 18:18:19 2013 -0700

    Merge remote-tracking branch 'jeremyhu/master'

commit abf5d5ac12437ebe156b4dd500c2acd69eea3654
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Thu Oct 31 08:57:56 2013 -0700

    miext/damage: Partial revert of "Only wrap into the GC ops chain if there's a listener (v3)"
    
    Fixes regression from: 4dc2a76740d921c824a4d8193f39dd373475f02a
    
    http://lists.x.org/archives/xorg-devel/2013-May/036241.html
    https://trac.macports.org/ticket/38993
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/miext/damage/damage.c b/miext/damage/damage.c
index cc02991..173fe50 100644
--- a/miext/damage/damage.c
+++ b/miext/damage/damage.c
@@ -382,10 +382,7 @@ damageValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable)
     drawableDamage(pDrawable);
     DAMAGE_GC_FUNC_PROLOGUE(pGC);
     (*pGC->funcs->ValidateGC) (pGC, changes, pDrawable);
-    if (pDamage)
-        pGCPriv->ops = pGC->ops; /* so it's not NULL, so FUNC_EPILOGUE does work */
-    else
-        pGCPriv->ops = NULL;
+    pGCPriv->ops = pGC->ops; /* just so it's not NULL */
     DAMAGE_GC_FUNC_EPILOGUE(pGC);
 }
 
commit e4636072949a76477fe7c9d54662a0b3536b1372
Merge: 17ed7ac 5c5c1b7
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Oct 31 17:05:48 2013 -0700

    Merge remote-tracking branch 'keithp/dri3'

commit 17ed7ac1fe7426d66f688087c09da5ff1dbb41d3
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Oct 31 18:39:22 2013 -0400

    glx: Lie about GLX_Y_INVERTED_EXT
    
    Well, that was lame.  The problem with reporting y inversion honestly is
    that libGL asks the driver _its_ opinion of Y inversion, which it just
    fabricates from whole cloth.  So then when libGL goes to compare the
    driver's idea of fbconfigs with that of the server - a fairly dumb idea
    to begin with - nothing matches, and direct rendering fails, and
    sadness.
    
    So until the DRI drivers are fixed we should just continue to lie about
    Y inversion.  GLX_DONT_CARE is what libGL would make up for that
    attribute if we hadn't sent it, so just send that instead.
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Tested-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 64ebf9e..efa4aec 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -1118,7 +1118,8 @@ DoGetFBConfigs(__GLXclientState * cl, unsigned screen)
         WRITE_PAIR(GLX_BIND_TO_MIPMAP_TEXTURE_EXT, modes->bindToMipmapTexture);
         WRITE_PAIR(GLX_BIND_TO_TEXTURE_TARGETS_EXT,
                    modes->bindToTextureTargets);
-	WRITE_PAIR(GLX_Y_INVERTED_EXT, modes->yInverted);
+	/* can't report honestly until mesa is fixed */
+	WRITE_PAIR(GLX_Y_INVERTED_EXT, GLX_DONT_CARE);
 	if (modes->drawableType & GLX_PBUFFER_BIT) {
 	    WRITE_PAIR(GLX_MAX_PBUFFER_WIDTH, modes->maxPbufferWidth);
 	    WRITE_PAIR(GLX_MAX_PBUFFER_HEIGHT, modes->maxPbufferHeight);
commit 5c5c1b77982a9af7279a90bc3c2be48adaa9c778
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Jul 11 16:11:57 2013 -0700

    present: Add Present extension
    
    Provides both a software implementation using timers and driver hooks
    to base everything on vblank intervals.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/Makefile.am b/Makefile.am
index 7a8fc5b..28266c5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -21,6 +21,10 @@ if DRI3
 DRI3_DIR=dri3
 endif
 
+if PRESENT
+PRESENT_DIR=present
+endif
+
 SUBDIRS = \
 	doc \
 	man \
@@ -42,6 +46,7 @@ SUBDIRS = \
 	damageext \
 	$(COMPOSITE_DIR) \
 	$(GLX_DIR) \
+	$(PRESENT_DIR) \
 	$(DRI3_DIR) \
 	exa \
 	config \
diff --git a/configure.ac b/configure.ac
index 546790d..7432912 100644
--- a/configure.ac
+++ b/configure.ac
@@ -614,6 +614,7 @@ AC_ARG_ENABLE(glx,            AS_HELP_STRING([--disable-glx], [Build GLX extensi
 AC_ARG_ENABLE(dri,            AS_HELP_STRING([--enable-dri], [Build DRI extension (default: auto)]), [DRI=$enableval])
 AC_ARG_ENABLE(dri2,           AS_HELP_STRING([--enable-dri2], [Build DRI2 extension (default: auto)]), [DRI2=$enableval], [DRI2=auto])
 AC_ARG_ENABLE(dri3,           AS_HELP_STRING([--enable-dri3], [Build DRI3 extension (default: auto)]), [DRI3=$enableval], [DRI3=auto])
+AC_ARG_ENABLE(present,	      AS_HELP_STRING([--disable-present], [Build Present extension (default: enabled)]), [PRESENT=$enableval], [PRESENT=yes])
 AC_ARG_ENABLE(xinerama,	      AS_HELP_STRING([--disable-xinerama], [Build Xinerama extension (default: enabled)]), [XINERAMA=$enableval], [XINERAMA=yes])
 AC_ARG_ENABLE(xf86vidmode,    AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: auto)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=auto])
 AC_ARG_ENABLE(xace,           AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes])
@@ -807,6 +808,7 @@ DAMAGEPROTO="damageproto >= 1.1"
 XCMISCPROTO="xcmiscproto >= 1.2.0"
 BIGREQSPROTO="bigreqsproto >= 1.1.0"
 XTRANS="xtrans >= 1.2.2"
+PRESENTPROTO="presentproto >= 1.0"
 
 dnl List of libraries that require a specific version
 LIBAPPLEWM="applewm >= 1.4"
@@ -1160,6 +1162,14 @@ if test "x$DRI2" = xyes; then
 fi
 AM_CONDITIONAL(DRI2_AIGLX, test "x$DRI2_AIGLX" = xyes)
 
+AM_CONDITIONAL(PRESENT, [test "x$PRESENT" = xyes])
+if test "x$PRESENT" = xyes; then
+	AC_DEFINE(PRESENT, 1, [Support Present extension])
+	REQUIRED_MODULES="$REQUIRED_MODULES $PRESENTPROTO"
+	SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $PRESENTPROTO"
+	PRESENT_INC='-I$(top_srcdir)/present'
+	PRESENT_LIB='$(top_builddir)/present/libpresent.la'
+fi
 
 AM_CONDITIONAL(XINERAMA, [test "x$XINERAMA" = xyes])
 if test "x$XINERAMA" = xyes; then
@@ -1584,7 +1594,7 @@ AC_EGREP_CPP([I_AM_SVR4],[
 AC_DEFINE([SVR4],1,[Define to 1 on systems derived from System V Release 4])
 AC_MSG_RESULT([yes])], AC_MSG_RESULT([no]))
 
-XSERVER_CFLAGS="$XSERVER_CFLAGS $CORE_INCS $XEXT_INC $COMPOSITE_INC $DAMAGE_INC $FIXES_INC $XI_INC $MI_INC $MIEXT_SYNC_INC $MIEXT_SHADOW_INC $MIEXT_LAYER_INC $MIEXT_DAMAGE_INC $RENDER_INC $RANDR_INC $FB_INC $DBE_INC"
+XSERVER_CFLAGS="$XSERVER_CFLAGS $CORE_INCS $XEXT_INC $COMPOSITE_INC $DAMAGE_INC $FIXES_INC $XI_INC $MI_INC $MIEXT_SYNC_INC $MIEXT_SHADOW_INC $MIEXT_LAYER_INC $MIEXT_DAMAGE_INC $RENDER_INC $RANDR_INC $FB_INC $DBE_INC $PRESENT_INC"
 
 dnl ---------------------------------------------------------------------------
 dnl DDX section.
@@ -1597,7 +1607,7 @@ AC_MSG_RESULT([$XVFB])
 AM_CONDITIONAL(XVFB, [test "x$XVFB" = xyes])
 
 if test "x$XVFB" = xyes; then
-	XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB"
+	XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB"
 	XVFB_SYS_LIBS="$XVFBMODULES_LIBS $GLX_SYS_LIBS"
 	AC_SUBST([XVFB_LIBS])
 	AC_SUBST([XVFB_SYS_LIBS])
@@ -1618,7 +1628,7 @@ if test "x$XNEST" = xyes; then
 	if test "x$have_xnest" = xno; then
 		AC_MSG_ERROR([Xnest build explicitly requested, but required modules not found.])
 	fi
-	XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB  $DRI3_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB $DIX_LIB $OS_LIB"
+	XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB  $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB $DIX_LIB $OS_LIB"
 	XNEST_SYS_LIBS="$XNESTMODULES_LIBS $GLX_SYS_LIBS"
 	AC_SUBST([XNEST_LIBS])
 	AC_SUBST([XNEST_SYS_LIBS])
@@ -1643,7 +1653,7 @@ if test "x$XORG" = xyes; then
 	XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
 	XORG_INCS="$XORG_DDXINCS $XORG_OSINCS"
 	XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
-	XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $XI_LIB $XKB_LIB"
+	XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $XI_LIB $XKB_LIB"
 
 	dnl ==================================================================
 	dnl symbol visibility
@@ -2056,7 +2066,7 @@ if test "x$DMX" = xyes; then
 	fi
 	DMX_INCLUDES="$XEXT_INC $RENDER_INC $RECORD_INC"
 	XDMX_CFLAGS="$DMXMODULES_CFLAGS"
-	XDMX_LIBS="$FB_LIB $MI_LIB $XEXT_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB  $DRI3_LIB $MIEXT_SYNC_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $COMPOSITE_LIB $DAMAGE_LIB $MAIN_LIB $DIX_LIB $CONFIG_LIB $OS_LIB $FIXES_LIB"
+	XDMX_LIBS="$FB_LIB $MI_LIB $XEXT_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB  $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $COMPOSITE_LIB $DAMAGE_LIB $MAIN_LIB $DIX_LIB $CONFIG_LIB $OS_LIB $FIXES_LIB"
 	XDMX_SYS_LIBS="$DMXMODULES_LIBS"
 	AC_SUBST([XDMX_CFLAGS])
 	AC_SUBST([XDMX_LIBS])
@@ -2165,7 +2175,7 @@ if test "$KDRIVE" = yes; then
     
     KDRIVE_CFLAGS="$XSERVER_CFLAGS -DHAVE_KDRIVE_CONFIG_H $TSLIB_CFLAGS"
 
-    KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $OS_LIB"
+    KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $OS_LIB"
     KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.la'
     case $host_os in
 	*linux*)
@@ -2288,6 +2298,7 @@ Xi/Makefile
 xfixes/Makefile
 exa/Makefile
 dri3/Makefile
+present/Makefile
 hw/Makefile
 hw/xfree86/Makefile
 hw/xfree86/common/Makefile
diff --git a/hw/dmx/dmxextension.c b/hw/dmx/dmxextension.c
index d7296ae..c6c6a8e 100644
--- a/hw/dmx/dmxextension.c
+++ b/hw/dmx/dmxextension.c
@@ -68,6 +68,9 @@
  * _any_ header files. */
 extern FontPtr defaultFont;
 
+/* Hack to get Present to build (present requires RandR) */
+RESTYPE RRCrtcType;
+
 /** This routine provides information to the DMX protocol extension
  * about a particular screen. */
 Bool
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index d96da6a..397ee96 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -255,6 +255,9 @@
 /* Internal define for Xinerama */
 #undef PANORAMIX
 
+/* Support Present extension */
+#undef PRESENT
+
 /* Overall prefix */
 #undef PROJECTROOT
 
diff --git a/include/extinit.h b/include/extinit.h
index bdb149c..fa5f293 100644
--- a/include/extinit.h
+++ b/include/extinit.h
@@ -181,4 +181,9 @@ extern void XvMCExtensionInit(void);
 extern void dri3_extension_init(void);
 #endif
 
+#if defined(PRESENT)
+#include <X11/extensions/presentproto.h>
+#include "presentext.h"
+#endif
+
 #endif
diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in
index 5b3b664..1281b3e 100644
--- a/include/xorg-server.h.in
+++ b/include/xorg-server.h.in
@@ -70,6 +70,9 @@
 /* Internal define for Xinerama */
 #undef PANORAMIX
 
+/* Support Present extension */
+#undef PRESENT
+
 /* Support RANDR extension */
 #undef RANDR
 
diff --git a/mi/miinitext.c b/mi/miinitext.c
index e49948b..6366182 100644
--- a/mi/miinitext.c
+++ b/mi/miinitext.c
@@ -287,7 +287,10 @@ static ExtensionModule staticExtensions[] = {
 #ifdef DPMSExtension
     {DPMSExtensionInit, DPMSExtensionName, &noDPMSExtension},
 #endif
+    {present_extension_init, PRESENT_NAME, NULL},
+#ifdef DRI3
     {dri3_extension_init, DRI3_NAME, NULL},
+#endif
 #ifdef RES
     {ResExtensionInit, XRES_NAME, &noResExtension},
 #endif
diff --git a/present/Makefile.am b/present/Makefile.am
new file mode 100644
index 0000000..7fea669
--- /dev/null
+++ b/present/Makefile.am
@@ -0,0 +1,17 @@
+noinst_LTLIBRARIES = libpresent.la
+AM_CFLAGS = \
+	-DHAVE_XORG_CONFIG_H \
+	@DIX_CFLAGS@ @XORG_CFLAGS@
+
+libpresent_la_SOURCES = \
+	present.h \
+	present.c \
+	present_event.c \
+	present_fake.c \
+	present_fence.c \
+	present_notify.c \
+	present_priv.h \
+	present_request.c \
+	present_screen.c
+
+sdk_HEADERS = present.h presentext.h
diff --git a/present/present.c b/present/present.c
new file mode 100644
index 0000000..4c97ce4
--- /dev/null
+++ b/present/present.c
@@ -0,0 +1,775 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "present_priv.h"
+#include <gcstruct.h>
+#include <misync.h>
+#include <misyncstr.h>
+#ifdef MONOTONIC_CLOCK
+#include <time.h>
+#endif
+
+static uint64_t         present_event_id;
+static struct xorg_list present_exec_queue;
+static struct xorg_list present_flip_queue;
+
+#if 0
+#define DebugPresent(x) ErrorF x
+#else
+#define DebugPresent(x)
+#endif
+
+/*
+ * Copies the update region from a pixmap to the target drawable
+ */
+static void
+present_copy_region(DrawablePtr drawable,
+                    PixmapPtr pixmap,
+                    RegionPtr update,
+                    int16_t x_off,
+                    int16_t y_off)
+{
+    ScreenPtr   screen = drawable->pScreen;
+    GCPtr       gc;
+
+    gc = GetScratchGC(drawable->depth, screen);
+    if (update) {
+        ChangeGCVal     changes[2];
+
+        changes[0].val = x_off;
+        changes[1].val = y_off;
+        ChangeGC(serverClient, gc,
+                 GCClipXOrigin|GCClipYOrigin,
+                 changes);
+        (*gc->funcs->ChangeClip)(gc, CT_REGION, update, 0);
+    }
+    ValidateGC(drawable, gc);
+    (*gc->ops->CopyArea)(&pixmap->drawable,
+                         drawable,
+                         gc,
+                         0, 0,
+                         pixmap->drawable.width, pixmap->drawable.height,
+                         x_off, y_off);
+    if (update)
+        (*gc->funcs->ChangeClip)(gc, CT_NONE, NULL, 0);
+    FreeScratchGC(gc);
+}
+
+static Bool
+present_check_flip(RRCrtcPtr    crtc,
+                   WindowPtr    window,
+                   PixmapPtr    pixmap,
+                   Bool         sync_flip,
+                   RegionPtr    valid,
+                   int16_t      x_off,
+                   int16_t      y_off)
+{
+    ScreenPtr                   screen = window->drawable.pScreen;
+    WindowPtr                   root = screen->root;
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+
+    if (!screen_priv)
+        return FALSE;
+
+    if (!screen_priv->info)
+        return FALSE;
+
+    if (!crtc)
+        return FALSE;
+
+    /* Check to see if the driver supports flips at all */
+    if (!screen_priv->info->flip)
+        return FALSE;
+
+    /* Can't pend a flip while unflipping */
+    if (screen_priv->unflip_event_id) {
+        return FALSE;
+    }
+
+    /* Can't have two pending flips at the same time */
+    if (screen_priv->flip_pending) {
+        return FALSE;
+    }
+
+    /* Make sure the window hasn't been redirected with Composite */
+    if (screen->GetWindowPixmap(window) != screen->GetScreenPixmap(screen))
+        return FALSE;
+
+    /* Check for full-screen window */
+    if (!RegionEqual(&window->clipList, &root->winSize)) {
+        return FALSE;
+    }
+
+    /* Source pixmap must align with window exactly */
+    if (x_off || y_off) {
+        return FALSE;
+    }
+
+    /* Make sure the area marked as valid fills the screen */
+    if (valid && !RegionEqual(valid, &root->winSize)) {
+        return FALSE;
+    }
+
+    /* Does the window match the pixmap exactly? */
+    if (window->drawable.x != 0 || window->drawable.y != 0 ||
+#ifdef COMPOSITE
+        window->drawable.x != pixmap->screen_x || window->drawable.y != pixmap->screen_y ||
+#endif
+        window->drawable.width != pixmap->drawable.width ||
+        window->drawable.height != pixmap->drawable.height) {
+        return FALSE;
+    }
+
+    /* Ask the driver for permission */
+    if (screen_priv->info->check_flip) {
+        if (!(*screen_priv->info->check_flip) (crtc, window, pixmap, sync_flip)) {
+            return FALSE;
+        }
+    }
+
+    return TRUE;
+}
+
+static Bool
+present_flip(RRCrtcPtr crtc,
+             uint64_t event_id,
+             uint64_t target_msc,
+             PixmapPtr pixmap,
+             Bool sync_flip)
+{
+    ScreenPtr                   screen = crtc->pScreen;
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+
+    return (*screen_priv->info->flip) (crtc, event_id, target_msc, pixmap, sync_flip);
+}
+
+static void
+present_vblank_notify(present_vblank_ptr vblank, CARD8 kind, CARD8 mode, uint64_t ust, uint64_t crtc_msc)
+{
+    int         n;
+
+    present_send_complete_notify(vblank->window, kind, mode, vblank->serial, ust, crtc_msc - vblank->msc_offset);
+    for (n = 0; n < vblank->num_notifies; n++) {
+        WindowPtr   window = vblank->notifies[n].window;
+        CARD32      serial = vblank->notifies[n].serial;
+
+        if (window)
+            present_send_complete_notify(window, kind, mode, serial, ust, crtc_msc - vblank->msc_offset);
+    }
+}
+
+static void
+present_pixmap_idle(PixmapPtr pixmap, WindowPtr window, CARD32 serial, struct present_fence *present_fence)
+{
+    present_fence_set_triggered(present_fence);
+    present_send_idle_notify(window, serial, pixmap, present_fence);
+}
+
+RRCrtcPtr
+present_get_crtc(WindowPtr window)
+{
+    ScreenPtr                   screen = window->drawable.pScreen;
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+
+    if (!screen_priv)
+        return NULL;
+
+    if (!screen_priv->info)
+        return NULL;
+
+    return (*screen_priv->info->get_crtc)(window);
+}
+
+uint32_t
+present_query_capabilities(RRCrtcPtr crtc)
+{
+    present_screen_priv_ptr     screen_priv;
+
+    if (!crtc)
+        return 0;
+
+    screen_priv = present_screen_priv(crtc->pScreen);
+
+    if (!screen_priv)
+        return 0;
+
+    if (!screen_priv->info)
+        return 0;
+
+    return screen_priv->info->capabilities;
+}
+
+static int
+present_get_ust_msc(WindowPtr window, RRCrtcPtr crtc, uint64_t *ust, uint64_t *msc)
+{
+    ScreenPtr                   screen = window->drawable.pScreen;
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+
+    if (crtc == NULL)
+        return present_fake_get_ust_msc(screen, ust, msc);
+    else
+        return (*screen_priv->info->get_ust_msc)(crtc, ust, msc);
+}
+
+static void
+present_flush(WindowPtr window)
+{
+    ScreenPtr                   screen = window->drawable.pScreen;
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+
+    if (!screen_priv)
+        return;
+
+    if (!screen_priv->info)
+        return;
+
+    (*screen_priv->info->flush) (window);
+}
+
+static int
+present_queue_vblank(ScreenPtr screen,
+                     RRCrtcPtr crtc,
+                     uint64_t event_id,
+                     uint64_t msc)
+{
+    Bool                        ret;
+
+    if (crtc == NULL)
+        ret = present_fake_queue_vblank(screen, event_id, msc);
+    else
+    {
+        present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+        ret = (*screen_priv->info->queue_vblank) (crtc, event_id, msc);
+    }
+    return ret;
+}
+
+static uint64_t
+present_window_to_crtc_msc(WindowPtr window, RRCrtcPtr crtc, uint64_t window_msc, uint64_t new_msc)
+{
+    present_window_priv_ptr     window_priv = present_get_window_priv(window, TRUE);
+
+    if (crtc != window_priv->crtc) {
+        uint64_t        old_ust, old_msc;
+
+        /* The old CRTC may have been turned off, in which case
+         * we'll just use whatever previous MSC we'd seen from this CRTC
+         */
+
+        if (present_get_ust_msc(window, window_priv->crtc, &old_ust, &old_msc) != Success)
+            old_msc = window_priv->msc;
+
+        window_priv->msc_offset += new_msc - old_msc;
+        window_priv->crtc = crtc;
+    }
+
+    return window_msc + window_priv->msc_offset;
+}
+
+static void
+present_flip_idle(ScreenPtr screen)
+{
+    present_screen_priv_ptr screen_priv = present_screen_priv(screen);
+
+    if (screen_priv->flip_pixmap) {
+        present_pixmap_idle(screen_priv->flip_pixmap, screen_priv->flip_window,
+                            screen_priv->flip_serial, screen_priv->flip_idle_fence);
+        present_fence_destroy(screen_priv->flip_idle_fence);
+        dixDestroyPixmap(screen_priv->flip_pixmap, screen_priv->flip_pixmap->drawable.id);
+        screen_priv->flip_crtc = NULL;
+        screen_priv->flip_window = NULL;
+        screen_priv->flip_serial = 0;
+        screen_priv->flip_pixmap = NULL;
+        screen_priv->flip_idle_fence = NULL;
+    }
+}
+
+static void
+present_unflip(ScreenPtr screen)
+{
+    present_screen_priv_ptr screen_priv = present_screen_priv(screen);
+
+    assert (!screen_priv->unflip_event_id);
+    assert (!screen_priv->flip_pending);
+
+    /* Update the screen pixmap with the current flip pixmap contents
+     */
+    if (screen_priv->flip_pixmap) {
+        present_copy_region(&screen->GetScreenPixmap(screen)->drawable,
+                            screen_priv->flip_pixmap,
+                            NULL, 0, 0);
+    }
+    screen_priv->unflip_event_id = ++present_event_id;
+    DebugPresent(("u %lld\n", screen_priv->unflip_event_id));
+    (*screen_priv->info->unflip) (screen, screen_priv->unflip_event_id);
+}
+
+static void
+present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc);
+
+static void
+present_flip_notify(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
+{
+    WindowPtr                   window = vblank->window;
+    ScreenPtr                   screen = window->drawable.pScreen;
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+
+    DebugPresent(("\tn %p %8lld: %08lx -> %08lx\n", vblank, vblank->target_msc,
+           vblank->pixmap ? vblank->pixmap->drawable.id : 0,
+                  vblank->window->drawable.id));
+
+    assert (vblank == screen_priv->flip_pending);
+
+    present_flip_idle(screen);
+
+    /* Transfer reference for pixmap and fence from vblank to screen_priv */
+    screen_priv->flip_crtc = vblank->crtc;
+    screen_priv->flip_window = vblank->window;
+    screen_priv->flip_serial = vblank->serial;
+    screen_priv->flip_pixmap = vblank->pixmap;
+    screen_priv->flip_idle_fence = vblank->idle_fence;
+
+    vblank->pixmap = NULL;
+    vblank->idle_fence = NULL;
+
+    screen_priv->flip_pending = NULL;
+
+    if (vblank->abort_flip)
+        present_unflip(screen);
+
+    if (!vblank->window_destroyed)
+        present_vblank_notify(vblank, PresentCompleteKindPixmap, PresentCompleteModeFlip, ust, crtc_msc);
+    present_vblank_destroy(vblank);
+}
+
+void
+present_event_notify(uint64_t event_id, uint64_t ust, uint64_t msc)
+{
+    present_vblank_ptr  vblank, tmp;
+    int                 s;
+
+    xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) {
+        if (vblank->event_id == event_id) {
+            xorg_list_del(&vblank->event_queue);
+            present_execute(vblank, ust, msc);
+            return;
+        }
+    }
+    xorg_list_for_each_entry_safe(vblank, tmp, &present_flip_queue, event_queue) {
+        if (vblank->event_id == event_id) {
+            xorg_list_del(&vblank->event_queue);
+            present_flip_notify(vblank, ust, msc);
+            return;
+        }
+    }
+
+    for (s = 0; s < screenInfo.numScreens; s++) {
+        ScreenPtr               screen = screenInfo.screens[s];
+        present_screen_priv_ptr screen_priv = present_screen_priv(screen);
+
+        if (event_id == screen_priv->unflip_event_id) {
+            DebugPresent(("\tun %lld\n", event_id));
+            screen_priv->unflip_event_id = 0;
+            present_flip_idle(screen);
+        }
+    }
+}
+
+/*
+ * 'window' is being reconfigured. Check to see if it is involved
+ * in flipping and clean up as necessary
+ */
+void
+present_check_flip_window (WindowPtr window)
+{
+    ScreenPtr                   screen = window->drawable.pScreen;
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+    present_window_priv_ptr     window_priv = present_window_priv(window);
+    present_vblank_ptr          flip_pending = screen_priv->flip_pending;
+    present_vblank_ptr          vblank;
+
+    /* If this window hasn't ever been used with Present, it can't be
+     * flipping
+     */
+    if (!window_priv)
+        return;
+
+    if (screen_priv->unflip_event_id)
+        return;
+
+    if (flip_pending) {
+        /*
+         * Check pending flip
+         */
+        if (flip_pending->window == window) {
+            if (!present_check_flip(flip_pending->crtc, window, flip_pending->pixmap,
+                                    flip_pending->sync_flip, NULL, 0, 0))
+                flip_pending->abort_flip = TRUE;
+        }
+    } else {
+        /*
+         * Check current flip
+         */
+        if (window == screen_priv->flip_window) {
+            if (!present_check_flip(screen_priv->flip_crtc, window, screen_priv->flip_pixmap, FALSE, NULL, 0, 0))
+                present_unflip(screen);
+        }
+    }
+
+    /* Now check any queued vblanks */
+    xorg_list_for_each_entry(vblank, &window_priv->vblank, window_list) {
+        if (vblank->flip && !present_check_flip(vblank->crtc, window, vblank->pixmap, FALSE, NULL, 0, 0))
+            vblank->flip = FALSE;
+    }
+}
+
+/*
+ * Once the required MSC has been reached, execute the pending request.
+ *
+ * For requests to actually present something, either blt contents to
+ * the screen or queue a frame buffer swap.
+ *
+ * For requests to just get the current MSC/UST combo, skip that part and
+ * go straight to event delivery
+ */
+
+static void
+present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
+{
+    WindowPtr                   window = vblank->window;
+    present_screen_priv_ptr     screen_priv = present_screen_priv(window->drawable.pScreen);
+
+    if (vblank->wait_fence) {
+        /* XXX check fence, queue if not ready */
+    }
+
+    xorg_list_del(&vblank->event_queue);
+    if (vblank->pixmap) {
+
+        if (vblank->flip && screen_priv->flip_pending == NULL && !screen_priv->unflip_event_id) {
+
+            DebugPresent(("\tf %p %8lld: %08lx -> %08lx\n", vblank, crtc_msc, vblank->pixmap->drawable.id, vblank->window->drawable.id));
+            /* Prepare to flip by removing from the window/screen lists
+             * and sticking it into the flip_pending field
+             */
+            screen_priv->flip_pending = vblank;
+            xorg_list_del(&vblank->window_list);
+
+            xorg_list_add(&vblank->event_queue, &present_flip_queue);
+            /* Try to flip
+             */
+            if (present_flip(vblank->crtc, vblank->event_id, vblank->target_msc, vblank->pixmap, vblank->sync_flip))
+                return;
+
+            xorg_list_del(&vblank->event_queue);
+            /* Oops, flip failed. Clear the flip_pending field
+              */
+            screen_priv->flip_pending = NULL;
+            vblank->flip = FALSE;
+        }
+        DebugPresent(("\tc %p %8lld: %08lx -> %08lx\n", vblank, crtc_msc, vblank->pixmap->drawable.id, vblank->window->drawable.id));
+        if (screen_priv->flip_pending) {
+
+            /* Check pending flip
+             */
+            if (window == screen_priv->flip_pending->window)
+                screen_priv->flip_pending->abort_flip = TRUE;
+        } else if (!screen_priv->unflip_event_id) {
+
+            /* Check current flip
+             */
+            if (window == screen_priv->flip_window)
+                present_unflip(window->drawable.pScreen);
+        }
+        present_copy_region(&window->drawable, vblank->pixmap, vblank->update, vblank->x_off, vblank->y_off);
+
+        /* present_copy_region sticks the region into a scratch GC,
+         * which is then freed, freeing the region
+         */
+        vblank->update = NULL;
+        present_flush(window);
+
+        present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
+    }
+    present_vblank_notify(vblank, vblank->kind, PresentCompleteModeCopy, ust, crtc_msc);
+    present_vblank_destroy(vblank);
+}
+
+int
+present_pixmap(WindowPtr window,
+               PixmapPtr pixmap,
+               CARD32 serial,
+               RegionPtr valid,
+               RegionPtr update,
+               int16_t x_off,
+               int16_t y_off,
+               RRCrtcPtr target_crtc,
+               SyncFence *wait_fence,
+               SyncFence *idle_fence,
+               uint32_t options,
+               uint64_t window_msc,
+               uint64_t divisor,
+               uint64_t remainder,
+               present_notify_ptr notifies,
+               int num_notifies)
+{
+    uint64_t                    ust;
+    uint64_t                    target_msc;
+    uint64_t                    crtc_msc;
+    int                         ret;
+    present_vblank_ptr          vblank;
+    ScreenPtr                   screen = window->drawable.pScreen;
+    present_window_priv_ptr     window_priv = present_get_window_priv(window, TRUE);
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+
+    if (!window_priv)
+        return BadAlloc;
+
+    if (!target_crtc) {
+        /* Update the CRTC if we have a pixmap or we don't have a CRTC
+         */
+        if (!pixmap)
+            target_crtc = window_priv->crtc;
+
+        if (!target_crtc)
+            target_crtc = present_get_crtc(window);
+    }
+
+    present_get_ust_msc(window, target_crtc, &ust, &crtc_msc);
+
+    target_msc = present_window_to_crtc_msc(window, target_crtc, window_msc, crtc_msc);
+
+    /* Stash the current MSC away in case we need it later
+     */
+    window_priv->msc = crtc_msc;
+
+    /* Adjust target_msc to match modulus
+     */
+    if (crtc_msc >= target_msc) {
+        if (divisor != 0) {
+            target_msc = crtc_msc - (crtc_msc % divisor) + remainder;
+            if (target_msc <= crtc_msc)
+                target_msc += divisor;
+        } else
+            target_msc = crtc_msc;
+    }
+
+    /*
+     * Look for a matching presentation already on the list and
+     * don't bother doing the previous one if this one will overwrite it
+     * in the same frame
+     */
+
+    if (!update) {
+        xorg_list_for_each_entry(vblank, &window_priv->vblank, window_list) {
+
+            if (!vblank->pixmap)
+                continue;
+
+            if (vblank->crtc != target_crtc || vblank->target_msc != target_msc)
+                continue;
+
+            present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
+            present_fence_destroy(vblank->idle_fence);
+            dixDestroyPixmap(vblank->pixmap, vblank->pixmap->drawable.id);
+
+            vblank->pixmap = NULL;
+            vblank->idle_fence = NULL;
+        }
+    }
+
+    vblank = calloc (1, sizeof (present_vblank_rec));
+    if (!vblank)
+        return BadAlloc;
+
+    xorg_list_append(&vblank->window_list, &window_priv->vblank);
+    xorg_list_init(&vblank->event_queue);
+
+    vblank->screen = screen;
+    vblank->window = window;
+    vblank->pixmap = pixmap;
+    vblank->event_id = ++present_event_id;
+    if (pixmap) {
+        vblank->kind = PresentCompleteKindPixmap;
+        pixmap->refcnt++;
+    } else
+        vblank->kind = PresentCompleteKindNotifyMSC;
+
+    vblank->serial = serial;
+
+    if (valid) {
+        vblank->valid = RegionDuplicate(valid);
+        if (!vblank->valid)
+            goto no_mem;
+    }
+    if (update) {
+        vblank->update = RegionDuplicate(update);
+        if (!vblank->update)
+            goto no_mem;
+    }
+
+    vblank->x_off = x_off;
+    vblank->y_off = y_off;
+    vblank->target_msc = target_msc;
+    vblank->crtc = target_crtc;
+    vblank->msc_offset = window_priv->msc_offset;
+    vblank->notifies = notifies;
+    vblank->num_notifies = num_notifies;
+
+    if (!screen_priv->info || !(screen_priv->info->capabilities & PresentCapabilityAsync))
+        vblank->sync_flip = TRUE;
+
+    if (pixmap && present_check_flip (target_crtc, window, pixmap, vblank->sync_flip, valid, x_off, y_off)) {
+        vblank->flip = TRUE;
+        if (vblank->sync_flip)
+            target_msc--;
+    }
+
+    if (idle_fence) {
+        vblank->idle_fence = present_fence_create(idle_fence);
+        if (!vblank->idle_fence)
+            goto no_mem;
+    }
+
+    if (pixmap)
+        DebugPresent(("q %p %8lld: %08lx -> %08lx (crtc %d)\n",
+                      vblank, target_msc, vblank->pixmap->drawable.id, vblank->window->drawable.id, target_crtc ? 1 : 0));
+
+    xorg_list_add(&vblank->event_queue, &present_exec_queue);
+    if (target_msc >= crtc_msc) {
+        ret = present_queue_vblank(screen, target_crtc, vblank->event_id, target_msc);
+        if (ret != Success) {
+            xorg_list_del(&vblank->event_queue);
+            goto failure;
+        }
+    } else
+        present_execute(vblank, ust, crtc_msc);
+
+    return Success;
+
+no_mem:
+    ret = BadAlloc;
+failure:
+    vblank->notifies = NULL;
+    present_vblank_destroy(vblank);
+    return ret;
+}
+
+void
+present_abort_vblank(ScreenPtr screen, RRCrtcPtr crtc, uint64_t event_id, uint64_t msc)
+{
+    present_vblank_ptr  vblank, tmp;
+
+    if (crtc == NULL)
+        present_fake_abort_vblank(screen, event_id, msc);
+    else
+    {
+        present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+
+        (*screen_priv->info->abort_vblank) (crtc, event_id, msc);
+    }
+
+    xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) {
+        if (vblank->event_id == event_id) {
+            xorg_list_del(&vblank->event_queue);
+            return;
+        }
+    }
+    xorg_list_for_each_entry_safe(vblank, tmp, &present_flip_queue, event_queue) {
+        if (vblank->event_id == event_id) {
+            xorg_list_del(&vblank->event_queue);
+            return;
+        }
+    }
+}
+
+int
+present_notify_msc(WindowPtr window,
+                   CARD32 serial,
+                   uint64_t target_msc,
+                   uint64_t divisor,
+                   uint64_t remainder)
+{
+    return present_pixmap(window,
+                          NULL,
+                          serial,
+                          NULL, NULL,
+                          0, 0,
+                          NULL,
+                          NULL, NULL,
+                          0,
+                          target_msc, divisor, remainder, NULL, 0);
+}
+
+void
+present_flip_destroy(ScreenPtr screen)
+{
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+
+    /* XXX this needs to be synchronous for server reset */
+
+    /* Do the actual cleanup once the flip has been performed by the hardware */
+    if (screen_priv->flip_pending)
+        screen_priv->flip_pending->abort_flip = TRUE;
+}
+
+void
+present_vblank_destroy(present_vblank_ptr vblank)
+{
+    /* Remove vblank from window and screen lists */
+    xorg_list_del(&vblank->window_list);
+
+    DebugPresent(("\td %p %8lld: %08lx -> %08lx\n", vblank, vblank->target_msc,
+                  vblank->pixmap ? vblank->pixmap->drawable.id : 0,
+                  vblank->window->drawable.id));
+
+    /* Drop pixmap reference */
+    if (vblank->pixmap)
+        dixDestroyPixmap(vblank->pixmap, vblank->pixmap->drawable.id);
+
+    /* Free regions */
+    if (vblank->valid)
+        RegionDestroy(vblank->valid);
+    if (vblank->update)
+        RegionDestroy(vblank->update);
+
+    if (vblank->idle_fence)
+        present_fence_destroy(vblank->idle_fence);
+
+    if (vblank->notifies)
+        present_destroy_notifies(vblank->notifies, vblank->num_notifies);
+
+    free(vblank);
+}
+
+Bool
+present_init(void)
+{
+    xorg_list_init(&present_exec_queue);
+    xorg_list_init(&present_flip_queue);
+    present_fake_queue_init();
+    return TRUE;
+}
diff --git a/present/present.h b/present/present.h
new file mode 100644
index 0000000..6a451fb
--- /dev/null
+++ b/present/present.h
@@ -0,0 +1,118 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _PRESENT_H_
+#define _PRESENT_H_
+
+#include <X11/extensions/presentproto.h>
+#include "randrstr.h"
+#include "presentext.h"
+
+typedef struct present_vblank present_vblank_rec, *present_vblank_ptr;
+
+/* Return the current CRTC for 'window'.
+ */
+typedef RRCrtcPtr (*present_get_crtc_ptr) (WindowPtr window);
+
+/* Return the current ust/msc for 'crtc'
+ */
+typedef int (*present_get_ust_msc_ptr) (RRCrtcPtr crtc, uint64_t *ust, uint64_t *msc);
+
+/* Queue callback on 'crtc' for time 'msc'. Call present_event_notify with 'event_id'
+ * at or after 'msc'. Return false if it didn't happen (which might occur if 'crtc'
+ * is not currently generating vblanks).
+ */
+typedef Bool (*present_queue_vblank_ptr) (RRCrtcPtr crtc,
+                                          uint64_t event_id,
+                                          uint64_t msc);
+
+/* Abort pending vblank. The extension is no longer interested in
+ * 'event_id' which was to be notified at 'msc'. If possible, the
+ * driver is free to de-queue the notification.
+ */
+typedef void (*present_abort_vblank_ptr) (RRCrtcPtr crtc, uint64_t event_id, uint64_t msc);
+
+/* Flush pending drawing on 'window' to the hardware.
+ */
+typedef void (*present_flush_ptr) (WindowPtr window);
+
+/* Check if 'pixmap' is suitable for flipping to 'window'.
+ */
+typedef Bool (*present_check_flip_ptr) (RRCrtcPtr crtc, WindowPtr window, PixmapPtr pixmap, Bool sync_flip);
+
+/* Flip pixmap, return false if it didn't happen.
+ *
+ * 'crtc' is to be used for any necessary synchronization.
+ *
+ * 'sync_flip' requests that the flip be performed at the next
+ * vertical blank interval to avoid tearing artifacts. If false, the
+ * flip should be performed as soon as possible.
+ *
+ * present_event_notify should be called with 'event_id' when the flip
+ * occurs
+ */
+typedef Bool (*present_flip_ptr) (RRCrtcPtr crtc,
+                                  uint64_t event_id,
+                                  uint64_t target_msc,
+                                  PixmapPtr pixmap,
+                                  Bool sync_flip);
+
+/* "unflip" back to the regular screen scanout buffer
+ *
+ * present_event_notify should be called with 'event_id' when the unflip occurs.
+ */
+typedef void (*present_unflip_ptr) (ScreenPtr screen,
+                                    uint64_t event_id);
+
+#define PRESENT_SCREEN_INFO_VERSION        0
+
+typedef struct present_screen_info {
+    uint32_t                            version;
+
+    present_get_crtc_ptr                get_crtc;
+    present_get_ust_msc_ptr             get_ust_msc;
+    present_queue_vblank_ptr            queue_vblank;
+    present_abort_vblank_ptr            abort_vblank;
+    present_flush_ptr                   flush;
+    uint32_t                            capabilities;
+    present_check_flip_ptr              check_flip;
+    present_flip_ptr                    flip;
+    present_unflip_ptr                  unflip;
+
+} present_screen_info_rec, *present_screen_info_ptr;
+
+/*
+ * Called when 'event_id' occurs. 'ust' and 'msc' indicate when the
+ * event actually happened
+ */
+extern _X_EXPORT void
+present_event_notify(uint64_t event_id, uint64_t ust, uint64_t msc);
+
+/* 'crtc' has been turned off, so any pending events will never occur.
+ */
+extern _X_EXPORT void
+present_event_abandon(RRCrtcPtr crtc);
+
+extern _X_EXPORT Bool
+present_screen_init(ScreenPtr screen, present_screen_info_ptr info);
+
+#endif /* _PRESENT_H_ */
diff --git a/present/present_event.c b/present/present_event.c
new file mode 100644
index 0000000..a30bc82
--- /dev/null
+++ b/present/present_event.c
@@ -0,0 +1,239 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "present_priv.h"
+
+#include "present_priv.h"
+
+RESTYPE present_event_type;
+
+static int
+present_free_event(pointer data, XID id)
+{
+    present_event_ptr present_event = (present_event_ptr) data;
+    present_window_priv_ptr window_priv = present_window_priv(present_event->window);
+    present_event_ptr *previous, current;
+
+    for (previous = &window_priv->events; (current = *previous); previous = &current->next) {
+        if (current == present_event) {
+            *previous = present_event->next;
+            break;
+        }
+    }
+    free((pointer) present_event);
+    return 1;
+
+}
+
+void
+present_free_events(WindowPtr window)
+{
+    present_window_priv_ptr window_priv = present_window_priv(window);
+    present_event_ptr event;
+
+    if (!window_priv)
+        return;
+
+    while ((event = window_priv->events))
+        FreeResource(event->id, RT_NONE);
+}
+
+static void
+present_event_swap(xGenericEvent *from, xGenericEvent *to)
+{
+    *to = *from;
+    swaps(&to->sequenceNumber);
+    swapl(&to->length);
+    swaps(&to->evtype);
+    switch (from->evtype) {
+    case PresentConfigureNotify: {
+        xPresentConfigureNotify *c = (xPresentConfigureNotify *) to;
+
+        swapl(&c->eid);
+        swapl(&c->window);
+        swaps(&c->x);
+        swaps(&c->y);
+        swaps(&c->width);
+        swaps(&c->height);
+        swaps(&c->off_x);
+        swaps(&c->off_y);
+        swaps(&c->pixmap_width);
+        swaps(&c->pixmap_height);
+        swapl(&c->pixmap_flags);
+        break;
+    }
+    case PresentCompleteNotify:
+    {
+        xPresentCompleteNotify *c = (xPresentCompleteNotify *) to;
+        swapl(&c->eid);
+        swapl(&c->window);
+        swapl(&c->serial);
+        swapll(&c->ust);
+        swapll(&c->msc);
+    }
+    case PresentIdleNotify:
+    {
+        xPresentIdleNotify *c = (xPresentIdleNotify *) to;
+        swapl(&c->eid);
+        swapl(&c->window);
+        swapl(&c->serial);
+        swapl(&c->idle_fence);
+    }
+    }
+}
+
+void
+present_send_config_notify(WindowPtr window, int x, int y, int w, int h, int bw, WindowPtr sibling)
+{
+    present_window_priv_ptr window_priv = present_window_priv(window);
+
+    if (window_priv) {
+        xPresentConfigureNotify cn = {
+            .type = GenericEvent,
+            .extension = present_request,
+            .length = (sizeof(xPresentConfigureNotify) - 32) >> 2,
+            .evtype = PresentConfigureNotify,
+            .eid = 0,
+            .window = window->drawable.id,
+            .x = x,
+            .y = y,
+            .width = w,
+            .height = h,
+            .off_x = 0,
+            .off_y = 0,
+            .pixmap_width = w,
+            .pixmap_height = h,
+            .pixmap_flags = 0
+        };
+        present_event_ptr event;
+
+        for (event = window_priv->events; event; event = event->next) {
+            if (event->mask & (1 << PresentConfigureNotify)) {
+                cn.eid = event->id;
+                WriteEventsToClient(event->client, 1, (xEvent *) &cn);
+            }
+        }
+    }
+}
+
+void
+present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 serial, uint64_t ust, uint64_t msc)
+{
+    present_window_priv_ptr window_priv = present_window_priv(window);
+
+    if (window_priv) {
+        xPresentCompleteNotify cn = {
+            .type = GenericEvent,
+            .extension = present_request,
+            .length = (sizeof(xPresentCompleteNotify) - 32) >> 2,
+            .evtype = PresentCompleteNotify,
+            .kind = kind,
+            .mode = mode,
+            .eid = 0,
+            .window = window->drawable.id,
+            .serial = serial,
+            .ust = ust,
+            .msc = msc,
+        };
+        present_event_ptr event;
+
+        for (event = window_priv->events; event; event = event->next) {
+            if (event->mask & PresentCompleteNotifyMask) {
+                cn.eid = event->id;
+                WriteEventsToClient(event->client, 1, (xEvent *) &cn);
+            }
+        }
+    }
+}
+
+void
+present_send_idle_notify(WindowPtr window, CARD32 serial, PixmapPtr pixmap, struct present_fence *idle_fence)
+{
+    present_window_priv_ptr window_priv = present_window_priv(window);
+
+    if (window_priv) {
+        xPresentIdleNotify in = {
+            .type = GenericEvent,
+            .extension = present_request,
+            .length = (sizeof(xPresentIdleNotify) - 32) >> 2,
+            .evtype = PresentIdleNotify,
+            .eid = 0,
+            .window = window->drawable.id,
+            .serial = serial,
+            .pixmap = pixmap->drawable.id,
+            .idle_fence = present_fence_id(idle_fence)
+        };
+        present_event_ptr event;
+
+        for (event = window_priv->events; event; event = event->next) {
+            if (event->mask & PresentIdleNotifyMask) {
+                in.eid = event->id;
+                WriteEventsToClient(event->client, 1, (xEvent *) &in);
+            }
+        }
+    }
+}
+
+int
+present_select_input(ClientPtr client, XID eid, WindowPtr window, CARD32 mask)
+{
+    present_window_priv_ptr window_priv = present_get_window_priv(window, mask != 0);
+    present_event_ptr event;
+
+    if (!window_priv) {
+        if (mask)
+            return BadAlloc;
+        return Success;
+    }
+
+    event = calloc (1, sizeof (present_event_rec));
+    if (!event)
+        return BadAlloc;
+
+    event->client = client;
+    event->window = window;
+    event->id = eid;
+    event->mask = mask;
+
+    event->next = window_priv->events;
+    window_priv->events = event;
+
+    if (!AddResource(event->id, present_event_type, (pointer) event))
+        return BadAlloc;
+
+    return Success;
+}
+
+Bool
+present_event_init(void)
+{
+    present_event_type = CreateNewResourceType(present_free_event, "PresentEvent");
+    if (!present_event_type)
+        return FALSE;
+
+    GERegisterExtension(present_request, present_event_swap);
+    return TRUE;
+}
diff --git a/present/present_fake.c b/present/present_fake.c
new file mode 100644
index 0000000..a677592
--- /dev/null
+++ b/present/present_fake.c
@@ -0,0 +1,140 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "present_priv.h"
+#include "list.h"
+
+static struct xorg_list fake_vblank_queue;
+
+typedef struct present_fake_vblank {
+    struct xorg_list            list;
+    uint64_t                    event_id;
+    OsTimerPtr                  timer;
+    ScreenPtr                   screen;
+} present_fake_vblank_rec, *present_fake_vblank_ptr;
+
+int
+present_fake_get_ust_msc(ScreenPtr screen, uint64_t *ust, uint64_t *msc)
+{
+    present_screen_priv_ptr screen_priv = present_screen_priv(screen);
+
+    *ust = GetTimeInMicros();
+    *msc = *ust / screen_priv->fake_interval;
+    return Success;
+}
+
+static void
+present_fake_notify(ScreenPtr screen, uint64_t event_id)
+{
+    uint64_t                    ust, msc;
+
+    present_fake_get_ust_msc(screen, &ust, &msc);
+    present_event_notify(event_id, ust, msc);
+}
+
+static CARD32
+present_fake_do_timer(OsTimerPtr timer,
+                      CARD32 time,
+                      pointer arg)
+{
+    present_fake_vblank_ptr     fake_vblank = arg;
+
+    present_fake_notify(fake_vblank->screen, fake_vblank->event_id);
+    xorg_list_del(&fake_vblank->list);
+    free(fake_vblank);
+    return 0;
+}
+
+void
+present_fake_abort_vblank(ScreenPtr screen, uint64_t event_id, uint64_t msc)
+{
+    present_fake_vblank_ptr     fake_vblank, tmp;
+
+    xorg_list_for_each_entry_safe(fake_vblank, tmp, &fake_vblank_queue, list) {
+        if (fake_vblank->event_id == event_id) {
+            TimerCancel(fake_vblank->timer);
+            xorg_list_del(&fake_vblank->list);
+            free (fake_vblank);
+            break;
+        }
+    }
+}
+
+int
+present_fake_queue_vblank(ScreenPtr     screen,
+                          uint64_t      event_id,
+                          uint64_t      msc)
+{
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+    uint64_t                    ust = msc * screen_priv->fake_interval;
+    uint64_t                    now = GetTimeInMicros();
+    INT32                       delay = ((int64_t) (ust - now)) / 1000;
+    present_fake_vblank_ptr     fake_vblank;
+
+    if (delay <= 0) {
+        present_fake_notify(screen, event_id);
+        return Success;
+    }
+
+    fake_vblank = calloc (1, sizeof (present_fake_vblank_rec));
+    if (!fake_vblank)
+        return BadAlloc;
+
+    fake_vblank->screen = screen;
+    fake_vblank->event_id = event_id;
+    fake_vblank->timer = TimerSet(NULL, 0, delay, present_fake_do_timer, fake_vblank);
+    if (!fake_vblank->timer) {
+        free(fake_vblank);
+        return BadAlloc;
+    }
+
+    xorg_list_add(&fake_vblank->list, &fake_vblank_queue);
+
+    return Success;
+}
+
+void
+present_fake_screen_init(ScreenPtr screen)
+{
+    present_screen_priv_ptr screen_priv = present_screen_priv(screen);
+
+    /* For screens with hardware vblank support, the fake code
+     * will be used for off-screen windows and while screens are blanked,
+     * in which case we want a slow interval here
+     *
+     * Otherwise, pretend that the screen runs at 60Hz
+     */
+    if (screen_priv->info && screen_priv->info->get_crtc)
+        screen_priv->fake_interval = 1000000;
+    else
+        screen_priv->fake_interval = 16667;
+}
+
+void
+present_fake_queue_init(void)
+{
+    xorg_list_init(&fake_vblank_queue);
+}
diff --git a/present/present_fence.c b/present/present_fence.c
new file mode 100644
index 0000000..db5efca
--- /dev/null
+++ b/present/present_fence.c
@@ -0,0 +1,112 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "present_priv.h"
+#include <gcstruct.h>
+#include <misync.h>
+#include <misyncstr.h>
+
+/*
+ * Wraps SyncFence objects so we can add a SyncTrigger to find out
+ * when the SyncFence gets destroyed and clean up appropriately
+ */
+
+struct present_fence {
+    SyncTrigger         trigger;
+    SyncFence           *fence;
+};
+
+/*
+ * SyncTrigger callbacks
+ */
+static Bool
+present_fence_sync_check_trigger(SyncTrigger *trigger, XSyncValue oldval)
+{
+    return FALSE;
+}
+
+static void
+present_fence_sync_trigger_fired(SyncTrigger *trigger)
+{
+}
+
+static void
+present_fence_sync_counter_destroyed(SyncTrigger *trigger)
+{
+    struct present_fence        *present_fence = container_of(trigger, struct present_fence, trigger);
+
+    present_fence->fence = NULL;
+}
+
+struct present_fence *
+present_fence_create(SyncFence *fence)
+{
+    struct present_fence        *present_fence;
+
+    present_fence = calloc (1, sizeof (struct present_fence));
+    if (!present_fence)
+        return NULL;
+
+    present_fence->fence = fence;
+    present_fence->trigger.pSync = (SyncObject *) fence;
+    present_fence->trigger.CheckTrigger = present_fence_sync_check_trigger;
+    present_fence->trigger.TriggerFired = present_fence_sync_trigger_fired;
+    present_fence->trigger.CounterDestroyed = present_fence_sync_counter_destroyed;
+
+    if (SyncAddTriggerToSyncObject(&present_fence->trigger) != Success) {
+        free (present_fence);
+        return NULL;
+    }
+    return present_fence;
+}
+
+void
+present_fence_destroy(struct present_fence *present_fence)
+{
+    if (present_fence) {
+        if (present_fence->fence)
+            SyncDeleteTriggerFromSyncObject(&present_fence->trigger);
+        free(present_fence);
+    }
+}
+
+void
+present_fence_set_triggered(struct present_fence *present_fence)
+{
+    if (present_fence)
+        if (present_fence->fence)
+            (*present_fence->fence->funcs.SetTriggered) (present_fence->fence);
+}
+
+XID
+present_fence_id(struct present_fence *present_fence)
+{
+    if (!present_fence)
+        return None;
+    if (!present_fence->fence)
+        return None;
+    return present_fence->fence->sync.id;
+}
diff --git a/present/present_notify.c b/present/present_notify.c
new file mode 100644
index 0000000..e272e08
--- /dev/null
+++ b/present/present_notify.c
@@ -0,0 +1,114 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "present_priv.h"
+
+/*
+ * Mark all pending notifies for 'window' as invalid when
+ * the window is destroyed
+ */
+
+void
+present_clear_window_notifies(WindowPtr window)
+{
+    present_notify_ptr          notify;
+    present_window_priv_ptr     window_priv = present_window_priv(window);
+
+    if (!window_priv)
+        return;
+
+    xorg_list_for_each_entry(notify, &window_priv->notifies, window_list) {
+        notify->window = NULL;
+    }
+}
+
+/*
+ * 'notify' is being freed; remove it from the window's notify list
+ */
+
+void
+present_free_window_notify(present_notify_ptr notify)
+{
+    xorg_list_del(&notify->window_list);
+}
+
+/*
+ * 'notify' is new; add it to the specified window
+ */
+
+int
+present_add_window_notify(present_notify_ptr notify)
+{
+    WindowPtr                   window = notify->window;
+    present_window_priv_ptr     window_priv = present_get_window_priv(window, TRUE);
+
+    if (!window_priv)
+        return BadAlloc;
+
+    xorg_list_add(&notify->window_list, &window_priv->notifies);
+    return Success;
+}
+
+int
+present_create_notifies(ClientPtr client, int num_notifies, xPresentNotify *x_notifies, present_notify_ptr *p_notifies)
+{
+    present_notify_ptr  notifies;
+    int                 i;
+    int                 added = 0;
+    int                 status;
+
+    notifies = calloc (num_notifies, sizeof (present_notify_rec));
+    if (!notifies)
+        return BadAlloc;
+
+    for (i = 0; i < num_notifies; i++) {
+        status = dixLookupWindow(&notifies[i].window, x_notifies[i].window, client, DixGetAttrAccess);
+        if (status != Success)
+            goto bail;
+
+        notifies[i].serial = x_notifies[i].serial;
+        status = present_add_window_notify(&notifies[i]);
+        if (status != Success)
+            goto bail;
+
+        added = i;
+    }
+    return Success;
+
+bail:
+    present_destroy_notifies(notifies, added);
+    return status;
+}
+
+void
+present_destroy_notifies(present_notify_ptr notifies, int num_notifies)
+{
+    int i;
+    for (i = 0; i < num_notifies; i++)
+        present_free_window_notify(&notifies[i]);
+
+    free(notifies);
+}
diff --git a/present/present_priv.h b/present/present_priv.h
new file mode 100644
index 0000000..a92b62a
--- /dev/null
+++ b/present/present_priv.h
@@ -0,0 +1,288 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _PRESENT_PRIV_H_
+#define _PRESENT_PRIV_H_
+
+#include <X11/X.h>
+#include "scrnintstr.h"
+#include "misc.h"
+#include "list.h"
+#include "windowstr.h"
+#include "dixstruct.h"
+#include "present.h"
+#include <syncsdk.h>
+#include <syncsrv.h>
+#include <xfixes.h>
+#include <randrstr.h>
+
+extern int present_request;
+
+extern DevPrivateKeyRec present_screen_private_key;
+
+typedef struct present_fence *present_fence_ptr;
+
+typedef struct present_notify present_notify_rec, *present_notify_ptr;
+
+struct present_notify {
+    struct xorg_list    window_list;
+    WindowPtr           window;
+    CARD32              serial;
+};
+
+struct present_vblank {
+    struct xorg_list    window_list;
+    struct xorg_list    event_queue;
+    ScreenPtr           screen;
+    WindowPtr           window;
+    PixmapPtr           pixmap;
+    RegionPtr           valid;
+    RegionPtr           update;
+    RRCrtcPtr           crtc;
+    uint32_t            serial;
+    int16_t             x_off;
+    int16_t             y_off;
+    CARD16              kind;
+    uint64_t            event_id;
+    uint64_t            target_msc;
+    uint64_t            msc_offset;
+    present_fence_ptr   idle_fence;
+    present_fence_ptr   wait_fence;
+    present_notify_ptr  notifies;
+    int                 num_notifies;
+    Bool                flip;
+    Bool                sync_flip;
+    Bool                abort_flip;
+
+    Bool                window_destroyed;
+};
+
+typedef struct present_screen_priv {
+    CloseScreenProcPtr          CloseScreen;
+    ConfigNotifyProcPtr         ConfigNotify;
+    DestroyWindowProcPtr        DestroyWindow;
+    ClipNotifyProcPtr           ClipNotify;
+
+    present_vblank_ptr          flip_pending;
+    uint64_t                    unflip_event_id;
+
+    uint32_t                    fake_interval;
+
+    /* Currently active flipped pixmap and fence */
+    RRCrtcPtr                   flip_crtc;
+    WindowPtr                   flip_window;
+    uint32_t                    flip_serial;
+    PixmapPtr                   flip_pixmap;
+    present_fence_ptr           flip_idle_fence;
+
+    present_screen_info_ptr     info;
+} present_screen_priv_rec, *present_screen_priv_ptr;
+
+#define wrap(priv,real,mem,func) {\
+    priv->mem = real->mem; \
+    real->mem = func; \
+}
+
+#define unwrap(priv,real,mem) {\
+    real->mem = priv->mem; \
+}
+
+static inline present_screen_priv_ptr
+present_screen_priv(ScreenPtr screen)
+{
+    return (present_screen_priv_ptr)dixLookupPrivate(&(screen)->devPrivates, &present_screen_private_key);
+}
+
+/*
+ * Each window has a list of clients and event masks
+ */
+typedef struct present_event *present_event_ptr;
+
+typedef struct present_event {
+    present_event_ptr next;
+    ClientPtr client;
+    WindowPtr window;
+    XID id;
+    int mask;
+} present_event_rec;
+
+typedef struct present_window_priv {
+    present_event_ptr      events;
+    RRCrtcPtr              crtc;        /* Last reported CRTC from get_ust_msc */
+    uint64_t               msc_offset;
+    uint64_t               msc;         /* Last reported MSC from the current crtc */
+    struct xorg_list       vblank;
+    struct xorg_list       notifies;
+} present_window_priv_rec, *present_window_priv_ptr;
+
+extern DevPrivateKeyRec present_window_private_key;
+
+static inline present_window_priv_ptr
+present_window_priv(WindowPtr window)
+{
+    return (present_window_priv_ptr)dixGetPrivate(&(window)->devPrivates, &present_window_private_key);
+}
+
+present_window_priv_ptr
+present_get_window_priv(WindowPtr window, Bool create);
+
+extern RESTYPE present_event_type;
+
+/*
+ * present.c
+ */
+int
+present_pixmap(WindowPtr window,
+               PixmapPtr pixmap,
+               CARD32 serial,
+               RegionPtr valid,
+               RegionPtr update,
+               int16_t x_off,
+               int16_t y_off,
+               RRCrtcPtr target_crtc,
+               SyncFence *wait_fence,
+               SyncFence *idle_fence,
+               uint32_t options,
+               uint64_t target_msc,
+               uint64_t divisor,
+               uint64_t remainder,
+               present_notify_ptr notifies,
+               int num_notifies);
+
+int
+present_notify_msc(WindowPtr window,
+                   CARD32 serial,
+                   uint64_t target_msc,
+                   uint64_t divisor,
+                   uint64_t remainder);
+
+void
+present_abort_vblank(ScreenPtr screen, RRCrtcPtr crtc, uint64_t event_id, uint64_t msc);
+
+void
+present_vblank_destroy(present_vblank_ptr vblank);
+
+void
+present_flip_destroy(ScreenPtr screen);
+
+void
+present_check_flip_window(WindowPtr window);
+
+RRCrtcPtr
+present_get_crtc(WindowPtr window);
+
+uint32_t
+present_query_capabilities(RRCrtcPtr crtc);
+
+Bool
+present_init(void);
+
+/*
+ * present_event.c
+ */
+
+void
+present_free_events(WindowPtr window);
+
+void
+present_send_config_notify(WindowPtr window, int x, int y, int w, int h, int bw, WindowPtr sibling);
+
+void
+present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 serial, uint64_t ust, uint64_t msc);
+
+void
+present_send_idle_notify(WindowPtr window, CARD32 serial, PixmapPtr pixmap, present_fence_ptr idle_fence);
+
+int
+present_select_input(ClientPtr client,
+                     CARD32 eid,
+                     WindowPtr window,
+                     CARD32 event_mask);
+
+Bool
+present_event_init(void);
+
+/*
+ * present_fake.c
+ */
+int
+present_fake_get_ust_msc(ScreenPtr screen, uint64_t *ust, uint64_t *msc);
+
+int
+present_fake_queue_vblank(ScreenPtr screen, uint64_t event_id, uint64_t msc);
+
+void
+present_fake_abort_vblank(ScreenPtr screen, uint64_t event_id, uint64_t msc);
+
+void
+present_fake_screen_init(ScreenPtr screen);
+
+void
+present_fake_queue_init(void);
+
+/*
+ * present_fence.c
+ */
+struct present_fence *
+present_fence_create(SyncFence *sync_fence);
+
+void
+present_fence_destroy(struct present_fence *present_fence);
+
+void
+present_fence_set_triggered(struct present_fence *present_fence);
+
+XID
+present_fence_id(struct present_fence *present_fence);
+
+/*
+ * present_notify.c
+ */
+void
+present_clear_window_notifies(WindowPtr window);
+
+void
+present_free_window_notify(present_notify_ptr notify);
+
+int
+present_add_window_notify(present_notify_ptr notify);
+
+int
+present_create_notifies(ClientPtr client, int num_notifies, xPresentNotify *x_notifies, present_notify_ptr *p_notifies);
+
+void
+present_destroy_notifies(present_notify_ptr notifies, int num_notifies);
+
+/*
+ * present_request.c
+ */
+int
+proc_present_dispatch(ClientPtr client);
+
+int
+sproc_present_dispatch(ClientPtr client);
+
+/*
+ * present_screen.c
+ */
+
+#endif /*  _PRESENT_PRIV_H_ */
diff --git a/present/present_request.c b/present/present_request.c
new file mode 100644
index 0000000..095fa2d
--- /dev/null
+++ b/present/present_request.c
@@ -0,0 +1,330 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "present_priv.h"
+#include "randrstr.h"
+
+static int
+proc_present_query_version(ClientPtr client)
+{
+    REQUEST(xPresentQueryVersionReq);
+    xPresentQueryVersionReply rep = {
+        .type = X_Reply,
+        .sequenceNumber = client->sequence,
+        .length = 0,
+        .majorVersion = PRESENT_MAJOR,
+        .minorVersion = PRESENT_MINOR
+    };
+
+    REQUEST_SIZE_MATCH(xPresentQueryVersionReq);
+    (void) stuff;
+    if (client->swapped) {
+        swaps(&rep.sequenceNumber);
+        swapl(&rep.length);
+        swapl(&rep.majorVersion);
+        swapl(&rep.minorVersion);
+    }
+    WriteToClient(client, sizeof(rep), &rep);
+    return Success;
+}
+
+#define VERIFY_FENCE_OR_NONE(fence_ptr, fence_id, client, access) do {  \
+        if ((fence_id) == None)                                         \
+            (fence_ptr) = NULL;                                         \
+        else {                                                          \
+            int __rc__ = SyncVerifyFence(&fence_ptr, fence_id, client, access); \
+            if (__rc__ != Success)                                      \
+                return __rc__;                                          \
+        }                                                               \
+    } while (0)
+
+#define VERIFY_CRTC_OR_NONE(crtc_ptr, crtc_id, client, access) do {     \
+        if ((crtc_id) == None)                                          \
+            (crtc_ptr) = NULL;                                          \
+        else {                                                          \
+            VERIFY_RR_CRTC(crtc_id, crtc_ptr, access);                  \
+        }                                                               \
+    } while (0)
+
+static int
+proc_present_pixmap(ClientPtr client)
+{
+    REQUEST(xPresentPixmapReq);
+    WindowPtr           window;
+    PixmapPtr           pixmap;
+    RegionPtr           valid = NULL;
+    RegionPtr           update = NULL;
+    SyncFence           *wait_fence;
+    SyncFence           *idle_fence;
+    RRCrtcPtr           target_crtc;
+    int                 ret;
+    int                 nnotifies;
+    present_notify_ptr  notifies = NULL;
+
+    REQUEST_AT_LEAST_SIZE(xPresentPixmapReq);
+    ret = dixLookupWindow(&window, stuff->window, client, DixWriteAccess);
+    if (ret != Success)
+        return ret;
+    ret = dixLookupResourceByType((pointer *) &pixmap, stuff->pixmap, RT_PIXMAP, client, DixReadAccess);
+    if (ret != Success)
+        return ret;
+
+    if (window->drawable.depth != pixmap->drawable.depth)
+        return BadMatch;
+
+    VERIFY_REGION_OR_NONE(valid, stuff->valid, client, DixReadAccess);
+    VERIFY_REGION_OR_NONE(update, stuff->update, client, DixReadAccess);
+
+    VERIFY_CRTC_OR_NONE(target_crtc, stuff->target_crtc, client, DixReadAccess);
+
+    VERIFY_FENCE_OR_NONE(wait_fence, stuff->wait_fence, client, DixReadAccess);
+    VERIFY_FENCE_OR_NONE(idle_fence, stuff->idle_fence, client, DixWriteAccess);
+
+    if (stuff->options & ~(PresentAllOptions)) {
+        client->errorValue = stuff->options;
+        return BadValue;
+    }
+
+    /*
+     * Check to see if remainder is sane
+     */
+    if (stuff->divisor == 0) {
+        if (stuff->remainder != 0) {
+            client->errorValue = (CARD32) stuff->remainder;
+            return BadValue;
+        }
+    } else {
+        if (stuff->remainder >= stuff->divisor) {
+            client->errorValue = (CARD32) stuff->remainder;
+            return BadValue;
+        }
+    }
+
+    nnotifies = (client->req_len << 2) - sizeof (xPresentPixmapReq);
+    if (nnotifies % sizeof (xPresentNotify))
+        return BadLength;
+
+    nnotifies /= sizeof (xPresentNotify);
+    if (nnotifies) {
+        ret = present_create_notifies(client, nnotifies, (xPresentNotify *) (stuff + 1), &notifies);
+        if (ret != Success)
+            return ret;
+    }
+
+    ret = present_pixmap(window, pixmap, stuff->serial, valid, update,
+                         stuff->x_off, stuff->y_off, target_crtc,
+                         wait_fence, idle_fence, stuff->options,
+                         stuff->target_msc, stuff->divisor, stuff->remainder, notifies, nnotifies);
+    if (ret != Success)
+        present_destroy_notifies(notifies, nnotifies);
+    return ret;
+}
+
+static int
+proc_present_notify_msc(ClientPtr client)
+{
+    REQUEST(xPresentNotifyMSCReq);
+    WindowPtr   window;
+    int         rc;
+
+    REQUEST_SIZE_MATCH(xPresentNotifyMSCReq);
+    rc = dixLookupWindow(&window, stuff->window, client, DixReadAccess);
+    if (rc != Success)
+        return rc;
+
+    /*
+     * Check to see if remainder is sane
+     */
+    if (stuff->divisor == 0) {
+        if (stuff->remainder != 0) {
+            client->errorValue = (CARD32) stuff->remainder;
+            return BadValue;
+        }
+    } else {
+        if (stuff->remainder >= stuff->divisor) {
+            client->errorValue = (CARD32) stuff->remainder;
+            return BadValue;
+        }
+    }
+
+    return present_notify_msc(window, stuff->serial,
+                              stuff->target_msc, stuff->divisor, stuff->remainder);
+}
+
+static int
+proc_present_select_input (ClientPtr client)
+{
+    REQUEST(xPresentSelectInputReq);
+    WindowPtr window;
+    int rc;
+
+    REQUEST_SIZE_MATCH(xPresentSelectInputReq);
+
+    LEGAL_NEW_RESOURCE(stuff->eid, client);
+
+    rc = dixLookupWindow(&window, stuff->window, client, DixGetAttrAccess);
+    if (rc != Success)
+        return rc;
+
+    if (stuff->eventMask & ~PresentAllEvents) {
+        client->errorValue = stuff->eventMask;
+        return BadValue;
+    }
+    return present_select_input(client, stuff->eid, window, stuff->eventMask);
+}
+
+static int
+proc_present_query_capabilities (ClientPtr client)
+{
+    REQUEST(xPresentQueryCapabilitiesReq);
+    xPresentQueryCapabilitiesReply rep = {
+        .type = X_Reply,
+        .sequenceNumber = client->sequence,
+        .length = 0,
+    };
+    WindowPtr   window;
+    RRCrtcPtr   crtc = NULL;
+    int         r;
+
+    r = dixLookupWindow(&window, stuff->target, client, DixGetAttrAccess);
+    switch (r) {
+    case Success:
+        crtc = present_get_crtc(window);
+        break;
+    case BadWindow:
+        VERIFY_RR_CRTC(stuff->target, crtc, DixGetAttrAccess);
+        break;
+    default:
+        return r;
+    }
+
+    rep.capabilities = present_query_capabilities(crtc);
+
+    if (client->swapped) {
+        swaps(&rep.sequenceNumber);
+        swapl(&rep.length);
+        swapl(&rep.capabilities);
+    }
+    WriteToClient(client, sizeof(rep), &rep);
+    return Success;
+}
+
+int (*proc_present_vector[PresentNumberRequests]) (ClientPtr) = {
+    proc_present_query_version,            /* 0 */
+    proc_present_pixmap,                   /* 1 */
+    proc_present_notify_msc,               /* 2 */
+    proc_present_select_input,             /* 3 */
+    proc_present_query_capabilities,       /* 4 */
+};
+
+int
+proc_present_dispatch(ClientPtr client)
+{
+    REQUEST(xReq);
+    if (stuff->data >= PresentNumberRequests || !proc_present_vector[stuff->data])
+        return BadRequest;
+    return (*proc_present_vector[stuff->data]) (client);
+}
+
+static int
+sproc_present_query_version(ClientPtr client)
+{
+    REQUEST(xPresentQueryVersionReq);
+
+    swaps(&stuff->length);
+    swapl(&stuff->majorVersion);
+    swapl(&stuff->minorVersion);
+    return (*proc_present_vector[stuff->presentReqType]) (client);
+}
+
+static int
+sproc_present_pixmap(ClientPtr client)
+{
+    REQUEST(xPresentPixmapReq);
+
+    swaps(&stuff->length);
+    swapl(&stuff->window);
+    swapl(&stuff->pixmap);
+    swapl(&stuff->valid);
+    swapl(&stuff->update);
+    swaps(&stuff->x_off);
+    swaps(&stuff->y_off);
+    swapll(&stuff->target_msc);
+    swapll(&stuff->divisor);
+    swapll(&stuff->remainder);
+    swapl(&stuff->idle_fence);
+    return (*proc_present_vector[stuff->presentReqType]) (client);
+}
+
+static int
+sproc_present_notify_msc(ClientPtr client)
+{
+    REQUEST(xPresentNotifyMSCReq);
+
+    swaps(&stuff->length);
+    swapl(&stuff->window);
+    swapll(&stuff->target_msc);
+    swapll(&stuff->divisor);
+    swapll(&stuff->remainder);
+    return (*proc_present_vector[stuff->presentReqType]) (client);
+}
+
+static int
+sproc_present_select_input (ClientPtr client)
+{
+    REQUEST(xPresentSelectInputReq);
+
+    swaps(&stuff->length);
+    swapl(&stuff->window);
+    swapl(&stuff->eventMask);
+    return (*proc_present_vector[stuff->presentReqType]) (client);
+}
+
+static int
+sproc_present_query_capabilities (ClientPtr client)
+{
+    REQUEST(xPresentQueryCapabilitiesReq);
+    swaps(&stuff->length);
+    swapl(&stuff->target);
+    return (*proc_present_vector[stuff->presentReqType]) (client);
+}
+
+int (*sproc_present_vector[PresentNumberRequests]) (ClientPtr) = {
+    sproc_present_query_version,           /* 0 */
+    sproc_present_pixmap,                  /* 1 */
+    sproc_present_notify_msc,              /* 2 */
+    sproc_present_select_input,            /* 3 */
+    sproc_present_query_capabilities,      /* 4 */
+};
+
+int
+sproc_present_dispatch(ClientPtr client)
+{
+    REQUEST(xReq);
+    if (stuff->data >= PresentNumberRequests || !sproc_present_vector[stuff->data])
+        return BadRequest;
+    return (*sproc_present_vector[stuff->data]) (client);
+}
diff --git a/present/present_screen.c b/present/present_screen.c
new file mode 100644
index 0000000..50b2b2d
--- /dev/null
+++ b/present/present_screen.c
@@ -0,0 +1,231 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "present_priv.h"
+
+int present_request;
+DevPrivateKeyRec present_screen_private_key;
+DevPrivateKeyRec present_window_private_key;
+
+/*
+ * Get a pointer to a present window private, creating if necessary
+ */
+present_window_priv_ptr
+present_get_window_priv(WindowPtr window, Bool create)
+{
+    present_window_priv_ptr window_priv = present_window_priv(window);
+
+    if (!create || window_priv != NULL)
+        return window_priv;
+    window_priv = calloc (1, sizeof (present_window_priv_rec));
+    if (!window_priv)
+        return NULL;
+    xorg_list_init(&window_priv->vblank);
+    xorg_list_init(&window_priv->notifies);
+    dixSetPrivate(&window->devPrivates, &present_window_private_key, window_priv);
+    return window_priv;
+}
+
+/*
+ * Hook the close screen function to clean up our screen private
+ */
+static Bool
+present_close_screen(ScreenPtr screen)
+{
+    present_screen_priv_ptr screen_priv = present_screen_priv(screen);
+
+    present_flip_destroy(screen);
+
+    unwrap(screen_priv, screen, CloseScreen);
+    (*screen->CloseScreen) (screen);
+    free(screen_priv);
+    return TRUE;
+}
+
+/*
+ * Free any queued presentations for this window
+ */
+static void
+present_free_window_vblank(WindowPtr window)
+{
+    present_window_priv_ptr     window_priv = present_window_priv(window);
+    present_vblank_ptr          vblank, tmp;
+
+    xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->vblank, window_list) {
+        present_abort_vblank(window->drawable.pScreen, vblank->crtc, vblank->event_id, vblank->target_msc);
+        present_vblank_destroy(vblank);
+    }
+}
+
+/*
+ * Clean up any pending or current flips for this window
+ */
+static void
+present_clear_window_flip(WindowPtr window)
+{
+    ScreenPtr                   screen = window->drawable.pScreen;
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+    present_vblank_ptr          flip_pending = screen_priv->flip_pending;
+
+    if (flip_pending && flip_pending->window == window) {
+        assert (flip_pending->abort_flip);
+        flip_pending->window_destroyed = TRUE;
+    }
+    if (screen_priv->flip_window == window)
+        screen_priv->flip_window = NULL;
+}
+
+/*
+ * Hook the close window function to clean up our window private
+ */
+static Bool
+present_destroy_window(WindowPtr window)
+{
+    Bool ret;
+    ScreenPtr screen = window->drawable.pScreen;
+    present_screen_priv_ptr screen_priv = present_screen_priv(screen);
+    present_window_priv_ptr window_priv = present_window_priv(window);
+
+    if (window_priv) {
+        present_clear_window_notifies(window);
+        present_free_events(window);
+        present_free_window_vblank(window);
+        present_clear_window_flip(window);
+        free(window_priv);
+    }
+    unwrap(screen_priv, screen, DestroyWindow);
+    if (screen->DestroyWindow)
+        ret = screen->DestroyWindow (window);
+    else
+        ret = TRUE;
+    wrap(screen_priv, screen, DestroyWindow, present_destroy_window);
+    return ret;
+}
+
+/*
+ * Hook the config notify screen function to deliver present config notify events
+ */
+static int
+present_config_notify(WindowPtr window,
+                   int x, int y, int w, int h, int bw,
+                   WindowPtr sibling)
+{
+    int ret;
+    ScreenPtr screen = window->drawable.pScreen;
+    present_screen_priv_ptr screen_priv = present_screen_priv(screen);
+
+    present_send_config_notify(window, x, y, w, h, bw, sibling);
+
+    unwrap(screen_priv, screen, ConfigNotify);
+    if (screen->ConfigNotify)
+        ret = screen->ConfigNotify (window, x, y, w, h, bw, sibling);
+    else
+        ret = 0;
+    wrap(screen_priv, screen, ConfigNotify, present_config_notify);
+    return ret;
+}
+
+/*
+ * Hook the clip notify screen function to un-flip as necessary
+ */
+
+static void
+present_clip_notify(WindowPtr window, int dx, int dy)
+{
+    ScreenPtr screen = window->drawable.pScreen;
+    present_screen_priv_ptr screen_priv = present_screen_priv(screen);
+
+    present_check_flip_window(window);
+    unwrap(screen_priv, screen, ClipNotify)
+    if (screen->ClipNotify)
+        screen->ClipNotify (window, dx, dy);
+    wrap(screen_priv, screen, ClipNotify, present_clip_notify);
+}
+
+/*
+ * Initialize a screen for use with present
+ */
+int
+present_screen_init(ScreenPtr screen, present_screen_info_ptr info)
+{
+    if (!dixRegisterPrivateKey(&present_screen_private_key, PRIVATE_SCREEN, 0))
+        return FALSE;
+
+    if (!dixRegisterPrivateKey(&present_window_private_key, PRIVATE_WINDOW, 0))
+        return FALSE;
+
+    if (!present_screen_priv(screen)) {
+        present_screen_priv_ptr screen_priv = calloc(1, sizeof (present_screen_priv_rec));
+        if (!screen_priv)
+            return FALSE;
+
+        wrap(screen_priv, screen, CloseScreen, present_close_screen);
+        wrap(screen_priv, screen, DestroyWindow, present_destroy_window);
+        wrap(screen_priv, screen, ConfigNotify, present_config_notify);
+        wrap(screen_priv, screen, ClipNotify, present_clip_notify);
+
+        screen_priv->info = info;
+
+        dixSetPrivate(&screen->devPrivates, &present_screen_private_key, screen_priv);
+
+        present_fake_screen_init(screen);
+    }
+
+    return TRUE;
+}
+
+/*
+ * Initialize the present extension
+ */
+void
+present_extension_init(void)
+{
+    ExtensionEntry *extension;
+    int i;
+
+    extension = AddExtension(PRESENT_NAME, PresentNumberEvents, PresentNumberErrors,
+                             proc_present_dispatch, sproc_present_dispatch,
+                             NULL, StandardMinorOpcode);
+    if (!extension)
+        goto bail;
+
+    present_request = extension->base;
+
+    if (!present_init())
+        goto bail;
+
+    if (!present_event_init())
+        goto bail;
+
+    for (i = 0; i < screenInfo.numScreens; i++) {
+        if (!present_screen_init(screenInfo.screens[i], NULL))
+            goto bail;
+    }
+    return;
+
+bail:
+    FatalError("Cannot initialize Present extension");
+}
diff --git a/present/presentext.h b/present/presentext.h
new file mode 100644
index 0000000..f177f55
--- /dev/null
+++ b/present/presentext.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _PRESENTEXT_H_
+#define _PRESENTEXT_H_
+
+extern _X_EXPORT void
+present_extension_init(void);
+
+#endif /* _PRESENTEXT_H_ */
commit 563138298868f62501875d3016f03469dcffaad0
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Apr 9 19:59:39 2013 -0700

    dri3: Add DRI3 extension
    
    Adds DRM compatible fences using futexes.
    Uses FD passing to get pixmaps from DRM applications.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/Makefile.am b/Makefile.am
index 7be4271..7a8fc5b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -17,6 +17,10 @@ if RECORD
 RECORD_DIR=record
 endif
 
+if DRI3
+DRI3_DIR=dri3
+endif
+
 SUBDIRS = \
 	doc \
 	man \
@@ -38,6 +42,7 @@ SUBDIRS = \
 	damageext \
 	$(COMPOSITE_DIR) \
 	$(GLX_DIR) \
+	$(DRI3_DIR) \
 	exa \
 	config \
 	hw \
diff --git a/Xext/sync.c b/Xext/sync.c
index b2ee92e..126ce43 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -141,7 +141,7 @@ SyncCheckWarnIsCounter(const SyncObject * pSync, const char *warning)
  *  interested in the counter.  The two functions below are used to
  *  delete and add triggers on this list.
  */
-static void
+void
 SyncDeleteTriggerFromSyncObject(SyncTrigger * pTrigger)
 {
     SyncTriggerList *pCur;
@@ -184,7 +184,7 @@ SyncDeleteTriggerFromSyncObject(SyncTrigger * pTrigger)
     }
 }
 
-static int
+int
 SyncAddTriggerToSyncObject(SyncTrigger * pTrigger)
 {
     SyncTriggerList *pCur;
@@ -916,6 +916,34 @@ SyncCreate(ClientPtr client, XID id, unsigned char type)
     return pSync;
 }
 
+int
+SyncCreateFenceFromFD(ClientPtr client, DrawablePtr pDraw, XID id, int fd, BOOL initially_triggered)
+{
+    SyncFence  *pFence;
+    int         status;
+
+    pFence = (SyncFence *) SyncCreate(client, id, SYNC_FENCE);
+    if (!pFence)
+        return BadAlloc;
+
+    status = miSyncInitFenceFromFD(pDraw, pFence, fd, initially_triggered);
+    if (status != Success) {
+        miSyncDestroyFence(pFence);
+        return status;
+    }
+
+    if (!AddResource(id, RTFence, (pointer) pFence))
+        return BadAlloc;
+
+    return Success;
+}
+
+int
+SyncFDFromFence(ClientPtr client, DrawablePtr pDraw, SyncFence *pFence)
+{
+    return miSyncFDFromFence(pDraw, pFence);
+}
+
 static SyncCounter *
 SyncCreateCounter(ClientPtr client, XSyncCounter id, CARD64 initialvalue)
 {
diff --git a/Xext/syncsrv.h b/Xext/syncsrv.h
index c68229f..45fca04 100644
--- a/Xext/syncsrv.h
+++ b/Xext/syncsrv.h
@@ -136,4 +136,17 @@ extern void SyncDestroySystemCounter(pointer pCounter);
 
 extern SyncCounter *SyncInitDeviceIdleTime(DeviceIntPtr dev);
 extern void SyncRemoveDeviceIdleTime(SyncCounter *counter);
+
+int
+SyncCreateFenceFromFD(ClientPtr client, DrawablePtr pDraw, XID id, int fd, BOOL initially_triggered);
+
+int
+SyncFDFromFence(ClientPtr client, DrawablePtr pDraw, SyncFence *fence);
+
+void
+SyncDeleteTriggerFromSyncObject(SyncTrigger * pTrigger);
+
+int
+SyncAddTriggerToSyncObject(SyncTrigger * pTrigger);
+
 #endif                          /* _SYNCSRV_H_ */
diff --git a/configure.ac b/configure.ac
index d29f170..546790d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -613,6 +613,7 @@ AC_ARG_ENABLE(xdm-auth-1,     AS_HELP_STRING([--disable-xdm-auth-1], [Build XDM-
 AC_ARG_ENABLE(glx,            AS_HELP_STRING([--disable-glx], [Build GLX extension (default: enabled)]), [GLX=$enableval], [GLX=yes])
 AC_ARG_ENABLE(dri,            AS_HELP_STRING([--enable-dri], [Build DRI extension (default: auto)]), [DRI=$enableval])
 AC_ARG_ENABLE(dri2,           AS_HELP_STRING([--enable-dri2], [Build DRI2 extension (default: auto)]), [DRI2=$enableval], [DRI2=auto])
+AC_ARG_ENABLE(dri3,           AS_HELP_STRING([--enable-dri3], [Build DRI3 extension (default: auto)]), [DRI3=$enableval], [DRI3=auto])
 AC_ARG_ENABLE(xinerama,	      AS_HELP_STRING([--disable-xinerama], [Build Xinerama extension (default: enabled)]), [XINERAMA=$enableval], [XINERAMA=yes])
 AC_ARG_ENABLE(xf86vidmode,    AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: auto)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=auto])
 AC_ARG_ENABLE(xace,           AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes])
@@ -715,6 +716,7 @@ case $host_os in
 		CONFIG_UDEV_KMS=no
 		DGA=no
 		DRI2=no
+		DRI3=no
 		INT10MODULE=no
 		PCI=no
 		VGAHW=no
@@ -732,6 +734,7 @@ case $host_os in
 		VBE=no
 		DRM=no
 		DRI2=no
+		DRI3=no
 
 		if test x$XQUARTZ = xauto; then
 			AC_CACHE_CHECK([whether to build Xquartz],xorg_cv_Carbon_framework,[
@@ -781,6 +784,7 @@ SCRNSAVERPROTO="scrnsaverproto >= 1.1"
 RESOURCEPROTO="resourceproto >= 1.2.0"
 DRIPROTO="xf86driproto >= 2.1.0"
 DRI2PROTO="dri2proto >= 2.8"
+DRI3PROTO="dri3proto >= 1.0"
 XINERAMAPROTO="xineramaproto"
 BIGFONTPROTO="xf86bigfontproto >= 1.2.0"
 DGAPROTO="xf86dgaproto >= 2.0.99.1"
@@ -1113,7 +1117,22 @@ case "$DRI2,$HAVE_DRI2PROTO" in
 esac
 AM_CONDITIONAL(DRI2, test "x$DRI2" = xyes)
 
-if test "x$DRI" = xyes || test "x$DRI2" = xyes || test "x$CONFIG_UDEV_KMS" = xyes; then
+PKG_CHECK_MODULES([DRI3PROTO], $DRI3PROTO,
+                  [HAVE_DRI3PROTO=yes], [HAVE_DRI3PROTO=no])
+case "$DRI3,$HAVE_DRI3PROTO" in
+	yes,no)
+		AC_MSG_ERROR([DRI3 requested, but dri3proto not found.])
+		;;
+	yes,yes | auto,yes)
+		AC_DEFINE(DRI3, 1, [Build DRI3 extension])
+		DRI3=yes
+		DRI3_LIB='$(top_builddir)/dri3/libdri3.la'
+		SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRI3PROTO"
+		;;
+esac
+AM_CONDITIONAL(DRI3, test "x$DRI3" = xyes)
+
+if test "x$DRI" = xyes || test "x$DRI2" = xyes || test "x$DRI3" = xyes || test "x$CONFIG_UDEV_KMS" = xyes; then
 	if test "x$DRM" = xyes; then
 		AC_DEFINE(WITH_LIBDRM, 1, [Building with libdrm support])
 		PKG_CHECK_MODULES([LIBDRM], $LIBDRM)
@@ -1306,6 +1325,7 @@ if test "x$XDMAUTH" = xyes; then
 		XDMCP_MODULES="xdmcp"
 	fi
 fi
+REQUIRED_LIBS="$REQUIRED_LIBS xshmfence"
 
 AC_DEFINE_DIR(COMPILEDDEFAULTFONTPATH, FONTPATH, [Default font path])
 AC_DEFINE_DIR(SERVER_MISC_CONFIG_PATH, SERVERCONFIG, [Server miscellaneous config path])
@@ -1577,7 +1597,7 @@ AC_MSG_RESULT([$XVFB])
 AM_CONDITIONAL(XVFB, [test "x$XVFB" = xyes])
 
 if test "x$XVFB" = xyes; then
-	XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB"
+	XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB"
 	XVFB_SYS_LIBS="$XVFBMODULES_LIBS $GLX_SYS_LIBS"
 	AC_SUBST([XVFB_LIBS])
 	AC_SUBST([XVFB_SYS_LIBS])
@@ -1598,7 +1618,7 @@ if test "x$XNEST" = xyes; then
 	if test "x$have_xnest" = xno; then
 		AC_MSG_ERROR([Xnest build explicitly requested, but required modules not found.])
 	fi
-	XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB $DIX_LIB $OS_LIB"
+	XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB  $DRI3_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB $DIX_LIB $OS_LIB"
 	XNEST_SYS_LIBS="$XNESTMODULES_LIBS $GLX_SYS_LIBS"
 	AC_SUBST([XNEST_LIBS])
 	AC_SUBST([XNEST_SYS_LIBS])
@@ -1623,7 +1643,7 @@ if test "x$XORG" = xyes; then
 	XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
 	XORG_INCS="$XORG_DDXINCS $XORG_OSINCS"
 	XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
-	XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $XI_LIB $XKB_LIB"
+	XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $XI_LIB $XKB_LIB"
 
 	dnl ==================================================================
 	dnl symbol visibility
@@ -2036,7 +2056,7 @@ if test "x$DMX" = xyes; then
 	fi
 	DMX_INCLUDES="$XEXT_INC $RENDER_INC $RECORD_INC"
 	XDMX_CFLAGS="$DMXMODULES_CFLAGS"
-	XDMX_LIBS="$FB_LIB $MI_LIB $XEXT_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $MIEXT_SYNC_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $COMPOSITE_LIB $DAMAGE_LIB $MAIN_LIB $DIX_LIB $CONFIG_LIB $OS_LIB $FIXES_LIB"
+	XDMX_LIBS="$FB_LIB $MI_LIB $XEXT_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB  $DRI3_LIB $MIEXT_SYNC_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $COMPOSITE_LIB $DAMAGE_LIB $MAIN_LIB $DIX_LIB $CONFIG_LIB $OS_LIB $FIXES_LIB"
 	XDMX_SYS_LIBS="$DMXMODULES_LIBS"
 	AC_SUBST([XDMX_CFLAGS])
 	AC_SUBST([XDMX_LIBS])
@@ -2145,7 +2165,7 @@ if test "$KDRIVE" = yes; then
     
     KDRIVE_CFLAGS="$XSERVER_CFLAGS -DHAVE_KDRIVE_CONFIG_H $TSLIB_CFLAGS"
 
-    KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $OS_LIB"
+    KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $OS_LIB"
     KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.la'
     case $host_os in
 	*linux*)
@@ -2267,6 +2287,7 @@ Xext/Makefile
 Xi/Makefile
 xfixes/Makefile
 exa/Makefile
+dri3/Makefile
 hw/Makefile
 hw/xfree86/Makefile
 hw/xfree86/common/Makefile
diff --git a/dri3/Makefile.am b/dri3/Makefile.am
new file mode 100644
index 0000000..e47a734
--- /dev/null
+++ b/dri3/Makefile.am
@@ -0,0 +1,13 @@
+noinst_LTLIBRARIES = libdri3.la
+AM_CFLAGS = \
+	-DHAVE_XORG_CONFIG_H \
+	@DIX_CFLAGS@ @XORG_CFLAGS@
+
+libdri3_la_SOURCES = \
+	dri3.h \
+	dri3_priv.h \
+	dri3.c \
+	dri3_request.c \
+	dri3_screen.c
+
+sdk_HEADERS = dri3.h
diff --git a/dri3/dri3.c b/dri3/dri3.c
new file mode 100644
index 0000000..2bca7ae
--- /dev/null
+++ b/dri3/dri3.c
@@ -0,0 +1,87 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "dri3_priv.h"
+
+int dri3_request;
+DevPrivateKeyRec dri3_screen_private_key;
+DevPrivateKeyRec dri3_window_private_key;
+
+static Bool
+dri3_close_screen(ScreenPtr screen)
+{
+    dri3_screen_priv_ptr screen_priv = dri3_screen_priv(screen);
+
+    unwrap(screen_priv, screen, CloseScreen);
+
+    free(screen_priv);
+    return (*screen->CloseScreen) (screen);
+}
+
+Bool
+dri3_screen_init(ScreenPtr screen, dri3_screen_info_ptr info)
+{
+    if (!dixRegisterPrivateKey(&dri3_screen_private_key, PRIVATE_SCREEN, 0))
+        return FALSE;
+
+    if (!dri3_screen_priv(screen)) {
+        dri3_screen_priv_ptr screen_priv = calloc(1, sizeof (dri3_screen_priv_rec));
+        if (!screen_priv)
+            return FALSE;
+
+        wrap(screen_priv, screen, CloseScreen, dri3_close_screen);
+
+        screen_priv->info = info;
+
+        dixSetPrivate(&screen->devPrivates, &dri3_screen_private_key, screen_priv);
+    }
+
+    return TRUE;
+}
+
+void
+dri3_extension_init(void)
+{
+    ExtensionEntry *extension;
+    int i;
+
+    extension = AddExtension(DRI3_NAME, DRI3NumberEvents, DRI3NumberErrors,
+                             proc_dri3_dispatch, sproc_dri3_dispatch,
+                             NULL, StandardMinorOpcode);
+    if (!extension)
+        goto bail;
+
+    dri3_request = extension->base;
+
+    for (i = 0; i < screenInfo.numScreens; i++) {
+        if (!dri3_screen_init(screenInfo.screens[i], NULL))
+            goto bail;
+    }
+    return;
+
+bail:
+    FatalError("Cannot initialize DRI3 extension");
+}
diff --git a/dri3/dri3.h b/dri3/dri3.h
new file mode 100644
index 0000000..7774c87
--- /dev/null
+++ b/dri3/dri3.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _DRI3_H_
+#define _DRI3_H_
+
+#include <X11/extensions/dri3proto.h>
+#include <randrstr.h>
+
+#define DRI3_SCREEN_INFO_VERSION        0
+
+typedef int (*dri3_open_proc)(ScreenPtr screen,
+                              RRProviderPtr provider,
+                              int *fd);
+
+typedef PixmapPtr (*dri3_pixmap_from_fd_proc) (ScreenPtr screen,
+                                               int fd,
+                                               CARD16 width,
+                                               CARD16 height,
+                                               CARD16 stride,
+                                               CARD8 depth,
+                                               CARD8 bpp);
+
+typedef int (*dri3_fd_from_pixmap_proc) (ScreenPtr screen,
+                                         PixmapPtr pixmap,
+                                         CARD16 *stride,
+                                         CARD32 *size);
+
+typedef struct dri3_screen_info {
+    uint32_t                    version;
+
+    dri3_open_proc              open;
+    dri3_pixmap_from_fd_proc    pixmap_from_fd;
+    dri3_fd_from_pixmap_proc    fd_from_pixmap;
+} dri3_screen_info_rec, *dri3_screen_info_ptr;
+
+extern _X_EXPORT Bool
+dri3_screen_init(ScreenPtr screen, dri3_screen_info_ptr info);
+
+#endif /* _DRI3_H_ */
diff --git a/dri3/dri3_event.c b/dri3/dri3_event.c
new file mode 100644
index 0000000..02f0f65
--- /dev/null
+++ b/dri3/dri3_event.c
@@ -0,0 +1,163 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "dri3_priv.h"
+
+RESTYPE dri3_event_type;
+
+static int
+dri3_free_event(pointer data, XID id)
+{
+    dri3_event_ptr dri3_event = (dri3_event_ptr) data;
+    dri3_window_priv_ptr window_priv = dri3_window_priv(dri3_event->window);
+    dri3_event_ptr *previous, current;
+
+    for (previous = &window_priv->events; (current = *previous); previous = &current->next) {
+        if (current == dri3_event) {
+            *previous = dri3_event->next;
+            break;
+        }
+    }
+    free((pointer) dri3_event);
+    return 1;
+
+}
+
+void
+dri3_free_events(WindowPtr window)
+{
+    dri3_window_priv_ptr window_priv = dri3_window_priv(window);
+    dri3_event_ptr event;
+
+    if (!window_priv)
+        return;
+
+    while ((event = window_priv->events))
+        FreeResource(event->id, RT_NONE);
+}
+
+static void
+dri3_event_swap(xGenericEvent *from, xGenericEvent *to)
+{
+    *to = *from;
+    swaps(&to->sequenceNumber);
+    swapl(&to->length);
+    swaps(&to->evtype);
+    switch (from->evtype) {
+    case DRI3_ConfigureNotify: {
+        xDRI3ConfigureNotify *c = (xDRI3ConfigureNotify *) to;
+
+        swapl(&c->eid);
+        swapl(&c->window);
+        swaps(&c->x);
+        swaps(&c->y);
+        swaps(&c->width);
+        swaps(&c->height);
+        swaps(&c->off_x);
+        swaps(&c->off_y);
+        swaps(&c->pixmap_width);
+        swaps(&c->pixmap_height);
+        swapl(&c->pixmap_flags);
+        break;
+    }
+    }
+}
+
+void
+dri3_send_config_notify(WindowPtr window, int x, int y, int w, int h, int bw, WindowPtr sibling)
+{
+    dri3_window_priv_ptr window_priv = dri3_window_priv(window);
+
+    if (window_priv) {
+        xDRI3ConfigureNotify cn = {
+            .type = GenericEvent,
+            .extension = dri3_request,
+            .length = (sizeof(xDRI3ConfigureNotify) - 32) >> 2,
+            .evtype = DRI3_ConfigureNotify,
+            .eid = 0,
+            .window = window->drawable.id,
+            .x = x,
+            .y = y,
+            .width = w,
+            .height = h,
+            .off_x = 0,
+            .off_y = 0,
+            .pixmap_width = w,
+            .pixmap_height = h,
+            .pixmap_flags = 0
+        };
+        dri3_event_ptr event;
+        dri3_screen_priv_ptr screen_priv = dri3_screen_priv(window->drawable.pScreen);
+
+        if (screen_priv->info && screen_priv->info->driver_config)
+            screen_priv->info->driver_config(window, &cn);
+
+        for (event = window_priv->events; event; event = event->next) {
+            if (event->mask & (1 << DRI3ConfigureNotify)) {
+                cn.eid = event->id;
+                WriteEventsToClient(event->client, 1, (xEvent *) &cn);
+            }
+        }
+    }
+}
+
+int
+dri3_select_input(ClientPtr client, XID eid, WindowPtr window, CARD32 mask)
+{
+    dri3_window_priv_ptr window_priv = dri3_window_priv(window);
+    dri3_event_ptr event;
+
+    if (!window_priv)
+        return BadAlloc;
+
+    event = calloc (1, sizeof (dri3_event_rec));
+    if (!event)
+        return BadAlloc;
+
+    event->client = client;
+    event->window = window;
+    event->id = eid;
+    event->mask = mask;
+
+    event->next = window_priv->events;
+    window_priv->events = event;
+
+    if (!AddResource(event->id, dri3_event_type, (pointer) event))
+        return BadAlloc;
+
+    return Success;
+}
+
+Bool
+dri3_event_init(void)
+{
+    dri3_event_type = CreateNewResourceType(dri3_free_event, "DRI3Event");
+    if (!dri3_event_type)
+        return FALSE;
+
+    GERegisterExtension(dri3_request, dri3_event_swap);
+    return TRUE;
+}
diff --git a/dri3/dri3_priv.h b/dri3/dri3_priv.h
new file mode 100644
index 0000000..e2fed83
--- /dev/null
+++ b/dri3/dri3_priv.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _DRI3PRIV_H_
+#define _DRI3PRIV_H_
+
+#include <X11/X.h>
+#include "scrnintstr.h"
+#include "misc.h"
+#include "list.h"
+#include "windowstr.h"
+#include "dixstruct.h"
+#include <randrstr.h>
+#include "dri3.h"
+
+extern int dri3_request;
+
+extern DevPrivateKeyRec dri3_screen_private_key;
+
+typedef struct dri3_screen_priv {
+    CloseScreenProcPtr          CloseScreen;
+    ConfigNotifyProcPtr         ConfigNotify;
+    DestroyWindowProcPtr        DestroyWindow;
+
+    dri3_screen_info_ptr        info;
+} dri3_screen_priv_rec, *dri3_screen_priv_ptr;
+
+#define wrap(priv,real,mem,func) {\
+    priv->mem = real->mem; \
+    real->mem = func; \
+}
+
+#define unwrap(priv,real,mem) {\
+    real->mem = priv->mem; \
+}
+
+static inline dri3_screen_priv_ptr
+dri3_screen_priv(ScreenPtr screen)
+{
+    return (dri3_screen_priv_ptr)dixLookupPrivate(&(screen)->devPrivates, &dri3_screen_private_key);
+}
+
+int
+proc_dri3_dispatch(ClientPtr client);
+
+int
+sproc_dri3_dispatch(ClientPtr client);
+
+/* DDX interface */
+
+int
+dri3_open(ClientPtr client, ScreenPtr screen, RRProviderPtr provider, int *fd);
+
+int
+dri3_pixmap_from_fd(PixmapPtr *ppixmap, ScreenPtr screen, int fd,
+                    CARD16 width, CARD16 height, CARD16 stride, CARD8 depth, CARD8 bpp);
+
+int
+dri3_fd_from_pixmap(int *pfd, PixmapPtr pixmap, CARD16 *stride, CARD32 *size);
+
+#endif /* _DRI3PRIV_H_ */
diff --git a/dri3/dri3_request.c b/dri3/dri3_request.c
new file mode 100644
index 0000000..3ebb9d5
--- /dev/null
+++ b/dri3/dri3_request.c
@@ -0,0 +1,394 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "dri3_priv.h"
+#include <syncsrv.h>
+#include <unistd.h>
+#include <xace.h>
+#include "../Xext/syncsdk.h"
+
+static int
+proc_dri3_query_version(ClientPtr client)
+{
+    REQUEST(xDRI3QueryVersionReq);
+    xDRI3QueryVersionReply rep = {
+        .type = X_Reply,
+        .sequenceNumber = client->sequence,
+        .length = 0,
+        .majorVersion = DRI3_MAJOR,
+        .minorVersion = DRI3_MINOR
+    };
+
+    REQUEST_SIZE_MATCH(xDRI3QueryVersionReq);
+    (void) stuff;
+    if (client->swapped) {
+        swaps(&rep.sequenceNumber);
+        swapl(&rep.length);
+        swapl(&rep.majorVersion);
+        swapl(&rep.minorVersion);
+    }
+    WriteToClient(client, sizeof(rep), &rep);
+    return Success;
+}
+
+static int
+proc_dri3_open(ClientPtr client)
+{
+    REQUEST(xDRI3OpenReq);
+    xDRI3OpenReply rep = {
+        .type = X_Reply,
+        .nfd = 1,
+        .sequenceNumber = client->sequence,
+        .length = 0,
+    };
+    RRProviderPtr provider;
+    DrawablePtr drawable;
+    ScreenPtr screen;
+    int fd;
+    int status;
+
+    REQUEST_SIZE_MATCH(xDRI3OpenReq);
+
+    status = dixLookupDrawable(&drawable, stuff->drawable, client, 0, DixReadAccess);
+    if (status != Success)
+        return status;
+
+    if (stuff->provider == None)
+        provider = NULL;
+    else if (!RRProviderType) {
+        return BadMatch;
+    } else {
+        VERIFY_RR_PROVIDER(stuff->provider, provider, DixReadAccess);
+        if (drawable->pScreen != provider->pScreen)
+            return BadMatch;
+    }
+    screen = drawable->pScreen;
+
+    status = dri3_open(client, screen, provider, &fd);
+    if (status != Success)
+        return status;
+
+    if (client->swapped) {
+        swaps(&rep.sequenceNumber);
+        swapl(&rep.length);
+    }
+
+    if (WriteFdToClient(client, fd, TRUE) < 0) {
+        close(fd);
+        return BadAlloc;
+    }
+
+    WriteToClient(client, sizeof (rep), &rep);
+
+    return Success;
+}
+
+static int
+proc_dri3_pixmap_from_buffer(ClientPtr client)
+{
+    REQUEST(xDRI3PixmapFromBufferReq);
+    int fd;
+    DrawablePtr drawable;
+    PixmapPtr pixmap;
+    int rc;
+
+    SetReqFds(client, 1);
+    REQUEST_SIZE_MATCH(xDRI3PixmapFromBufferReq);
+    LEGAL_NEW_RESOURCE(stuff->pixmap, client);
+    rc = dixLookupDrawable(&drawable, stuff->drawable, client, M_ANY, DixGetAttrAccess);
+    if (rc != Success) {
+        client->errorValue = stuff->drawable;
+        return rc;
+    }
+
+    if (!stuff->width || !stuff->height) {
+        client->errorValue = 0;
+        return BadValue;
+    }
+
+    if (stuff->width > 32767 || stuff->height > 32767)
+        return BadAlloc;
+
+    if (stuff->depth != 1) {
+        DepthPtr depth = drawable->pScreen->allowedDepths;
+        int i;
+        for (i = 0; i < drawable->pScreen->numDepths; i++, depth++)
+            if (depth->depth == stuff->depth)
+                break;
+        if (i == drawable->pScreen->numDepths) {
+            client->errorValue = stuff->depth;
+            return BadValue;
+        }
+    }
+
+    fd = ReadFdFromClient(client);
+    if (fd < 0)
+        return BadValue;
+
+    rc = dri3_pixmap_from_fd(&pixmap,
+                             drawable->pScreen, fd,
+                             stuff->width, stuff->height,
+                             stuff->stride, stuff->depth,
+                             stuff->bpp);
+    close (fd);
+    if (rc != Success)
+        return rc;
+
+    pixmap->drawable.id = stuff->pixmap;
+
+    /* security creation/labeling check */
+    rc = XaceHook(XACE_RESOURCE_ACCESS, client, stuff->pixmap, RT_PIXMAP,
+                  pixmap, RT_NONE, NULL, DixCreateAccess);
+
+    if (rc != Success) {
+        (*drawable->pScreen->DestroyPixmap) (pixmap);
+        return rc;
+    }
+    if (AddResource(stuff->pixmap, RT_PIXMAP, (pointer) pixmap))
+        return Success;
+
+    return Success;
+}
+
+static int
+proc_dri3_buffer_from_pixmap(ClientPtr client)
+{
+    REQUEST(xDRI3BufferFromPixmapReq);
+    xDRI3BufferFromPixmapReply rep = {
+        .type = X_Reply,
+        .nfd = 1,
+        .sequenceNumber = client->sequence,
+        .length = 0,
+    };
+    int rc;
+    int fd;
+    PixmapPtr pixmap;
+
+    REQUEST_SIZE_MATCH(xDRI3BufferFromPixmapReq);
+    rc = dixLookupResourceByType((pointer *) &pixmap, stuff->pixmap, RT_PIXMAP,
+                                 client, DixWriteAccess);
+    if (rc != Success) {
+        client->errorValue = stuff->pixmap;
+        return rc;
+    }
+
+    rep.width = pixmap->drawable.width;
+    rep.height = pixmap->drawable.height;
+    rep.depth = pixmap->drawable.depth;
+    rep.bpp = pixmap->drawable.bitsPerPixel;
+
+    rc = dri3_fd_from_pixmap(&fd, pixmap, &rep.stride, &rep.size);
+    if (rc != Success)
+        return rc;
+
+    if (client->swapped) {
+        swaps(&rep.sequenceNumber);
+        swapl(&rep.length);
+        swapl(&rep.size);
+        swaps(&rep.width);
+        swaps(&rep.height);
+        swaps(&rep.stride);
+    }
+    if (WriteFdToClient(client, fd, TRUE) < 0) {
+        close(fd);
+        return BadAlloc;
+    }
+
+    WriteToClient(client, sizeof(rep), &rep);
+
+    return client->noClientException;
+}
+
+static int
+proc_dri3_fence_from_fd(ClientPtr client)
+{
+    REQUEST(xDRI3FenceFromFDReq);
+    DrawablePtr drawable;
+    int fd;
+    int status;
+
+    SetReqFds(client, 1);
+    REQUEST_SIZE_MATCH(xDRI3FenceFromFDReq);
+    LEGAL_NEW_RESOURCE(stuff->fence, client);
+
+    status = dixLookupDrawable(&drawable, stuff->drawable, client, M_ANY, DixGetAttrAccess);
+    if (status != Success)
+        return status;
+
+    fd = ReadFdFromClient(client);
+    if (fd < 0)
+        return BadValue;
+
+    status = SyncCreateFenceFromFD(client, drawable, stuff->fence,
+                                   fd, stuff->initially_triggered);
+
+    return status;
+}
+
+static int
+proc_dri3_fd_from_fence(ClientPtr client)
+{
+    REQUEST(xDRI3FDFromFenceReq);
+    xDRI3FDFromFenceReply rep = {
+        .type = X_Reply,
+        .nfd = 1,
+        .sequenceNumber = client->sequence,
+        .length = 0,
+    };
+    DrawablePtr drawable;
+    int fd;
+    int status;
+    SyncFence *fence;
+
+    REQUEST_SIZE_MATCH(xDRI3FDFromFenceReq);
+
+    status = dixLookupDrawable(&drawable, stuff->drawable, client, M_ANY, DixGetAttrAccess);
+    if (status != Success)
+        return status;
+    status = SyncVerifyFence(&fence, stuff->fence, client, DixWriteAccess);
+    if (status != Success)
+        return status;
+
+    fd = SyncFDFromFence(client, drawable, fence);
+    if (fd < 0)
+        return BadMatch;
+
+    if (client->swapped) {
+        swaps(&rep.sequenceNumber);
+        swapl(&rep.length);
+    }
+    if (WriteFdToClient(client, fd, FALSE) < 0)
+        return BadAlloc;
+
+    WriteToClient(client, sizeof(rep), &rep);
+
+    return client->noClientException;
+}
+
+int (*proc_dri3_vector[DRI3NumberRequests]) (ClientPtr) = {
+    proc_dri3_query_version,            /* 0 */
+    proc_dri3_open,                     /* 1 */
+    proc_dri3_pixmap_from_buffer,       /* 2 */
+    proc_dri3_buffer_from_pixmap,       /* 3 */
+    proc_dri3_fence_from_fd,            /* 4 */
+    proc_dri3_fd_from_fence,            /* 5 */
+};
+
+int
+proc_dri3_dispatch(ClientPtr client)
+{
+    REQUEST(xReq);
+    if (stuff->data >= DRI3NumberRequests || !proc_dri3_vector[stuff->data])
+        return BadRequest;
+    return (*proc_dri3_vector[stuff->data]) (client);
+}
+
+static int
+sproc_dri3_query_version(ClientPtr client)
+{
+    REQUEST(xDRI3QueryVersionReq);
+
+    swaps(&stuff->length);
+    swapl(&stuff->majorVersion);
+    swapl(&stuff->minorVersion);
+    return (*proc_dri3_vector[stuff->dri3ReqType]) (client);
+}
+
+static int
+sproc_dri3_open(ClientPtr client)
+{
+    REQUEST(xDRI3OpenReq);
+
+    swaps(&stuff->length);
+    swapl(&stuff->drawable);
+    swapl(&stuff->provider);
+    return (*proc_dri3_vector[stuff->dri3ReqType]) (client);
+}
+
+static int
+sproc_dri3_pixmap_from_buffer(ClientPtr client)
+{
+    REQUEST(xDRI3PixmapFromBufferReq);
+
+    swaps(&stuff->length);
+    swapl(&stuff->pixmap);
+    swapl(&stuff->drawable);
+    swapl(&stuff->size);
+    swaps(&stuff->width);
+    swaps(&stuff->height);
+    swaps(&stuff->stride);
+    return (*proc_dri3_vector[stuff->dri3ReqType]) (client);
+}
+
+static int
+sproc_dri3_buffer_from_pixmap(ClientPtr client)
+{
+    REQUEST(xDRI3BufferFromPixmapReq);
+
+    swaps(&stuff->length);
+    swapl(&stuff->pixmap);
+    return (*proc_dri3_vector[stuff->dri3ReqType]) (client);
+}
+
+static int
+sproc_dri3_fence_from_fd(ClientPtr client)
+{
+    REQUEST(xDRI3FenceFromFDReq);
+
+    swaps(&stuff->length);
+    swapl(&stuff->drawable);
+    swapl(&stuff->fence);
+    return (*proc_dri3_vector[stuff->dri3ReqType]) (client);
+}
+
+static int
+sproc_dri3_fd_from_fence(ClientPtr client)
+{
+    REQUEST(xDRI3FDFromFenceReq);
+
+    swaps(&stuff->length);
+    swapl(&stuff->drawable);
+    swapl(&stuff->fence);
+    return (*proc_dri3_vector[stuff->dri3ReqType]) (client);
+}
+
+int (*sproc_dri3_vector[DRI3NumberRequests]) (ClientPtr) = {
+    sproc_dri3_query_version,           /* 0 */
+    sproc_dri3_open,                    /* 1 */
+    sproc_dri3_pixmap_from_buffer,      /* 2 */
+    sproc_dri3_buffer_from_pixmap,      /* 3 */
+    sproc_dri3_fence_from_fd,           /* 4 */
+    sproc_dri3_fd_from_fence,           /* 5 */
+};
+
+int
+sproc_dri3_dispatch(ClientPtr client)
+{
+    REQUEST(xReq);
+    if (stuff->data >= DRI3NumberRequests || !sproc_dri3_vector[stuff->data])
+        return BadRequest;
+    return (*sproc_dri3_vector[stuff->data]) (client);
+}
diff --git a/dri3/dri3_screen.c b/dri3/dri3_screen.c
new file mode 100644
index 0000000..cf2735b
--- /dev/null
+++ b/dri3/dri3_screen.c
@@ -0,0 +1,80 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "dri3_priv.h"
+#include <syncsdk.h>
+#include <misync.h>
+#include <misyncshm.h>
+#include <randrstr.h>
+
+int
+dri3_open(ClientPtr client, ScreenPtr screen, RRProviderPtr provider, int *fd)
+{
+    dri3_screen_priv_ptr        ds = dri3_screen_priv(screen);
+    dri3_screen_info_ptr        info = ds->info;
+    int                         rc;
+
+    if (!info || !info->open)
+        return BadMatch;
+
+    rc = (*info->open) (screen, provider, fd);
+    if (rc != Success)
+        return rc;
+
+    return Success;
+}
+
+int
+dri3_pixmap_from_fd(PixmapPtr *ppixmap, ScreenPtr screen, int fd,
+                    CARD16 width, CARD16 height, CARD16 stride, CARD8 depth, CARD8 bpp)
+{
+    dri3_screen_priv_ptr        ds = dri3_screen_priv(screen);
+    dri3_screen_info_ptr        info = ds->info;
+    PixmapPtr                   pixmap;
+
+    pixmap = (*info->pixmap_from_fd) (screen, fd, width, height, stride, depth, bpp);
+    if (!pixmap)
+        return BadAlloc;
+
+    *ppixmap = pixmap;
+    return Success;
+}
+
+int
+dri3_fd_from_pixmap(int *pfd, PixmapPtr pixmap, CARD16 *stride, CARD32 *size)
+{
+    ScreenPtr                   screen = pixmap->drawable.pScreen;
+    dri3_screen_priv_ptr        ds = dri3_screen_priv(screen);
+    dri3_screen_info_ptr        info = ds->info;
+    int                         fd;
+
+    fd = (*info->fd_from_pixmap)(screen, pixmap, stride, size);
+    if (fd < 0)
+        return BadAlloc;
+    *pfd = fd;
+    return Success;
+}
+
diff --git a/dri3/dri3int.h b/dri3/dri3int.h
new file mode 100644
index 0000000..7f53eba
--- /dev/null
+++ b/dri3/dri3int.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright © 2011 Daniel Stone
+ *
+ * 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.
+ *
+ * Author: Daniel Stone <daniel at fooishbar.org>
+ */
+
+extern Bool DRI2ModuleSetup(void);
diff --git a/hw/dmx/dmxinit.c b/hw/dmx/dmxinit.c
index 65416ed..bd868a0 100644
--- a/hw/dmx/dmxinit.c
+++ b/hw/dmx/dmxinit.c
@@ -109,6 +109,8 @@ Bool dmxGLXSyncSwap = FALSE;
 Bool dmxGLXFinishSwap = FALSE;
 #endif
 
+RESTYPE RRProviderType = 0;
+
 Bool dmxIgnoreBadFontPaths = FALSE;
 
 Bool dmxAddRemoveScreens = FALSE;
diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index 59cfb5f..eea16a8 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -41,7 +41,7 @@ nodist_Xorg_SOURCES = sdksyms.c
 AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@
 AM_CPPFLAGS = $(XORG_INCS) -I$(srcdir)/parser -I$(top_srcdir)/miext/cw \
 	-I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac \
-	-I$(srcdir)/dri -I$(srcdir)/dri2
+	-I$(srcdir)/dri -I$(srcdir)/dri2 -I$(top_srcdir)/dri3
 
 LOCAL_LIBS = \
             $(MAIN_LIB) \
@@ -59,6 +59,8 @@ LOCAL_LIBS = \
             dixmods/libxorgxkb.la \
             $(DRI_LIB) \
             $(DRI2_LIB) \
+	    $(top_builddir)/dri3/libdri3.la \
+	    $(top_builddir)/miext/sync/libsync.la \
             $(top_builddir)/mi/libmi.la \
             $(top_builddir)/os/libos.la
 Xorg_LDADD = \
diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh
index 48b48b5..7c9734c 100755
--- a/hw/xfree86/sdksyms.sh
+++ b/hw/xfree86/sdksyms.sh
@@ -99,6 +99,7 @@ cat > sdksyms.c << EOF
 # include "dri2.h"
 #endif
 
+# include "dri3.h"
 
 /* hw/xfree86/vgahw/Makefile.am -- module */
 /*
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index a643dfc..d96da6a 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -39,6 +39,9 @@
 /* Build DPMS extension */
 #undef DPMSExtension
 
+/* Build DRI3 extension */
+#undef DRI3
+
 /* Build GLX extension */
 #undef GLXEXT
 
diff --git a/include/extinit.h b/include/extinit.h
index 6d67bf2..bdb149c 100644
--- a/include/extinit.h
+++ b/include/extinit.h
@@ -176,4 +176,9 @@ extern void XvExtensionInit(void);
 extern void XvMCExtensionInit(void);
 #endif
 
+#if defined(DRI3)
+#include <X11/extensions/dri3proto.h>
+extern void dri3_extension_init(void);
+#endif
+
 #endif
diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in
index 81935be..5b3b664 100644
--- a/include/xorg-server.h.in
+++ b/include/xorg-server.h.in
@@ -28,6 +28,9 @@
 /* Build DPMS extension */
 #undef DPMSExtension
 
+/* Build DRI3 extension */
+#undef DRI3
+
 /* Build GLX extension */
 #undef GLXEXT
 
diff --git a/mi/miinitext.c b/mi/miinitext.c
index 145da38..e49948b 100644
--- a/mi/miinitext.c
+++ b/mi/miinitext.c
@@ -287,6 +287,7 @@ static ExtensionModule staticExtensions[] = {
 #ifdef DPMSExtension
     {DPMSExtensionInit, DPMSExtensionName, &noDPMSExtension},
 #endif
+    {dri3_extension_init, DRI3_NAME, NULL},
 #ifdef RES
     {ResExtensionInit, XRES_NAME, &noResExtension},
 #endif
diff --git a/miext/sync/Makefile.am b/miext/sync/Makefile.am
index 9aa1ba5..e25ceac 100644
--- a/miext/sync/Makefile.am
+++ b/miext/sync/Makefile.am
@@ -5,10 +5,11 @@ AM_CFLAGS = $(DIX_CFLAGS)
 AM_CPPFLAGS = 
 
 if XORG
-sdk_HEADERS = misync.h misyncstr.h
+sdk_HEADERS = misync.h misyncstr.h misyncshm.h
 endif
 
 libsync_la_SOURCES =	\
 	misync.c	\
 	misync.h	\
+	misyncshm.c	\
 	misyncstr.h
diff --git a/miext/sync/misync.c b/miext/sync/misync.c
index f380547..3d03d1b 100644
--- a/miext/sync/misync.c
+++ b/miext/sync/misync.c
@@ -29,20 +29,7 @@
 #include "misync.h"
 #include "misyncstr.h"
 
-static DevPrivateKeyRec syncScreenPrivateKeyRec;
-static DevPrivateKey syncScreenPrivateKey = &syncScreenPrivateKeyRec;
-
-#define SYNC_SCREEN_PRIV(pScreen) 				\
-    (SyncScreenPrivPtr) dixLookupPrivate(&pScreen->devPrivates,	\
-					 syncScreenPrivateKey)
-
-typedef struct _syncScreenPriv {
-    /* Wrappable sync-specific screen functions */
-    SyncScreenFuncsRec funcs;
-
-    /* Wrapped screen functions */
-    CloseScreenProcPtr CloseScreen;
-} SyncScreenPrivRec, *SyncScreenPrivPtr;
+DevPrivateKeyRec miSyncScreenPrivateKey;
 
 /* Default implementations of the sync screen functions */
 void
@@ -62,25 +49,25 @@ miSyncScreenDestroyFence(ScreenPtr pScreen, SyncFence * pFence)
 }
 
 /* Default implementations of the per-object functions */
-static void
+void
 miSyncFenceSetTriggered(SyncFence * pFence)
 {
     pFence->triggered = TRUE;
 }
 
-static void
+void
 miSyncFenceReset(SyncFence * pFence)
 {
     pFence->triggered = FALSE;
 }
 
-static Bool
+Bool
 miSyncFenceCheckTriggered(SyncFence * pFence)
 {
     return pFence->triggered;
 }
 
-static void
+void
 miSyncFenceAddTrigger(SyncTrigger * pTrigger)
 {
     (void) pTrigger;
@@ -88,7 +75,7 @@ miSyncFenceAddTrigger(SyncTrigger * pTrigger)
     return;
 }
 
-static void
+void
 miSyncFenceDeleteTrigger(SyncTrigger * pTrigger)
 {
     (void) pTrigger;
@@ -182,8 +169,8 @@ miSyncSetup(ScreenPtr pScreen)
         &miSyncScreenDestroyFence
     };
 
-    if (!dixPrivateKeyRegistered(syncScreenPrivateKey)) {
-        if (!dixRegisterPrivateKey(syncScreenPrivateKey, PRIVATE_SCREEN,
+    if (!dixPrivateKeyRegistered(&miSyncScreenPrivateKey)) {
+        if (!dixRegisterPrivateKey(&miSyncScreenPrivateKey, PRIVATE_SCREEN,
                                    sizeof(SyncScreenPrivRec)))
             return FALSE;
     }
diff --git a/miext/sync/misync.h b/miext/sync/misync.h
index deebb82..f63ec2b 100644
--- a/miext/sync/misync.h
+++ b/miext/sync/misync.h
@@ -76,4 +76,25 @@ extern _X_EXPORT SyncScreenFuncsPtr miSyncGetScreenFuncs(ScreenPtr pScreen);
 extern _X_EXPORT Bool
  miSyncSetup(ScreenPtr pScreen);
 
+Bool
+miSyncFenceCheckTriggered(SyncFence * pFence);
+
+void
+miSyncFenceSetTriggered(SyncFence * pFence);
+
+void
+miSyncFenceReset(SyncFence * pFence);
+
+void
+miSyncFenceAddTrigger(SyncTrigger * pTrigger);
+
+void
+miSyncFenceDeleteTrigger(SyncTrigger * pTrigger);
+
+int
+miSyncInitFenceFromFD(DrawablePtr pDraw, SyncFence *pFence, int fd, BOOL initially_triggered);
+
+int
+miSyncFDFromFence(DrawablePtr pDraw, SyncFence *pFence);
+
 #endif                          /* _MISYNC_H_ */
diff --git a/miext/sync/misyncshm.c b/miext/sync/misyncshm.c
new file mode 100644
index 0000000..ddd15ae
--- /dev/null
+++ b/miext/sync/misyncshm.c
@@ -0,0 +1,176 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "scrnintstr.h"
+#include "misync.h"
+#include "misyncstr.h"
+#include "misyncshm.h"
+#include "pixmapstr.h"
+#include <sys/mman.h>
+#include <unistd.h>
+#include <X11/xshmfence.h>
+
+static DevPrivateKeyRec syncShmFencePrivateKey;
+
+typedef struct _SyncShmFencePrivate {
+    int32_t             *fence;
+    int                 fd;
+} SyncShmFencePrivateRec, *SyncShmFencePrivatePtr;
+
+#define SYNC_FENCE_PRIV(pFence) \
+    (SyncShmFencePrivatePtr) dixLookupPrivate(&pFence->devPrivates, &syncShmFencePrivateKey)
+
+static void
+miSyncShmFenceSetTriggered(SyncFence * pFence)
+{
+    SyncShmFencePrivatePtr      pPriv = SYNC_FENCE_PRIV(pFence);
+
+    if (pPriv->fence)
+        xshmfence_trigger(pPriv->fence);
+    miSyncFenceSetTriggered(pFence);
+}
+
+static void
+miSyncShmFenceReset(SyncFence * pFence)
+{
+    SyncShmFencePrivatePtr      pPriv = SYNC_FENCE_PRIV(pFence);
+
+    if (pPriv->fence)
+        xshmfence_reset(pPriv->fence);
+    miSyncFenceReset(pFence);
+}
+
+static Bool
+miSyncShmFenceCheckTriggered(SyncFence * pFence)
+{
+    SyncShmFencePrivatePtr      pPriv = SYNC_FENCE_PRIV(pFence);
+
+    if (pPriv->fence)
+        return xshmfence_query(pPriv->fence);
+    else
+        return miSyncFenceCheckTriggered(pFence);
+}
+
+static void
+miSyncShmFenceAddTrigger(SyncTrigger * pTrigger)
+{
+    miSyncFenceAddTrigger(pTrigger);
+}
+
+static void
+miSyncShmFenceDeleteTrigger(SyncTrigger * pTrigger)
+{
+    miSyncFenceDeleteTrigger(pTrigger);
+}
+
+static const SyncFenceFuncsRec miSyncShmFenceFuncs = {
+    &miSyncShmFenceSetTriggered,
+    &miSyncShmFenceReset,
+    &miSyncShmFenceCheckTriggered,
+    &miSyncShmFenceAddTrigger,
+    &miSyncShmFenceDeleteTrigger
+};
+
+static void
+miSyncShmScreenCreateFence(ScreenPtr pScreen, SyncFence * pFence,
+                        Bool initially_triggered)
+{
+    SyncShmFencePrivatePtr      pPriv = SYNC_FENCE_PRIV(pFence);
+
+    pPriv->fence = NULL;
+    miSyncScreenCreateFence(pScreen, pFence, initially_triggered);
+    pFence->funcs = miSyncShmFenceFuncs;
+}
+
+static void
+miSyncShmScreenDestroyFence(ScreenPtr pScreen, SyncFence * pFence)
+{
+    SyncShmFencePrivatePtr      pPriv = SYNC_FENCE_PRIV(pFence);
+
+    if (pPriv->fence) {
+        xshmfence_trigger(pPriv->fence);
+        xshmfence_unmap_shm(pPriv->fence);
+        close(pPriv->fd);
+    }
+    miSyncScreenDestroyFence(pScreen, pFence);
+}
+
+int
+miSyncInitFenceFromFD(DrawablePtr pDraw, SyncFence *pFence, int fd, BOOL initially_triggered)
+
+{
+    SyncShmFencePrivatePtr      pPriv = SYNC_FENCE_PRIV(pFence);
+
+    miSyncInitFence(pDraw->pScreen, pFence, initially_triggered);
+
+    pPriv->fence = xshmfence_map_shm(fd);
+    if (pPriv->fence) {
+        pPriv->fd = fd;
+        return Success;
+    }
+    else
+        close(fd);
+    return BadValue;
+}
+
+int
+miSyncFDFromFence(DrawablePtr pDraw, SyncFence *pFence)
+{
+    SyncShmFencePrivatePtr      pPriv = SYNC_FENCE_PRIV(pFence);
+
+    if (!pPriv->fence) {
+        pPriv->fd = xshmfence_alloc_shm();
+        if (pPriv->fd < 0)
+            return -1;
+        pPriv->fence = xshmfence_map_shm(pPriv->fd);
+        if (!pPriv->fence) {
+            close (pPriv->fd);
+            return -1;
+        }
+    }
+    return pPriv->fd;
+}
+
+_X_EXPORT Bool miSyncShmScreenInit(ScreenPtr pScreen)
+{
+    SyncScreenFuncsPtr  funcs;
+
+    if (!miSyncSetup(pScreen))
+        return FALSE;
+
+    if (!dixPrivateKeyRegistered(&syncShmFencePrivateKey)) {
+        if (!dixRegisterPrivateKey(&syncShmFencePrivateKey, PRIVATE_SYNC_FENCE,
+                                   sizeof(SyncShmFencePrivateRec)))
+            return FALSE;
+    }
+
+    funcs = miSyncGetScreenFuncs(pScreen);
+
+    funcs->CreateFence = miSyncShmScreenCreateFence;
+    funcs->DestroyFence = miSyncShmScreenDestroyFence;
+    return TRUE;
+}
+
diff --git a/miext/sync/misyncshm.h b/miext/sync/misyncshm.h
new file mode 100644
index 0000000..4edbb50
--- /dev/null
+++ b/miext/sync/misyncshm.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL 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 PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _MISYNCSHM_H_
+#define _MISYNCSYM_H_
+
+extern _X_EXPORT Bool miSyncShmScreenInit(ScreenPtr pScreen);
+
+#endif /* _MISYNCSHM_H_ */
diff --git a/miext/sync/misyncstr.h b/miext/sync/misyncstr.h
index e19256f..b5bf6fd 100644
--- a/miext/sync/misyncstr.h
+++ b/miext/sync/misyncstr.h
@@ -29,6 +29,7 @@
 #define _MISYNCSTR_H_
 
 #include "dix.h"
+#include "scrnintstr.h"
 #include <X11/extensions/syncconst.h>
 
 #define CARD64 XSyncValue       /* XXX temporary! need real 64 bit values for Alpha */
@@ -79,4 +80,18 @@ typedef struct _SyncTriggerList {
     struct _SyncTriggerList *next;
 } SyncTriggerList;
 
+extern DevPrivateKeyRec miSyncScreenPrivateKey;
+
+#define SYNC_SCREEN_PRIV(pScreen) 				\
+    (SyncScreenPrivPtr) dixLookupPrivate(&pScreen->devPrivates,	\
+					 &miSyncScreenPrivateKey)
+
+typedef struct _syncScreenPriv {
+    /* Wrappable sync-specific screen functions */
+    SyncScreenFuncsRec funcs;
+
+    /* Wrapped screen functions */
+    CloseScreenProcPtr CloseScreen;
+} SyncScreenPrivRec, *SyncScreenPrivPtr;
+
 #endif                          /* _MISYNCSTR_H_ */
diff --git a/test/Makefile.am b/test/Makefile.am
index eff0c9d..e59c412 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -19,7 +19,7 @@ AM_CPPFLAGS += -I$(top_srcdir)/hw/xfree86/parser \
 	-I$(top_srcdir)/hw/xfree86/ddc \
 	-I$(top_srcdir)/hw/xfree86/i2c -I$(top_srcdir)/hw/xfree86/modes \
 	-I$(top_srcdir)/hw/xfree86/ramdac -I$(top_srcdir)/hw/xfree86/dri \
-	-I$(top_srcdir)/hw/xfree86/dri2
+	-I$(top_srcdir)/hw/xfree86/dri2 -I$(top_srcdir)/dri3
 endif
 TEST_LDADD=libxservertest.la $(XORG_SYS_LIBS) $(XSERVER_SYS_LIBS) $(GLX_SYS_LIBS)
 
@@ -64,6 +64,10 @@ if DRI2
 libxservertest_la_LIBADD += $(top_builddir)/hw/xfree86/dri2/libdri2.la
 endif
 
+if DRI3
+libxservertest_la_LIBADD += $(top_builddir)/dri3/libdri3.la
+endif
+
 else
 nodist_libxservertest_la_SOURCES = \
             ddxstubs.c \
@@ -105,6 +109,11 @@ libxservertest_la_LIBADD += \
             $(top_builddir)/record/librecord.la
 endif
 
+if DRI3
+libxservertest_la_LIBADD += \
+            $(top_builddir)/dri3/libdri3.la
+endif
+
 if XQUARTZ
 libxservertest_la_LIBADD += \
             $(top_builddir)/miext/rootless/librootless.la
commit fdec793cdc2ef9a6ea66b311cb1068a7bd4a3be3
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Jan 17 13:46:55 2013 -0800

    Add support for MIT-SHM AttachFd request
    
    This passes a file descriptor from the client to the server, which is
    then mmap'd
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/Xext/shm.c b/Xext/shm.c
index f6995cc..1a70260 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -53,6 +53,7 @@ in this Software without prior written authorization from The Open Group.
 #include "xace.h"
 #include <X11/extensions/shmproto.h>
 #include <X11/Xfuncproto.h>
+#include <sys/mman.h>
 #include "protocol-versions.h"
 
 /* Needed for Solaris cross-zone shared memory extension */
@@ -382,8 +383,10 @@ ProcShmAttach(ClientPtr client)
         client->errorValue = stuff->readOnly;
         return BadValue;
     }
-    for (shmdesc = Shmsegs;
-         shmdesc && (shmdesc->shmid != stuff->shmid); shmdesc = shmdesc->next);
+    for (shmdesc = Shmsegs; shmdesc; shmdesc = shmdesc->next) {
+        if (!shmdesc->is_fd && shmdesc->shmid == stuff->shmid)
+            break;
+    }
     if (shmdesc) {
         if (!stuff->readOnly && !shmdesc->writable)
             return BadAccess;
@@ -393,6 +396,7 @@ ProcShmAttach(ClientPtr client)
         shmdesc = malloc(sizeof(ShmDescRec));
         if (!shmdesc)
             return BadAlloc;
+        shmdesc->is_fd = FALSE;
         shmdesc->addr = shmat(stuff->shmid, 0,
                               stuff->readOnly ? SHM_RDONLY : 0);
         if ((shmdesc->addr == ((char *) -1)) || SHMSTAT(stuff->shmid, &buf)) {
@@ -431,7 +435,10 @@ ShmDetachSegment(pointer value, /* must conform to DeleteType */
 
     if (--shmdesc->refcnt)
         return TRUE;
-    shmdt(shmdesc->addr);
+    if (shmdesc->is_fd)
+        munmap(shmdesc->addr, shmdesc->size);
+    else
+        shmdt(shmdesc->addr);
     for (prev = &Shmsegs; *prev != shmdesc; prev = &(*prev)->next);
     *prev = shmdesc->next;
     free(shmdesc);
@@ -1088,6 +1095,122 @@ ProcShmCreatePixmap(ClientPtr client)
 }
 
 static int
+ProcShmAttachFd(ClientPtr client)
+{
+    int fd;
+    ShmDescPtr shmdesc;
+    REQUEST(xShmAttachFdReq);
+    struct stat statb;
+
+    SetReqFds(client, 1);
+    REQUEST_SIZE_MATCH(xShmAttachFdReq);
+    LEGAL_NEW_RESOURCE(stuff->shmseg, client);
+    if ((stuff->readOnly != xTrue) && (stuff->readOnly != xFalse)) {
+        client->errorValue = stuff->readOnly;
+        return BadValue;
+    }
+    fd = ReadFdFromClient(client);
+    if (fd < 0)
+        return BadMatch;
+
+    if (fstat(fd, &statb) < 0 || statb.st_size == 0) {
+        close(fd);
+        return BadMatch;
+    }
+
+    shmdesc = malloc(sizeof(ShmDescRec));
+    if (!shmdesc) {
+        close(fd);
+        return BadAlloc;
+    }
+    shmdesc->is_fd = TRUE;
+    shmdesc->addr = mmap(NULL, statb.st_size,
+                         stuff->readOnly ? PROT_READ : PROT_READ|PROT_WRITE,
+                         MAP_SHARED,
+                         fd, 0);
+
+    close(fd);
+    if ((shmdesc->addr == ((char *) -1))) {
+        free(shmdesc);
+        return BadAccess;
+    }
+
+    shmdesc->refcnt = 1;
+    shmdesc->writable = !stuff->readOnly;
+    shmdesc->size = statb.st_size;
+    shmdesc->next = Shmsegs;
+    Shmsegs = shmdesc;
+
+    if (!AddResource(stuff->shmseg, ShmSegType, (pointer) shmdesc))
+        return BadAlloc;
+    return Success;
+}
+
+static int
+ProcShmCreateSegment(ClientPtr client)
+{
+    int fd;
+    ShmDescPtr shmdesc;
+    REQUEST(xShmCreateSegmentReq);
+    xShmCreateSegmentReply rep = {
+        .type = X_Reply,
+        .nfd = 1,
+        .sequenceNumber = client->sequence,
+        .length = 0,
+    };
+    char template[] = "/tmp/shm-XXXXXX";
+
+    REQUEST_SIZE_MATCH(xShmCreateSegmentReq);
+    if ((stuff->readOnly != xTrue) && (stuff->readOnly != xFalse)) {
+        client->errorValue = stuff->readOnly;
+        return BadValue;
+    }
+    fd = mkstemp(template);
+    if (fd < 0)
+        return BadAlloc;
+    unlink(template);
+    if (ftruncate(fd, stuff->size) < 0) {
+        close(fd);
+        return BadAlloc;
+    }
+    shmdesc = malloc(sizeof(ShmDescRec));
+    if (!shmdesc) {
+        close(fd);
+        return BadAlloc;
+    }
+    shmdesc->is_fd = TRUE;
+    shmdesc->addr = mmap(NULL, stuff->size,
+                         stuff->readOnly ? PROT_READ : PROT_READ|PROT_WRITE,
+                         MAP_SHARED,
+                         fd, 0);
+
+    if ((shmdesc->addr == ((char *) -1))) {
+        close(fd);
+        free(shmdesc);
+        return BadAccess;
+    }
+
+    shmdesc->refcnt = 1;
+    shmdesc->writable = !stuff->readOnly;
+    shmdesc->size = stuff->size;
+    shmdesc->next = Shmsegs;
+    Shmsegs = shmdesc;
+
+    if (!AddResource(stuff->shmseg, ShmSegType, (pointer) shmdesc)) {
+        close(fd);
+        return BadAlloc;
+    }
+
+    if (WriteFdToClient(client, fd, TRUE) < 0) {
+        FreeResource(stuff->shmseg, RT_NONE);
+        close(fd);
+        return BadAlloc;
+    }
+    WriteToClient(client, sizeof (xShmCreateSegmentReply), &rep);
+    return Success;
+}
+
+static int
 ProcShmDispatch(ClientPtr client)
 {
     REQUEST(xReq);
@@ -1116,6 +1239,10 @@ ProcShmDispatch(ClientPtr client)
             return ProcPanoramiXShmCreatePixmap(client);
 #endif
         return ProcShmCreatePixmap(client);
+    case X_ShmAttachFd:
+        return ProcShmAttachFd(client);
+    case X_ShmCreateSegment:
+        return ProcShmCreateSegment(client);
     default:
         return BadRequest;
     }
@@ -1217,6 +1344,28 @@ SProcShmCreatePixmap(ClientPtr client)
 }
 
 static int
+SProcShmAttachFd(ClientPtr client)
+{
+    REQUEST(xShmAttachFdReq);
+    SetReqFds(client, 1);
+    swaps(&stuff->length);
+    REQUEST_SIZE_MATCH(xShmAttachFdReq);
+    swapl(&stuff->shmseg);
+    return ProcShmAttachFd(client);
+}
+
+static int
+SProcShmCreateSegment(ClientPtr client)
+{
+    REQUEST(xShmCreateSegmentReq);
+    swaps(&stuff->length);
+    REQUEST_SIZE_MATCH(xShmCreateSegmentReq);
+    swapl(&stuff->shmseg);
+    swapl(&stuff->size);
+    return ProcShmCreateSegment(client);
+}
+
+static int
 SProcShmDispatch(ClientPtr client)
 {
     REQUEST(xReq);
@@ -1233,6 +1382,10 @@ SProcShmDispatch(ClientPtr client)
         return SProcShmGetImage(client);
     case X_ShmCreatePixmap:
         return SProcShmCreatePixmap(client);
+    case X_ShmAttachFd:
+        return SProcShmAttachFd(client);
+    case X_ShmCreateSegment:
+        return SProcShmCreateSegment(client);
     default:
         return BadRequest;
     }
diff --git a/Xext/shmint.h b/Xext/shmint.h
index 9002ce5..db35fbb 100644
--- a/Xext/shmint.h
+++ b/Xext/shmint.h
@@ -61,6 +61,7 @@ typedef struct _ShmDesc {
     int shmid;
     int refcnt;
     char *addr;
+    Bool is_fd;
     Bool writable;
     unsigned long size;
 } ShmDescRec, *ShmDescPtr;
diff --git a/include/os.h b/include/os.h
index b654a0d..11b2198 100644
--- a/include/os.h
+++ b/include/os.h
@@ -100,6 +100,8 @@ extern _X_EXPORT int ReadRequestFromClient(ClientPtr /*client */ );
 
 extern _X_EXPORT int ReadFdFromClient(ClientPtr client);
 
+extern _X_EXPORT int WriteFdToClient(ClientPtr client, int fd, Bool do_close);
+
 extern _X_EXPORT Bool InsertFakeRequest(ClientPtr /*client */ ,
                                         char * /*data */ ,
                                         int /*count */ );
diff --git a/os/io.c b/os/io.c
index 83df6e9..a20faa5 100644
--- a/os/io.c
+++ b/os/io.c
@@ -506,6 +506,14 @@ ReadFdFromClient(ClientPtr client)
     return fd;
 }
 
+int
+WriteFdToClient(ClientPtr client, int fd, Bool do_close)
+{
+    OsCommPtr oc = (OsCommPtr) client->osPrivate;
+
+    return _XSERVTransSendFd(oc->trans_conn, fd, do_close);
+}
+
 /*****************************************************************
  * InsertFakeRequest
  *    Splice a consed up (possibly partial) request in as the next request.
commit 9fd35daa3160fd36f00ed354bfcbefefa1353cce
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Jan 17 13:43:02 2013 -0800

    Add interfaces to get FDs from clients over the socket
    
    This adds two interfaces:
    
        void SetReqFds(ClientPtr client, int req_fds)
    
    	Marks the number of file descriptors expected for this
    	request. Call this before any request processing so that
    	any un-retrieved file descriptors will be closed
    	automatically.
    
        int ReadFdFromClient(ClientPtr client)
    
    	Reads the next queued file descriptor from the connection. If
    	this request is not expecting any more file descriptors, or
    	if there are no more file descriptors available from the
    	connection, then this will return -1.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/include/dixstruct.h b/include/dixstruct.h
index 7711cde..456e633 100644
--- a/include/dixstruct.h
+++ b/include/dixstruct.h
@@ -110,8 +110,16 @@ typedef struct _Client {
 
     DeviceIntPtr clientPtr;
     ClientIdPtr clientIds;
+    int req_fds;
 } ClientRec;
 
+static inline void
+SetReqFds(ClientPtr client, int req_fds) {
+    if (client->req_fds != 0 && req_fds != client->req_fds)
+        LogMessage(X_ERROR, "Mismatching number of request fds %d != %d\n", req_fds, client->req_fds);
+    client->req_fds = req_fds;
+}
+
 /*
  * Scheduling interface
  */
diff --git a/include/os.h b/include/os.h
index 3840ab9..b654a0d 100644
--- a/include/os.h
+++ b/include/os.h
@@ -98,6 +98,8 @@ extern _X_EXPORT int WaitForSomething(int *     /*pClientsReady */
 
 extern _X_EXPORT int ReadRequestFromClient(ClientPtr /*client */ );
 
+extern _X_EXPORT int ReadFdFromClient(ClientPtr client);
+
 extern _X_EXPORT Bool InsertFakeRequest(ClientPtr /*client */ ,
                                         char * /*data */ ,
                                         int /*count */ );
diff --git a/os/io.c b/os/io.c
index 3800366..83df6e9 100644
--- a/os/io.c
+++ b/os/io.c
@@ -259,6 +259,12 @@ ReadRequestFromClient(ClientPtr client)
         oc->input = oci;
     }
 
+    /* Discard any unused file descriptors */
+    while (client->req_fds > 0) {
+        int req_fd = ReadFdFromClient(client);
+        if (req_fd >= 0)
+            close(req_fd);
+    }
     /* advance to start of next request */
 
     oci->bufptr += oci->lenLastReq;
@@ -485,6 +491,21 @@ ReadRequestFromClient(ClientPtr client)
     return needed;
 }
 
+int
+ReadFdFromClient(ClientPtr client)
+{
+    int fd = -1;
+
+    if (client->req_fds > 0) {
+        OsCommPtr oc = (OsCommPtr) client->osPrivate;
+
+        --client->req_fds;
+        fd = _XSERVTransRecvFd(oc->trans_conn);
+    } else
+        LogMessage(X_ERROR, "Request asks for FD without setting req_fds\n");
+    return fd;
+}
+
 /*****************************************************************
  * InsertFakeRequest
  *    Splice a consed up (possibly partial) request in as the next request.
commit 264fc3abe5f18341d0cf9ddb6766e10e4154e447
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Oct 31 13:01:46 2013 -0700

    misync: Don't smash custom screen sync functions
    
    There was a check to avoid smashing custom functions, but the sense
    was backwards causing it to always smash them, and also not set them otherwise.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/miext/sync/misync.c b/miext/sync/misync.c
index b6914d1..f380547 100644
--- a/miext/sync/misync.c
+++ b/miext/sync/misync.c
@@ -190,7 +190,7 @@ miSyncSetup(ScreenPtr pScreen)
 
     pScreenPriv = SYNC_SCREEN_PRIV(pScreen);
 
-    if (pScreenPriv->funcs.CreateFence) {
+    if (!pScreenPriv->funcs.CreateFence) {
         pScreenPriv->funcs = miSyncScreenFuncs;
 
         /* Wrap CloseScreen to clean up */
commit 2d96948ab5c952b68875ac63844cf7d778d4bf63
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Jul 11 16:10:34 2013 -0700

    os: Add GetTimeInMicros
    
    64-bit higher resolution current time value.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/include/os.h b/include/os.h
index c7108a5..3840ab9 100644
--- a/include/os.h
+++ b/include/os.h
@@ -165,6 +165,7 @@ extern void ListenOnOpenFD(int /* fd */ , int /* noxauth */ );
 #endif
 
 extern _X_EXPORT CARD32 GetTimeInMillis(void);
+extern _X_EXPORT CARD64 GetTimeInMicros(void);
 
 extern _X_EXPORT void AdjustWaitForDelay(pointer /*waitTime */ ,
                                          unsigned long /*newdelay */ );
diff --git a/os/utils.c b/os/utils.c
index 97c3125..995f62a 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -430,6 +430,11 @@ GetTimeInMillis(void)
 {
     return GetTickCount();
 }
+CARD64
+GetTimeInMicros(void)
+{
+    return (CARD64) GetTickCount() * 1000;
+}
 #else
 CARD32
 GetTimeInMillis(void)
@@ -460,6 +465,28 @@ GetTimeInMillis(void)
     X_GETTIMEOFDAY(&tv);
     return (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
 }
+
+CARD64
+GetTimeInMicros(void)
+{
+    struct timeval tv;
+#ifdef MONOTONIC_CLOCK
+    struct timespec tp;
+    static clockid_t clockid;
+
+    if (!clockid) {
+        if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
+            clockid = CLOCK_MONOTONIC;
+        else
+            clockid = ~0L;
+    }
+    if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
+        return (CARD64) tp.tv_sec * (CARD64)1000000 + tp.tv_nsec / 1000;
+#endif
+
+    X_GETTIMEOFDAY(&tv);
+    return (CARD64) tv.tv_sec * (CARD64)1000000000 + (CARD64) tv.tv_usec * 1000;
+}
 #endif
 
 void
commit 0c33f47281c36726848daf513fb0483cdea57bff
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Jul 11 16:09:34 2013 -0700

    Add swapll to byte swap 64-bit datatypes
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/include/misc.h b/include/misc.h
index 0c67f11..17de710 100644
--- a/include/misc.h
+++ b/include/misc.h
@@ -305,6 +305,35 @@ __builtin_constant_p(int x)
 }
 #endif
 
+/* byte swap a 64-bit value */
+static inline void
+swap_uint64(uint64_t *x)
+{
+    char n;
+
+    n = ((char *) x)[0];
+    ((char *) x)[0] = ((char *) x)[7];
+    ((char *) x)[7] = n;
+
+    n = ((char *) x)[1];
+    ((char *) x)[1] = ((char *) x)[6];
+    ((char *) x)[6] = n;
+
+    n = ((char *) x)[2];
+    ((char *) x)[2] = ((char *) x)[5];
+    ((char *) x)[5] = n;
+
+    n = ((char *) x)[3];
+    ((char *) x)[3] = ((char *) x)[4];
+    ((char *) x)[4] = n;
+}
+
+#define swapll(x) do { \
+		if (sizeof(*(x)) != 8) \
+			wrong_size(); \
+                swap_uint64((uint64_t *)(x));   \
+	} while (0)
+
 /* byte swap a 32-bit value */
 static inline void
 swap_uint32(uint32_t * x)
commit 26f013ba45b08a02bb028a461af68288a86fadb1
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Jul 11 16:08:41 2013 -0700

    Add a RegionDuplicate function
    
    This allocates a new region structure and copies a source region into
    it in a single API rather than forcing the caller to do both steps themselves.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/dix/region.c b/dix/region.c
index 737d2a8..15f3d01 100644
--- a/dix/region.c
+++ b/dix/region.c
@@ -255,6 +255,21 @@ RegionDestroy(RegionPtr pReg)
         free(pReg);
 }
 
+RegionPtr
+RegionDuplicate(RegionPtr pOld)
+{
+    RegionPtr   pNew;
+
+    pNew = RegionCreate(&pOld->extents, 0);
+    if (!pNew)
+        return NULL;
+    if (!RegionCopy(pNew, pOld)) {
+        RegionDestroy(pNew);
+        return NULL;
+    }
+    return pNew;
+}
+
 void
 RegionPrint(RegionPtr rgn)
 {
diff --git a/include/regionstr.h b/include/regionstr.h
index 805257b..4a0725d 100644
--- a/include/regionstr.h
+++ b/include/regionstr.h
@@ -213,6 +213,8 @@ extern _X_EXPORT RegionPtr RegionCreate(BoxPtr /*rect */ ,
 
 extern _X_EXPORT void RegionDestroy(RegionPtr /*pReg */ );
 
+extern _X_EXPORT RegionPtr RegionDuplicate(RegionPtr /* pOld */);
+
 static inline Bool
 RegionCopy(RegionPtr dst, RegionPtr src)
 {
commit d25c217964eb1fe54c3a54bca4cac7f47b4b9fdf
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Jan 14 14:24:36 2013 -0800

    Clean up a couple of warnings in os/
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/os/connection.c b/os/connection.c
index 6cd8bcf..162e1d9 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -923,7 +923,7 @@ ErrorConnMax(XtransConnInfo trans_conn)
         iov[0].iov_len = sz_xConnSetupPrefix;
         iov[0].iov_base = (char *) &csp;
         iov[1].iov_len = csp.lengthReason;
-        iov[1].iov_base = NOROOM;
+        iov[1].iov_base = (void *) NOROOM;
         iov[2].iov_len = (4 - (csp.lengthReason & 3)) & 3;
         iov[2].iov_base = pad;
         (void) _XSERVTransWritev(trans_conn, iov, 3);
diff --git a/os/xstrans.c b/os/xstrans.c
index 6348a65..2bc79e7 100644
--- a/os/xstrans.c
+++ b/os/xstrans.c
@@ -5,9 +5,11 @@
 #include <X11/Xfuncproto.h>
 
 /* ErrorF is used by xtrans */
+#ifndef HAVE_DIX_CONFIG_H
 extern _X_EXPORT void
 ErrorF(const char *f, ...)
 _X_ATTRIBUTE_PRINTF(1, 2);
+#endif
 
 #define TRANS_REOPEN
 #define TRANS_SERVER
commit 7710f2b927ec8e3c631f72d66d494b523377b48e
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Jan 18 21:43:40 2013 -0800

    Xext: Move MIT-SHM 'ShmDesc' to shmint.h
    
    This data structure is required to use shared memory objects in any
    extension. That includes the Xv extension, which (before this patch)
    duplicated the definition of this structure in its own code.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/Xext/shm.c b/Xext/shm.c
index 5596090..f6995cc 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -89,15 +89,6 @@ in this Software without prior written authorization from The Open Group.
 
 #include "extinit.h"
 
-typedef struct _ShmDesc {
-    struct _ShmDesc *next;
-    int shmid;
-    int refcnt;
-    char *addr;
-    Bool writable;
-    unsigned long size;
-} ShmDescRec, *ShmDescPtr;
-
 typedef struct _ShmScrPrivateRec {
     CloseScreenProcPtr CloseScreen;
     ShmFuncsPtr shmFuncs;
diff --git a/Xext/shmint.h b/Xext/shmint.h
index fa6941c..9002ce5 100644
--- a/Xext/shmint.h
+++ b/Xext/shmint.h
@@ -56,6 +56,15 @@ typedef struct _ShmFuncs {
     void (*PutImage) (XSHM_PUT_IMAGE_ARGS);
 } ShmFuncs, *ShmFuncsPtr;
 
+typedef struct _ShmDesc {
+    struct _ShmDesc *next;
+    int shmid;
+    int refcnt;
+    char *addr;
+    Bool writable;
+    unsigned long size;
+} ShmDescRec, *ShmDescPtr;
+
 extern _X_EXPORT void
  ShmRegisterFuncs(ScreenPtr pScreen, ShmFuncsPtr funcs);
 
diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c
index 7877293..613867a 100644
--- a/Xext/xvdisp.c
+++ b/Xext/xvdisp.c
@@ -43,6 +43,7 @@ SOFTWARE.
 #include "xvdix.h"
 #ifdef MITSHM
 #include <X11/extensions/shmproto.h>
+#include "shmint.h"
 #endif
 
 #include "xvdisp.h"
@@ -949,18 +950,6 @@ ProcXvPutImage(ClientPtr client)
 }
 
 #ifdef MITSHM
-/* redefined here since it's not in any header file */
-typedef struct _ShmDesc {
-    struct _ShmDesc *next;
-    int shmid;
-    int refcnt;
-    char *addr;
-    Bool writable;
-    unsigned long size;
-} ShmDescRec, *ShmDescPtr;
-
-extern RESTYPE ShmSegType;
-extern int ShmCompletionCode;
 
 static int
 ProcXvShmPutImage(ClientPtr client)
commit e8961b718d82f1c081ec110d8d962f64e8406b82
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Oct 22 14:24:52 2013 +1000

    os: use a constant for backtrace array size
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Jasper St. Pierre <jstpierre at mecheye.net>

diff --git a/os/backtrace.c b/os/backtrace.c
index 426f9b1..3d1195b 100644
--- a/os/backtrace.c
+++ b/os/backtrace.c
@@ -114,14 +114,15 @@ xorg_backtrace(void)
 void
 xorg_backtrace(void)
 {
-    void *array[64];
+    const int BT_SIZE = 64;
+    void *array[BT_SIZE];
     const char *mod;
     int size, i;
     Dl_info info;
 
     ErrorFSigSafe("\n");
     ErrorFSigSafe("Backtrace:\n");
-    size = backtrace(array, 64);
+    size = backtrace(array, BT_SIZE);
     for (i = 0; i < size; i++) {
         int rc = dladdr(array[i], &info);
 
commit f12a9ed870017f35cf6d2a82b1405e843aae42ac
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Oct 29 15:24:11 2013 +1000

    configure: remove a comment
    
    94ed0ba1b5043ad9fc33b42756af447d5ab15bbd moved backtracing into the DIX, so
    this comment is outdated. since no-one noticed and it's easier to just grep
    than update file references, remove the comment.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Jasper St. Pierre <jstpierre at mecheye.net>

diff --git a/configure.ac b/configure.ac
index e7385f8..75ec70b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -300,7 +300,7 @@ AC_CHECK_HEADER([machine/apmvar.h],[
 AM_CONDITIONAL(BSD_APM, [test "x$ac_cv_BSD_APM" = xyes])
 AM_CONDITIONAL(BSD_KQUEUE_APM, [test "x$ac_cv_BSD_KQUEUE_APM" = xyes])
 	
-dnl glibc backtrace support check (hw/xfree86/common/xf86Events.c)
+dnl glibc backtrace support check
 AC_CHECK_HEADER([execinfo.h],[
     AC_CHECK_LIB(c, backtrace, [
         AC_DEFINE(HAVE_BACKTRACE, 1, [Has backtrace support])
commit bb745f2b45768d0936f3960951e1a5cee8b03194
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Thu Oct 31 08:50:57 2013 -0700

    XQuartz: Bump bundle version to 2.7.6
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>

diff --git a/hw/xquartz/bundle/Info.plist.cpp b/hw/xquartz/bundle/Info.plist.cpp
index b0106c6..b99e417 100644
--- a/hw/xquartz/bundle/Info.plist.cpp
+++ b/hw/xquartz/bundle/Info.plist.cpp
@@ -19,9 +19,9 @@
 	<key>CFBundlePackageType</key>
 		<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-		<string>2.7.4</string>
+		<string>2.7.6</string>
 	<key>CFBundleVersion</key>
-		<string>2.7.4</string>
+		<string>2.7.6</string>
 	<key>CFBundleSignature</key>
 		<string>x11a</string>
 	<key>CSResourcesFileMapped</key>
commit 2eedf42c229e2251035d716a96b654222155cd51
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Oct 31 09:23:52 2013 -0400

    dri: Fix GLX_Y_INVERTED_EXT fbconfig attribute
    
    We're Y-inverted from GL's coordinates, so this is correct.  gnome-shell
    doesn't seem to check this - somewhat reasonable since the only server
    that answered the other way around was Xglx - but kwin does, and
    upside-down hilarity ensues.
    
    Tested-by: maelcum on #xorg-devel
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/glx/glxdricommon.c b/glx/glxdricommon.c
index 48f0bce..1022c00 100644
--- a/glx/glxdricommon.c
+++ b/glx/glxdricommon.c
@@ -178,6 +178,7 @@ createModeFromConfig(const __DRIcoreExtension * core,
     config->config.visualType = visualType;
     config->config.renderType = renderType;
     config->config.drawableType = drawableType;
+    config->config.yInverted = GL_TRUE;
 
     return &config->config;
 }
commit 902ff0b3497d202b86bf9a411e17db7b694d6eaa
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 29 12:58:14 2013 -0400

    xfree86: Bump video/input/extension ABIs for 1.15
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index e0cec05..265b553 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -80,9 +80,9 @@ typedef enum {
  * mask is 0xFFFF0000.
  */
 #define ABI_ANSIC_VERSION	SET_ABI_VERSION(0, 4)
-#define ABI_VIDEODRV_VERSION	SET_ABI_VERSION(14, 1)
-#define ABI_XINPUT_VERSION	SET_ABI_VERSION(19, 2)
-#define ABI_EXTENSION_VERSION	SET_ABI_VERSION(7, 0)
+#define ABI_VIDEODRV_VERSION	SET_ABI_VERSION(15, 0)
+#define ABI_XINPUT_VERSION	SET_ABI_VERSION(20, 0)
+#define ABI_EXTENSION_VERSION	SET_ABI_VERSION(8, 0)
 #define ABI_FONT_VERSION	SET_ABI_VERSION(0, 6)
 
 #define MODINFOSTRING1	0xef23fdc5
commit 899451ae595f5f51a500295c624bf7ad14aca602
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Oct 30 08:54:24 2013 -0700

    kdrive/ephyr: Don't discard one-time driver structure at server reset
    
    KdScreenInfo is constructed at server startup time, and not
    re-generated at server reset time. Freeing the 'driver' element at
    reset time means this information is lost, and the server crashes
    pretty quickly afterwards.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index a603ef7..91e949d 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -732,8 +732,6 @@ ephyrScreenFini(KdScreenInfo * screen)
     if (scrpriv->shadow) {
         KdShadowFbFree(screen);
     }
-    free(screen->driver);
-    screen->driver = NULL;
 }
 
 /*  
commit 85ae44f07fa21b4a48d95d736dc8135bd4f751d0
Author: Michal Srb <msrb at suse.com>
Date:   Wed Oct 30 13:33:51 2013 +0200

    randr: deliver Output and Crtc events of attached output providers.
    
    Consider all attached output providers when looking for changed outputs and
    crtcs.
    
    Reviewed-by: Dave Airlie <airlied at redhat.com>
    Signed-off-by: Michal Srb <msrb at suse.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/randr/randr.c b/randr/randr.c
index 9cec6f6..3c51427 100644
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -478,6 +478,16 @@ TellChanged(WindowPtr pWin, pointer value)
                 if (crtc->changed)
                     RRDeliverCrtcEvent(client, pWin, crtc);
             }
+
+            xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) {
+                pSlaveScrPriv = rrGetScrPriv(iter);
+                for (i = 0; i < pSlaveScrPriv->numCrtcs; i++) {
+                    RRCrtcPtr crtc = pSlaveScrPriv->crtcs[i];
+
+                    if (crtc->changed)
+                        RRDeliverCrtcEvent(client, pWin, crtc);
+                }
+            }
         }
 
         if (pRREvent->mask & RROutputChangeNotifyMask) {
@@ -487,6 +497,16 @@ TellChanged(WindowPtr pWin, pointer value)
                 if (output->changed)
                     RRDeliverOutputEvent(client, pWin, output);
             }
+
+            xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) {
+                pSlaveScrPriv = rrGetScrPriv(iter);
+                for (i = 0; i < pSlaveScrPriv->numOutputs; i++) {
+                    RROutputPtr output = pSlaveScrPriv->outputs[i];
+
+                    if (output->changed)
+                        RRDeliverOutputEvent(client, pWin, output);
+                }
+            }
         }
 
         if (pRREvent->mask & RRProviderChangeNotifyMask) {
@@ -581,6 +601,10 @@ RRTellChanged(ScreenPtr pScreen)
         xorg_list_for_each_entry(iter, &master->output_slave_list, output_head) {
             pSlaveScrPriv = rrGetScrPriv(iter);
             pSlaveScrPriv->provider->changed = FALSE;
+            for (i = 0; i < pSlaveScrPriv->numOutputs; i++)
+                pSlaveScrPriv->outputs[i]->changed = FALSE;
+            for (i = 0; i < pSlaveScrPriv->numCrtcs; i++)
+                pSlaveScrPriv->crtcs[i]->changed = FALSE;
         }
         xorg_list_for_each_entry(iter, &master->offload_slave_list, offload_head) {
             pSlaveScrPriv = rrGetScrPriv(iter);
commit a9ca93dcf9a711b3d60fbad31cbd44e0c82b6f42
Author: Michal Srb <msrb at suse.com>
Date:   Wed Oct 30 13:33:50 2013 +0200

    randr: send RRResourceChangeNotify event
    
    Send RRResourceChangeNotify event when provider, output or crtc was created or
    destroyed. I.e. when the list of resources returned by RRGetScreenResources and
    RRGetProviders changes.
    
    Reviewed-by: Dave Airlie <airlied at redhat.com>
    Signed-off-by: Michal Srb <msrb at suse.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
index e368dee..33b2b7d 100644
--- a/hw/xfree86/common/xf86platformBus.c
+++ b/hw/xfree86/common/xf86platformBus.c
@@ -466,6 +466,9 @@ xf86platformAddDevice(int index)
    /* attach unbound to 0 protocol screen */
    AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
 
+   RRResourcesChanged(xf86Screens[0]->pScreen);
+   RRTellChanged(xf86Screens[0]->pScreen);
+
    return 0;
 }
 
@@ -508,6 +511,8 @@ xf86platformRemoveDevice(int index)
     xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL);
 
     xf86_remove_platform_device(index);
+
+    RRResourcesChanged(xf86Screens[0]->pScreen);
     RRTellChanged(xf86Screens[0]->pScreen);
  out:
     return;
diff --git a/randr/randr.c b/randr/randr.c
index fa0a4da..9cec6f6 100644
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -420,6 +420,32 @@ RRExtensionInit(void)
 #endif
 }
 
+void
+RRResourcesChanged(ScreenPtr pScreen)
+{
+    rrScrPriv(pScreen);
+    pScrPriv->resourcesChanged = TRUE;
+
+    RRSetChanged(pScreen);
+}
+
+static void
+RRDeliverResourceEvent(ClientPtr client, WindowPtr pWin)
+{
+    ScreenPtr pScreen = pWin->drawable.pScreen;
+
+    rrScrPriv(pScreen);
+
+    xRRResourceChangeNotifyEvent re = {
+        .type = RRNotify + RREventBase,
+        .subCode = RRNotify_ResourceChange,
+        .timestamp = pScrPriv->lastSetTime.milliseconds,
+        .window = pWin->drawable.id
+    };
+
+    WriteEventsToClient(client, 1, (xEvent *) &re);
+}
+
 static int
 TellChanged(WindowPtr pWin, pointer value)
 {
@@ -480,6 +506,12 @@ TellChanged(WindowPtr pWin, pointer value)
                     RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider);
             }
         }
+
+        if (pRREvent->mask & RRResourceChangeNotifyMask) {
+            if (pScrPriv->resourcesChanged) {
+                RRDeliverResourceEvent(client, pWin);
+            }
+        }
     }
     return WT_WALKCHILDREN;
 }
@@ -536,7 +568,11 @@ RRTellChanged(ScreenPtr pScreen)
         }
         pScrPriv->changed = FALSE;
         mastersp->changed = FALSE;
+
         WalkTree(master, TellChanged, (pointer) master);
+
+        mastersp->resourcesChanged = FALSE;
+
         for (i = 0; i < pScrPriv->numOutputs; i++)
             pScrPriv->outputs[i]->changed = FALSE;
         for (i = 0; i < pScrPriv->numCrtcs; i++)
diff --git a/randr/randrstr.h b/randr/randrstr.h
index c933349..15299fd 100644
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -301,6 +301,7 @@ typedef struct _rrScrPriv {
     Bool changed;               /* some config changed */
     Bool configChanged;         /* configuration changed */
     Bool layoutChanged;         /* screen layout changed */
+    Bool resourcesChanged;      /* screen resources change */
 
     CARD16 minWidth, minHeight;
     CARD16 maxWidth, maxHeight;
@@ -486,6 +487,9 @@ extern _X_EXPORT int
 extern _X_EXPORT void
  RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
 
+extern _X_EXPORT void
+ RRResourcesChanged(ScreenPtr pScreen);
+
 /* randr.c */
 /* set a screen change on the primary screen */
 extern _X_EXPORT void
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
index 2f76b62..99b3dca 100644
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -102,6 +102,8 @@ RRCrtcCreate(ScreenPtr pScreen, void *devPrivate)
     crtc->pScreen = pScreen;
     pScrPriv->crtcs[pScrPriv->numCrtcs++] = crtc;
 
+    RRResourcesChanged(pScreen);
+
     return crtc;
 }
 
@@ -669,6 +671,8 @@ RRCrtcDestroyResource(pointer value, XID pid)
                 break;
             }
         }
+
+        RRResourcesChanged(pScreen);
     }
 
     if (crtc->scanout_pixmap)
diff --git a/randr/rroutput.c b/randr/rroutput.c
index 922d61f..2b0b82f 100644
--- a/randr/rroutput.c
+++ b/randr/rroutput.c
@@ -101,6 +101,9 @@ RROutputCreate(ScreenPtr pScreen,
         return NULL;
 
     pScrPriv->outputs[pScrPriv->numOutputs++] = output;
+
+    RRResourcesChanged(pScreen);
+
     return output;
 }
 
@@ -355,6 +358,8 @@ RROutputDestroyResource(pointer value, XID pid)
                 break;
             }
         }
+
+        RRResourcesChanged(pScreen);
     }
     if (output->modes) {
         for (m = 0; m < output->numModes; m++)
commit 4b39ea8a918fe6117bf34dc1cba67a4e56d0d1fb
Author: Michal Srb <msrb at suse.com>
Date:   Wed Oct 30 13:33:49 2013 +0200

    randr: send RRProviderChangeNotify event
    
    Send RRProviderChangeNotify event when a provider becomes output source or
    offload sink.
    
    Reviewed-by: Dave Airlie <airlied at redhat.com>
    Signed-off-by: Michal Srb <msrb at suse.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/randr/randr.c b/randr/randr.c
index cb6fce7..fa0a4da 100644
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -426,6 +426,8 @@ TellChanged(WindowPtr pWin, pointer value)
     RREventPtr *pHead, pRREvent;
     ClientPtr client;
     ScreenPtr pScreen = pWin->drawable.pScreen;
+    ScreenPtr iter;
+    rrScrPrivPtr pSlaveScrPriv;
 
     rrScrPriv(pScreen);
     int i;
@@ -460,6 +462,24 @@ TellChanged(WindowPtr pWin, pointer value)
                     RRDeliverOutputEvent(client, pWin, output);
             }
         }
+
+        if (pRREvent->mask & RRProviderChangeNotifyMask) {
+            xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) {
+                pSlaveScrPriv = rrGetScrPriv(iter);
+                if (pSlaveScrPriv->provider->changed)
+                    RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider);
+            }
+            xorg_list_for_each_entry(iter, &pScreen->offload_slave_list, offload_head) {
+                pSlaveScrPriv = rrGetScrPriv(iter);
+                if (pSlaveScrPriv->provider->changed)
+                    RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider);
+            }
+            xorg_list_for_each_entry(iter, &pScreen->unattached_list, unattached_head) {
+                pSlaveScrPriv = rrGetScrPriv(iter);
+                if (pSlaveScrPriv->provider->changed)
+                    RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider);
+            }
+        }
     }
     return WT_WALKCHILDREN;
 }
@@ -496,6 +516,8 @@ RRTellChanged(ScreenPtr pScreen)
     rrScrPriv(pScreen);
     rrScrPrivPtr mastersp;
     int i;
+    ScreenPtr iter;
+    rrScrPrivPtr pSlaveScrPriv;
 
     if (pScreen->isGPU) {
         master = pScreen->current_master;
@@ -519,6 +541,20 @@ RRTellChanged(ScreenPtr pScreen)
             pScrPriv->outputs[i]->changed = FALSE;
         for (i = 0; i < pScrPriv->numCrtcs; i++)
             pScrPriv->crtcs[i]->changed = FALSE;
+
+        xorg_list_for_each_entry(iter, &master->output_slave_list, output_head) {
+            pSlaveScrPriv = rrGetScrPriv(iter);
+            pSlaveScrPriv->provider->changed = FALSE;
+        }
+        xorg_list_for_each_entry(iter, &master->offload_slave_list, offload_head) {
+            pSlaveScrPriv = rrGetScrPriv(iter);
+            pSlaveScrPriv->provider->changed = FALSE;
+        }
+        xorg_list_for_each_entry(iter, &master->unattached_list, unattached_head) {
+            pSlaveScrPriv = rrGetScrPriv(iter);
+            pSlaveScrPriv->provider->changed = FALSE;
+        }
+
         if (mastersp->layoutChanged) {
             pScrPriv->layoutChanged = FALSE;
             RRPointerScreenConfigured(master);
diff --git a/randr/randrstr.h b/randr/randrstr.h
index 2babfed..c933349 100644
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -164,6 +164,7 @@ struct _rrProvider {
     int nameLength;
     RRPropertyPtr properties;
     Bool pendingProperties;
+    Bool changed;
     struct _rrProvider *offload_sink;
     struct _rrProvider *output_source;
 };
@@ -923,6 +924,9 @@ RRProviderSetCapabilities(RRProviderPtr provider, uint32_t capabilities);
 extern _X_EXPORT Bool
 RRProviderLookup(XID id, RRProviderPtr *provider_p);
 
+extern _X_EXPORT void
+RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider);
+
 /* rrproviderproperty.c */
 
 extern _X_EXPORT void
diff --git a/randr/rrprovider.c b/randr/rrprovider.c
index b321e62..2334ad2 100644
--- a/randr/rrprovider.c
+++ b/randr/rrprovider.c
@@ -304,6 +304,9 @@ ProcRRSetProviderOutputSource(ClientPtr client)
 
     pScrPriv->rrProviderSetOutputSource(pScreen, provider, source_provider);
 
+    provider->changed = TRUE;
+    RRSetChanged(pScreen);
+
     RRTellChanged (pScreen);
 
     return Success;
@@ -333,6 +336,9 @@ ProcRRSetProviderOffloadSink(ClientPtr client)
 
     pScrPriv->rrProviderSetOffloadSink(pScreen, provider, sink_provider);
 
+    provider->changed = TRUE;
+    RRSetChanged(pScreen);
+
     RRTellChanged (pScreen);
 
     return Success;
@@ -357,6 +363,7 @@ RRProviderCreate(ScreenPtr pScreen, const char *name,
     provider->nameLength = nameLength;
     memcpy(provider->name, name, nameLength);
     provider->name[nameLength] = '\0';
+    provider->changed = FALSE;
 
     if (!AddResource (provider->id, RRProviderType, (pointer) provider))
         return NULL;
@@ -416,3 +423,21 @@ RRProviderLookup(XID id, RRProviderPtr *provider_p)
         return TRUE;
     return FALSE;
 }
+
+void
+RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider)
+{
+    ScreenPtr pScreen = pWin->drawable.pScreen;
+
+    rrScrPriv(pScreen);
+
+    xRRProviderChangeNotifyEvent pe = {
+        .type = RRNotify + RREventBase,
+        .subCode = RRNotify_ProviderChange,
+        .timestamp = pScrPriv->lastSetTime.milliseconds,
+        .window = pWin->drawable.id,
+        .provider = provider->id
+    };
+
+    WriteEventsToClient(client, 1, (xEvent *) &pe);
+}
commit 1470c0a132806fb2ce817515ad4ddfe66eb7c98f
Merge: 04ab07c 9f4afe7
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Oct 29 21:00:13 2013 -0700

    Merge remote-tracking branch 'whot/for-keith'

commit 9f4afe7e835cf9c513387ae01eaf8b7a6ba4aac9
Author: Gaetan Nadon <memsize at videotron.ca>
Date:   Mon Oct 28 18:32:36 2013 -0400

    config: replace deprecated use of AC_OUTPUT with AC_CONFIG_FILES
    
    Fix Automake warning: AC_OUTPUT should be used without arguments.
    www.gnu.org/software/autoconf/manual/autoconf.html#Configuration-Files
    
    Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/configure.ac b/configure.ac
index 67ef3c2..e7385f8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2238,7 +2238,7 @@ if test "x$CONFIG_HAL" = xno && test "x$CONFIG_UDEV" = xno; then
              ***********************************************])
 fi
 
-AC_OUTPUT([
+AC_CONFIG_FILES([
 Makefile
 glx/Makefile
 include/Makefile
@@ -2339,3 +2339,4 @@ test/xi2/Makefile
 xserver.ent
 xorg-server.pc
 ])
+AC_OUTPUT
commit e16dea72d6f45dd6d7788362bb7dbe76263719b1
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Oct 23 15:16:25 2013 +1000

    dmx: queue button events with a flags of 0
    
    Setting POINTER_SCREEN with a unset valuator mask causes a jump to 0/0. Set
    the flags to 0 so we don't generate any motion on a button event.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/dmx/input/dmxevents.c b/hw/dmx/input/dmxevents.c
index 2875620..bcb5c2e 100644
--- a/hw/dmx/input/dmxevents.c
+++ b/hw/dmx/input/dmxevents.c
@@ -726,8 +726,7 @@ dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
     case ButtonRelease:
         detail = dmxGetButtonMapping(dmxLocal, detail);
         valuator_mask_zero(&mask);
-        QueuePointerEvents(p, type, detail,
-                           POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
+        QueuePointerEvents(p, type, detail, 0, &mask);
         return;
 
     case MotionNotify:
commit 04ab07ca19236d6c9a947e065fb69b0dd0d16639
Author: Connor Behan <connor.behan at gmail.com>
Date:   Thu Oct 17 18:26:28 2013 -0700

    xfree86: Find primary entity when bus types are nominally different
    
    As of server 1.13, systems with DRM and Udev will have BUS_PLATFORM as
    their primary bus type. However, drivers not implementing a
    platformProbe function will still create entities of type BUS_PCI. We
    need to account for this when checking for the primary entity.
    
    Signed-off-by: Connor Behan <connor.behan at gmail.com>
    Acked-by: Tormod Volden <debian.tormod at gmail.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
index e101537..329d0b3 100644
--- a/hw/xfree86/common/xf86Bus.c
+++ b/hw/xfree86/common/xf86Bus.c
@@ -266,7 +266,9 @@ xf86IsEntityPrimary(int entityIndex)
 {
     EntityPtr pEnt = xf86Entities[entityIndex];
 
-    if (primaryBus.type != pEnt->bus.type)
+    if (primaryBus.type == BUS_PLATFORM && pEnt->bus.type == BUS_PCI)
+	return MATCH_PCI_DEVICES(pEnt->bus.id.pci, primaryBus.id.plat->pdev);
+    else if (primaryBus.type != pEnt->bus.type)
         return FALSE;
 
     switch (pEnt->bus.type) {
commit b32a4c91ccd479638c2bd2c0143b6ea170c717d1
Merge: be66809 c671e93
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Oct 29 09:37:30 2013 -0700

    Merge remote-tracking branch 'idr/glx-float-fbconfig'

commit be6680967a479eedbcab2fe1718c5f981e1029c7
Author: Adam Jackson <ajax at redhat.com>
Date:   Wed Jul 10 10:00:46 2013 -0400

    glx: convert to direct GL dispatch (v2)
    
    We now expect to be linked against something that provides the GL API,
    instead of manually grubbing about in the DRI driver's dispatch table.
    Since the GLX we expose calls GL functions that are meant to be looked
    up dynamically, also add a way to thunk through to GetProcAddress.
    
    This includes a refresh of the generated sources, which requires a
    correspondingly new Mesa.
    
    The GetProcAddress stubs are at the moment merely enough to make this
    link against Mesa 9.2, but should really be provided for everything not
    in the OpenGL 1.2 ABI.
    
    v2: Explicitly hide the GetProcAddress stubs so we can't conflict with
    libGL symbols; fix leading tab/space issues [anholt]
    
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/configure.ac b/configure.ac
index ff6cfc5..24faa69 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1070,7 +1070,7 @@ if test "x$GLX" = xyes; then
 	AC_SUBST(XLIB_CFLAGS)
 	AC_DEFINE(GLXEXT, 1, [Build GLX extension])
 	GLX_LIBS='$(top_builddir)/glx/libglx.la'
-	GLX_SYS_LIBS="$GLX_SYS_LIBS"
+	GLX_SYS_LIBS="$GLX_SYS_LIBS -lGL"
 else
         GLX=no
 fi
diff --git a/glx/Makefile.am b/glx/Makefile.am
index f22a1b6..5f28e87 100644
--- a/glx/Makefile.am
+++ b/glx/Makefile.am
@@ -26,7 +26,7 @@ if DRI2_AIGLX
 AM_CPPFLAGS += -I$(top_srcdir)/hw/xfree86/dri2
 endif
 
-glapi_sources =					\
+indirect_sources =				\
 	indirect_dispatch.c			\
 	indirect_dispatch.h			\
 	indirect_dispatch_swap.c		\
@@ -35,15 +35,7 @@ glapi_sources =					\
 	indirect_size.h				\
 	indirect_size_get.c			\
 	indirect_size_get.h			\
-	indirect_table.c			\
-	dispatch.h				\
-	glapitable.h				\
-	glapi.c					\
-	glapi.h					\
-	glapi_gentable.c			\
-	glprocs.h				\
-	glthread.c				\
-	glthread.h
+	indirect_table.c
 
 libglxdri_la_SOURCES =
 
@@ -55,7 +47,6 @@ libglxdri_la_LIBADD = $(DLOPEN_LIBS)
 
 libglx_la_SOURCES = \
 	$(indirect_sources) \
-	$(glapi_sources) \
 	clientinfo.c \
 	createcontext.c \
 	extension_string.c \
@@ -78,6 +69,7 @@ libglx_la_SOURCES = \
         glxscreens.c \
         glxscreens.h \
         glxserver.h \
+        glxstubs.c \
         glxutil.h \
         render2.c \
         render2swap.c \
diff --git a/glx/dispatch.h b/glx/dispatch.h
deleted file mode 100644
index 7208653..0000000
--- a/glx/dispatch.h
+++ /dev/null
@@ -1,19816 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by gl_table.py (from Mesa) script */
-
-/*
- * (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.
- */
-
-#if !defined( _DISPATCH_H_ )
-#define _DISPATCH_H_
-
-/**
- * \file main/dispatch.h
- * Macros for handling GL dispatch tables.
- *
- * For each known GL function, there are 3 macros in this file.  The first
- * macro is named CALL_FuncName and is used to call that GL function using
- * the specified dispatch table.  The other 2 macros, called GET_FuncName
- * can SET_FuncName, are used to get and set the dispatch pointer for the
- * named function in the specified dispatch table.
- */
-
-/* GLXEXT is defined when building the GLX extension in the xserver.
- */
-#if !defined(GLXEXT)
-#include "main/mfeatures.h"
-#endif
-
-#define CALL_by_offset(disp, cast, offset, parameters) \
-    (*(cast (GET_by_offset(disp, offset)))) parameters
-#define GET_by_offset(disp, offset) \
-    (offset >= 0) ? (((_glapi_proc *)(disp))[offset]) : NULL
-#define SET_by_offset(disp, offset, fn) \
-    do { \
-        if ( (offset) < 0 ) { \
-            /* fprintf( stderr, "[%s:%u] SET_by_offset(%p, %d, %s)!\n", */ \
-            /*         __func__, __LINE__, disp, offset, # fn); */ \
-            /* abort(); */ \
-        } \
-        else { \
-            ( (_glapi_proc *) (disp) )[offset] = (_glapi_proc) fn; \
-        } \
-    } while(0)
-
-/* total number of offsets below */
-#define _gloffset_COUNT 973
-
-#define _gloffset_NewList 0
-#define _gloffset_EndList 1
-#define _gloffset_CallList 2
-#define _gloffset_CallLists 3
-#define _gloffset_DeleteLists 4
-#define _gloffset_GenLists 5
-#define _gloffset_ListBase 6
-#define _gloffset_Begin 7
-#define _gloffset_Bitmap 8
-#define _gloffset_Color3b 9
-#define _gloffset_Color3bv 10
-#define _gloffset_Color3d 11
-#define _gloffset_Color3dv 12
-#define _gloffset_Color3f 13
-#define _gloffset_Color3fv 14
-#define _gloffset_Color3i 15
-#define _gloffset_Color3iv 16
-#define _gloffset_Color3s 17
-#define _gloffset_Color3sv 18
-#define _gloffset_Color3ub 19
-#define _gloffset_Color3ubv 20
-#define _gloffset_Color3ui 21
-#define _gloffset_Color3uiv 22
-#define _gloffset_Color3us 23
-#define _gloffset_Color3usv 24
-#define _gloffset_Color4b 25
-#define _gloffset_Color4bv 26
-#define _gloffset_Color4d 27
-#define _gloffset_Color4dv 28
-#define _gloffset_Color4f 29
-#define _gloffset_Color4fv 30
-#define _gloffset_Color4i 31
-#define _gloffset_Color4iv 32
-#define _gloffset_Color4s 33
-#define _gloffset_Color4sv 34
-#define _gloffset_Color4ub 35
-#define _gloffset_Color4ubv 36
-#define _gloffset_Color4ui 37
-#define _gloffset_Color4uiv 38
-#define _gloffset_Color4us 39
-#define _gloffset_Color4usv 40
-#define _gloffset_EdgeFlag 41
-#define _gloffset_EdgeFlagv 42
-#define _gloffset_End 43
-#define _gloffset_Indexd 44
-#define _gloffset_Indexdv 45
-#define _gloffset_Indexf 46
-#define _gloffset_Indexfv 47
-#define _gloffset_Indexi 48
-#define _gloffset_Indexiv 49
-#define _gloffset_Indexs 50
-#define _gloffset_Indexsv 51
-#define _gloffset_Normal3b 52
-#define _gloffset_Normal3bv 53
-#define _gloffset_Normal3d 54
-#define _gloffset_Normal3dv 55
-#define _gloffset_Normal3f 56
-#define _gloffset_Normal3fv 57
-#define _gloffset_Normal3i 58
-#define _gloffset_Normal3iv 59
-#define _gloffset_Normal3s 60
-#define _gloffset_Normal3sv 61
-#define _gloffset_RasterPos2d 62
-#define _gloffset_RasterPos2dv 63
-#define _gloffset_RasterPos2f 64
-#define _gloffset_RasterPos2fv 65
-#define _gloffset_RasterPos2i 66
-#define _gloffset_RasterPos2iv 67
-#define _gloffset_RasterPos2s 68
-#define _gloffset_RasterPos2sv 69
-#define _gloffset_RasterPos3d 70
-#define _gloffset_RasterPos3dv 71
-#define _gloffset_RasterPos3f 72
-#define _gloffset_RasterPos3fv 73
-#define _gloffset_RasterPos3i 74
-#define _gloffset_RasterPos3iv 75
-#define _gloffset_RasterPos3s 76
-#define _gloffset_RasterPos3sv 77
-#define _gloffset_RasterPos4d 78
-#define _gloffset_RasterPos4dv 79
-#define _gloffset_RasterPos4f 80
-#define _gloffset_RasterPos4fv 81
-#define _gloffset_RasterPos4i 82
-#define _gloffset_RasterPos4iv 83
-#define _gloffset_RasterPos4s 84
-#define _gloffset_RasterPos4sv 85
-#define _gloffset_Rectd 86
-#define _gloffset_Rectdv 87
-#define _gloffset_Rectf 88
-#define _gloffset_Rectfv 89
-#define _gloffset_Recti 90
-#define _gloffset_Rectiv 91
-#define _gloffset_Rects 92
-#define _gloffset_Rectsv 93
-#define _gloffset_TexCoord1d 94
-#define _gloffset_TexCoord1dv 95
-#define _gloffset_TexCoord1f 96
-#define _gloffset_TexCoord1fv 97
-#define _gloffset_TexCoord1i 98
-#define _gloffset_TexCoord1iv 99
-#define _gloffset_TexCoord1s 100
-#define _gloffset_TexCoord1sv 101
-#define _gloffset_TexCoord2d 102
-#define _gloffset_TexCoord2dv 103
-#define _gloffset_TexCoord2f 104
-#define _gloffset_TexCoord2fv 105
-#define _gloffset_TexCoord2i 106
-#define _gloffset_TexCoord2iv 107
-#define _gloffset_TexCoord2s 108
-#define _gloffset_TexCoord2sv 109
-#define _gloffset_TexCoord3d 110
-#define _gloffset_TexCoord3dv 111
-#define _gloffset_TexCoord3f 112
-#define _gloffset_TexCoord3fv 113
-#define _gloffset_TexCoord3i 114
-#define _gloffset_TexCoord3iv 115
-#define _gloffset_TexCoord3s 116
-#define _gloffset_TexCoord3sv 117
-#define _gloffset_TexCoord4d 118
-#define _gloffset_TexCoord4dv 119
-#define _gloffset_TexCoord4f 120
-#define _gloffset_TexCoord4fv 121
-#define _gloffset_TexCoord4i 122
-#define _gloffset_TexCoord4iv 123
-#define _gloffset_TexCoord4s 124
-#define _gloffset_TexCoord4sv 125
-#define _gloffset_Vertex2d 126
-#define _gloffset_Vertex2dv 127
-#define _gloffset_Vertex2f 128
-#define _gloffset_Vertex2fv 129
-#define _gloffset_Vertex2i 130
-#define _gloffset_Vertex2iv 131
-#define _gloffset_Vertex2s 132
-#define _gloffset_Vertex2sv 133
-#define _gloffset_Vertex3d 134
-#define _gloffset_Vertex3dv 135
-#define _gloffset_Vertex3f 136
-#define _gloffset_Vertex3fv 137
-#define _gloffset_Vertex3i 138
-#define _gloffset_Vertex3iv 139
-#define _gloffset_Vertex3s 140
-#define _gloffset_Vertex3sv 141
-#define _gloffset_Vertex4d 142
-#define _gloffset_Vertex4dv 143
-#define _gloffset_Vertex4f 144
-#define _gloffset_Vertex4fv 145
-#define _gloffset_Vertex4i 146
-#define _gloffset_Vertex4iv 147
-#define _gloffset_Vertex4s 148
-#define _gloffset_Vertex4sv 149
-#define _gloffset_ClipPlane 150
-#define _gloffset_ColorMaterial 151
-#define _gloffset_CullFace 152
-#define _gloffset_Fogf 153
-#define _gloffset_Fogfv 154
-#define _gloffset_Fogi 155
-#define _gloffset_Fogiv 156
-#define _gloffset_FrontFace 157
-#define _gloffset_Hint 158
-#define _gloffset_Lightf 159
-#define _gloffset_Lightfv 160
-#define _gloffset_Lighti 161
-#define _gloffset_Lightiv 162
-#define _gloffset_LightModelf 163
-#define _gloffset_LightModelfv 164
-#define _gloffset_LightModeli 165
-#define _gloffset_LightModeliv 166
-#define _gloffset_LineStipple 167
-#define _gloffset_LineWidth 168
-#define _gloffset_Materialf 169
-#define _gloffset_Materialfv 170
-#define _gloffset_Materiali 171
-#define _gloffset_Materialiv 172
-#define _gloffset_PointSize 173
-#define _gloffset_PolygonMode 174
-#define _gloffset_PolygonStipple 175
-#define _gloffset_Scissor 176
-#define _gloffset_ShadeModel 177
-#define _gloffset_TexParameterf 178
-#define _gloffset_TexParameterfv 179
-#define _gloffset_TexParameteri 180
-#define _gloffset_TexParameteriv 181
-#define _gloffset_TexImage1D 182
-#define _gloffset_TexImage2D 183
-#define _gloffset_TexEnvf 184
-#define _gloffset_TexEnvfv 185
-#define _gloffset_TexEnvi 186
-#define _gloffset_TexEnviv 187
-#define _gloffset_TexGend 188
-#define _gloffset_TexGendv 189
-#define _gloffset_TexGenf 190
-#define _gloffset_TexGenfv 191
-#define _gloffset_TexGeni 192
-#define _gloffset_TexGeniv 193
-#define _gloffset_FeedbackBuffer 194
-#define _gloffset_SelectBuffer 195
-#define _gloffset_RenderMode 196
-#define _gloffset_InitNames 197
-#define _gloffset_LoadName 198
-#define _gloffset_PassThrough 199
-#define _gloffset_PopName 200
-#define _gloffset_PushName 201
-#define _gloffset_DrawBuffer 202
-#define _gloffset_Clear 203
-#define _gloffset_ClearAccum 204
-#define _gloffset_ClearIndex 205
-#define _gloffset_ClearColor 206
-#define _gloffset_ClearStencil 207
-#define _gloffset_ClearDepth 208
-#define _gloffset_StencilMask 209
-#define _gloffset_ColorMask 210
-#define _gloffset_DepthMask 211
-#define _gloffset_IndexMask 212
-#define _gloffset_Accum 213
-#define _gloffset_Disable 214
-#define _gloffset_Enable 215
-#define _gloffset_Finish 216
-#define _gloffset_Flush 217
-#define _gloffset_PopAttrib 218
-#define _gloffset_PushAttrib 219
-#define _gloffset_Map1d 220
-#define _gloffset_Map1f 221
-#define _gloffset_Map2d 222
-#define _gloffset_Map2f 223
-#define _gloffset_MapGrid1d 224
-#define _gloffset_MapGrid1f 225
-#define _gloffset_MapGrid2d 226
-#define _gloffset_MapGrid2f 227
-#define _gloffset_EvalCoord1d 228
-#define _gloffset_EvalCoord1dv 229
-#define _gloffset_EvalCoord1f 230
-#define _gloffset_EvalCoord1fv 231
-#define _gloffset_EvalCoord2d 232
-#define _gloffset_EvalCoord2dv 233
-#define _gloffset_EvalCoord2f 234
-#define _gloffset_EvalCoord2fv 235
-#define _gloffset_EvalMesh1 236
-#define _gloffset_EvalPoint1 237
-#define _gloffset_EvalMesh2 238
-#define _gloffset_EvalPoint2 239
-#define _gloffset_AlphaFunc 240
-#define _gloffset_BlendFunc 241
-#define _gloffset_LogicOp 242
-#define _gloffset_StencilFunc 243
-#define _gloffset_StencilOp 244
-#define _gloffset_DepthFunc 245
-#define _gloffset_PixelZoom 246
-#define _gloffset_PixelTransferf 247
-#define _gloffset_PixelTransferi 248
-#define _gloffset_PixelStoref 249
-#define _gloffset_PixelStorei 250
-#define _gloffset_PixelMapfv 251
-#define _gloffset_PixelMapuiv 252
-#define _gloffset_PixelMapusv 253
-#define _gloffset_ReadBuffer 254
-#define _gloffset_CopyPixels 255
-#define _gloffset_ReadPixels 256
-#define _gloffset_DrawPixels 257
-#define _gloffset_GetBooleanv 258
-#define _gloffset_GetClipPlane 259
-#define _gloffset_GetDoublev 260
-#define _gloffset_GetError 261
-#define _gloffset_GetFloatv 262
-#define _gloffset_GetIntegerv 263
-#define _gloffset_GetLightfv 264
-#define _gloffset_GetLightiv 265
-#define _gloffset_GetMapdv 266
-#define _gloffset_GetMapfv 267
-#define _gloffset_GetMapiv 268
-#define _gloffset_GetMaterialfv 269
-#define _gloffset_GetMaterialiv 270
-#define _gloffset_GetPixelMapfv 271
-#define _gloffset_GetPixelMapuiv 272
-#define _gloffset_GetPixelMapusv 273
-#define _gloffset_GetPolygonStipple 274
-#define _gloffset_GetString 275
-#define _gloffset_GetTexEnvfv 276
-#define _gloffset_GetTexEnviv 277
-#define _gloffset_GetTexGendv 278
-#define _gloffset_GetTexGenfv 279
-#define _gloffset_GetTexGeniv 280
-#define _gloffset_GetTexImage 281
-#define _gloffset_GetTexParameterfv 282
-#define _gloffset_GetTexParameteriv 283
-#define _gloffset_GetTexLevelParameterfv 284
-#define _gloffset_GetTexLevelParameteriv 285
-#define _gloffset_IsEnabled 286
-#define _gloffset_IsList 287
-#define _gloffset_DepthRange 288
-#define _gloffset_Frustum 289
-#define _gloffset_LoadIdentity 290
-#define _gloffset_LoadMatrixf 291
-#define _gloffset_LoadMatrixd 292
-#define _gloffset_MatrixMode 293
-#define _gloffset_MultMatrixf 294
-#define _gloffset_MultMatrixd 295
-#define _gloffset_Ortho 296
-#define _gloffset_PopMatrix 297
-#define _gloffset_PushMatrix 298
-#define _gloffset_Rotated 299
-#define _gloffset_Rotatef 300
-#define _gloffset_Scaled 301
-#define _gloffset_Scalef 302
-#define _gloffset_Translated 303
-#define _gloffset_Translatef 304
-#define _gloffset_Viewport 305
-#define _gloffset_ArrayElement 306
-#define _gloffset_BindTexture 307
-#define _gloffset_ColorPointer 308
-#define _gloffset_DisableClientState 309
-#define _gloffset_DrawArrays 310
-#define _gloffset_DrawElements 311
-#define _gloffset_EdgeFlagPointer 312
-#define _gloffset_EnableClientState 313
-#define _gloffset_IndexPointer 314
-#define _gloffset_Indexub 315
-#define _gloffset_Indexubv 316
-#define _gloffset_InterleavedArrays 317
-#define _gloffset_NormalPointer 318
-#define _gloffset_PolygonOffset 319
-#define _gloffset_TexCoordPointer 320
-#define _gloffset_VertexPointer 321
-#define _gloffset_AreTexturesResident 322
-#define _gloffset_CopyTexImage1D 323
-#define _gloffset_CopyTexImage2D 324
-#define _gloffset_CopyTexSubImage1D 325
-#define _gloffset_CopyTexSubImage2D 326
-#define _gloffset_DeleteTextures 327
-#define _gloffset_GenTextures 328
-#define _gloffset_GetPointerv 329
-#define _gloffset_IsTexture 330
-#define _gloffset_PrioritizeTextures 331
-#define _gloffset_TexSubImage1D 332
-#define _gloffset_TexSubImage2D 333
-#define _gloffset_PopClientAttrib 334
-#define _gloffset_PushClientAttrib 335
-#define _gloffset_BlendColor 336
-#define _gloffset_BlendEquation 337
-#define _gloffset_DrawRangeElements 338
-#define _gloffset_ColorTable 339
-#define _gloffset_ColorTableParameterfv 340
-#define _gloffset_ColorTableParameteriv 341
-#define _gloffset_CopyColorTable 342
-#define _gloffset_GetColorTable 343
-#define _gloffset_GetColorTableParameterfv 344
-#define _gloffset_GetColorTableParameteriv 345
-#define _gloffset_ColorSubTable 346
-#define _gloffset_CopyColorSubTable 347
-#define _gloffset_ConvolutionFilter1D 348
-#define _gloffset_ConvolutionFilter2D 349
-#define _gloffset_ConvolutionParameterf 350
-#define _gloffset_ConvolutionParameterfv 351
-#define _gloffset_ConvolutionParameteri 352
-#define _gloffset_ConvolutionParameteriv 353
-#define _gloffset_CopyConvolutionFilter1D 354
-#define _gloffset_CopyConvolutionFilter2D 355
-#define _gloffset_GetConvolutionFilter 356
-#define _gloffset_GetConvolutionParameterfv 357
-#define _gloffset_GetConvolutionParameteriv 358
-#define _gloffset_GetSeparableFilter 359
-#define _gloffset_SeparableFilter2D 360
-#define _gloffset_GetHistogram 361
-#define _gloffset_GetHistogramParameterfv 362
-#define _gloffset_GetHistogramParameteriv 363
-#define _gloffset_GetMinmax 364
-#define _gloffset_GetMinmaxParameterfv 365
-#define _gloffset_GetMinmaxParameteriv 366
-#define _gloffset_Histogram 367
-#define _gloffset_Minmax 368
-#define _gloffset_ResetHistogram 369
-#define _gloffset_ResetMinmax 370
-#define _gloffset_TexImage3D 371
-#define _gloffset_TexSubImage3D 372
-#define _gloffset_CopyTexSubImage3D 373
-#define _gloffset_ActiveTextureARB 374
-#define _gloffset_ClientActiveTextureARB 375
-#define _gloffset_MultiTexCoord1dARB 376
-#define _gloffset_MultiTexCoord1dvARB 377
-#define _gloffset_MultiTexCoord1fARB 378
-#define _gloffset_MultiTexCoord1fvARB 379
-#define _gloffset_MultiTexCoord1iARB 380
-#define _gloffset_MultiTexCoord1ivARB 381
-#define _gloffset_MultiTexCoord1sARB 382
-#define _gloffset_MultiTexCoord1svARB 383
-#define _gloffset_MultiTexCoord2dARB 384
-#define _gloffset_MultiTexCoord2dvARB 385
-#define _gloffset_MultiTexCoord2fARB 386
-#define _gloffset_MultiTexCoord2fvARB 387
-#define _gloffset_MultiTexCoord2iARB 388
-#define _gloffset_MultiTexCoord2ivARB 389
-#define _gloffset_MultiTexCoord2sARB 390
-#define _gloffset_MultiTexCoord2svARB 391
-#define _gloffset_MultiTexCoord3dARB 392
-#define _gloffset_MultiTexCoord3dvARB 393
-#define _gloffset_MultiTexCoord3fARB 394
-#define _gloffset_MultiTexCoord3fvARB 395
-#define _gloffset_MultiTexCoord3iARB 396
-#define _gloffset_MultiTexCoord3ivARB 397
-#define _gloffset_MultiTexCoord3sARB 398
-#define _gloffset_MultiTexCoord3svARB 399
-#define _gloffset_MultiTexCoord4dARB 400
-#define _gloffset_MultiTexCoord4dvARB 401
-#define _gloffset_MultiTexCoord4fARB 402
-#define _gloffset_MultiTexCoord4fvARB 403
-#define _gloffset_MultiTexCoord4iARB 404
-#define _gloffset_MultiTexCoord4ivARB 405
-#define _gloffset_MultiTexCoord4sARB 406
-#define _gloffset_MultiTexCoord4svARB 407
-
-#if !FEATURE_remap_table
-
-#define _gloffset_AttachShader 408
-#define _gloffset_CreateProgram 409
-#define _gloffset_CreateShader 410
-#define _gloffset_DeleteProgram 411
-#define _gloffset_DeleteShader 412
-#define _gloffset_DetachShader 413
-#define _gloffset_GetAttachedShaders 414
-#define _gloffset_GetProgramInfoLog 415
-#define _gloffset_GetProgramiv 416
-#define _gloffset_GetShaderInfoLog 417
-#define _gloffset_GetShaderiv 418
-#define _gloffset_IsProgram 419
-#define _gloffset_IsShader 420
-#define _gloffset_StencilFuncSeparate 421
-#define _gloffset_StencilMaskSeparate 422
-#define _gloffset_StencilOpSeparate 423
-#define _gloffset_UniformMatrix2x3fv 424
-#define _gloffset_UniformMatrix2x4fv 425
-#define _gloffset_UniformMatrix3x2fv 426
-#define _gloffset_UniformMatrix3x4fv 427
-#define _gloffset_UniformMatrix4x2fv 428
-#define _gloffset_UniformMatrix4x3fv 429
-#define _gloffset_ClampColor 430
-#define _gloffset_ClearBufferfi 431
-#define _gloffset_ClearBufferfv 432
-#define _gloffset_ClearBufferiv 433
-#define _gloffset_ClearBufferuiv 434
-#define _gloffset_GetStringi 435
-#define _gloffset_TexBuffer 436
-#define _gloffset_FramebufferTexture 437
-#define _gloffset_GetBufferParameteri64v 438
-#define _gloffset_GetInteger64i_v 439
-#define _gloffset_VertexAttribDivisor 440
-#define _gloffset_LoadTransposeMatrixdARB 441
-#define _gloffset_LoadTransposeMatrixfARB 442
-#define _gloffset_MultTransposeMatrixdARB 443
-#define _gloffset_MultTransposeMatrixfARB 444
-#define _gloffset_SampleCoverageARB 445
-#define _gloffset_CompressedTexImage1DARB 446
-#define _gloffset_CompressedTexImage2DARB 447
-#define _gloffset_CompressedTexImage3DARB 448
-#define _gloffset_CompressedTexSubImage1DARB 449
-#define _gloffset_CompressedTexSubImage2DARB 450
-#define _gloffset_CompressedTexSubImage3DARB 451
-#define _gloffset_GetCompressedTexImageARB 452
-#define _gloffset_DisableVertexAttribArrayARB 453
-#define _gloffset_EnableVertexAttribArrayARB 454
-#define _gloffset_GetProgramEnvParameterdvARB 455
-#define _gloffset_GetProgramEnvParameterfvARB 456
-#define _gloffset_GetProgramLocalParameterdvARB 457
-#define _gloffset_GetProgramLocalParameterfvARB 458
-#define _gloffset_GetProgramStringARB 459
-#define _gloffset_GetProgramivARB 460
-#define _gloffset_GetVertexAttribdvARB 461
-#define _gloffset_GetVertexAttribfvARB 462
-#define _gloffset_GetVertexAttribivARB 463
-#define _gloffset_ProgramEnvParameter4dARB 464
-#define _gloffset_ProgramEnvParameter4dvARB 465
-#define _gloffset_ProgramEnvParameter4fARB 466
-#define _gloffset_ProgramEnvParameter4fvARB 467
-#define _gloffset_ProgramLocalParameter4dARB 468
-#define _gloffset_ProgramLocalParameter4dvARB 469
-#define _gloffset_ProgramLocalParameter4fARB 470
-#define _gloffset_ProgramLocalParameter4fvARB 471
-#define _gloffset_ProgramStringARB 472
-#define _gloffset_VertexAttrib1dARB 473
-#define _gloffset_VertexAttrib1dvARB 474
-#define _gloffset_VertexAttrib1fARB 475
-#define _gloffset_VertexAttrib1fvARB 476
-#define _gloffset_VertexAttrib1sARB 477
-#define _gloffset_VertexAttrib1svARB 478
-#define _gloffset_VertexAttrib2dARB 479
-#define _gloffset_VertexAttrib2dvARB 480
-#define _gloffset_VertexAttrib2fARB 481
-#define _gloffset_VertexAttrib2fvARB 482
-#define _gloffset_VertexAttrib2sARB 483
-#define _gloffset_VertexAttrib2svARB 484
-#define _gloffset_VertexAttrib3dARB 485
-#define _gloffset_VertexAttrib3dvARB 486
-#define _gloffset_VertexAttrib3fARB 487
-#define _gloffset_VertexAttrib3fvARB 488
-#define _gloffset_VertexAttrib3sARB 489
-#define _gloffset_VertexAttrib3svARB 490
-#define _gloffset_VertexAttrib4NbvARB 491
-#define _gloffset_VertexAttrib4NivARB 492
-#define _gloffset_VertexAttrib4NsvARB 493
-#define _gloffset_VertexAttrib4NubARB 494
-#define _gloffset_VertexAttrib4NubvARB 495
-#define _gloffset_VertexAttrib4NuivARB 496
-#define _gloffset_VertexAttrib4NusvARB 497
-#define _gloffset_VertexAttrib4bvARB 498
-#define _gloffset_VertexAttrib4dARB 499
-#define _gloffset_VertexAttrib4dvARB 500
-#define _gloffset_VertexAttrib4fARB 501
-#define _gloffset_VertexAttrib4fvARB 502
-#define _gloffset_VertexAttrib4ivARB 503
-#define _gloffset_VertexAttrib4sARB 504
-#define _gloffset_VertexAttrib4svARB 505
-#define _gloffset_VertexAttrib4ubvARB 506
-#define _gloffset_VertexAttrib4uivARB 507
-#define _gloffset_VertexAttrib4usvARB 508
-#define _gloffset_VertexAttribPointerARB 509
-#define _gloffset_BindBufferARB 510
-#define _gloffset_BufferDataARB 511
-#define _gloffset_BufferSubDataARB 512
-#define _gloffset_DeleteBuffersARB 513
-#define _gloffset_GenBuffersARB 514
-#define _gloffset_GetBufferParameterivARB 515
-#define _gloffset_GetBufferPointervARB 516
-#define _gloffset_GetBufferSubDataARB 517
-#define _gloffset_IsBufferARB 518
-#define _gloffset_MapBufferARB 519
-#define _gloffset_UnmapBufferARB 520
-#define _gloffset_BeginQueryARB 521
-#define _gloffset_DeleteQueriesARB 522
-#define _gloffset_EndQueryARB 523
-#define _gloffset_GenQueriesARB 524
-#define _gloffset_GetQueryObjectivARB 525
-#define _gloffset_GetQueryObjectuivARB 526
-#define _gloffset_GetQueryivARB 527
-#define _gloffset_IsQueryARB 528
-#define _gloffset_AttachObjectARB 529
-#define _gloffset_CompileShaderARB 530
-#define _gloffset_CreateProgramObjectARB 531
-#define _gloffset_CreateShaderObjectARB 532
-#define _gloffset_DeleteObjectARB 533
-#define _gloffset_DetachObjectARB 534
-#define _gloffset_GetActiveUniformARB 535
-#define _gloffset_GetAttachedObjectsARB 536
-#define _gloffset_GetHandleARB 537
-#define _gloffset_GetInfoLogARB 538
-#define _gloffset_GetObjectParameterfvARB 539
-#define _gloffset_GetObjectParameterivARB 540
-#define _gloffset_GetShaderSourceARB 541
-#define _gloffset_GetUniformLocationARB 542
-#define _gloffset_GetUniformfvARB 543
-#define _gloffset_GetUniformivARB 544
-#define _gloffset_LinkProgramARB 545
-#define _gloffset_ShaderSourceARB 546
-#define _gloffset_Uniform1fARB 547
-#define _gloffset_Uniform1fvARB 548
-#define _gloffset_Uniform1iARB 549
-#define _gloffset_Uniform1ivARB 550
-#define _gloffset_Uniform2fARB 551
-#define _gloffset_Uniform2fvARB 552
-#define _gloffset_Uniform2iARB 553
-#define _gloffset_Uniform2ivARB 554
-#define _gloffset_Uniform3fARB 555
-#define _gloffset_Uniform3fvARB 556
-#define _gloffset_Uniform3iARB 557
-#define _gloffset_Uniform3ivARB 558
-#define _gloffset_Uniform4fARB 559
-#define _gloffset_Uniform4fvARB 560
-#define _gloffset_Uniform4iARB 561
-#define _gloffset_Uniform4ivARB 562
-#define _gloffset_UniformMatrix2fvARB 563
-#define _gloffset_UniformMatrix3fvARB 564
-#define _gloffset_UniformMatrix4fvARB 565
-#define _gloffset_UseProgramObjectARB 566
-#define _gloffset_ValidateProgramARB 567
-#define _gloffset_BindAttribLocationARB 568
-#define _gloffset_GetActiveAttribARB 569
-#define _gloffset_GetAttribLocationARB 570
-#define _gloffset_DrawBuffersARB 571
-#define _gloffset_ClampColorARB 572
-#define _gloffset_DrawArraysInstancedARB 573
-#define _gloffset_DrawElementsInstancedARB 574
-#define _gloffset_RenderbufferStorageMultisample 575
-#define _gloffset_FramebufferTextureARB 576
-#define _gloffset_FramebufferTextureFaceARB 577
-#define _gloffset_ProgramParameteriARB 578
-#define _gloffset_VertexAttribDivisorARB 579
-#define _gloffset_FlushMappedBufferRange 580
-#define _gloffset_MapBufferRange 581
-#define _gloffset_TexBufferARB 582
-#define _gloffset_BindVertexArray 583
-#define _gloffset_GenVertexArrays 584
-#define _gloffset_CopyBufferSubData 585
-#define _gloffset_ClientWaitSync 586
-#define _gloffset_DeleteSync 587
-#define _gloffset_FenceSync 588
-#define _gloffset_GetInteger64v 589
-#define _gloffset_GetSynciv 590
-#define _gloffset_IsSync 591
-#define _gloffset_WaitSync 592
-#define _gloffset_DrawElementsBaseVertex 593
-#define _gloffset_DrawElementsInstancedBaseVertex 594
-#define _gloffset_DrawRangeElementsBaseVertex 595
-#define _gloffset_MultiDrawElementsBaseVertex 596
-#define _gloffset_BlendEquationSeparateiARB 597
-#define _gloffset_BlendEquationiARB 598
-#define _gloffset_BlendFuncSeparateiARB 599
-#define _gloffset_BlendFunciARB 600
-#define _gloffset_BindSampler 601
-#define _gloffset_DeleteSamplers 602
-#define _gloffset_GenSamplers 603
-#define _gloffset_GetSamplerParameterIiv 604
-#define _gloffset_GetSamplerParameterIuiv 605
-#define _gloffset_GetSamplerParameterfv 606
-#define _gloffset_GetSamplerParameteriv 607
-#define _gloffset_IsSampler 608
-#define _gloffset_SamplerParameterIiv 609
-#define _gloffset_SamplerParameterIuiv 610
-#define _gloffset_SamplerParameterf 611
-#define _gloffset_SamplerParameterfv 612
-#define _gloffset_SamplerParameteri 613
-#define _gloffset_SamplerParameteriv 614
-#define _gloffset_ColorP3ui 615
-#define _gloffset_ColorP3uiv 616
-#define _gloffset_ColorP4ui 617
-#define _gloffset_ColorP4uiv 618
-#define _gloffset_MultiTexCoordP1ui 619
-#define _gloffset_MultiTexCoordP1uiv 620
-#define _gloffset_MultiTexCoordP2ui 621
-#define _gloffset_MultiTexCoordP2uiv 622
-#define _gloffset_MultiTexCoordP3ui 623
-#define _gloffset_MultiTexCoordP3uiv 624
-#define _gloffset_MultiTexCoordP4ui 625
-#define _gloffset_MultiTexCoordP4uiv 626
-#define _gloffset_NormalP3ui 627
-#define _gloffset_NormalP3uiv 628
-#define _gloffset_SecondaryColorP3ui 629
-#define _gloffset_SecondaryColorP3uiv 630
-#define _gloffset_TexCoordP1ui 631
-#define _gloffset_TexCoordP1uiv 632
-#define _gloffset_TexCoordP2ui 633
-#define _gloffset_TexCoordP2uiv 634
-#define _gloffset_TexCoordP3ui 635
-#define _gloffset_TexCoordP3uiv 636
-#define _gloffset_TexCoordP4ui 637
-#define _gloffset_TexCoordP4uiv 638
-#define _gloffset_VertexAttribP1ui 639
-#define _gloffset_VertexAttribP1uiv 640
-#define _gloffset_VertexAttribP2ui 641
-#define _gloffset_VertexAttribP2uiv 642
-#define _gloffset_VertexAttribP3ui 643
-#define _gloffset_VertexAttribP3uiv 644
-#define _gloffset_VertexAttribP4ui 645
-#define _gloffset_VertexAttribP4uiv 646
-#define _gloffset_VertexP2ui 647
-#define _gloffset_VertexP2uiv 648
-#define _gloffset_VertexP3ui 649
-#define _gloffset_VertexP3uiv 650
-#define _gloffset_VertexP4ui 651
-#define _gloffset_VertexP4uiv 652
-#define _gloffset_BindTransformFeedback 653
-#define _gloffset_DeleteTransformFeedbacks 654
-#define _gloffset_DrawTransformFeedback 655
-#define _gloffset_GenTransformFeedbacks 656
-#define _gloffset_IsTransformFeedback 657
-#define _gloffset_PauseTransformFeedback 658
-#define _gloffset_ResumeTransformFeedback 659
-#define _gloffset_ClearDepthf 660
-#define _gloffset_DepthRangef 661
-#define _gloffset_GetShaderPrecisionFormat 662
-#define _gloffset_ReleaseShaderCompiler 663
-#define _gloffset_ShaderBinary 664
-#define _gloffset_GetGraphicsResetStatusARB 665
-#define _gloffset_GetnColorTableARB 666
-#define _gloffset_GetnCompressedTexImageARB 667
-#define _gloffset_GetnConvolutionFilterARB 668
-#define _gloffset_GetnHistogramARB 669
-#define _gloffset_GetnMapdvARB 670
-#define _gloffset_GetnMapfvARB 671
-#define _gloffset_GetnMapivARB 672
-#define _gloffset_GetnMinmaxARB 673
-#define _gloffset_GetnPixelMapfvARB 674
-#define _gloffset_GetnPixelMapuivARB 675
-#define _gloffset_GetnPixelMapusvARB 676
-#define _gloffset_GetnPolygonStippleARB 677
-#define _gloffset_GetnSeparableFilterARB 678
-#define _gloffset_GetnTexImageARB 679
-#define _gloffset_GetnUniformdvARB 680
-#define _gloffset_GetnUniformfvARB 681
-#define _gloffset_GetnUniformivARB 682
-#define _gloffset_GetnUniformuivARB 683
-#define _gloffset_ReadnPixelsARB 684
-#define _gloffset_TexStorage1D 685
-#define _gloffset_TexStorage2D 686
-#define _gloffset_TexStorage3D 687
-#define _gloffset_TextureStorage1DEXT 688
-#define _gloffset_TextureStorage2DEXT 689
-#define _gloffset_TextureStorage3DEXT 690
-#define _gloffset_PolygonOffsetEXT 691
-#define _gloffset_GetPixelTexGenParameterfvSGIS 692
-#define _gloffset_GetPixelTexGenParameterivSGIS 693
-#define _gloffset_PixelTexGenParameterfSGIS 694
-#define _gloffset_PixelTexGenParameterfvSGIS 695
-#define _gloffset_PixelTexGenParameteriSGIS 696
-#define _gloffset_PixelTexGenParameterivSGIS 697
-#define _gloffset_SampleMaskSGIS 698
-#define _gloffset_SamplePatternSGIS 699
-#define _gloffset_ColorPointerEXT 700
-#define _gloffset_EdgeFlagPointerEXT 701
-#define _gloffset_IndexPointerEXT 702
-#define _gloffset_NormalPointerEXT 703
-#define _gloffset_TexCoordPointerEXT 704
-#define _gloffset_VertexPointerEXT 705
-#define _gloffset_PointParameterfEXT 706
-#define _gloffset_PointParameterfvEXT 707
-#define _gloffset_LockArraysEXT 708
-#define _gloffset_UnlockArraysEXT 709
-#define _gloffset_SecondaryColor3bEXT 710
-#define _gloffset_SecondaryColor3bvEXT 711
-#define _gloffset_SecondaryColor3dEXT 712
-#define _gloffset_SecondaryColor3dvEXT 713
-#define _gloffset_SecondaryColor3fEXT 714
-#define _gloffset_SecondaryColor3fvEXT 715
-#define _gloffset_SecondaryColor3iEXT 716
-#define _gloffset_SecondaryColor3ivEXT 717
-#define _gloffset_SecondaryColor3sEXT 718
-#define _gloffset_SecondaryColor3svEXT 719
-#define _gloffset_SecondaryColor3ubEXT 720
-#define _gloffset_SecondaryColor3ubvEXT 721
-#define _gloffset_SecondaryColor3uiEXT 722
-#define _gloffset_SecondaryColor3uivEXT 723
-#define _gloffset_SecondaryColor3usEXT 724
-#define _gloffset_SecondaryColor3usvEXT 725
-#define _gloffset_SecondaryColorPointerEXT 726
-#define _gloffset_MultiDrawArraysEXT 727
-#define _gloffset_MultiDrawElementsEXT 728
-#define _gloffset_FogCoordPointerEXT 729
-#define _gloffset_FogCoorddEXT 730
-#define _gloffset_FogCoorddvEXT 731
-#define _gloffset_FogCoordfEXT 732
-#define _gloffset_FogCoordfvEXT 733
-#define _gloffset_PixelTexGenSGIX 734
-#define _gloffset_BlendFuncSeparateEXT 735
-#define _gloffset_FlushVertexArrayRangeNV 736
-#define _gloffset_VertexArrayRangeNV 737
-#define _gloffset_CombinerInputNV 738
-#define _gloffset_CombinerOutputNV 739
-#define _gloffset_CombinerParameterfNV 740
-#define _gloffset_CombinerParameterfvNV 741
-#define _gloffset_CombinerParameteriNV 742
-#define _gloffset_CombinerParameterivNV 743
-#define _gloffset_FinalCombinerInputNV 744
-#define _gloffset_GetCombinerInputParameterfvNV 745
-#define _gloffset_GetCombinerInputParameterivNV 746
-#define _gloffset_GetCombinerOutputParameterfvNV 747
-#define _gloffset_GetCombinerOutputParameterivNV 748
-#define _gloffset_GetFinalCombinerInputParameterfvNV 749
-#define _gloffset_GetFinalCombinerInputParameterivNV 750
-#define _gloffset_ResizeBuffersMESA 751
-#define _gloffset_WindowPos2dMESA 752
-#define _gloffset_WindowPos2dvMESA 753
-#define _gloffset_WindowPos2fMESA 754
-#define _gloffset_WindowPos2fvMESA 755
-#define _gloffset_WindowPos2iMESA 756
-#define _gloffset_WindowPos2ivMESA 757
-#define _gloffset_WindowPos2sMESA 758
-#define _gloffset_WindowPos2svMESA 759
-#define _gloffset_WindowPos3dMESA 760
-#define _gloffset_WindowPos3dvMESA 761
-#define _gloffset_WindowPos3fMESA 762
-#define _gloffset_WindowPos3fvMESA 763
-#define _gloffset_WindowPos3iMESA 764
-#define _gloffset_WindowPos3ivMESA 765
-#define _gloffset_WindowPos3sMESA 766
-#define _gloffset_WindowPos3svMESA 767
-#define _gloffset_WindowPos4dMESA 768
-#define _gloffset_WindowPos4dvMESA 769
-#define _gloffset_WindowPos4fMESA 770
-#define _gloffset_WindowPos4fvMESA 771
-#define _gloffset_WindowPos4iMESA 772
-#define _gloffset_WindowPos4ivMESA 773
-#define _gloffset_WindowPos4sMESA 774
-#define _gloffset_WindowPos4svMESA 775
-#define _gloffset_MultiModeDrawArraysIBM 776
-#define _gloffset_MultiModeDrawElementsIBM 777
-#define _gloffset_DeleteFencesNV 778
-#define _gloffset_FinishFenceNV 779
-#define _gloffset_GenFencesNV 780
-#define _gloffset_GetFenceivNV 781
-#define _gloffset_IsFenceNV 782
-#define _gloffset_SetFenceNV 783
-#define _gloffset_TestFenceNV 784
-#define _gloffset_AreProgramsResidentNV 785
-#define _gloffset_BindProgramNV 786
-#define _gloffset_DeleteProgramsNV 787
-#define _gloffset_ExecuteProgramNV 788
-#define _gloffset_GenProgramsNV 789
-#define _gloffset_GetProgramParameterdvNV 790
-#define _gloffset_GetProgramParameterfvNV 791
-#define _gloffset_GetProgramStringNV 792
-#define _gloffset_GetProgramivNV 793
-#define _gloffset_GetTrackMatrixivNV 794
-#define _gloffset_GetVertexAttribPointervNV 795
-#define _gloffset_GetVertexAttribdvNV 796
-#define _gloffset_GetVertexAttribfvNV 797
-#define _gloffset_GetVertexAttribivNV 798
-#define _gloffset_IsProgramNV 799
-#define _gloffset_LoadProgramNV 800
-#define _gloffset_ProgramParameters4dvNV 801
-#define _gloffset_ProgramParameters4fvNV 802
-#define _gloffset_RequestResidentProgramsNV 803
-#define _gloffset_TrackMatrixNV 804
-#define _gloffset_VertexAttrib1dNV 805
-#define _gloffset_VertexAttrib1dvNV 806
-#define _gloffset_VertexAttrib1fNV 807
-#define _gloffset_VertexAttrib1fvNV 808
-#define _gloffset_VertexAttrib1sNV 809
-#define _gloffset_VertexAttrib1svNV 810
-#define _gloffset_VertexAttrib2dNV 811
-#define _gloffset_VertexAttrib2dvNV 812
-#define _gloffset_VertexAttrib2fNV 813
-#define _gloffset_VertexAttrib2fvNV 814
-#define _gloffset_VertexAttrib2sNV 815
-#define _gloffset_VertexAttrib2svNV 816
-#define _gloffset_VertexAttrib3dNV 817
-#define _gloffset_VertexAttrib3dvNV 818
-#define _gloffset_VertexAttrib3fNV 819
-#define _gloffset_VertexAttrib3fvNV 820
-#define _gloffset_VertexAttrib3sNV 821
-#define _gloffset_VertexAttrib3svNV 822
-#define _gloffset_VertexAttrib4dNV 823
-#define _gloffset_VertexAttrib4dvNV 824
-#define _gloffset_VertexAttrib4fNV 825
-#define _gloffset_VertexAttrib4fvNV 826
-#define _gloffset_VertexAttrib4sNV 827
-#define _gloffset_VertexAttrib4svNV 828
-#define _gloffset_VertexAttrib4ubNV 829
-#define _gloffset_VertexAttrib4ubvNV 830
-#define _gloffset_VertexAttribPointerNV 831
-#define _gloffset_VertexAttribs1dvNV 832
-#define _gloffset_VertexAttribs1fvNV 833
-#define _gloffset_VertexAttribs1svNV 834
-#define _gloffset_VertexAttribs2dvNV 835
-#define _gloffset_VertexAttribs2fvNV 836
-#define _gloffset_VertexAttribs2svNV 837
-#define _gloffset_VertexAttribs3dvNV 838
-#define _gloffset_VertexAttribs3fvNV 839
-#define _gloffset_VertexAttribs3svNV 840
-#define _gloffset_VertexAttribs4dvNV 841
-#define _gloffset_VertexAttribs4fvNV 842
-#define _gloffset_VertexAttribs4svNV 843
-#define _gloffset_VertexAttribs4ubvNV 844
-#define _gloffset_GetTexBumpParameterfvATI 845
-#define _gloffset_GetTexBumpParameterivATI 846
-#define _gloffset_TexBumpParameterfvATI 847
-#define _gloffset_TexBumpParameterivATI 848
-#define _gloffset_AlphaFragmentOp1ATI 849
-#define _gloffset_AlphaFragmentOp2ATI 850
-#define _gloffset_AlphaFragmentOp3ATI 851
-#define _gloffset_BeginFragmentShaderATI 852
-#define _gloffset_BindFragmentShaderATI 853
-#define _gloffset_ColorFragmentOp1ATI 854
-#define _gloffset_ColorFragmentOp2ATI 855
-#define _gloffset_ColorFragmentOp3ATI 856
-#define _gloffset_DeleteFragmentShaderATI 857
-#define _gloffset_EndFragmentShaderATI 858
-#define _gloffset_GenFragmentShadersATI 859
-#define _gloffset_PassTexCoordATI 860
-#define _gloffset_SampleMapATI 861
-#define _gloffset_SetFragmentShaderConstantATI 862
-#define _gloffset_PointParameteriNV 863
-#define _gloffset_PointParameterivNV 864
-#define _gloffset_ActiveStencilFaceEXT 865
-#define _gloffset_BindVertexArrayAPPLE 866
-#define _gloffset_DeleteVertexArraysAPPLE 867
-#define _gloffset_GenVertexArraysAPPLE 868
-#define _gloffset_IsVertexArrayAPPLE 869
-#define _gloffset_GetProgramNamedParameterdvNV 870
-#define _gloffset_GetProgramNamedParameterfvNV 871
-#define _gloffset_ProgramNamedParameter4dNV 872
-#define _gloffset_ProgramNamedParameter4dvNV 873
-#define _gloffset_ProgramNamedParameter4fNV 874
-#define _gloffset_ProgramNamedParameter4fvNV 875
-#define _gloffset_PrimitiveRestartIndexNV 876
-#define _gloffset_PrimitiveRestartNV 877
-#define _gloffset_DepthBoundsEXT 878
-#define _gloffset_BlendEquationSeparateEXT 879
-#define _gloffset_BindFramebufferEXT 880
-#define _gloffset_BindRenderbufferEXT 881
-#define _gloffset_CheckFramebufferStatusEXT 882
-#define _gloffset_DeleteFramebuffersEXT 883
-#define _gloffset_DeleteRenderbuffersEXT 884
-#define _gloffset_FramebufferRenderbufferEXT 885
-#define _gloffset_FramebufferTexture1DEXT 886
-#define _gloffset_FramebufferTexture2DEXT 887
-#define _gloffset_FramebufferTexture3DEXT 888
-#define _gloffset_GenFramebuffersEXT 889
-#define _gloffset_GenRenderbuffersEXT 890
-#define _gloffset_GenerateMipmapEXT 891
-#define _gloffset_GetFramebufferAttachmentParameterivEXT 892
-#define _gloffset_GetRenderbufferParameterivEXT 893
-#define _gloffset_IsFramebufferEXT 894
-#define _gloffset_IsRenderbufferEXT 895
-#define _gloffset_RenderbufferStorageEXT 896
-#define _gloffset_BlitFramebufferEXT 897
-#define _gloffset_BufferParameteriAPPLE 898
-#define _gloffset_FlushMappedBufferRangeAPPLE 899
-#define _gloffset_BindFragDataLocationEXT 900
-#define _gloffset_GetFragDataLocationEXT 901
-#define _gloffset_GetUniformuivEXT 902
-#define _gloffset_GetVertexAttribIivEXT 903
-#define _gloffset_GetVertexAttribIuivEXT 904
-#define _gloffset_Uniform1uiEXT 905
-#define _gloffset_Uniform1uivEXT 906
-#define _gloffset_Uniform2uiEXT 907
-#define _gloffset_Uniform2uivEXT 908
-#define _gloffset_Uniform3uiEXT 909
-#define _gloffset_Uniform3uivEXT 910
-#define _gloffset_Uniform4uiEXT 911
-#define _gloffset_Uniform4uivEXT 912
-#define _gloffset_VertexAttribI1iEXT 913
-#define _gloffset_VertexAttribI1ivEXT 914
-#define _gloffset_VertexAttribI1uiEXT 915
-#define _gloffset_VertexAttribI1uivEXT 916
-#define _gloffset_VertexAttribI2iEXT 917
-#define _gloffset_VertexAttribI2ivEXT 918
-#define _gloffset_VertexAttribI2uiEXT 919
-#define _gloffset_VertexAttribI2uivEXT 920
-#define _gloffset_VertexAttribI3iEXT 921
-#define _gloffset_VertexAttribI3ivEXT 922
-#define _gloffset_VertexAttribI3uiEXT 923
-#define _gloffset_VertexAttribI3uivEXT 924
-#define _gloffset_VertexAttribI4bvEXT 925
-#define _gloffset_VertexAttribI4iEXT 926
-#define _gloffset_VertexAttribI4ivEXT 927
-#define _gloffset_VertexAttribI4svEXT 928
-#define _gloffset_VertexAttribI4ubvEXT 929
-#define _gloffset_VertexAttribI4uiEXT 930
-#define _gloffset_VertexAttribI4uivEXT 931
-#define _gloffset_VertexAttribI4usvEXT 932
-#define _gloffset_VertexAttribIPointerEXT 933
-#define _gloffset_FramebufferTextureLayerEXT 934
-#define _gloffset_ColorMaskIndexedEXT 935
-#define _gloffset_DisableIndexedEXT 936
-#define _gloffset_EnableIndexedEXT 937
-#define _gloffset_GetBooleanIndexedvEXT 938
-#define _gloffset_GetIntegerIndexedvEXT 939
-#define _gloffset_IsEnabledIndexedEXT 940
-#define _gloffset_ClearColorIiEXT 941
-#define _gloffset_ClearColorIuiEXT 942
-#define _gloffset_GetTexParameterIivEXT 943
-#define _gloffset_GetTexParameterIuivEXT 944
-#define _gloffset_TexParameterIivEXT 945
-#define _gloffset_TexParameterIuivEXT 946
-#define _gloffset_BeginConditionalRenderNV 947
-#define _gloffset_EndConditionalRenderNV 948
-#define _gloffset_BeginTransformFeedbackEXT 949
-#define _gloffset_BindBufferBaseEXT 950
-#define _gloffset_BindBufferOffsetEXT 951
-#define _gloffset_BindBufferRangeEXT 952
-#define _gloffset_EndTransformFeedbackEXT 953
-#define _gloffset_GetTransformFeedbackVaryingEXT 954
-#define _gloffset_TransformFeedbackVaryingsEXT 955
-#define _gloffset_ProvokingVertexEXT 956
-#define _gloffset_GetTexParameterPointervAPPLE 957
-#define _gloffset_TextureRangeAPPLE 958
-#define _gloffset_GetObjectParameterivAPPLE 959
-#define _gloffset_ObjectPurgeableAPPLE 960
-#define _gloffset_ObjectUnpurgeableAPPLE 961
-#define _gloffset_ActiveProgramEXT 962
-#define _gloffset_CreateShaderProgramEXT 963
-#define _gloffset_UseShaderProgramEXT 964
-#define _gloffset_TextureBarrierNV 965
-#define _gloffset_StencilFuncSeparateATI 966
-#define _gloffset_ProgramEnvParameters4fvEXT 967
-#define _gloffset_ProgramLocalParameters4fvEXT 968
-#define _gloffset_GetQueryObjecti64vEXT 969
-#define _gloffset_GetQueryObjectui64vEXT 970
-#define _gloffset_EGLImageTargetRenderbufferStorageOES 971
-#define _gloffset_EGLImageTargetTexture2DOES 972
-
-#else                           /* !FEATURE_remap_table */
-
-#define driDispatchRemapTable_size 565
-extern int driDispatchRemapTable[driDispatchRemapTable_size];
-
-#define AttachShader_remap_index 0
-#define CreateProgram_remap_index 1
-#define CreateShader_remap_index 2
-#define DeleteProgram_remap_index 3
-#define DeleteShader_remap_index 4
-#define DetachShader_remap_index 5
-#define GetAttachedShaders_remap_index 6
-#define GetProgramInfoLog_remap_index 7
-#define GetProgramiv_remap_index 8
-#define GetShaderInfoLog_remap_index 9
-#define GetShaderiv_remap_index 10
-#define IsProgram_remap_index 11
-#define IsShader_remap_index 12
-#define StencilFuncSeparate_remap_index 13
-#define StencilMaskSeparate_remap_index 14
-#define StencilOpSeparate_remap_index 15
-#define UniformMatrix2x3fv_remap_index 16
-#define UniformMatrix2x4fv_remap_index 17
-#define UniformMatrix3x2fv_remap_index 18
-#define UniformMatrix3x4fv_remap_index 19
-#define UniformMatrix4x2fv_remap_index 20
-#define UniformMatrix4x3fv_remap_index 21
-#define ClampColor_remap_index 22
-#define ClearBufferfi_remap_index 23
-#define ClearBufferfv_remap_index 24
-#define ClearBufferiv_remap_index 25
-#define ClearBufferuiv_remap_index 26
-#define GetStringi_remap_index 27
-#define TexBuffer_remap_index 28
-#define FramebufferTexture_remap_index 29
-#define GetBufferParameteri64v_remap_index 30
-#define GetInteger64i_v_remap_index 31
-#define VertexAttribDivisor_remap_index 32
-#define LoadTransposeMatrixdARB_remap_index 33
-#define LoadTransposeMatrixfARB_remap_index 34
-#define MultTransposeMatrixdARB_remap_index 35
-#define MultTransposeMatrixfARB_remap_index 36
-#define SampleCoverageARB_remap_index 37
-#define CompressedTexImage1DARB_remap_index 38
-#define CompressedTexImage2DARB_remap_index 39
-#define CompressedTexImage3DARB_remap_index 40
-#define CompressedTexSubImage1DARB_remap_index 41
-#define CompressedTexSubImage2DARB_remap_index 42
-#define CompressedTexSubImage3DARB_remap_index 43
-#define GetCompressedTexImageARB_remap_index 44
-#define DisableVertexAttribArrayARB_remap_index 45
-#define EnableVertexAttribArrayARB_remap_index 46
-#define GetProgramEnvParameterdvARB_remap_index 47
-#define GetProgramEnvParameterfvARB_remap_index 48
-#define GetProgramLocalParameterdvARB_remap_index 49
-#define GetProgramLocalParameterfvARB_remap_index 50
-#define GetProgramStringARB_remap_index 51
-#define GetProgramivARB_remap_index 52
-#define GetVertexAttribdvARB_remap_index 53
-#define GetVertexAttribfvARB_remap_index 54
-#define GetVertexAttribivARB_remap_index 55
-#define ProgramEnvParameter4dARB_remap_index 56
-#define ProgramEnvParameter4dvARB_remap_index 57
-#define ProgramEnvParameter4fARB_remap_index 58
-#define ProgramEnvParameter4fvARB_remap_index 59
-#define ProgramLocalParameter4dARB_remap_index 60
-#define ProgramLocalParameter4dvARB_remap_index 61
-#define ProgramLocalParameter4fARB_remap_index 62
-#define ProgramLocalParameter4fvARB_remap_index 63
-#define ProgramStringARB_remap_index 64
-#define VertexAttrib1dARB_remap_index 65
-#define VertexAttrib1dvARB_remap_index 66
-#define VertexAttrib1fARB_remap_index 67
-#define VertexAttrib1fvARB_remap_index 68
-#define VertexAttrib1sARB_remap_index 69
-#define VertexAttrib1svARB_remap_index 70
-#define VertexAttrib2dARB_remap_index 71
-#define VertexAttrib2dvARB_remap_index 72
-#define VertexAttrib2fARB_remap_index 73
-#define VertexAttrib2fvARB_remap_index 74
-#define VertexAttrib2sARB_remap_index 75
-#define VertexAttrib2svARB_remap_index 76
-#define VertexAttrib3dARB_remap_index 77
-#define VertexAttrib3dvARB_remap_index 78
-#define VertexAttrib3fARB_remap_index 79
-#define VertexAttrib3fvARB_remap_index 80
-#define VertexAttrib3sARB_remap_index 81
-#define VertexAttrib3svARB_remap_index 82
-#define VertexAttrib4NbvARB_remap_index 83
-#define VertexAttrib4NivARB_remap_index 84
-#define VertexAttrib4NsvARB_remap_index 85
-#define VertexAttrib4NubARB_remap_index 86
-#define VertexAttrib4NubvARB_remap_index 87
-#define VertexAttrib4NuivARB_remap_index 88
-#define VertexAttrib4NusvARB_remap_index 89
-#define VertexAttrib4bvARB_remap_index 90
-#define VertexAttrib4dARB_remap_index 91
-#define VertexAttrib4dvARB_remap_index 92
-#define VertexAttrib4fARB_remap_index 93
-#define VertexAttrib4fvARB_remap_index 94
-#define VertexAttrib4ivARB_remap_index 95
-#define VertexAttrib4sARB_remap_index 96
-#define VertexAttrib4svARB_remap_index 97
-#define VertexAttrib4ubvARB_remap_index 98
-#define VertexAttrib4uivARB_remap_index 99
-#define VertexAttrib4usvARB_remap_index 100
-#define VertexAttribPointerARB_remap_index 101
-#define BindBufferARB_remap_index 102
-#define BufferDataARB_remap_index 103
-#define BufferSubDataARB_remap_index 104
-#define DeleteBuffersARB_remap_index 105
-#define GenBuffersARB_remap_index 106
-#define GetBufferParameterivARB_remap_index 107
-#define GetBufferPointervARB_remap_index 108
-#define GetBufferSubDataARB_remap_index 109
-#define IsBufferARB_remap_index 110
-#define MapBufferARB_remap_index 111
-#define UnmapBufferARB_remap_index 112
-#define BeginQueryARB_remap_index 113
-#define DeleteQueriesARB_remap_index 114
-#define EndQueryARB_remap_index 115
-#define GenQueriesARB_remap_index 116
-#define GetQueryObjectivARB_remap_index 117
-#define GetQueryObjectuivARB_remap_index 118
-#define GetQueryivARB_remap_index 119
-#define IsQueryARB_remap_index 120
-#define AttachObjectARB_remap_index 121
-#define CompileShaderARB_remap_index 122
-#define CreateProgramObjectARB_remap_index 123
-#define CreateShaderObjectARB_remap_index 124
-#define DeleteObjectARB_remap_index 125
-#define DetachObjectARB_remap_index 126
-#define GetActiveUniformARB_remap_index 127
-#define GetAttachedObjectsARB_remap_index 128
-#define GetHandleARB_remap_index 129
-#define GetInfoLogARB_remap_index 130
-#define GetObjectParameterfvARB_remap_index 131
-#define GetObjectParameterivARB_remap_index 132
-#define GetShaderSourceARB_remap_index 133
-#define GetUniformLocationARB_remap_index 134
-#define GetUniformfvARB_remap_index 135
-#define GetUniformivARB_remap_index 136
-#define LinkProgramARB_remap_index 137
-#define ShaderSourceARB_remap_index 138
-#define Uniform1fARB_remap_index 139
-#define Uniform1fvARB_remap_index 140
-#define Uniform1iARB_remap_index 141
-#define Uniform1ivARB_remap_index 142
-#define Uniform2fARB_remap_index 143
-#define Uniform2fvARB_remap_index 144
-#define Uniform2iARB_remap_index 145
-#define Uniform2ivARB_remap_index 146
-#define Uniform3fARB_remap_index 147
-#define Uniform3fvARB_remap_index 148
-#define Uniform3iARB_remap_index 149
-#define Uniform3ivARB_remap_index 150
-#define Uniform4fARB_remap_index 151
-#define Uniform4fvARB_remap_index 152
-#define Uniform4iARB_remap_index 153
-#define Uniform4ivARB_remap_index 154
-#define UniformMatrix2fvARB_remap_index 155
-#define UniformMatrix3fvARB_remap_index 156
-#define UniformMatrix4fvARB_remap_index 157
-#define UseProgramObjectARB_remap_index 158
-#define ValidateProgramARB_remap_index 159
-#define BindAttribLocationARB_remap_index 160
-#define GetActiveAttribARB_remap_index 161
-#define GetAttribLocationARB_remap_index 162
-#define DrawBuffersARB_remap_index 163
-#define ClampColorARB_remap_index 164
-#define DrawArraysInstancedARB_remap_index 165
-#define DrawElementsInstancedARB_remap_index 166
-#define RenderbufferStorageMultisample_remap_index 167
-#define FramebufferTextureARB_remap_index 168
-#define FramebufferTextureFaceARB_remap_index 169
-#define ProgramParameteriARB_remap_index 170
-#define VertexAttribDivisorARB_remap_index 171
-#define FlushMappedBufferRange_remap_index 172
-#define MapBufferRange_remap_index 173
-#define TexBufferARB_remap_index 174
-#define BindVertexArray_remap_index 175
-#define GenVertexArrays_remap_index 176
-#define CopyBufferSubData_remap_index 177
-#define ClientWaitSync_remap_index 178
-#define DeleteSync_remap_index 179
-#define FenceSync_remap_index 180
-#define GetInteger64v_remap_index 181
-#define GetSynciv_remap_index 182
-#define IsSync_remap_index 183
-#define WaitSync_remap_index 184
-#define DrawElementsBaseVertex_remap_index 185
-#define DrawElementsInstancedBaseVertex_remap_index 186
-#define DrawRangeElementsBaseVertex_remap_index 187
-#define MultiDrawElementsBaseVertex_remap_index 188
-#define BlendEquationSeparateiARB_remap_index 189
-#define BlendEquationiARB_remap_index 190
-#define BlendFuncSeparateiARB_remap_index 191
-#define BlendFunciARB_remap_index 192
-#define BindSampler_remap_index 193
-#define DeleteSamplers_remap_index 194
-#define GenSamplers_remap_index 195
-#define GetSamplerParameterIiv_remap_index 196
-#define GetSamplerParameterIuiv_remap_index 197
-#define GetSamplerParameterfv_remap_index 198
-#define GetSamplerParameteriv_remap_index 199
-#define IsSampler_remap_index 200
-#define SamplerParameterIiv_remap_index 201
-#define SamplerParameterIuiv_remap_index 202
-#define SamplerParameterf_remap_index 203
-#define SamplerParameterfv_remap_index 204
-#define SamplerParameteri_remap_index 205
-#define SamplerParameteriv_remap_index 206
-#define ColorP3ui_remap_index 207
-#define ColorP3uiv_remap_index 208
-#define ColorP4ui_remap_index 209
-#define ColorP4uiv_remap_index 210
-#define MultiTexCoordP1ui_remap_index 211
-#define MultiTexCoordP1uiv_remap_index 212
-#define MultiTexCoordP2ui_remap_index 213
-#define MultiTexCoordP2uiv_remap_index 214
-#define MultiTexCoordP3ui_remap_index 215
-#define MultiTexCoordP3uiv_remap_index 216
-#define MultiTexCoordP4ui_remap_index 217
-#define MultiTexCoordP4uiv_remap_index 218
-#define NormalP3ui_remap_index 219
-#define NormalP3uiv_remap_index 220
-#define SecondaryColorP3ui_remap_index 221
-#define SecondaryColorP3uiv_remap_index 222
-#define TexCoordP1ui_remap_index 223
-#define TexCoordP1uiv_remap_index 224
-#define TexCoordP2ui_remap_index 225
-#define TexCoordP2uiv_remap_index 226
-#define TexCoordP3ui_remap_index 227
-#define TexCoordP3uiv_remap_index 228
-#define TexCoordP4ui_remap_index 229
-#define TexCoordP4uiv_remap_index 230
-#define VertexAttribP1ui_remap_index 231
-#define VertexAttribP1uiv_remap_index 232
-#define VertexAttribP2ui_remap_index 233
-#define VertexAttribP2uiv_remap_index 234
-#define VertexAttribP3ui_remap_index 235
-#define VertexAttribP3uiv_remap_index 236
-#define VertexAttribP4ui_remap_index 237
-#define VertexAttribP4uiv_remap_index 238
-#define VertexP2ui_remap_index 239
-#define VertexP2uiv_remap_index 240
-#define VertexP3ui_remap_index 241
-#define VertexP3uiv_remap_index 242
-#define VertexP4ui_remap_index 243
-#define VertexP4uiv_remap_index 244
-#define BindTransformFeedback_remap_index 245
-#define DeleteTransformFeedbacks_remap_index 246
-#define DrawTransformFeedback_remap_index 247
-#define GenTransformFeedbacks_remap_index 248
-#define IsTransformFeedback_remap_index 249
-#define PauseTransformFeedback_remap_index 250
-#define ResumeTransformFeedback_remap_index 251
-#define ClearDepthf_remap_index 252
-#define DepthRangef_remap_index 253
-#define GetShaderPrecisionFormat_remap_index 254
-#define ReleaseShaderCompiler_remap_index 255
-#define ShaderBinary_remap_index 256
-#define GetGraphicsResetStatusARB_remap_index 257
-#define GetnColorTableARB_remap_index 258
-#define GetnCompressedTexImageARB_remap_index 259
-#define GetnConvolutionFilterARB_remap_index 260
-#define GetnHistogramARB_remap_index 261
-#define GetnMapdvARB_remap_index 262
-#define GetnMapfvARB_remap_index 263
-#define GetnMapivARB_remap_index 264
-#define GetnMinmaxARB_remap_index 265
-#define GetnPixelMapfvARB_remap_index 266
-#define GetnPixelMapuivARB_remap_index 267
-#define GetnPixelMapusvARB_remap_index 268
-#define GetnPolygonStippleARB_remap_index 269
-#define GetnSeparableFilterARB_remap_index 270
-#define GetnTexImageARB_remap_index 271
-#define GetnUniformdvARB_remap_index 272
-#define GetnUniformfvARB_remap_index 273
-#define GetnUniformivARB_remap_index 274
-#define GetnUniformuivARB_remap_index 275
-#define ReadnPixelsARB_remap_index 276
-#define TexStorage1D_remap_index 277
-#define TexStorage2D_remap_index 278
-#define TexStorage3D_remap_index 279
-#define TextureStorage1DEXT_remap_index 280
-#define TextureStorage2DEXT_remap_index 281
-#define TextureStorage3DEXT_remap_index 282
-#define PolygonOffsetEXT_remap_index 283
-#define GetPixelTexGenParameterfvSGIS_remap_index 284
-#define GetPixelTexGenParameterivSGIS_remap_index 285
-#define PixelTexGenParameterfSGIS_remap_index 286
-#define PixelTexGenParameterfvSGIS_remap_index 287
-#define PixelTexGenParameteriSGIS_remap_index 288
-#define PixelTexGenParameterivSGIS_remap_index 289
-#define SampleMaskSGIS_remap_index 290
-#define SamplePatternSGIS_remap_index 291
-#define ColorPointerEXT_remap_index 292
-#define EdgeFlagPointerEXT_remap_index 293
-#define IndexPointerEXT_remap_index 294
-#define NormalPointerEXT_remap_index 295
-#define TexCoordPointerEXT_remap_index 296
-#define VertexPointerEXT_remap_index 297
-#define PointParameterfEXT_remap_index 298
-#define PointParameterfvEXT_remap_index 299
-#define LockArraysEXT_remap_index 300
-#define UnlockArraysEXT_remap_index 301
-#define SecondaryColor3bEXT_remap_index 302
-#define SecondaryColor3bvEXT_remap_index 303
-#define SecondaryColor3dEXT_remap_index 304
-#define SecondaryColor3dvEXT_remap_index 305
-#define SecondaryColor3fEXT_remap_index 306
-#define SecondaryColor3fvEXT_remap_index 307
-#define SecondaryColor3iEXT_remap_index 308
-#define SecondaryColor3ivEXT_remap_index 309
-#define SecondaryColor3sEXT_remap_index 310
-#define SecondaryColor3svEXT_remap_index 311
-#define SecondaryColor3ubEXT_remap_index 312
-#define SecondaryColor3ubvEXT_remap_index 313
-#define SecondaryColor3uiEXT_remap_index 314
-#define SecondaryColor3uivEXT_remap_index 315
-#define SecondaryColor3usEXT_remap_index 316
-#define SecondaryColor3usvEXT_remap_index 317
-#define SecondaryColorPointerEXT_remap_index 318
-#define MultiDrawArraysEXT_remap_index 319
-#define MultiDrawElementsEXT_remap_index 320
-#define FogCoordPointerEXT_remap_index 321
-#define FogCoorddEXT_remap_index 322
-#define FogCoorddvEXT_remap_index 323
-#define FogCoordfEXT_remap_index 324
-#define FogCoordfvEXT_remap_index 325
-#define PixelTexGenSGIX_remap_index 326
-#define BlendFuncSeparateEXT_remap_index 327
-#define FlushVertexArrayRangeNV_remap_index 328
-#define VertexArrayRangeNV_remap_index 329
-#define CombinerInputNV_remap_index 330
-#define CombinerOutputNV_remap_index 331
-#define CombinerParameterfNV_remap_index 332
-#define CombinerParameterfvNV_remap_index 333
-#define CombinerParameteriNV_remap_index 334
-#define CombinerParameterivNV_remap_index 335
-#define FinalCombinerInputNV_remap_index 336
-#define GetCombinerInputParameterfvNV_remap_index 337
-#define GetCombinerInputParameterivNV_remap_index 338
-#define GetCombinerOutputParameterfvNV_remap_index 339
-#define GetCombinerOutputParameterivNV_remap_index 340
-#define GetFinalCombinerInputParameterfvNV_remap_index 341
-#define GetFinalCombinerInputParameterivNV_remap_index 342
-#define ResizeBuffersMESA_remap_index 343
-#define WindowPos2dMESA_remap_index 344
-#define WindowPos2dvMESA_remap_index 345
-#define WindowPos2fMESA_remap_index 346
-#define WindowPos2fvMESA_remap_index 347
-#define WindowPos2iMESA_remap_index 348
-#define WindowPos2ivMESA_remap_index 349
-#define WindowPos2sMESA_remap_index 350
-#define WindowPos2svMESA_remap_index 351
-#define WindowPos3dMESA_remap_index 352
-#define WindowPos3dvMESA_remap_index 353
-#define WindowPos3fMESA_remap_index 354
-#define WindowPos3fvMESA_remap_index 355
-#define WindowPos3iMESA_remap_index 356
-#define WindowPos3ivMESA_remap_index 357
-#define WindowPos3sMESA_remap_index 358
-#define WindowPos3svMESA_remap_index 359
-#define WindowPos4dMESA_remap_index 360
-#define WindowPos4dvMESA_remap_index 361
-#define WindowPos4fMESA_remap_index 362
-#define WindowPos4fvMESA_remap_index 363
-#define WindowPos4iMESA_remap_index 364
-#define WindowPos4ivMESA_remap_index 365
-#define WindowPos4sMESA_remap_index 366
-#define WindowPos4svMESA_remap_index 367
-#define MultiModeDrawArraysIBM_remap_index 368
-#define MultiModeDrawElementsIBM_remap_index 369
-#define DeleteFencesNV_remap_index 370
-#define FinishFenceNV_remap_index 371
-#define GenFencesNV_remap_index 372
-#define GetFenceivNV_remap_index 373
-#define IsFenceNV_remap_index 374
-#define SetFenceNV_remap_index 375
-#define TestFenceNV_remap_index 376
-#define AreProgramsResidentNV_remap_index 377
-#define BindProgramNV_remap_index 378
-#define DeleteProgramsNV_remap_index 379
-#define ExecuteProgramNV_remap_index 380
-#define GenProgramsNV_remap_index 381
-#define GetProgramParameterdvNV_remap_index 382
-#define GetProgramParameterfvNV_remap_index 383
-#define GetProgramStringNV_remap_index 384
-#define GetProgramivNV_remap_index 385
-#define GetTrackMatrixivNV_remap_index 386
-#define GetVertexAttribPointervNV_remap_index 387
-#define GetVertexAttribdvNV_remap_index 388
-#define GetVertexAttribfvNV_remap_index 389
-#define GetVertexAttribivNV_remap_index 390
-#define IsProgramNV_remap_index 391
-#define LoadProgramNV_remap_index 392
-#define ProgramParameters4dvNV_remap_index 393
-#define ProgramParameters4fvNV_remap_index 394
-#define RequestResidentProgramsNV_remap_index 395
-#define TrackMatrixNV_remap_index 396
-#define VertexAttrib1dNV_remap_index 397
-#define VertexAttrib1dvNV_remap_index 398
-#define VertexAttrib1fNV_remap_index 399
-#define VertexAttrib1fvNV_remap_index 400
-#define VertexAttrib1sNV_remap_index 401
-#define VertexAttrib1svNV_remap_index 402
-#define VertexAttrib2dNV_remap_index 403
-#define VertexAttrib2dvNV_remap_index 404
-#define VertexAttrib2fNV_remap_index 405
-#define VertexAttrib2fvNV_remap_index 406
-#define VertexAttrib2sNV_remap_index 407
-#define VertexAttrib2svNV_remap_index 408
-#define VertexAttrib3dNV_remap_index 409
-#define VertexAttrib3dvNV_remap_index 410
-#define VertexAttrib3fNV_remap_index 411
-#define VertexAttrib3fvNV_remap_index 412
-#define VertexAttrib3sNV_remap_index 413
-#define VertexAttrib3svNV_remap_index 414
-#define VertexAttrib4dNV_remap_index 415
-#define VertexAttrib4dvNV_remap_index 416
-#define VertexAttrib4fNV_remap_index 417
-#define VertexAttrib4fvNV_remap_index 418
-#define VertexAttrib4sNV_remap_index 419
-#define VertexAttrib4svNV_remap_index 420
-#define VertexAttrib4ubNV_remap_index 421
-#define VertexAttrib4ubvNV_remap_index 422
-#define VertexAttribPointerNV_remap_index 423
-#define VertexAttribs1dvNV_remap_index 424
-#define VertexAttribs1fvNV_remap_index 425
-#define VertexAttribs1svNV_remap_index 426
-#define VertexAttribs2dvNV_remap_index 427
-#define VertexAttribs2fvNV_remap_index 428
-#define VertexAttribs2svNV_remap_index 429
-#define VertexAttribs3dvNV_remap_index 430
-#define VertexAttribs3fvNV_remap_index 431
-#define VertexAttribs3svNV_remap_index 432
-#define VertexAttribs4dvNV_remap_index 433
-#define VertexAttribs4fvNV_remap_index 434
-#define VertexAttribs4svNV_remap_index 435
-#define VertexAttribs4ubvNV_remap_index 436
-#define GetTexBumpParameterfvATI_remap_index 437
-#define GetTexBumpParameterivATI_remap_index 438
-#define TexBumpParameterfvATI_remap_index 439
-#define TexBumpParameterivATI_remap_index 440
-#define AlphaFragmentOp1ATI_remap_index 441
-#define AlphaFragmentOp2ATI_remap_index 442
-#define AlphaFragmentOp3ATI_remap_index 443
-#define BeginFragmentShaderATI_remap_index 444
-#define BindFragmentShaderATI_remap_index 445
-#define ColorFragmentOp1ATI_remap_index 446
-#define ColorFragmentOp2ATI_remap_index 447
-#define ColorFragmentOp3ATI_remap_index 448
-#define DeleteFragmentShaderATI_remap_index 449
-#define EndFragmentShaderATI_remap_index 450
-#define GenFragmentShadersATI_remap_index 451
-#define PassTexCoordATI_remap_index 452
-#define SampleMapATI_remap_index 453
-#define SetFragmentShaderConstantATI_remap_index 454
-#define PointParameteriNV_remap_index 455
-#define PointParameterivNV_remap_index 456
-#define ActiveStencilFaceEXT_remap_index 457
-#define BindVertexArrayAPPLE_remap_index 458
-#define DeleteVertexArraysAPPLE_remap_index 459
-#define GenVertexArraysAPPLE_remap_index 460
-#define IsVertexArrayAPPLE_remap_index 461
-#define GetProgramNamedParameterdvNV_remap_index 462
-#define GetProgramNamedParameterfvNV_remap_index 463
-#define ProgramNamedParameter4dNV_remap_index 464
-#define ProgramNamedParameter4dvNV_remap_index 465
-#define ProgramNamedParameter4fNV_remap_index 466
-#define ProgramNamedParameter4fvNV_remap_index 467
-#define PrimitiveRestartIndexNV_remap_index 468
-#define PrimitiveRestartNV_remap_index 469
-#define DepthBoundsEXT_remap_index 470
-#define BlendEquationSeparateEXT_remap_index 471
-#define BindFramebufferEXT_remap_index 472
-#define BindRenderbufferEXT_remap_index 473
-#define CheckFramebufferStatusEXT_remap_index 474
-#define DeleteFramebuffersEXT_remap_index 475
-#define DeleteRenderbuffersEXT_remap_index 476
-#define FramebufferRenderbufferEXT_remap_index 477
-#define FramebufferTexture1DEXT_remap_index 478
-#define FramebufferTexture2DEXT_remap_index 479
-#define FramebufferTexture3DEXT_remap_index 480
-#define GenFramebuffersEXT_remap_index 481
-#define GenRenderbuffersEXT_remap_index 482
-#define GenerateMipmapEXT_remap_index 483
-#define GetFramebufferAttachmentParameterivEXT_remap_index 484
-#define GetRenderbufferParameterivEXT_remap_index 485
-#define IsFramebufferEXT_remap_index 486
-#define IsRenderbufferEXT_remap_index 487
-#define RenderbufferStorageEXT_remap_index 488
-#define BlitFramebufferEXT_remap_index 489
-#define BufferParameteriAPPLE_remap_index 490
-#define FlushMappedBufferRangeAPPLE_remap_index 491
-#define BindFragDataLocationEXT_remap_index 492
-#define GetFragDataLocationEXT_remap_index 493
-#define GetUniformuivEXT_remap_index 494
-#define GetVertexAttribIivEXT_remap_index 495
-#define GetVertexAttribIuivEXT_remap_index 496
-#define Uniform1uiEXT_remap_index 497
-#define Uniform1uivEXT_remap_index 498
-#define Uniform2uiEXT_remap_index 499
-#define Uniform2uivEXT_remap_index 500
-#define Uniform3uiEXT_remap_index 501
-#define Uniform3uivEXT_remap_index 502
-#define Uniform4uiEXT_remap_index 503
-#define Uniform4uivEXT_remap_index 504
-#define VertexAttribI1iEXT_remap_index 505
-#define VertexAttribI1ivEXT_remap_index 506
-#define VertexAttribI1uiEXT_remap_index 507
-#define VertexAttribI1uivEXT_remap_index 508
-#define VertexAttribI2iEXT_remap_index 509
-#define VertexAttribI2ivEXT_remap_index 510
-#define VertexAttribI2uiEXT_remap_index 511
-#define VertexAttribI2uivEXT_remap_index 512
-#define VertexAttribI3iEXT_remap_index 513
-#define VertexAttribI3ivEXT_remap_index 514
-#define VertexAttribI3uiEXT_remap_index 515
-#define VertexAttribI3uivEXT_remap_index 516
-#define VertexAttribI4bvEXT_remap_index 517
-#define VertexAttribI4iEXT_remap_index 518
-#define VertexAttribI4ivEXT_remap_index 519
-#define VertexAttribI4svEXT_remap_index 520
-#define VertexAttribI4ubvEXT_remap_index 521
-#define VertexAttribI4uiEXT_remap_index 522
-#define VertexAttribI4uivEXT_remap_index 523
-#define VertexAttribI4usvEXT_remap_index 524
-#define VertexAttribIPointerEXT_remap_index 525
-#define FramebufferTextureLayerEXT_remap_index 526
-#define ColorMaskIndexedEXT_remap_index 527
-#define DisableIndexedEXT_remap_index 528
-#define EnableIndexedEXT_remap_index 529
-#define GetBooleanIndexedvEXT_remap_index 530
-#define GetIntegerIndexedvEXT_remap_index 531
-#define IsEnabledIndexedEXT_remap_index 532
-#define ClearColorIiEXT_remap_index 533
-#define ClearColorIuiEXT_remap_index 534
-#define GetTexParameterIivEXT_remap_index 535
-#define GetTexParameterIuivEXT_remap_index 536
-#define TexParameterIivEXT_remap_index 537
-#define TexParameterIuivEXT_remap_index 538
-#define BeginConditionalRenderNV_remap_index 539
-#define EndConditionalRenderNV_remap_index 540
-#define BeginTransformFeedbackEXT_remap_index 541
-#define BindBufferBaseEXT_remap_index 542
-#define BindBufferOffsetEXT_remap_index 543
-#define BindBufferRangeEXT_remap_index 544
-#define EndTransformFeedbackEXT_remap_index 545
-#define GetTransformFeedbackVaryingEXT_remap_index 546
-#define TransformFeedbackVaryingsEXT_remap_index 547
-#define ProvokingVertexEXT_remap_index 548
-#define GetTexParameterPointervAPPLE_remap_index 549
-#define TextureRangeAPPLE_remap_index 550
-#define GetObjectParameterivAPPLE_remap_index 551
-#define ObjectPurgeableAPPLE_remap_index 552
-#define ObjectUnpurgeableAPPLE_remap_index 553
-#define ActiveProgramEXT_remap_index 554
-#define CreateShaderProgramEXT_remap_index 555
-#define UseShaderProgramEXT_remap_index 556
-#define TextureBarrierNV_remap_index 557
-#define StencilFuncSeparateATI_remap_index 558
-#define ProgramEnvParameters4fvEXT_remap_index 559
-#define ProgramLocalParameters4fvEXT_remap_index 560
-#define GetQueryObjecti64vEXT_remap_index 561
-#define GetQueryObjectui64vEXT_remap_index 562
-#define EGLImageTargetRenderbufferStorageOES_remap_index 563
-#define EGLImageTargetTexture2DOES_remap_index 564
-
-#define _gloffset_AttachShader driDispatchRemapTable[AttachShader_remap_index]
-#define _gloffset_CreateProgram driDispatchRemapTable[CreateProgram_remap_index]
-#define _gloffset_CreateShader driDispatchRemapTable[CreateShader_remap_index]
-#define _gloffset_DeleteProgram driDispatchRemapTable[DeleteProgram_remap_index]
-#define _gloffset_DeleteShader driDispatchRemapTable[DeleteShader_remap_index]
-#define _gloffset_DetachShader driDispatchRemapTable[DetachShader_remap_index]
-#define _gloffset_GetAttachedShaders driDispatchRemapTable[GetAttachedShaders_remap_index]
-#define _gloffset_GetProgramInfoLog driDispatchRemapTable[GetProgramInfoLog_remap_index]
-#define _gloffset_GetProgramiv driDispatchRemapTable[GetProgramiv_remap_index]
-#define _gloffset_GetShaderInfoLog driDispatchRemapTable[GetShaderInfoLog_remap_index]
-#define _gloffset_GetShaderiv driDispatchRemapTable[GetShaderiv_remap_index]
-#define _gloffset_IsProgram driDispatchRemapTable[IsProgram_remap_index]
-#define _gloffset_IsShader driDispatchRemapTable[IsShader_remap_index]
-#define _gloffset_StencilFuncSeparate driDispatchRemapTable[StencilFuncSeparate_remap_index]
-#define _gloffset_StencilMaskSeparate driDispatchRemapTable[StencilMaskSeparate_remap_index]
-#define _gloffset_StencilOpSeparate driDispatchRemapTable[StencilOpSeparate_remap_index]
-#define _gloffset_UniformMatrix2x3fv driDispatchRemapTable[UniformMatrix2x3fv_remap_index]
-#define _gloffset_UniformMatrix2x4fv driDispatchRemapTable[UniformMatrix2x4fv_remap_index]
-#define _gloffset_UniformMatrix3x2fv driDispatchRemapTable[UniformMatrix3x2fv_remap_index]
-#define _gloffset_UniformMatrix3x4fv driDispatchRemapTable[UniformMatrix3x4fv_remap_index]
-#define _gloffset_UniformMatrix4x2fv driDispatchRemapTable[UniformMatrix4x2fv_remap_index]
-#define _gloffset_UniformMatrix4x3fv driDispatchRemapTable[UniformMatrix4x3fv_remap_index]
-#define _gloffset_ClampColor driDispatchRemapTable[ClampColor_remap_index]
-#define _gloffset_ClearBufferfi driDispatchRemapTable[ClearBufferfi_remap_index]
-#define _gloffset_ClearBufferfv driDispatchRemapTable[ClearBufferfv_remap_index]
-#define _gloffset_ClearBufferiv driDispatchRemapTable[ClearBufferiv_remap_index]
-#define _gloffset_ClearBufferuiv driDispatchRemapTable[ClearBufferuiv_remap_index]
-#define _gloffset_GetStringi driDispatchRemapTable[GetStringi_remap_index]
-#define _gloffset_TexBuffer driDispatchRemapTable[TexBuffer_remap_index]
-#define _gloffset_FramebufferTexture driDispatchRemapTable[FramebufferTexture_remap_index]
-#define _gloffset_GetBufferParameteri64v driDispatchRemapTable[GetBufferParameteri64v_remap_index]
-#define _gloffset_GetInteger64i_v driDispatchRemapTable[GetInteger64i_v_remap_index]
-#define _gloffset_VertexAttribDivisor driDispatchRemapTable[VertexAttribDivisor_remap_index]
-#define _gloffset_LoadTransposeMatrixdARB driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index]
-#define _gloffset_LoadTransposeMatrixfARB driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index]
-#define _gloffset_MultTransposeMatrixdARB driDispatchRemapTable[MultTransposeMatrixdARB_remap_index]
-#define _gloffset_MultTransposeMatrixfARB driDispatchRemapTable[MultTransposeMatrixfARB_remap_index]
-#define _gloffset_SampleCoverageARB driDispatchRemapTable[SampleCoverageARB_remap_index]
-#define _gloffset_CompressedTexImage1DARB driDispatchRemapTable[CompressedTexImage1DARB_remap_index]
-#define _gloffset_CompressedTexImage2DARB driDispatchRemapTable[CompressedTexImage2DARB_remap_index]
-#define _gloffset_CompressedTexImage3DARB driDispatchRemapTable[CompressedTexImage3DARB_remap_index]
-#define _gloffset_CompressedTexSubImage1DARB driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index]
-#define _gloffset_CompressedTexSubImage2DARB driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index]
-#define _gloffset_CompressedTexSubImage3DARB driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index]
-#define _gloffset_GetCompressedTexImageARB driDispatchRemapTable[GetCompressedTexImageARB_remap_index]
-#define _gloffset_DisableVertexAttribArrayARB driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index]
-#define _gloffset_EnableVertexAttribArrayARB driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index]
-#define _gloffset_GetProgramEnvParameterdvARB driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index]
-#define _gloffset_GetProgramEnvParameterfvARB driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index]
-#define _gloffset_GetProgramLocalParameterdvARB driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index]
-#define _gloffset_GetProgramLocalParameterfvARB driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index]
-#define _gloffset_GetProgramStringARB driDispatchRemapTable[GetProgramStringARB_remap_index]
-#define _gloffset_GetProgramivARB driDispatchRemapTable[GetProgramivARB_remap_index]
-#define _gloffset_GetVertexAttribdvARB driDispatchRemapTable[GetVertexAttribdvARB_remap_index]
-#define _gloffset_GetVertexAttribfvARB driDispatchRemapTable[GetVertexAttribfvARB_remap_index]
-#define _gloffset_GetVertexAttribivARB driDispatchRemapTable[GetVertexAttribivARB_remap_index]
-#define _gloffset_ProgramEnvParameter4dARB driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index]
-#define _gloffset_ProgramEnvParameter4dvARB driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index]
-#define _gloffset_ProgramEnvParameter4fARB driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index]
-#define _gloffset_ProgramEnvParameter4fvARB driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index]
-#define _gloffset_ProgramLocalParameter4dARB driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index]
-#define _gloffset_ProgramLocalParameter4dvARB driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index]
-#define _gloffset_ProgramLocalParameter4fARB driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index]
-#define _gloffset_ProgramLocalParameter4fvARB driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index]
-#define _gloffset_ProgramStringARB driDispatchRemapTable[ProgramStringARB_remap_index]
-#define _gloffset_VertexAttrib1dARB driDispatchRemapTable[VertexAttrib1dARB_remap_index]
-#define _gloffset_VertexAttrib1dvARB driDispatchRemapTable[VertexAttrib1dvARB_remap_index]
-#define _gloffset_VertexAttrib1fARB driDispatchRemapTable[VertexAttrib1fARB_remap_index]
-#define _gloffset_VertexAttrib1fvARB driDispatchRemapTable[VertexAttrib1fvARB_remap_index]
-#define _gloffset_VertexAttrib1sARB driDispatchRemapTable[VertexAttrib1sARB_remap_index]
-#define _gloffset_VertexAttrib1svARB driDispatchRemapTable[VertexAttrib1svARB_remap_index]
-#define _gloffset_VertexAttrib2dARB driDispatchRemapTable[VertexAttrib2dARB_remap_index]
-#define _gloffset_VertexAttrib2dvARB driDispatchRemapTable[VertexAttrib2dvARB_remap_index]
-#define _gloffset_VertexAttrib2fARB driDispatchRemapTable[VertexAttrib2fARB_remap_index]
-#define _gloffset_VertexAttrib2fvARB driDispatchRemapTable[VertexAttrib2fvARB_remap_index]
-#define _gloffset_VertexAttrib2sARB driDispatchRemapTable[VertexAttrib2sARB_remap_index]
-#define _gloffset_VertexAttrib2svARB driDispatchRemapTable[VertexAttrib2svARB_remap_index]
-#define _gloffset_VertexAttrib3dARB driDispatchRemapTable[VertexAttrib3dARB_remap_index]
-#define _gloffset_VertexAttrib3dvARB driDispatchRemapTable[VertexAttrib3dvARB_remap_index]
-#define _gloffset_VertexAttrib3fARB driDispatchRemapTable[VertexAttrib3fARB_remap_index]
-#define _gloffset_VertexAttrib3fvARB driDispatchRemapTable[VertexAttrib3fvARB_remap_index]
-#define _gloffset_VertexAttrib3sARB driDispatchRemapTable[VertexAttrib3sARB_remap_index]
-#define _gloffset_VertexAttrib3svARB driDispatchRemapTable[VertexAttrib3svARB_remap_index]
-#define _gloffset_VertexAttrib4NbvARB driDispatchRemapTable[VertexAttrib4NbvARB_remap_index]
-#define _gloffset_VertexAttrib4NivARB driDispatchRemapTable[VertexAttrib4NivARB_remap_index]
-#define _gloffset_VertexAttrib4NsvARB driDispatchRemapTable[VertexAttrib4NsvARB_remap_index]
-#define _gloffset_VertexAttrib4NubARB driDispatchRemapTable[VertexAttrib4NubARB_remap_index]
-#define _gloffset_VertexAttrib4NubvARB driDispatchRemapTable[VertexAttrib4NubvARB_remap_index]
-#define _gloffset_VertexAttrib4NuivARB driDispatchRemapTable[VertexAttrib4NuivARB_remap_index]
-#define _gloffset_VertexAttrib4NusvARB driDispatchRemapTable[VertexAttrib4NusvARB_remap_index]
-#define _gloffset_VertexAttrib4bvARB driDispatchRemapTable[VertexAttrib4bvARB_remap_index]
-#define _gloffset_VertexAttrib4dARB driDispatchRemapTable[VertexAttrib4dARB_remap_index]
-#define _gloffset_VertexAttrib4dvARB driDispatchRemapTable[VertexAttrib4dvARB_remap_index]
-#define _gloffset_VertexAttrib4fARB driDispatchRemapTable[VertexAttrib4fARB_remap_index]
-#define _gloffset_VertexAttrib4fvARB driDispatchRemapTable[VertexAttrib4fvARB_remap_index]
-#define _gloffset_VertexAttrib4ivARB driDispatchRemapTable[VertexAttrib4ivARB_remap_index]
-#define _gloffset_VertexAttrib4sARB driDispatchRemapTable[VertexAttrib4sARB_remap_index]
-#define _gloffset_VertexAttrib4svARB driDispatchRemapTable[VertexAttrib4svARB_remap_index]
-#define _gloffset_VertexAttrib4ubvARB driDispatchRemapTable[VertexAttrib4ubvARB_remap_index]
-#define _gloffset_VertexAttrib4uivARB driDispatchRemapTable[VertexAttrib4uivARB_remap_index]
-#define _gloffset_VertexAttrib4usvARB driDispatchRemapTable[VertexAttrib4usvARB_remap_index]
-#define _gloffset_VertexAttribPointerARB driDispatchRemapTable[VertexAttribPointerARB_remap_index]
-#define _gloffset_BindBufferARB driDispatchRemapTable[BindBufferARB_remap_index]
-#define _gloffset_BufferDataARB driDispatchRemapTable[BufferDataARB_remap_index]
-#define _gloffset_BufferSubDataARB driDispatchRemapTable[BufferSubDataARB_remap_index]
-#define _gloffset_DeleteBuffersARB driDispatchRemapTable[DeleteBuffersARB_remap_index]
-#define _gloffset_GenBuffersARB driDispatchRemapTable[GenBuffersARB_remap_index]
-#define _gloffset_GetBufferParameterivARB driDispatchRemapTable[GetBufferParameterivARB_remap_index]
-#define _gloffset_GetBufferPointervARB driDispatchRemapTable[GetBufferPointervARB_remap_index]
-#define _gloffset_GetBufferSubDataARB driDispatchRemapTable[GetBufferSubDataARB_remap_index]
-#define _gloffset_IsBufferARB driDispatchRemapTable[IsBufferARB_remap_index]
-#define _gloffset_MapBufferARB driDispatchRemapTable[MapBufferARB_remap_index]
-#define _gloffset_UnmapBufferARB driDispatchRemapTable[UnmapBufferARB_remap_index]
-#define _gloffset_BeginQueryARB driDispatchRemapTable[BeginQueryARB_remap_index]
-#define _gloffset_DeleteQueriesARB driDispatchRemapTable[DeleteQueriesARB_remap_index]
-#define _gloffset_EndQueryARB driDispatchRemapTable[EndQueryARB_remap_index]
-#define _gloffset_GenQueriesARB driDispatchRemapTable[GenQueriesARB_remap_index]
-#define _gloffset_GetQueryObjectivARB driDispatchRemapTable[GetQueryObjectivARB_remap_index]
-#define _gloffset_GetQueryObjectuivARB driDispatchRemapTable[GetQueryObjectuivARB_remap_index]
-#define _gloffset_GetQueryivARB driDispatchRemapTable[GetQueryivARB_remap_index]
-#define _gloffset_IsQueryARB driDispatchRemapTable[IsQueryARB_remap_index]
-#define _gloffset_AttachObjectARB driDispatchRemapTable[AttachObjectARB_remap_index]
-#define _gloffset_CompileShaderARB driDispatchRemapTable[CompileShaderARB_remap_index]
-#define _gloffset_CreateProgramObjectARB driDispatchRemapTable[CreateProgramObjectARB_remap_index]
-#define _gloffset_CreateShaderObjectARB driDispatchRemapTable[CreateShaderObjectARB_remap_index]
-#define _gloffset_DeleteObjectARB driDispatchRemapTable[DeleteObjectARB_remap_index]
-#define _gloffset_DetachObjectARB driDispatchRemapTable[DetachObjectARB_remap_index]
-#define _gloffset_GetActiveUniformARB driDispatchRemapTable[GetActiveUniformARB_remap_index]
-#define _gloffset_GetAttachedObjectsARB driDispatchRemapTable[GetAttachedObjectsARB_remap_index]
-#define _gloffset_GetHandleARB driDispatchRemapTable[GetHandleARB_remap_index]
-#define _gloffset_GetInfoLogARB driDispatchRemapTable[GetInfoLogARB_remap_index]
-#define _gloffset_GetObjectParameterfvARB driDispatchRemapTable[GetObjectParameterfvARB_remap_index]
-#define _gloffset_GetObjectParameterivARB driDispatchRemapTable[GetObjectParameterivARB_remap_index]
-#define _gloffset_GetShaderSourceARB driDispatchRemapTable[GetShaderSourceARB_remap_index]
-#define _gloffset_GetUniformLocationARB driDispatchRemapTable[GetUniformLocationARB_remap_index]
-#define _gloffset_GetUniformfvARB driDispatchRemapTable[GetUniformfvARB_remap_index]
-#define _gloffset_GetUniformivARB driDispatchRemapTable[GetUniformivARB_remap_index]
-#define _gloffset_LinkProgramARB driDispatchRemapTable[LinkProgramARB_remap_index]
-#define _gloffset_ShaderSourceARB driDispatchRemapTable[ShaderSourceARB_remap_index]
-#define _gloffset_Uniform1fARB driDispatchRemapTable[Uniform1fARB_remap_index]
-#define _gloffset_Uniform1fvARB driDispatchRemapTable[Uniform1fvARB_remap_index]
-#define _gloffset_Uniform1iARB driDispatchRemapTable[Uniform1iARB_remap_index]
-#define _gloffset_Uniform1ivARB driDispatchRemapTable[Uniform1ivARB_remap_index]
-#define _gloffset_Uniform2fARB driDispatchRemapTable[Uniform2fARB_remap_index]
-#define _gloffset_Uniform2fvARB driDispatchRemapTable[Uniform2fvARB_remap_index]
-#define _gloffset_Uniform2iARB driDispatchRemapTable[Uniform2iARB_remap_index]
-#define _gloffset_Uniform2ivARB driDispatchRemapTable[Uniform2ivARB_remap_index]
-#define _gloffset_Uniform3fARB driDispatchRemapTable[Uniform3fARB_remap_index]
-#define _gloffset_Uniform3fvARB driDispatchRemapTable[Uniform3fvARB_remap_index]
-#define _gloffset_Uniform3iARB driDispatchRemapTable[Uniform3iARB_remap_index]
-#define _gloffset_Uniform3ivARB driDispatchRemapTable[Uniform3ivARB_remap_index]
-#define _gloffset_Uniform4fARB driDispatchRemapTable[Uniform4fARB_remap_index]
-#define _gloffset_Uniform4fvARB driDispatchRemapTable[Uniform4fvARB_remap_index]
-#define _gloffset_Uniform4iARB driDispatchRemapTable[Uniform4iARB_remap_index]
-#define _gloffset_Uniform4ivARB driDispatchRemapTable[Uniform4ivARB_remap_index]
-#define _gloffset_UniformMatrix2fvARB driDispatchRemapTable[UniformMatrix2fvARB_remap_index]
-#define _gloffset_UniformMatrix3fvARB driDispatchRemapTable[UniformMatrix3fvARB_remap_index]
-#define _gloffset_UniformMatrix4fvARB driDispatchRemapTable[UniformMatrix4fvARB_remap_index]
-#define _gloffset_UseProgramObjectARB driDispatchRemapTable[UseProgramObjectARB_remap_index]
-#define _gloffset_ValidateProgramARB driDispatchRemapTable[ValidateProgramARB_remap_index]
-#define _gloffset_BindAttribLocationARB driDispatchRemapTable[BindAttribLocationARB_remap_index]
-#define _gloffset_GetActiveAttribARB driDispatchRemapTable[GetActiveAttribARB_remap_index]
-#define _gloffset_GetAttribLocationARB driDispatchRemapTable[GetAttribLocationARB_remap_index]
-#define _gloffset_DrawBuffersARB driDispatchRemapTable[DrawBuffersARB_remap_index]
-#define _gloffset_ClampColorARB driDispatchRemapTable[ClampColorARB_remap_index]
-#define _gloffset_DrawArraysInstancedARB driDispatchRemapTable[DrawArraysInstancedARB_remap_index]
-#define _gloffset_DrawElementsInstancedARB driDispatchRemapTable[DrawElementsInstancedARB_remap_index]
-#define _gloffset_RenderbufferStorageMultisample driDispatchRemapTable[RenderbufferStorageMultisample_remap_index]
-#define _gloffset_FramebufferTextureARB driDispatchRemapTable[FramebufferTextureARB_remap_index]
-#define _gloffset_FramebufferTextureFaceARB driDispatchRemapTable[FramebufferTextureFaceARB_remap_index]
-#define _gloffset_ProgramParameteriARB driDispatchRemapTable[ProgramParameteriARB_remap_index]
-#define _gloffset_VertexAttribDivisorARB driDispatchRemapTable[VertexAttribDivisorARB_remap_index]
-#define _gloffset_FlushMappedBufferRange driDispatchRemapTable[FlushMappedBufferRange_remap_index]
-#define _gloffset_MapBufferRange driDispatchRemapTable[MapBufferRange_remap_index]
-#define _gloffset_TexBufferARB driDispatchRemapTable[TexBufferARB_remap_index]
-#define _gloffset_BindVertexArray driDispatchRemapTable[BindVertexArray_remap_index]
-#define _gloffset_GenVertexArrays driDispatchRemapTable[GenVertexArrays_remap_index]
-#define _gloffset_CopyBufferSubData driDispatchRemapTable[CopyBufferSubData_remap_index]
-#define _gloffset_ClientWaitSync driDispatchRemapTable[ClientWaitSync_remap_index]
-#define _gloffset_DeleteSync driDispatchRemapTable[DeleteSync_remap_index]
-#define _gloffset_FenceSync driDispatchRemapTable[FenceSync_remap_index]
-#define _gloffset_GetInteger64v driDispatchRemapTable[GetInteger64v_remap_index]
-#define _gloffset_GetSynciv driDispatchRemapTable[GetSynciv_remap_index]
-#define _gloffset_IsSync driDispatchRemapTable[IsSync_remap_index]
-#define _gloffset_WaitSync driDispatchRemapTable[WaitSync_remap_index]
-#define _gloffset_DrawElementsBaseVertex driDispatchRemapTable[DrawElementsBaseVertex_remap_index]
-#define _gloffset_DrawElementsInstancedBaseVertex driDispatchRemapTable[DrawElementsInstancedBaseVertex_remap_index]
-#define _gloffset_DrawRangeElementsBaseVertex driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index]
-#define _gloffset_MultiDrawElementsBaseVertex driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index]
-#define _gloffset_BlendEquationSeparateiARB driDispatchRemapTable[BlendEquationSeparateiARB_remap_index]
-#define _gloffset_BlendEquationiARB driDispatchRemapTable[BlendEquationiARB_remap_index]
-#define _gloffset_BlendFuncSeparateiARB driDispatchRemapTable[BlendFuncSeparateiARB_remap_index]
-#define _gloffset_BlendFunciARB driDispatchRemapTable[BlendFunciARB_remap_index]
-#define _gloffset_BindSampler driDispatchRemapTable[BindSampler_remap_index]
-#define _gloffset_DeleteSamplers driDispatchRemapTable[DeleteSamplers_remap_index]
-#define _gloffset_GenSamplers driDispatchRemapTable[GenSamplers_remap_index]
-#define _gloffset_GetSamplerParameterIiv driDispatchRemapTable[GetSamplerParameterIiv_remap_index]
-#define _gloffset_GetSamplerParameterIuiv driDispatchRemapTable[GetSamplerParameterIuiv_remap_index]
-#define _gloffset_GetSamplerParameterfv driDispatchRemapTable[GetSamplerParameterfv_remap_index]
-#define _gloffset_GetSamplerParameteriv driDispatchRemapTable[GetSamplerParameteriv_remap_index]
-#define _gloffset_IsSampler driDispatchRemapTable[IsSampler_remap_index]
-#define _gloffset_SamplerParameterIiv driDispatchRemapTable[SamplerParameterIiv_remap_index]
-#define _gloffset_SamplerParameterIuiv driDispatchRemapTable[SamplerParameterIuiv_remap_index]
-#define _gloffset_SamplerParameterf driDispatchRemapTable[SamplerParameterf_remap_index]
-#define _gloffset_SamplerParameterfv driDispatchRemapTable[SamplerParameterfv_remap_index]
-#define _gloffset_SamplerParameteri driDispatchRemapTable[SamplerParameteri_remap_index]
-#define _gloffset_SamplerParameteriv driDispatchRemapTable[SamplerParameteriv_remap_index]
-#define _gloffset_ColorP3ui driDispatchRemapTable[ColorP3ui_remap_index]
-#define _gloffset_ColorP3uiv driDispatchRemapTable[ColorP3uiv_remap_index]
-#define _gloffset_ColorP4ui driDispatchRemapTable[ColorP4ui_remap_index]
-#define _gloffset_ColorP4uiv driDispatchRemapTable[ColorP4uiv_remap_index]
-#define _gloffset_MultiTexCoordP1ui driDispatchRemapTable[MultiTexCoordP1ui_remap_index]
-#define _gloffset_MultiTexCoordP1uiv driDispatchRemapTable[MultiTexCoordP1uiv_remap_index]
-#define _gloffset_MultiTexCoordP2ui driDispatchRemapTable[MultiTexCoordP2ui_remap_index]
-#define _gloffset_MultiTexCoordP2uiv driDispatchRemapTable[MultiTexCoordP2uiv_remap_index]
-#define _gloffset_MultiTexCoordP3ui driDispatchRemapTable[MultiTexCoordP3ui_remap_index]
-#define _gloffset_MultiTexCoordP3uiv driDispatchRemapTable[MultiTexCoordP3uiv_remap_index]
-#define _gloffset_MultiTexCoordP4ui driDispatchRemapTable[MultiTexCoordP4ui_remap_index]
-#define _gloffset_MultiTexCoordP4uiv driDispatchRemapTable[MultiTexCoordP4uiv_remap_index]
-#define _gloffset_NormalP3ui driDispatchRemapTable[NormalP3ui_remap_index]
-#define _gloffset_NormalP3uiv driDispatchRemapTable[NormalP3uiv_remap_index]
-#define _gloffset_SecondaryColorP3ui driDispatchRemapTable[SecondaryColorP3ui_remap_index]
-#define _gloffset_SecondaryColorP3uiv driDispatchRemapTable[SecondaryColorP3uiv_remap_index]
-#define _gloffset_TexCoordP1ui driDispatchRemapTable[TexCoordP1ui_remap_index]
-#define _gloffset_TexCoordP1uiv driDispatchRemapTable[TexCoordP1uiv_remap_index]
-#define _gloffset_TexCoordP2ui driDispatchRemapTable[TexCoordP2ui_remap_index]
-#define _gloffset_TexCoordP2uiv driDispatchRemapTable[TexCoordP2uiv_remap_index]
-#define _gloffset_TexCoordP3ui driDispatchRemapTable[TexCoordP3ui_remap_index]
-#define _gloffset_TexCoordP3uiv driDispatchRemapTable[TexCoordP3uiv_remap_index]
-#define _gloffset_TexCoordP4ui driDispatchRemapTable[TexCoordP4ui_remap_index]
-#define _gloffset_TexCoordP4uiv driDispatchRemapTable[TexCoordP4uiv_remap_index]
-#define _gloffset_VertexAttribP1ui driDispatchRemapTable[VertexAttribP1ui_remap_index]
-#define _gloffset_VertexAttribP1uiv driDispatchRemapTable[VertexAttribP1uiv_remap_index]
-#define _gloffset_VertexAttribP2ui driDispatchRemapTable[VertexAttribP2ui_remap_index]
-#define _gloffset_VertexAttribP2uiv driDispatchRemapTable[VertexAttribP2uiv_remap_index]
-#define _gloffset_VertexAttribP3ui driDispatchRemapTable[VertexAttribP3ui_remap_index]
-#define _gloffset_VertexAttribP3uiv driDispatchRemapTable[VertexAttribP3uiv_remap_index]
-#define _gloffset_VertexAttribP4ui driDispatchRemapTable[VertexAttribP4ui_remap_index]
-#define _gloffset_VertexAttribP4uiv driDispatchRemapTable[VertexAttribP4uiv_remap_index]
-#define _gloffset_VertexP2ui driDispatchRemapTable[VertexP2ui_remap_index]
-#define _gloffset_VertexP2uiv driDispatchRemapTable[VertexP2uiv_remap_index]
-#define _gloffset_VertexP3ui driDispatchRemapTable[VertexP3ui_remap_index]
-#define _gloffset_VertexP3uiv driDispatchRemapTable[VertexP3uiv_remap_index]
-#define _gloffset_VertexP4ui driDispatchRemapTable[VertexP4ui_remap_index]
-#define _gloffset_VertexP4uiv driDispatchRemapTable[VertexP4uiv_remap_index]
-#define _gloffset_BindTransformFeedback driDispatchRemapTable[BindTransformFeedback_remap_index]
-#define _gloffset_DeleteTransformFeedbacks driDispatchRemapTable[DeleteTransformFeedbacks_remap_index]
-#define _gloffset_DrawTransformFeedback driDispatchRemapTable[DrawTransformFeedback_remap_index]
-#define _gloffset_GenTransformFeedbacks driDispatchRemapTable[GenTransformFeedbacks_remap_index]
-#define _gloffset_IsTransformFeedback driDispatchRemapTable[IsTransformFeedback_remap_index]
-#define _gloffset_PauseTransformFeedback driDispatchRemapTable[PauseTransformFeedback_remap_index]
-#define _gloffset_ResumeTransformFeedback driDispatchRemapTable[ResumeTransformFeedback_remap_index]
-#define _gloffset_ClearDepthf driDispatchRemapTable[ClearDepthf_remap_index]
-#define _gloffset_DepthRangef driDispatchRemapTable[DepthRangef_remap_index]
-#define _gloffset_GetShaderPrecisionFormat driDispatchRemapTable[GetShaderPrecisionFormat_remap_index]
-#define _gloffset_ReleaseShaderCompiler driDispatchRemapTable[ReleaseShaderCompiler_remap_index]
-#define _gloffset_ShaderBinary driDispatchRemapTable[ShaderBinary_remap_index]
-#define _gloffset_GetGraphicsResetStatusARB driDispatchRemapTable[GetGraphicsResetStatusARB_remap_index]
-#define _gloffset_GetnColorTableARB driDispatchRemapTable[GetnColorTableARB_remap_index]
-#define _gloffset_GetnCompressedTexImageARB driDispatchRemapTable[GetnCompressedTexImageARB_remap_index]
-#define _gloffset_GetnConvolutionFilterARB driDispatchRemapTable[GetnConvolutionFilterARB_remap_index]
-#define _gloffset_GetnHistogramARB driDispatchRemapTable[GetnHistogramARB_remap_index]
-#define _gloffset_GetnMapdvARB driDispatchRemapTable[GetnMapdvARB_remap_index]
-#define _gloffset_GetnMapfvARB driDispatchRemapTable[GetnMapfvARB_remap_index]
-#define _gloffset_GetnMapivARB driDispatchRemapTable[GetnMapivARB_remap_index]
-#define _gloffset_GetnMinmaxARB driDispatchRemapTable[GetnMinmaxARB_remap_index]
-#define _gloffset_GetnPixelMapfvARB driDispatchRemapTable[GetnPixelMapfvARB_remap_index]
-#define _gloffset_GetnPixelMapuivARB driDispatchRemapTable[GetnPixelMapuivARB_remap_index]
-#define _gloffset_GetnPixelMapusvARB driDispatchRemapTable[GetnPixelMapusvARB_remap_index]
-#define _gloffset_GetnPolygonStippleARB driDispatchRemapTable[GetnPolygonStippleARB_remap_index]
-#define _gloffset_GetnSeparableFilterARB driDispatchRemapTable[GetnSeparableFilterARB_remap_index]
-#define _gloffset_GetnTexImageARB driDispatchRemapTable[GetnTexImageARB_remap_index]
-#define _gloffset_GetnUniformdvARB driDispatchRemapTable[GetnUniformdvARB_remap_index]
-#define _gloffset_GetnUniformfvARB driDispatchRemapTable[GetnUniformfvARB_remap_index]
-#define _gloffset_GetnUniformivARB driDispatchRemapTable[GetnUniformivARB_remap_index]
-#define _gloffset_GetnUniformuivARB driDispatchRemapTable[GetnUniformuivARB_remap_index]
-#define _gloffset_ReadnPixelsARB driDispatchRemapTable[ReadnPixelsARB_remap_index]
-#define _gloffset_TexStorage1D driDispatchRemapTable[TexStorage1D_remap_index]
-#define _gloffset_TexStorage2D driDispatchRemapTable[TexStorage2D_remap_index]
-#define _gloffset_TexStorage3D driDispatchRemapTable[TexStorage3D_remap_index]
-#define _gloffset_TextureStorage1DEXT driDispatchRemapTable[TextureStorage1DEXT_remap_index]
-#define _gloffset_TextureStorage2DEXT driDispatchRemapTable[TextureStorage2DEXT_remap_index]
-#define _gloffset_TextureStorage3DEXT driDispatchRemapTable[TextureStorage3DEXT_remap_index]
-#define _gloffset_PolygonOffsetEXT driDispatchRemapTable[PolygonOffsetEXT_remap_index]
-#define _gloffset_GetPixelTexGenParameterfvSGIS driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index]
-#define _gloffset_GetPixelTexGenParameterivSGIS driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index]
-#define _gloffset_PixelTexGenParameterfSGIS driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index]
-#define _gloffset_PixelTexGenParameterfvSGIS driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index]
-#define _gloffset_PixelTexGenParameteriSGIS driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index]
-#define _gloffset_PixelTexGenParameterivSGIS driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index]
-#define _gloffset_SampleMaskSGIS driDispatchRemapTable[SampleMaskSGIS_remap_index]
-#define _gloffset_SamplePatternSGIS driDispatchRemapTable[SamplePatternSGIS_remap_index]
-#define _gloffset_ColorPointerEXT driDispatchRemapTable[ColorPointerEXT_remap_index]
-#define _gloffset_EdgeFlagPointerEXT driDispatchRemapTable[EdgeFlagPointerEXT_remap_index]
-#define _gloffset_IndexPointerEXT driDispatchRemapTable[IndexPointerEXT_remap_index]
-#define _gloffset_NormalPointerEXT driDispatchRemapTable[NormalPointerEXT_remap_index]
-#define _gloffset_TexCoordPointerEXT driDispatchRemapTable[TexCoordPointerEXT_remap_index]
-#define _gloffset_VertexPointerEXT driDispatchRemapTable[VertexPointerEXT_remap_index]
-#define _gloffset_PointParameterfEXT driDispatchRemapTable[PointParameterfEXT_remap_index]
-#define _gloffset_PointParameterfvEXT driDispatchRemapTable[PointParameterfvEXT_remap_index]
-#define _gloffset_LockArraysEXT driDispatchRemapTable[LockArraysEXT_remap_index]
-#define _gloffset_UnlockArraysEXT driDispatchRemapTable[UnlockArraysEXT_remap_index]
-#define _gloffset_SecondaryColor3bEXT driDispatchRemapTable[SecondaryColor3bEXT_remap_index]
-#define _gloffset_SecondaryColor3bvEXT driDispatchRemapTable[SecondaryColor3bvEXT_remap_index]
-#define _gloffset_SecondaryColor3dEXT driDispatchRemapTable[SecondaryColor3dEXT_remap_index]
-#define _gloffset_SecondaryColor3dvEXT driDispatchRemapTable[SecondaryColor3dvEXT_remap_index]
-#define _gloffset_SecondaryColor3fEXT driDispatchRemapTable[SecondaryColor3fEXT_remap_index]
-#define _gloffset_SecondaryColor3fvEXT driDispatchRemapTable[SecondaryColor3fvEXT_remap_index]
-#define _gloffset_SecondaryColor3iEXT driDispatchRemapTable[SecondaryColor3iEXT_remap_index]
-#define _gloffset_SecondaryColor3ivEXT driDispatchRemapTable[SecondaryColor3ivEXT_remap_index]
-#define _gloffset_SecondaryColor3sEXT driDispatchRemapTable[SecondaryColor3sEXT_remap_index]
-#define _gloffset_SecondaryColor3svEXT driDispatchRemapTable[SecondaryColor3svEXT_remap_index]
-#define _gloffset_SecondaryColor3ubEXT driDispatchRemapTable[SecondaryColor3ubEXT_remap_index]
-#define _gloffset_SecondaryColor3ubvEXT driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index]
-#define _gloffset_SecondaryColor3uiEXT driDispatchRemapTable[SecondaryColor3uiEXT_remap_index]
-#define _gloffset_SecondaryColor3uivEXT driDispatchRemapTable[SecondaryColor3uivEXT_remap_index]
-#define _gloffset_SecondaryColor3usEXT driDispatchRemapTable[SecondaryColor3usEXT_remap_index]
-#define _gloffset_SecondaryColor3usvEXT driDispatchRemapTable[SecondaryColor3usvEXT_remap_index]
-#define _gloffset_SecondaryColorPointerEXT driDispatchRemapTable[SecondaryColorPointerEXT_remap_index]
-#define _gloffset_MultiDrawArraysEXT driDispatchRemapTable[MultiDrawArraysEXT_remap_index]
-#define _gloffset_MultiDrawElementsEXT driDispatchRemapTable[MultiDrawElementsEXT_remap_index]
-#define _gloffset_FogCoordPointerEXT driDispatchRemapTable[FogCoordPointerEXT_remap_index]
-#define _gloffset_FogCoorddEXT driDispatchRemapTable[FogCoorddEXT_remap_index]
-#define _gloffset_FogCoorddvEXT driDispatchRemapTable[FogCoorddvEXT_remap_index]
-#define _gloffset_FogCoordfEXT driDispatchRemapTable[FogCoordfEXT_remap_index]
-#define _gloffset_FogCoordfvEXT driDispatchRemapTable[FogCoordfvEXT_remap_index]
-#define _gloffset_PixelTexGenSGIX driDispatchRemapTable[PixelTexGenSGIX_remap_index]
-#define _gloffset_BlendFuncSeparateEXT driDispatchRemapTable[BlendFuncSeparateEXT_remap_index]
-#define _gloffset_FlushVertexArrayRangeNV driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index]
-#define _gloffset_VertexArrayRangeNV driDispatchRemapTable[VertexArrayRangeNV_remap_index]
-#define _gloffset_CombinerInputNV driDispatchRemapTable[CombinerInputNV_remap_index]
-#define _gloffset_CombinerOutputNV driDispatchRemapTable[CombinerOutputNV_remap_index]
-#define _gloffset_CombinerParameterfNV driDispatchRemapTable[CombinerParameterfNV_remap_index]
-#define _gloffset_CombinerParameterfvNV driDispatchRemapTable[CombinerParameterfvNV_remap_index]
-#define _gloffset_CombinerParameteriNV driDispatchRemapTable[CombinerParameteriNV_remap_index]
-#define _gloffset_CombinerParameterivNV driDispatchRemapTable[CombinerParameterivNV_remap_index]
-#define _gloffset_FinalCombinerInputNV driDispatchRemapTable[FinalCombinerInputNV_remap_index]
-#define _gloffset_GetCombinerInputParameterfvNV driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index]
-#define _gloffset_GetCombinerInputParameterivNV driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index]
-#define _gloffset_GetCombinerOutputParameterfvNV driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index]
-#define _gloffset_GetCombinerOutputParameterivNV driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index]
-#define _gloffset_GetFinalCombinerInputParameterfvNV driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index]
-#define _gloffset_GetFinalCombinerInputParameterivNV driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index]
-#define _gloffset_ResizeBuffersMESA driDispatchRemapTable[ResizeBuffersMESA_remap_index]
-#define _gloffset_WindowPos2dMESA driDispatchRemapTable[WindowPos2dMESA_remap_index]
-#define _gloffset_WindowPos2dvMESA driDispatchRemapTable[WindowPos2dvMESA_remap_index]
-#define _gloffset_WindowPos2fMESA driDispatchRemapTable[WindowPos2fMESA_remap_index]
-#define _gloffset_WindowPos2fvMESA driDispatchRemapTable[WindowPos2fvMESA_remap_index]
-#define _gloffset_WindowPos2iMESA driDispatchRemapTable[WindowPos2iMESA_remap_index]
-#define _gloffset_WindowPos2ivMESA driDispatchRemapTable[WindowPos2ivMESA_remap_index]
-#define _gloffset_WindowPos2sMESA driDispatchRemapTable[WindowPos2sMESA_remap_index]
-#define _gloffset_WindowPos2svMESA driDispatchRemapTable[WindowPos2svMESA_remap_index]
-#define _gloffset_WindowPos3dMESA driDispatchRemapTable[WindowPos3dMESA_remap_index]
-#define _gloffset_WindowPos3dvMESA driDispatchRemapTable[WindowPos3dvMESA_remap_index]
-#define _gloffset_WindowPos3fMESA driDispatchRemapTable[WindowPos3fMESA_remap_index]
-#define _gloffset_WindowPos3fvMESA driDispatchRemapTable[WindowPos3fvMESA_remap_index]
-#define _gloffset_WindowPos3iMESA driDispatchRemapTable[WindowPos3iMESA_remap_index]
-#define _gloffset_WindowPos3ivMESA driDispatchRemapTable[WindowPos3ivMESA_remap_index]
-#define _gloffset_WindowPos3sMESA driDispatchRemapTable[WindowPos3sMESA_remap_index]
-#define _gloffset_WindowPos3svMESA driDispatchRemapTable[WindowPos3svMESA_remap_index]
-#define _gloffset_WindowPos4dMESA driDispatchRemapTable[WindowPos4dMESA_remap_index]
-#define _gloffset_WindowPos4dvMESA driDispatchRemapTable[WindowPos4dvMESA_remap_index]
-#define _gloffset_WindowPos4fMESA driDispatchRemapTable[WindowPos4fMESA_remap_index]
-#define _gloffset_WindowPos4fvMESA driDispatchRemapTable[WindowPos4fvMESA_remap_index]
-#define _gloffset_WindowPos4iMESA driDispatchRemapTable[WindowPos4iMESA_remap_index]
-#define _gloffset_WindowPos4ivMESA driDispatchRemapTable[WindowPos4ivMESA_remap_index]
-#define _gloffset_WindowPos4sMESA driDispatchRemapTable[WindowPos4sMESA_remap_index]
-#define _gloffset_WindowPos4svMESA driDispatchRemapTable[WindowPos4svMESA_remap_index]
-#define _gloffset_MultiModeDrawArraysIBM driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index]
-#define _gloffset_MultiModeDrawElementsIBM driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index]
-#define _gloffset_DeleteFencesNV driDispatchRemapTable[DeleteFencesNV_remap_index]
-#define _gloffset_FinishFenceNV driDispatchRemapTable[FinishFenceNV_remap_index]
-#define _gloffset_GenFencesNV driDispatchRemapTable[GenFencesNV_remap_index]
-#define _gloffset_GetFenceivNV driDispatchRemapTable[GetFenceivNV_remap_index]
-#define _gloffset_IsFenceNV driDispatchRemapTable[IsFenceNV_remap_index]
-#define _gloffset_SetFenceNV driDispatchRemapTable[SetFenceNV_remap_index]
-#define _gloffset_TestFenceNV driDispatchRemapTable[TestFenceNV_remap_index]
-#define _gloffset_AreProgramsResidentNV driDispatchRemapTable[AreProgramsResidentNV_remap_index]
-#define _gloffset_BindProgramNV driDispatchRemapTable[BindProgramNV_remap_index]
-#define _gloffset_DeleteProgramsNV driDispatchRemapTable[DeleteProgramsNV_remap_index]
-#define _gloffset_ExecuteProgramNV driDispatchRemapTable[ExecuteProgramNV_remap_index]
-#define _gloffset_GenProgramsNV driDispatchRemapTable[GenProgramsNV_remap_index]
-#define _gloffset_GetProgramParameterdvNV driDispatchRemapTable[GetProgramParameterdvNV_remap_index]
-#define _gloffset_GetProgramParameterfvNV driDispatchRemapTable[GetProgramParameterfvNV_remap_index]
-#define _gloffset_GetProgramStringNV driDispatchRemapTable[GetProgramStringNV_remap_index]
-#define _gloffset_GetProgramivNV driDispatchRemapTable[GetProgramivNV_remap_index]
-#define _gloffset_GetTrackMatrixivNV driDispatchRemapTable[GetTrackMatrixivNV_remap_index]
-#define _gloffset_GetVertexAttribPointervNV driDispatchRemapTable[GetVertexAttribPointervNV_remap_index]
-#define _gloffset_GetVertexAttribdvNV driDispatchRemapTable[GetVertexAttribdvNV_remap_index]
-#define _gloffset_GetVertexAttribfvNV driDispatchRemapTable[GetVertexAttribfvNV_remap_index]
-#define _gloffset_GetVertexAttribivNV driDispatchRemapTable[GetVertexAttribivNV_remap_index]
-#define _gloffset_IsProgramNV driDispatchRemapTable[IsProgramNV_remap_index]
-#define _gloffset_LoadProgramNV driDispatchRemapTable[LoadProgramNV_remap_index]
-#define _gloffset_ProgramParameters4dvNV driDispatchRemapTable[ProgramParameters4dvNV_remap_index]
-#define _gloffset_ProgramParameters4fvNV driDispatchRemapTable[ProgramParameters4fvNV_remap_index]
-#define _gloffset_RequestResidentProgramsNV driDispatchRemapTable[RequestResidentProgramsNV_remap_index]
-#define _gloffset_TrackMatrixNV driDispatchRemapTable[TrackMatrixNV_remap_index]
-#define _gloffset_VertexAttrib1dNV driDispatchRemapTable[VertexAttrib1dNV_remap_index]
-#define _gloffset_VertexAttrib1dvNV driDispatchRemapTable[VertexAttrib1dvNV_remap_index]
-#define _gloffset_VertexAttrib1fNV driDispatchRemapTable[VertexAttrib1fNV_remap_index]
-#define _gloffset_VertexAttrib1fvNV driDispatchRemapTable[VertexAttrib1fvNV_remap_index]
-#define _gloffset_VertexAttrib1sNV driDispatchRemapTable[VertexAttrib1sNV_remap_index]
-#define _gloffset_VertexAttrib1svNV driDispatchRemapTable[VertexAttrib1svNV_remap_index]
-#define _gloffset_VertexAttrib2dNV driDispatchRemapTable[VertexAttrib2dNV_remap_index]
-#define _gloffset_VertexAttrib2dvNV driDispatchRemapTable[VertexAttrib2dvNV_remap_index]
-#define _gloffset_VertexAttrib2fNV driDispatchRemapTable[VertexAttrib2fNV_remap_index]
-#define _gloffset_VertexAttrib2fvNV driDispatchRemapTable[VertexAttrib2fvNV_remap_index]
-#define _gloffset_VertexAttrib2sNV driDispatchRemapTable[VertexAttrib2sNV_remap_index]
-#define _gloffset_VertexAttrib2svNV driDispatchRemapTable[VertexAttrib2svNV_remap_index]
-#define _gloffset_VertexAttrib3dNV driDispatchRemapTable[VertexAttrib3dNV_remap_index]
-#define _gloffset_VertexAttrib3dvNV driDispatchRemapTable[VertexAttrib3dvNV_remap_index]
-#define _gloffset_VertexAttrib3fNV driDispatchRemapTable[VertexAttrib3fNV_remap_index]
-#define _gloffset_VertexAttrib3fvNV driDispatchRemapTable[VertexAttrib3fvNV_remap_index]
-#define _gloffset_VertexAttrib3sNV driDispatchRemapTable[VertexAttrib3sNV_remap_index]
-#define _gloffset_VertexAttrib3svNV driDispatchRemapTable[VertexAttrib3svNV_remap_index]
-#define _gloffset_VertexAttrib4dNV driDispatchRemapTable[VertexAttrib4dNV_remap_index]
-#define _gloffset_VertexAttrib4dvNV driDispatchRemapTable[VertexAttrib4dvNV_remap_index]
-#define _gloffset_VertexAttrib4fNV driDispatchRemapTable[VertexAttrib4fNV_remap_index]
-#define _gloffset_VertexAttrib4fvNV driDispatchRemapTable[VertexAttrib4fvNV_remap_index]
-#define _gloffset_VertexAttrib4sNV driDispatchRemapTable[VertexAttrib4sNV_remap_index]
-#define _gloffset_VertexAttrib4svNV driDispatchRemapTable[VertexAttrib4svNV_remap_index]
-#define _gloffset_VertexAttrib4ubNV driDispatchRemapTable[VertexAttrib4ubNV_remap_index]
-#define _gloffset_VertexAttrib4ubvNV driDispatchRemapTable[VertexAttrib4ubvNV_remap_index]
-#define _gloffset_VertexAttribPointerNV driDispatchRemapTable[VertexAttribPointerNV_remap_index]
-#define _gloffset_VertexAttribs1dvNV driDispatchRemapTable[VertexAttribs1dvNV_remap_index]
-#define _gloffset_VertexAttribs1fvNV driDispatchRemapTable[VertexAttribs1fvNV_remap_index]
-#define _gloffset_VertexAttribs1svNV driDispatchRemapTable[VertexAttribs1svNV_remap_index]
-#define _gloffset_VertexAttribs2dvNV driDispatchRemapTable[VertexAttribs2dvNV_remap_index]
-#define _gloffset_VertexAttribs2fvNV driDispatchRemapTable[VertexAttribs2fvNV_remap_index]
-#define _gloffset_VertexAttribs2svNV driDispatchRemapTable[VertexAttribs2svNV_remap_index]
-#define _gloffset_VertexAttribs3dvNV driDispatchRemapTable[VertexAttribs3dvNV_remap_index]
-#define _gloffset_VertexAttribs3fvNV driDispatchRemapTable[VertexAttribs3fvNV_remap_index]
-#define _gloffset_VertexAttribs3svNV driDispatchRemapTable[VertexAttribs3svNV_remap_index]
-#define _gloffset_VertexAttribs4dvNV driDispatchRemapTable[VertexAttribs4dvNV_remap_index]
-#define _gloffset_VertexAttribs4fvNV driDispatchRemapTable[VertexAttribs4fvNV_remap_index]
-#define _gloffset_VertexAttribs4svNV driDispatchRemapTable[VertexAttribs4svNV_remap_index]
-#define _gloffset_VertexAttribs4ubvNV driDispatchRemapTable[VertexAttribs4ubvNV_remap_index]
-#define _gloffset_GetTexBumpParameterfvATI driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index]
-#define _gloffset_GetTexBumpParameterivATI driDispatchRemapTable[GetTexBumpParameterivATI_remap_index]
-#define _gloffset_TexBumpParameterfvATI driDispatchRemapTable[TexBumpParameterfvATI_remap_index]
-#define _gloffset_TexBumpParameterivATI driDispatchRemapTable[TexBumpParameterivATI_remap_index]
-#define _gloffset_AlphaFragmentOp1ATI driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index]
-#define _gloffset_AlphaFragmentOp2ATI driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index]
-#define _gloffset_AlphaFragmentOp3ATI driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index]
-#define _gloffset_BeginFragmentShaderATI driDispatchRemapTable[BeginFragmentShaderATI_remap_index]
-#define _gloffset_BindFragmentShaderATI driDispatchRemapTable[BindFragmentShaderATI_remap_index]
-#define _gloffset_ColorFragmentOp1ATI driDispatchRemapTable[ColorFragmentOp1ATI_remap_index]
-#define _gloffset_ColorFragmentOp2ATI driDispatchRemapTable[ColorFragmentOp2ATI_remap_index]
-#define _gloffset_ColorFragmentOp3ATI driDispatchRemapTable[ColorFragmentOp3ATI_remap_index]
-#define _gloffset_DeleteFragmentShaderATI driDispatchRemapTable[DeleteFragmentShaderATI_remap_index]
-#define _gloffset_EndFragmentShaderATI driDispatchRemapTable[EndFragmentShaderATI_remap_index]
-#define _gloffset_GenFragmentShadersATI driDispatchRemapTable[GenFragmentShadersATI_remap_index]
-#define _gloffset_PassTexCoordATI driDispatchRemapTable[PassTexCoordATI_remap_index]
-#define _gloffset_SampleMapATI driDispatchRemapTable[SampleMapATI_remap_index]
-#define _gloffset_SetFragmentShaderConstantATI driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index]
-#define _gloffset_PointParameteriNV driDispatchRemapTable[PointParameteriNV_remap_index]
-#define _gloffset_PointParameterivNV driDispatchRemapTable[PointParameterivNV_remap_index]
-#define _gloffset_ActiveStencilFaceEXT driDispatchRemapTable[ActiveStencilFaceEXT_remap_index]
-#define _gloffset_BindVertexArrayAPPLE driDispatchRemapTable[BindVertexArrayAPPLE_remap_index]
-#define _gloffset_DeleteVertexArraysAPPLE driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index]
-#define _gloffset_GenVertexArraysAPPLE driDispatchRemapTable[GenVertexArraysAPPLE_remap_index]
-#define _gloffset_IsVertexArrayAPPLE driDispatchRemapTable[IsVertexArrayAPPLE_remap_index]
-#define _gloffset_GetProgramNamedParameterdvNV driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index]
-#define _gloffset_GetProgramNamedParameterfvNV driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index]
-#define _gloffset_ProgramNamedParameter4dNV driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index]
-#define _gloffset_ProgramNamedParameter4dvNV driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index]
-#define _gloffset_ProgramNamedParameter4fNV driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index]
-#define _gloffset_ProgramNamedParameter4fvNV driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index]
-#define _gloffset_PrimitiveRestartIndexNV driDispatchRemapTable[PrimitiveRestartIndexNV_remap_index]
-#define _gloffset_PrimitiveRestartNV driDispatchRemapTable[PrimitiveRestartNV_remap_index]
-#define _gloffset_DepthBoundsEXT driDispatchRemapTable[DepthBoundsEXT_remap_index]
-#define _gloffset_BlendEquationSeparateEXT driDispatchRemapTable[BlendEquationSeparateEXT_remap_index]
-#define _gloffset_BindFramebufferEXT driDispatchRemapTable[BindFramebufferEXT_remap_index]
-#define _gloffset_BindRenderbufferEXT driDispatchRemapTable[BindRenderbufferEXT_remap_index]
-#define _gloffset_CheckFramebufferStatusEXT driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index]
-#define _gloffset_DeleteFramebuffersEXT driDispatchRemapTable[DeleteFramebuffersEXT_remap_index]
-#define _gloffset_DeleteRenderbuffersEXT driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index]
-#define _gloffset_FramebufferRenderbufferEXT driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index]
-#define _gloffset_FramebufferTexture1DEXT driDispatchRemapTable[FramebufferTexture1DEXT_remap_index]
-#define _gloffset_FramebufferTexture2DEXT driDispatchRemapTable[FramebufferTexture2DEXT_remap_index]
-#define _gloffset_FramebufferTexture3DEXT driDispatchRemapTable[FramebufferTexture3DEXT_remap_index]
-#define _gloffset_GenFramebuffersEXT driDispatchRemapTable[GenFramebuffersEXT_remap_index]
-#define _gloffset_GenRenderbuffersEXT driDispatchRemapTable[GenRenderbuffersEXT_remap_index]
-#define _gloffset_GenerateMipmapEXT driDispatchRemapTable[GenerateMipmapEXT_remap_index]
-#define _gloffset_GetFramebufferAttachmentParameterivEXT driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index]
-#define _gloffset_GetRenderbufferParameterivEXT driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index]
-#define _gloffset_IsFramebufferEXT driDispatchRemapTable[IsFramebufferEXT_remap_index]
-#define _gloffset_IsRenderbufferEXT driDispatchRemapTable[IsRenderbufferEXT_remap_index]
-#define _gloffset_RenderbufferStorageEXT driDispatchRemapTable[RenderbufferStorageEXT_remap_index]
-#define _gloffset_BlitFramebufferEXT driDispatchRemapTable[BlitFramebufferEXT_remap_index]
-#define _gloffset_BufferParameteriAPPLE driDispatchRemapTable[BufferParameteriAPPLE_remap_index]
-#define _gloffset_FlushMappedBufferRangeAPPLE driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index]
-#define _gloffset_BindFragDataLocationEXT driDispatchRemapTable[BindFragDataLocationEXT_remap_index]
-#define _gloffset_GetFragDataLocationEXT driDispatchRemapTable[GetFragDataLocationEXT_remap_index]
-#define _gloffset_GetUniformuivEXT driDispatchRemapTable[GetUniformuivEXT_remap_index]
-#define _gloffset_GetVertexAttribIivEXT driDispatchRemapTable[GetVertexAttribIivEXT_remap_index]
-#define _gloffset_GetVertexAttribIuivEXT driDispatchRemapTable[GetVertexAttribIuivEXT_remap_index]
-#define _gloffset_Uniform1uiEXT driDispatchRemapTable[Uniform1uiEXT_remap_index]
-#define _gloffset_Uniform1uivEXT driDispatchRemapTable[Uniform1uivEXT_remap_index]
-#define _gloffset_Uniform2uiEXT driDispatchRemapTable[Uniform2uiEXT_remap_index]
-#define _gloffset_Uniform2uivEXT driDispatchRemapTable[Uniform2uivEXT_remap_index]
-#define _gloffset_Uniform3uiEXT driDispatchRemapTable[Uniform3uiEXT_remap_index]
-#define _gloffset_Uniform3uivEXT driDispatchRemapTable[Uniform3uivEXT_remap_index]
-#define _gloffset_Uniform4uiEXT driDispatchRemapTable[Uniform4uiEXT_remap_index]
-#define _gloffset_Uniform4uivEXT driDispatchRemapTable[Uniform4uivEXT_remap_index]
-#define _gloffset_VertexAttribI1iEXT driDispatchRemapTable[VertexAttribI1iEXT_remap_index]
-#define _gloffset_VertexAttribI1ivEXT driDispatchRemapTable[VertexAttribI1ivEXT_remap_index]
-#define _gloffset_VertexAttribI1uiEXT driDispatchRemapTable[VertexAttribI1uiEXT_remap_index]
-#define _gloffset_VertexAttribI1uivEXT driDispatchRemapTable[VertexAttribI1uivEXT_remap_index]
-#define _gloffset_VertexAttribI2iEXT driDispatchRemapTable[VertexAttribI2iEXT_remap_index]
-#define _gloffset_VertexAttribI2ivEXT driDispatchRemapTable[VertexAttribI2ivEXT_remap_index]
-#define _gloffset_VertexAttribI2uiEXT driDispatchRemapTable[VertexAttribI2uiEXT_remap_index]
-#define _gloffset_VertexAttribI2uivEXT driDispatchRemapTable[VertexAttribI2uivEXT_remap_index]
-#define _gloffset_VertexAttribI3iEXT driDispatchRemapTable[VertexAttribI3iEXT_remap_index]
-#define _gloffset_VertexAttribI3ivEXT driDispatchRemapTable[VertexAttribI3ivEXT_remap_index]
-#define _gloffset_VertexAttribI3uiEXT driDispatchRemapTable[VertexAttribI3uiEXT_remap_index]
-#define _gloffset_VertexAttribI3uivEXT driDispatchRemapTable[VertexAttribI3uivEXT_remap_index]
-#define _gloffset_VertexAttribI4bvEXT driDispatchRemapTable[VertexAttribI4bvEXT_remap_index]
-#define _gloffset_VertexAttribI4iEXT driDispatchRemapTable[VertexAttribI4iEXT_remap_index]
-#define _gloffset_VertexAttribI4ivEXT driDispatchRemapTable[VertexAttribI4ivEXT_remap_index]
-#define _gloffset_VertexAttribI4svEXT driDispatchRemapTable[VertexAttribI4svEXT_remap_index]
-#define _gloffset_VertexAttribI4ubvEXT driDispatchRemapTable[VertexAttribI4ubvEXT_remap_index]
-#define _gloffset_VertexAttribI4uiEXT driDispatchRemapTable[VertexAttribI4uiEXT_remap_index]
-#define _gloffset_VertexAttribI4uivEXT driDispatchRemapTable[VertexAttribI4uivEXT_remap_index]
-#define _gloffset_VertexAttribI4usvEXT driDispatchRemapTable[VertexAttribI4usvEXT_remap_index]
-#define _gloffset_VertexAttribIPointerEXT driDispatchRemapTable[VertexAttribIPointerEXT_remap_index]
-#define _gloffset_FramebufferTextureLayerEXT driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index]
-#define _gloffset_ColorMaskIndexedEXT driDispatchRemapTable[ColorMaskIndexedEXT_remap_index]
-#define _gloffset_DisableIndexedEXT driDispatchRemapTable[DisableIndexedEXT_remap_index]
-#define _gloffset_EnableIndexedEXT driDispatchRemapTable[EnableIndexedEXT_remap_index]
-#define _gloffset_GetBooleanIndexedvEXT driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index]
-#define _gloffset_GetIntegerIndexedvEXT driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index]
-#define _gloffset_IsEnabledIndexedEXT driDispatchRemapTable[IsEnabledIndexedEXT_remap_index]
-#define _gloffset_ClearColorIiEXT driDispatchRemapTable[ClearColorIiEXT_remap_index]
-#define _gloffset_ClearColorIuiEXT driDispatchRemapTable[ClearColorIuiEXT_remap_index]
-#define _gloffset_GetTexParameterIivEXT driDispatchRemapTable[GetTexParameterIivEXT_remap_index]
-#define _gloffset_GetTexParameterIuivEXT driDispatchRemapTable[GetTexParameterIuivEXT_remap_index]
-#define _gloffset_TexParameterIivEXT driDispatchRemapTable[TexParameterIivEXT_remap_index]
-#define _gloffset_TexParameterIuivEXT driDispatchRemapTable[TexParameterIuivEXT_remap_index]
-#define _gloffset_BeginConditionalRenderNV driDispatchRemapTable[BeginConditionalRenderNV_remap_index]
-#define _gloffset_EndConditionalRenderNV driDispatchRemapTable[EndConditionalRenderNV_remap_index]
-#define _gloffset_BeginTransformFeedbackEXT driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index]
-#define _gloffset_BindBufferBaseEXT driDispatchRemapTable[BindBufferBaseEXT_remap_index]
-#define _gloffset_BindBufferOffsetEXT driDispatchRemapTable[BindBufferOffsetEXT_remap_index]
-#define _gloffset_BindBufferRangeEXT driDispatchRemapTable[BindBufferRangeEXT_remap_index]
-#define _gloffset_EndTransformFeedbackEXT driDispatchRemapTable[EndTransformFeedbackEXT_remap_index]
-#define _gloffset_GetTransformFeedbackVaryingEXT driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index]
-#define _gloffset_TransformFeedbackVaryingsEXT driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index]
-#define _gloffset_ProvokingVertexEXT driDispatchRemapTable[ProvokingVertexEXT_remap_index]
-#define _gloffset_GetTexParameterPointervAPPLE driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index]
-#define _gloffset_TextureRangeAPPLE driDispatchRemapTable[TextureRangeAPPLE_remap_index]
-#define _gloffset_GetObjectParameterivAPPLE driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index]
-#define _gloffset_ObjectPurgeableAPPLE driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index]
-#define _gloffset_ObjectUnpurgeableAPPLE driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index]
-#define _gloffset_ActiveProgramEXT driDispatchRemapTable[ActiveProgramEXT_remap_index]
-#define _gloffset_CreateShaderProgramEXT driDispatchRemapTable[CreateShaderProgramEXT_remap_index]
-#define _gloffset_UseShaderProgramEXT driDispatchRemapTable[UseShaderProgramEXT_remap_index]
-#define _gloffset_TextureBarrierNV driDispatchRemapTable[TextureBarrierNV_remap_index]
-#define _gloffset_StencilFuncSeparateATI driDispatchRemapTable[StencilFuncSeparateATI_remap_index]
-#define _gloffset_ProgramEnvParameters4fvEXT driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index]
-#define _gloffset_ProgramLocalParameters4fvEXT driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index]
-#define _gloffset_GetQueryObjecti64vEXT driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index]
-#define _gloffset_GetQueryObjectui64vEXT driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index]
-#define _gloffset_EGLImageTargetRenderbufferStorageOES driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index]
-#define _gloffset_EGLImageTargetTexture2DOES driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index]
-
-#endif                          /* !FEATURE_remap_table */
-
-typedef void (GLAPIENTRYP _glptr_NewList) (GLuint, GLenum);
-
-#define CALL_NewList(disp, parameters) \
-    (* GET_NewList(disp)) parameters
-static inline _glptr_NewList
-GET_NewList(struct _glapi_table *disp)
-{
-    return (_glptr_NewList) (GET_by_offset(disp, _gloffset_NewList));
-}
-
-static inline void
-SET_NewList(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLuint, GLenum))
-{
-    SET_by_offset(disp, _gloffset_NewList, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EndList) (void);
-
-#define CALL_EndList(disp, parameters) \
-    (* GET_EndList(disp)) parameters
-static inline _glptr_EndList
-GET_EndList(struct _glapi_table *disp)
-{
-    return (_glptr_EndList) (GET_by_offset(disp, _gloffset_EndList));
-}
-
-static inline void
-SET_EndList(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_EndList, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CallList) (GLuint);
-
-#define CALL_CallList(disp, parameters) \
-    (* GET_CallList(disp)) parameters
-static inline _glptr_CallList
-GET_CallList(struct _glapi_table *disp)
-{
-    return (_glptr_CallList) (GET_by_offset(disp, _gloffset_CallList));
-}
-
-static inline void
-SET_CallList(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_CallList, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CallLists) (GLsizei, GLenum, const GLvoid *);
-
-#define CALL_CallLists(disp, parameters) \
-    (* GET_CallLists(disp)) parameters
-static inline _glptr_CallLists
-GET_CallLists(struct _glapi_table *disp)
-{
-    return (_glptr_CallLists) (GET_by_offset(disp, _gloffset_CallLists));
-}
-
-static inline void
-SET_CallLists(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLsizei, GLenum, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_CallLists, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteLists) (GLuint, GLsizei);
-
-#define CALL_DeleteLists(disp, parameters) \
-    (* GET_DeleteLists(disp)) parameters
-static inline _glptr_DeleteLists
-GET_DeleteLists(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteLists) (GET_by_offset(disp, _gloffset_DeleteLists));
-}
-
-static inline void
-SET_DeleteLists(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLuint, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_DeleteLists, fn);
-}
-
-typedef GLuint(GLAPIENTRYP _glptr_GenLists) (GLsizei);
-
-#define CALL_GenLists(disp, parameters) \
-    (* GET_GenLists(disp)) parameters
-static inline _glptr_GenLists
-GET_GenLists(struct _glapi_table *disp)
-{
-    return (_glptr_GenLists) (GET_by_offset(disp, _gloffset_GenLists));
-}
-
-static inline void
-SET_GenLists(struct _glapi_table *disp, GLuint(GLAPIENTRYP fn) (GLsizei))
-{
-    SET_by_offset(disp, _gloffset_GenLists, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ListBase) (GLuint);
-
-#define CALL_ListBase(disp, parameters) \
-    (* GET_ListBase(disp)) parameters
-static inline _glptr_ListBase
-GET_ListBase(struct _glapi_table *disp)
-{
-    return (_glptr_ListBase) (GET_by_offset(disp, _gloffset_ListBase));
-}
-
-static inline void
-SET_ListBase(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_ListBase, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Begin) (GLenum);
-
-#define CALL_Begin(disp, parameters) \
-    (* GET_Begin(disp)) parameters
-static inline _glptr_Begin
-GET_Begin(struct _glapi_table *disp)
-{
-    return (_glptr_Begin) (GET_by_offset(disp, _gloffset_Begin));
-}
-
-static inline void
-SET_Begin(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_Begin, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Bitmap) (GLsizei, GLsizei, GLfloat, GLfloat,
-                                          GLfloat, GLfloat, const GLubyte *);
-#define CALL_Bitmap(disp, parameters) \
-    (* GET_Bitmap(disp)) parameters
-static inline _glptr_Bitmap
-GET_Bitmap(struct _glapi_table *disp)
-{
-    return (_glptr_Bitmap) (GET_by_offset(disp, _gloffset_Bitmap));
-}
-
-static inline void
-SET_Bitmap(struct _glapi_table *disp,
-           void (GLAPIENTRYP fn) (GLsizei, GLsizei, GLfloat, GLfloat, GLfloat,
-                                  GLfloat, const GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_Bitmap, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3b) (GLbyte, GLbyte, GLbyte);
-
-#define CALL_Color3b(disp, parameters) \
-    (* GET_Color3b(disp)) parameters
-static inline _glptr_Color3b
-GET_Color3b(struct _glapi_table *disp)
-{
-    return (_glptr_Color3b) (GET_by_offset(disp, _gloffset_Color3b));
-}
-
-static inline void
-SET_Color3b(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLbyte, GLbyte, GLbyte))
-{
-    SET_by_offset(disp, _gloffset_Color3b, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3bv) (const GLbyte *);
-
-#define CALL_Color3bv(disp, parameters) \
-    (* GET_Color3bv(disp)) parameters
-static inline _glptr_Color3bv
-GET_Color3bv(struct _glapi_table *disp)
-{
-    return (_glptr_Color3bv) (GET_by_offset(disp, _gloffset_Color3bv));
-}
-
-static inline void
-SET_Color3bv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLbyte *))
-{
-    SET_by_offset(disp, _gloffset_Color3bv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3d) (GLdouble, GLdouble, GLdouble);
-
-#define CALL_Color3d(disp, parameters) \
-    (* GET_Color3d(disp)) parameters
-static inline _glptr_Color3d
-GET_Color3d(struct _glapi_table *disp)
-{
-    return (_glptr_Color3d) (GET_by_offset(disp, _gloffset_Color3d));
-}
-
-static inline void
-SET_Color3d(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Color3d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3dv) (const GLdouble *);
-
-#define CALL_Color3dv(disp, parameters) \
-    (* GET_Color3dv(disp)) parameters
-static inline _glptr_Color3dv
-GET_Color3dv(struct _glapi_table *disp)
-{
-    return (_glptr_Color3dv) (GET_by_offset(disp, _gloffset_Color3dv));
-}
-
-static inline void
-SET_Color3dv(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_Color3dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3f) (GLfloat, GLfloat, GLfloat);
-
-#define CALL_Color3f(disp, parameters) \
-    (* GET_Color3f(disp)) parameters
-static inline _glptr_Color3f
-GET_Color3f(struct _glapi_table *disp)
-{
-    return (_glptr_Color3f) (GET_by_offset(disp, _gloffset_Color3f));
-}
-
-static inline void
-SET_Color3f(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Color3f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3fv) (const GLfloat *);
-
-#define CALL_Color3fv(disp, parameters) \
-    (* GET_Color3fv(disp)) parameters
-static inline _glptr_Color3fv
-GET_Color3fv(struct _glapi_table *disp)
-{
-    return (_glptr_Color3fv) (GET_by_offset(disp, _gloffset_Color3fv));
-}
-
-static inline void
-SET_Color3fv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Color3fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3i) (GLint, GLint, GLint);
-
-#define CALL_Color3i(disp, parameters) \
-    (* GET_Color3i(disp)) parameters
-static inline _glptr_Color3i
-GET_Color3i(struct _glapi_table *disp)
-{
-    return (_glptr_Color3i) (GET_by_offset(disp, _gloffset_Color3i));
-}
-
-static inline void
-SET_Color3i(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_Color3i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3iv) (const GLint *);
-
-#define CALL_Color3iv(disp, parameters) \
-    (* GET_Color3iv(disp)) parameters
-static inline _glptr_Color3iv
-GET_Color3iv(struct _glapi_table *disp)
-{
-    return (_glptr_Color3iv) (GET_by_offset(disp, _gloffset_Color3iv));
-}
-
-static inline void
-SET_Color3iv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Color3iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3s) (GLshort, GLshort, GLshort);
-
-#define CALL_Color3s(disp, parameters) \
-    (* GET_Color3s(disp)) parameters
-static inline _glptr_Color3s
-GET_Color3s(struct _glapi_table *disp)
-{
-    return (_glptr_Color3s) (GET_by_offset(disp, _gloffset_Color3s));
-}
-
-static inline void
-SET_Color3s(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_Color3s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3sv) (const GLshort *);
-
-#define CALL_Color3sv(disp, parameters) \
-    (* GET_Color3sv(disp)) parameters
-static inline _glptr_Color3sv
-GET_Color3sv(struct _glapi_table *disp)
-{
-    return (_glptr_Color3sv) (GET_by_offset(disp, _gloffset_Color3sv));
-}
-
-static inline void
-SET_Color3sv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_Color3sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3ub) (GLubyte, GLubyte, GLubyte);
-
-#define CALL_Color3ub(disp, parameters) \
-    (* GET_Color3ub(disp)) parameters
-static inline _glptr_Color3ub
-GET_Color3ub(struct _glapi_table *disp)
-{
-    return (_glptr_Color3ub) (GET_by_offset(disp, _gloffset_Color3ub));
-}
-
-static inline void
-SET_Color3ub(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLubyte, GLubyte, GLubyte))
-{
-    SET_by_offset(disp, _gloffset_Color3ub, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3ubv) (const GLubyte *);
-
-#define CALL_Color3ubv(disp, parameters) \
-    (* GET_Color3ubv(disp)) parameters
-static inline _glptr_Color3ubv
-GET_Color3ubv(struct _glapi_table *disp)
-{
-    return (_glptr_Color3ubv) (GET_by_offset(disp, _gloffset_Color3ubv));
-}
-
-static inline void
-SET_Color3ubv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_Color3ubv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3ui) (GLuint, GLuint, GLuint);
-
-#define CALL_Color3ui(disp, parameters) \
-    (* GET_Color3ui(disp)) parameters
-static inline _glptr_Color3ui
-GET_Color3ui(struct _glapi_table *disp)
-{
-    return (_glptr_Color3ui) (GET_by_offset(disp, _gloffset_Color3ui));
-}
-
-static inline void
-SET_Color3ui(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLuint, GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_Color3ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3uiv) (const GLuint *);
-
-#define CALL_Color3uiv(disp, parameters) \
-    (* GET_Color3uiv(disp)) parameters
-static inline _glptr_Color3uiv
-GET_Color3uiv(struct _glapi_table *disp)
-{
-    return (_glptr_Color3uiv) (GET_by_offset(disp, _gloffset_Color3uiv));
-}
-
-static inline void
-SET_Color3uiv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_Color3uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3us) (GLushort, GLushort, GLushort);
-
-#define CALL_Color3us(disp, parameters) \
-    (* GET_Color3us(disp)) parameters
-static inline _glptr_Color3us
-GET_Color3us(struct _glapi_table *disp)
-{
-    return (_glptr_Color3us) (GET_by_offset(disp, _gloffset_Color3us));
-}
-
-static inline void
-SET_Color3us(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLushort, GLushort, GLushort))
-{
-    SET_by_offset(disp, _gloffset_Color3us, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color3usv) (const GLushort *);
-
-#define CALL_Color3usv(disp, parameters) \
-    (* GET_Color3usv(disp)) parameters
-static inline _glptr_Color3usv
-GET_Color3usv(struct _glapi_table *disp)
-{
-    return (_glptr_Color3usv) (GET_by_offset(disp, _gloffset_Color3usv));
-}
-
-static inline void
-SET_Color3usv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLushort *))
-{
-    SET_by_offset(disp, _gloffset_Color3usv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4b) (GLbyte, GLbyte, GLbyte, GLbyte);
-
-#define CALL_Color4b(disp, parameters) \
-    (* GET_Color4b(disp)) parameters
-static inline _glptr_Color4b
-GET_Color4b(struct _glapi_table *disp)
-{
-    return (_glptr_Color4b) (GET_by_offset(disp, _gloffset_Color4b));
-}
-
-static inline void
-SET_Color4b(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLbyte, GLbyte, GLbyte, GLbyte))
-{
-    SET_by_offset(disp, _gloffset_Color4b, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4bv) (const GLbyte *);
-
-#define CALL_Color4bv(disp, parameters) \
-    (* GET_Color4bv(disp)) parameters
-static inline _glptr_Color4bv
-GET_Color4bv(struct _glapi_table *disp)
-{
-    return (_glptr_Color4bv) (GET_by_offset(disp, _gloffset_Color4bv));
-}
-
-static inline void
-SET_Color4bv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLbyte *))
-{
-    SET_by_offset(disp, _gloffset_Color4bv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4d) (GLdouble, GLdouble, GLdouble,
-                                           GLdouble);
-#define CALL_Color4d(disp, parameters) \
-    (* GET_Color4d(disp)) parameters
-static inline _glptr_Color4d
-GET_Color4d(struct _glapi_table *disp)
-{
-    return (_glptr_Color4d) (GET_by_offset(disp, _gloffset_Color4d));
-}
-
-static inline void
-SET_Color4d(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Color4d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4dv) (const GLdouble *);
-
-#define CALL_Color4dv(disp, parameters) \
-    (* GET_Color4dv(disp)) parameters
-static inline _glptr_Color4dv
-GET_Color4dv(struct _glapi_table *disp)
-{
-    return (_glptr_Color4dv) (GET_by_offset(disp, _gloffset_Color4dv));
-}
-
-static inline void
-SET_Color4dv(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_Color4dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4f) (GLfloat, GLfloat, GLfloat, GLfloat);
-
-#define CALL_Color4f(disp, parameters) \
-    (* GET_Color4f(disp)) parameters
-static inline _glptr_Color4f
-GET_Color4f(struct _glapi_table *disp)
-{
-    return (_glptr_Color4f) (GET_by_offset(disp, _gloffset_Color4f));
-}
-
-static inline void
-SET_Color4f(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Color4f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4fv) (const GLfloat *);
-
-#define CALL_Color4fv(disp, parameters) \
-    (* GET_Color4fv(disp)) parameters
-static inline _glptr_Color4fv
-GET_Color4fv(struct _glapi_table *disp)
-{
-    return (_glptr_Color4fv) (GET_by_offset(disp, _gloffset_Color4fv));
-}
-
-static inline void
-SET_Color4fv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Color4fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4i) (GLint, GLint, GLint, GLint);
-
-#define CALL_Color4i(disp, parameters) \
-    (* GET_Color4i(disp)) parameters
-static inline _glptr_Color4i
-GET_Color4i(struct _glapi_table *disp)
-{
-    return (_glptr_Color4i) (GET_by_offset(disp, _gloffset_Color4i));
-}
-
-static inline void
-SET_Color4i(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLint, GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_Color4i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4iv) (const GLint *);
-
-#define CALL_Color4iv(disp, parameters) \
-    (* GET_Color4iv(disp)) parameters
-static inline _glptr_Color4iv
-GET_Color4iv(struct _glapi_table *disp)
-{
-    return (_glptr_Color4iv) (GET_by_offset(disp, _gloffset_Color4iv));
-}
-
-static inline void
-SET_Color4iv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Color4iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4s) (GLshort, GLshort, GLshort, GLshort);
-
-#define CALL_Color4s(disp, parameters) \
-    (* GET_Color4s(disp)) parameters
-static inline _glptr_Color4s
-GET_Color4s(struct _glapi_table *disp)
-{
-    return (_glptr_Color4s) (GET_by_offset(disp, _gloffset_Color4s));
-}
-
-static inline void
-SET_Color4s(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_Color4s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4sv) (const GLshort *);
-
-#define CALL_Color4sv(disp, parameters) \
-    (* GET_Color4sv(disp)) parameters
-static inline _glptr_Color4sv
-GET_Color4sv(struct _glapi_table *disp)
-{
-    return (_glptr_Color4sv) (GET_by_offset(disp, _gloffset_Color4sv));
-}
-
-static inline void
-SET_Color4sv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_Color4sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4ub) (GLubyte, GLubyte, GLubyte, GLubyte);
-
-#define CALL_Color4ub(disp, parameters) \
-    (* GET_Color4ub(disp)) parameters
-static inline _glptr_Color4ub
-GET_Color4ub(struct _glapi_table *disp)
-{
-    return (_glptr_Color4ub) (GET_by_offset(disp, _gloffset_Color4ub));
-}
-
-static inline void
-SET_Color4ub(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLubyte, GLubyte, GLubyte, GLubyte))
-{
-    SET_by_offset(disp, _gloffset_Color4ub, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4ubv) (const GLubyte *);
-
-#define CALL_Color4ubv(disp, parameters) \
-    (* GET_Color4ubv(disp)) parameters
-static inline _glptr_Color4ubv
-GET_Color4ubv(struct _glapi_table *disp)
-{
-    return (_glptr_Color4ubv) (GET_by_offset(disp, _gloffset_Color4ubv));
-}
-
-static inline void
-SET_Color4ubv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_Color4ubv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4ui) (GLuint, GLuint, GLuint, GLuint);
-
-#define CALL_Color4ui(disp, parameters) \
-    (* GET_Color4ui(disp)) parameters
-static inline _glptr_Color4ui
-GET_Color4ui(struct _glapi_table *disp)
-{
-    return (_glptr_Color4ui) (GET_by_offset(disp, _gloffset_Color4ui));
-}
-
-static inline void
-SET_Color4ui(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLuint, GLuint, GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_Color4ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4uiv) (const GLuint *);
-
-#define CALL_Color4uiv(disp, parameters) \
-    (* GET_Color4uiv(disp)) parameters
-static inline _glptr_Color4uiv
-GET_Color4uiv(struct _glapi_table *disp)
-{
-    return (_glptr_Color4uiv) (GET_by_offset(disp, _gloffset_Color4uiv));
-}
-
-static inline void
-SET_Color4uiv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_Color4uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4us) (GLushort, GLushort, GLushort,
-                                            GLushort);
-#define CALL_Color4us(disp, parameters) \
-    (* GET_Color4us(disp)) parameters
-static inline _glptr_Color4us
-GET_Color4us(struct _glapi_table *disp)
-{
-    return (_glptr_Color4us) (GET_by_offset(disp, _gloffset_Color4us));
-}
-
-static inline void
-SET_Color4us(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLushort, GLushort, GLushort, GLushort))
-{
-    SET_by_offset(disp, _gloffset_Color4us, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Color4usv) (const GLushort *);
-
-#define CALL_Color4usv(disp, parameters) \
-    (* GET_Color4usv(disp)) parameters
-static inline _glptr_Color4usv
-GET_Color4usv(struct _glapi_table *disp)
-{
-    return (_glptr_Color4usv) (GET_by_offset(disp, _gloffset_Color4usv));
-}
-
-static inline void
-SET_Color4usv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLushort *))
-{
-    SET_by_offset(disp, _gloffset_Color4usv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EdgeFlag) (GLboolean);
-
-#define CALL_EdgeFlag(disp, parameters) \
-    (* GET_EdgeFlag(disp)) parameters
-static inline _glptr_EdgeFlag
-GET_EdgeFlag(struct _glapi_table *disp)
-{
-    return (_glptr_EdgeFlag) (GET_by_offset(disp, _gloffset_EdgeFlag));
-}
-
-static inline void
-SET_EdgeFlag(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLboolean))
-{
-    SET_by_offset(disp, _gloffset_EdgeFlag, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EdgeFlagv) (const GLboolean *);
-
-#define CALL_EdgeFlagv(disp, parameters) \
-    (* GET_EdgeFlagv(disp)) parameters
-static inline _glptr_EdgeFlagv
-GET_EdgeFlagv(struct _glapi_table *disp)
-{
-    return (_glptr_EdgeFlagv) (GET_by_offset(disp, _gloffset_EdgeFlagv));
-}
-
-static inline void
-SET_EdgeFlagv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLboolean *))
-{
-    SET_by_offset(disp, _gloffset_EdgeFlagv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_End) (void);
-
-#define CALL_End(disp, parameters) \
-    (* GET_End(disp)) parameters
-static inline _glptr_End
-GET_End(struct _glapi_table *disp)
-{
-    return (_glptr_End) (GET_by_offset(disp, _gloffset_End));
-}
-
-static inline void
-SET_End(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_End, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Indexd) (GLdouble);
-
-#define CALL_Indexd(disp, parameters) \
-    (* GET_Indexd(disp)) parameters
-static inline _glptr_Indexd
-GET_Indexd(struct _glapi_table *disp)
-{
-    return (_glptr_Indexd) (GET_by_offset(disp, _gloffset_Indexd));
-}
-
-static inline void
-SET_Indexd(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Indexd, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Indexdv) (const GLdouble *);
-
-#define CALL_Indexdv(disp, parameters) \
-    (* GET_Indexdv(disp)) parameters
-static inline _glptr_Indexdv
-GET_Indexdv(struct _glapi_table *disp)
-{
-    return (_glptr_Indexdv) (GET_by_offset(disp, _gloffset_Indexdv));
-}
-
-static inline void
-SET_Indexdv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_Indexdv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Indexf) (GLfloat);
-
-#define CALL_Indexf(disp, parameters) \
-    (* GET_Indexf(disp)) parameters
-static inline _glptr_Indexf
-GET_Indexf(struct _glapi_table *disp)
-{
-    return (_glptr_Indexf) (GET_by_offset(disp, _gloffset_Indexf));
-}
-
-static inline void
-SET_Indexf(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Indexf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Indexfv) (const GLfloat *);
-
-#define CALL_Indexfv(disp, parameters) \
-    (* GET_Indexfv(disp)) parameters
-static inline _glptr_Indexfv
-GET_Indexfv(struct _glapi_table *disp)
-{
-    return (_glptr_Indexfv) (GET_by_offset(disp, _gloffset_Indexfv));
-}
-
-static inline void
-SET_Indexfv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Indexfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Indexi) (GLint);
-
-#define CALL_Indexi(disp, parameters) \
-    (* GET_Indexi(disp)) parameters
-static inline _glptr_Indexi
-GET_Indexi(struct _glapi_table *disp)
-{
-    return (_glptr_Indexi) (GET_by_offset(disp, _gloffset_Indexi));
-}
-
-static inline void
-SET_Indexi(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLint))
-{
-    SET_by_offset(disp, _gloffset_Indexi, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Indexiv) (const GLint *);
-
-#define CALL_Indexiv(disp, parameters) \
-    (* GET_Indexiv(disp)) parameters
-static inline _glptr_Indexiv
-GET_Indexiv(struct _glapi_table *disp)
-{
-    return (_glptr_Indexiv) (GET_by_offset(disp, _gloffset_Indexiv));
-}
-
-static inline void
-SET_Indexiv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Indexiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Indexs) (GLshort);
-
-#define CALL_Indexs(disp, parameters) \
-    (* GET_Indexs(disp)) parameters
-static inline _glptr_Indexs
-GET_Indexs(struct _glapi_table *disp)
-{
-    return (_glptr_Indexs) (GET_by_offset(disp, _gloffset_Indexs));
-}
-
-static inline void
-SET_Indexs(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLshort))
-{
-    SET_by_offset(disp, _gloffset_Indexs, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Indexsv) (const GLshort *);
-
-#define CALL_Indexsv(disp, parameters) \
-    (* GET_Indexsv(disp)) parameters
-static inline _glptr_Indexsv
-GET_Indexsv(struct _glapi_table *disp)
-{
-    return (_glptr_Indexsv) (GET_by_offset(disp, _gloffset_Indexsv));
-}
-
-static inline void
-SET_Indexsv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_Indexsv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Normal3b) (GLbyte, GLbyte, GLbyte);
-
-#define CALL_Normal3b(disp, parameters) \
-    (* GET_Normal3b(disp)) parameters
-static inline _glptr_Normal3b
-GET_Normal3b(struct _glapi_table *disp)
-{
-    return (_glptr_Normal3b) (GET_by_offset(disp, _gloffset_Normal3b));
-}
-
-static inline void
-SET_Normal3b(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLbyte, GLbyte, GLbyte))
-{
-    SET_by_offset(disp, _gloffset_Normal3b, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Normal3bv) (const GLbyte *);
-
-#define CALL_Normal3bv(disp, parameters) \
-    (* GET_Normal3bv(disp)) parameters
-static inline _glptr_Normal3bv
-GET_Normal3bv(struct _glapi_table *disp)
-{
-    return (_glptr_Normal3bv) (GET_by_offset(disp, _gloffset_Normal3bv));
-}
-
-static inline void
-SET_Normal3bv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLbyte *))
-{
-    SET_by_offset(disp, _gloffset_Normal3bv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Normal3d) (GLdouble, GLdouble, GLdouble);
-
-#define CALL_Normal3d(disp, parameters) \
-    (* GET_Normal3d(disp)) parameters
-static inline _glptr_Normal3d
-GET_Normal3d(struct _glapi_table *disp)
-{
-    return (_glptr_Normal3d) (GET_by_offset(disp, _gloffset_Normal3d));
-}
-
-static inline void
-SET_Normal3d(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Normal3d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Normal3dv) (const GLdouble *);
-
-#define CALL_Normal3dv(disp, parameters) \
-    (* GET_Normal3dv(disp)) parameters
-static inline _glptr_Normal3dv
-GET_Normal3dv(struct _glapi_table *disp)
-{
-    return (_glptr_Normal3dv) (GET_by_offset(disp, _gloffset_Normal3dv));
-}
-
-static inline void
-SET_Normal3dv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_Normal3dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Normal3f) (GLfloat, GLfloat, GLfloat);
-
-#define CALL_Normal3f(disp, parameters) \
-    (* GET_Normal3f(disp)) parameters
-static inline _glptr_Normal3f
-GET_Normal3f(struct _glapi_table *disp)
-{
-    return (_glptr_Normal3f) (GET_by_offset(disp, _gloffset_Normal3f));
-}
-
-static inline void
-SET_Normal3f(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Normal3f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Normal3fv) (const GLfloat *);
-
-#define CALL_Normal3fv(disp, parameters) \
-    (* GET_Normal3fv(disp)) parameters
-static inline _glptr_Normal3fv
-GET_Normal3fv(struct _glapi_table *disp)
-{
-    return (_glptr_Normal3fv) (GET_by_offset(disp, _gloffset_Normal3fv));
-}
-
-static inline void
-SET_Normal3fv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Normal3fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Normal3i) (GLint, GLint, GLint);
-
-#define CALL_Normal3i(disp, parameters) \
-    (* GET_Normal3i(disp)) parameters
-static inline _glptr_Normal3i
-GET_Normal3i(struct _glapi_table *disp)
-{
-    return (_glptr_Normal3i) (GET_by_offset(disp, _gloffset_Normal3i));
-}
-
-static inline void
-SET_Normal3i(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_Normal3i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Normal3iv) (const GLint *);
-
-#define CALL_Normal3iv(disp, parameters) \
-    (* GET_Normal3iv(disp)) parameters
-static inline _glptr_Normal3iv
-GET_Normal3iv(struct _glapi_table *disp)
-{
-    return (_glptr_Normal3iv) (GET_by_offset(disp, _gloffset_Normal3iv));
-}
-
-static inline void
-SET_Normal3iv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Normal3iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Normal3s) (GLshort, GLshort, GLshort);
-
-#define CALL_Normal3s(disp, parameters) \
-    (* GET_Normal3s(disp)) parameters
-static inline _glptr_Normal3s
-GET_Normal3s(struct _glapi_table *disp)
-{
-    return (_glptr_Normal3s) (GET_by_offset(disp, _gloffset_Normal3s));
-}
-
-static inline void
-SET_Normal3s(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_Normal3s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Normal3sv) (const GLshort *);
-
-#define CALL_Normal3sv(disp, parameters) \
-    (* GET_Normal3sv(disp)) parameters
-static inline _glptr_Normal3sv
-GET_Normal3sv(struct _glapi_table *disp)
-{
-    return (_glptr_Normal3sv) (GET_by_offset(disp, _gloffset_Normal3sv));
-}
-
-static inline void
-SET_Normal3sv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_Normal3sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos2d) (GLdouble, GLdouble);
-
-#define CALL_RasterPos2d(disp, parameters) \
-    (* GET_RasterPos2d(disp)) parameters
-static inline _glptr_RasterPos2d
-GET_RasterPos2d(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos2d) (GET_by_offset(disp, _gloffset_RasterPos2d));
-}
-
-static inline void
-SET_RasterPos2d(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_RasterPos2d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos2dv) (const GLdouble *);
-
-#define CALL_RasterPos2dv(disp, parameters) \
-    (* GET_RasterPos2dv(disp)) parameters
-static inline _glptr_RasterPos2dv
-GET_RasterPos2dv(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos2dv) (GET_by_offset(disp, _gloffset_RasterPos2dv));
-}
-
-static inline void
-SET_RasterPos2dv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_RasterPos2dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos2f) (GLfloat, GLfloat);
-
-#define CALL_RasterPos2f(disp, parameters) \
-    (* GET_RasterPos2f(disp)) parameters
-static inline _glptr_RasterPos2f
-GET_RasterPos2f(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos2f) (GET_by_offset(disp, _gloffset_RasterPos2f));
-}
-
-static inline void
-SET_RasterPos2f(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_RasterPos2f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos2fv) (const GLfloat *);
-
-#define CALL_RasterPos2fv(disp, parameters) \
-    (* GET_RasterPos2fv(disp)) parameters
-static inline _glptr_RasterPos2fv
-GET_RasterPos2fv(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos2fv) (GET_by_offset(disp, _gloffset_RasterPos2fv));
-}
-
-static inline void
-SET_RasterPos2fv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_RasterPos2fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos2i) (GLint, GLint);
-
-#define CALL_RasterPos2i(disp, parameters) \
-    (* GET_RasterPos2i(disp)) parameters
-static inline _glptr_RasterPos2i
-GET_RasterPos2i(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos2i) (GET_by_offset(disp, _gloffset_RasterPos2i));
-}
-
-static inline void
-SET_RasterPos2i(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_RasterPos2i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos2iv) (const GLint *);
-
-#define CALL_RasterPos2iv(disp, parameters) \
-    (* GET_RasterPos2iv(disp)) parameters
-static inline _glptr_RasterPos2iv
-GET_RasterPos2iv(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos2iv) (GET_by_offset(disp, _gloffset_RasterPos2iv));
-}
-
-static inline void
-SET_RasterPos2iv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_RasterPos2iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos2s) (GLshort, GLshort);
-
-#define CALL_RasterPos2s(disp, parameters) \
-    (* GET_RasterPos2s(disp)) parameters
-static inline _glptr_RasterPos2s
-GET_RasterPos2s(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos2s) (GET_by_offset(disp, _gloffset_RasterPos2s));
-}
-
-static inline void
-SET_RasterPos2s(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_RasterPos2s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos2sv) (const GLshort *);
-
-#define CALL_RasterPos2sv(disp, parameters) \
-    (* GET_RasterPos2sv(disp)) parameters
-static inline _glptr_RasterPos2sv
-GET_RasterPos2sv(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos2sv) (GET_by_offset(disp, _gloffset_RasterPos2sv));
-}
-
-static inline void
-SET_RasterPos2sv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_RasterPos2sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos3d) (GLdouble, GLdouble, GLdouble);
-
-#define CALL_RasterPos3d(disp, parameters) \
-    (* GET_RasterPos3d(disp)) parameters
-static inline _glptr_RasterPos3d
-GET_RasterPos3d(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos3d) (GET_by_offset(disp, _gloffset_RasterPos3d));
-}
-
-static inline void
-SET_RasterPos3d(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_RasterPos3d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos3dv) (const GLdouble *);
-
-#define CALL_RasterPos3dv(disp, parameters) \
-    (* GET_RasterPos3dv(disp)) parameters
-static inline _glptr_RasterPos3dv
-GET_RasterPos3dv(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos3dv) (GET_by_offset(disp, _gloffset_RasterPos3dv));
-}
-
-static inline void
-SET_RasterPos3dv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_RasterPos3dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos3f) (GLfloat, GLfloat, GLfloat);
-
-#define CALL_RasterPos3f(disp, parameters) \
-    (* GET_RasterPos3f(disp)) parameters
-static inline _glptr_RasterPos3f
-GET_RasterPos3f(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos3f) (GET_by_offset(disp, _gloffset_RasterPos3f));
-}
-
-static inline void
-SET_RasterPos3f(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_RasterPos3f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos3fv) (const GLfloat *);
-
-#define CALL_RasterPos3fv(disp, parameters) \
-    (* GET_RasterPos3fv(disp)) parameters
-static inline _glptr_RasterPos3fv
-GET_RasterPos3fv(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos3fv) (GET_by_offset(disp, _gloffset_RasterPos3fv));
-}
-
-static inline void
-SET_RasterPos3fv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_RasterPos3fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos3i) (GLint, GLint, GLint);
-
-#define CALL_RasterPos3i(disp, parameters) \
-    (* GET_RasterPos3i(disp)) parameters
-static inline _glptr_RasterPos3i
-GET_RasterPos3i(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos3i) (GET_by_offset(disp, _gloffset_RasterPos3i));
-}
-
-static inline void
-SET_RasterPos3i(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_RasterPos3i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos3iv) (const GLint *);
-
-#define CALL_RasterPos3iv(disp, parameters) \
-    (* GET_RasterPos3iv(disp)) parameters
-static inline _glptr_RasterPos3iv
-GET_RasterPos3iv(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos3iv) (GET_by_offset(disp, _gloffset_RasterPos3iv));
-}
-
-static inline void
-SET_RasterPos3iv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_RasterPos3iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos3s) (GLshort, GLshort, GLshort);
-
-#define CALL_RasterPos3s(disp, parameters) \
-    (* GET_RasterPos3s(disp)) parameters
-static inline _glptr_RasterPos3s
-GET_RasterPos3s(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos3s) (GET_by_offset(disp, _gloffset_RasterPos3s));
-}
-
-static inline void
-SET_RasterPos3s(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_RasterPos3s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos3sv) (const GLshort *);
-
-#define CALL_RasterPos3sv(disp, parameters) \
-    (* GET_RasterPos3sv(disp)) parameters
-static inline _glptr_RasterPos3sv
-GET_RasterPos3sv(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos3sv) (GET_by_offset(disp, _gloffset_RasterPos3sv));
-}
-
-static inline void
-SET_RasterPos3sv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_RasterPos3sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos4d) (GLdouble, GLdouble, GLdouble,
-                                               GLdouble);
-#define CALL_RasterPos4d(disp, parameters) \
-    (* GET_RasterPos4d(disp)) parameters
-static inline _glptr_RasterPos4d
-GET_RasterPos4d(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos4d) (GET_by_offset(disp, _gloffset_RasterPos4d));
-}
-
-static inline void
-SET_RasterPos4d(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_RasterPos4d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos4dv) (const GLdouble *);
-
-#define CALL_RasterPos4dv(disp, parameters) \
-    (* GET_RasterPos4dv(disp)) parameters
-static inline _glptr_RasterPos4dv
-GET_RasterPos4dv(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos4dv) (GET_by_offset(disp, _gloffset_RasterPos4dv));
-}
-
-static inline void
-SET_RasterPos4dv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_RasterPos4dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos4f) (GLfloat, GLfloat, GLfloat,
-                                               GLfloat);
-#define CALL_RasterPos4f(disp, parameters) \
-    (* GET_RasterPos4f(disp)) parameters
-static inline _glptr_RasterPos4f
-GET_RasterPos4f(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos4f) (GET_by_offset(disp, _gloffset_RasterPos4f));
-}
-
-static inline void
-SET_RasterPos4f(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_RasterPos4f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos4fv) (const GLfloat *);
-
-#define CALL_RasterPos4fv(disp, parameters) \
-    (* GET_RasterPos4fv(disp)) parameters
-static inline _glptr_RasterPos4fv
-GET_RasterPos4fv(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos4fv) (GET_by_offset(disp, _gloffset_RasterPos4fv));
-}
-
-static inline void
-SET_RasterPos4fv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_RasterPos4fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos4i) (GLint, GLint, GLint, GLint);
-
-#define CALL_RasterPos4i(disp, parameters) \
-    (* GET_RasterPos4i(disp)) parameters
-static inline _glptr_RasterPos4i
-GET_RasterPos4i(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos4i) (GET_by_offset(disp, _gloffset_RasterPos4i));
-}
-
-static inline void
-SET_RasterPos4i(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLint, GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_RasterPos4i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos4iv) (const GLint *);
-
-#define CALL_RasterPos4iv(disp, parameters) \
-    (* GET_RasterPos4iv(disp)) parameters
-static inline _glptr_RasterPos4iv
-GET_RasterPos4iv(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos4iv) (GET_by_offset(disp, _gloffset_RasterPos4iv));
-}
-
-static inline void
-SET_RasterPos4iv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_RasterPos4iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos4s) (GLshort, GLshort, GLshort,
-                                               GLshort);
-#define CALL_RasterPos4s(disp, parameters) \
-    (* GET_RasterPos4s(disp)) parameters
-static inline _glptr_RasterPos4s
-GET_RasterPos4s(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos4s) (GET_by_offset(disp, _gloffset_RasterPos4s));
-}
-
-static inline void
-SET_RasterPos4s(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_RasterPos4s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RasterPos4sv) (const GLshort *);
-
-#define CALL_RasterPos4sv(disp, parameters) \
-    (* GET_RasterPos4sv(disp)) parameters
-static inline _glptr_RasterPos4sv
-GET_RasterPos4sv(struct _glapi_table *disp)
-{
-    return (_glptr_RasterPos4sv) (GET_by_offset(disp, _gloffset_RasterPos4sv));
-}
-
-static inline void
-SET_RasterPos4sv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_RasterPos4sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Rectd) (GLdouble, GLdouble, GLdouble,
-                                         GLdouble);
-#define CALL_Rectd(disp, parameters) \
-    (* GET_Rectd(disp)) parameters
-static inline _glptr_Rectd
-GET_Rectd(struct _glapi_table *disp)
-{
-    return (_glptr_Rectd) (GET_by_offset(disp, _gloffset_Rectd));
-}
-
-static inline void
-SET_Rectd(struct _glapi_table *disp,
-          void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Rectd, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Rectdv) (const GLdouble *, const GLdouble *);
-
-#define CALL_Rectdv(disp, parameters) \
-    (* GET_Rectdv(disp)) parameters
-static inline _glptr_Rectdv
-GET_Rectdv(struct _glapi_table *disp)
-{
-    return (_glptr_Rectdv) (GET_by_offset(disp, _gloffset_Rectdv));
-}
-
-static inline void
-SET_Rectdv(struct _glapi_table *disp,
-           void (GLAPIENTRYP fn) (const GLdouble *, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_Rectdv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Rectf) (GLfloat, GLfloat, GLfloat, GLfloat);
-
-#define CALL_Rectf(disp, parameters) \
-    (* GET_Rectf(disp)) parameters
-static inline _glptr_Rectf
-GET_Rectf(struct _glapi_table *disp)
-{
-    return (_glptr_Rectf) (GET_by_offset(disp, _gloffset_Rectf));
-}
-
-static inline void
-SET_Rectf(struct _glapi_table *disp,
-          void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Rectf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Rectfv) (const GLfloat *, const GLfloat *);
-
-#define CALL_Rectfv(disp, parameters) \
-    (* GET_Rectfv(disp)) parameters
-static inline _glptr_Rectfv
-GET_Rectfv(struct _glapi_table *disp)
-{
-    return (_glptr_Rectfv) (GET_by_offset(disp, _gloffset_Rectfv));
-}
-
-static inline void
-SET_Rectfv(struct _glapi_table *disp,
-           void (GLAPIENTRYP fn) (const GLfloat *, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Rectfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Recti) (GLint, GLint, GLint, GLint);
-
-#define CALL_Recti(disp, parameters) \
-    (* GET_Recti(disp)) parameters
-static inline _glptr_Recti
-GET_Recti(struct _glapi_table *disp)
-{
-    return (_glptr_Recti) (GET_by_offset(disp, _gloffset_Recti));
-}
-
-static inline void
-SET_Recti(struct _glapi_table *disp,
-          void (GLAPIENTRYP fn) (GLint, GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_Recti, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Rectiv) (const GLint *, const GLint *);
-
-#define CALL_Rectiv(disp, parameters) \
-    (* GET_Rectiv(disp)) parameters
-static inline _glptr_Rectiv
-GET_Rectiv(struct _glapi_table *disp)
-{
-    return (_glptr_Rectiv) (GET_by_offset(disp, _gloffset_Rectiv));
-}
-
-static inline void
-SET_Rectiv(struct _glapi_table *disp,
-           void (GLAPIENTRYP fn) (const GLint *, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Rectiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Rects) (GLshort, GLshort, GLshort, GLshort);
-
-#define CALL_Rects(disp, parameters) \
-    (* GET_Rects(disp)) parameters
-static inline _glptr_Rects
-GET_Rects(struct _glapi_table *disp)
-{
-    return (_glptr_Rects) (GET_by_offset(disp, _gloffset_Rects));
-}
-
-static inline void
-SET_Rects(struct _glapi_table *disp,
-          void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_Rects, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Rectsv) (const GLshort *, const GLshort *);
-
-#define CALL_Rectsv(disp, parameters) \
-    (* GET_Rectsv(disp)) parameters
-static inline _glptr_Rectsv
-GET_Rectsv(struct _glapi_table *disp)
-{
-    return (_glptr_Rectsv) (GET_by_offset(disp, _gloffset_Rectsv));
-}
-
-static inline void
-SET_Rectsv(struct _glapi_table *disp,
-           void (GLAPIENTRYP fn) (const GLshort *, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_Rectsv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord1d) (GLdouble);
-
-#define CALL_TexCoord1d(disp, parameters) \
-    (* GET_TexCoord1d(disp)) parameters
-static inline _glptr_TexCoord1d
-GET_TexCoord1d(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord1d) (GET_by_offset(disp, _gloffset_TexCoord1d));
-}
-
-static inline void
-SET_TexCoord1d(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLdouble))
-{
-    SET_by_offset(disp, _gloffset_TexCoord1d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord1dv) (const GLdouble *);
-
-#define CALL_TexCoord1dv(disp, parameters) \
-    (* GET_TexCoord1dv(disp)) parameters
-static inline _glptr_TexCoord1dv
-GET_TexCoord1dv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord1dv) (GET_by_offset(disp, _gloffset_TexCoord1dv));
-}
-
-static inline void
-SET_TexCoord1dv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord1dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord1f) (GLfloat);
-
-#define CALL_TexCoord1f(disp, parameters) \
-    (* GET_TexCoord1f(disp)) parameters
-static inline _glptr_TexCoord1f
-GET_TexCoord1f(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord1f) (GET_by_offset(disp, _gloffset_TexCoord1f));
-}
-
-static inline void
-SET_TexCoord1f(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLfloat))
-{
-    SET_by_offset(disp, _gloffset_TexCoord1f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord1fv) (const GLfloat *);
-
-#define CALL_TexCoord1fv(disp, parameters) \
-    (* GET_TexCoord1fv(disp)) parameters
-static inline _glptr_TexCoord1fv
-GET_TexCoord1fv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord1fv) (GET_by_offset(disp, _gloffset_TexCoord1fv));
-}
-
-static inline void
-SET_TexCoord1fv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord1fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord1i) (GLint);
-
-#define CALL_TexCoord1i(disp, parameters) \
-    (* GET_TexCoord1i(disp)) parameters
-static inline _glptr_TexCoord1i
-GET_TexCoord1i(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord1i) (GET_by_offset(disp, _gloffset_TexCoord1i));
-}
-
-static inline void
-SET_TexCoord1i(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLint))
-{
-    SET_by_offset(disp, _gloffset_TexCoord1i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord1iv) (const GLint *);
-
-#define CALL_TexCoord1iv(disp, parameters) \
-    (* GET_TexCoord1iv(disp)) parameters
-static inline _glptr_TexCoord1iv
-GET_TexCoord1iv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord1iv) (GET_by_offset(disp, _gloffset_TexCoord1iv));
-}
-
-static inline void
-SET_TexCoord1iv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord1iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord1s) (GLshort);
-
-#define CALL_TexCoord1s(disp, parameters) \
-    (* GET_TexCoord1s(disp)) parameters
-static inline _glptr_TexCoord1s
-GET_TexCoord1s(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord1s) (GET_by_offset(disp, _gloffset_TexCoord1s));
-}
-
-static inline void
-SET_TexCoord1s(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLshort))
-{
-    SET_by_offset(disp, _gloffset_TexCoord1s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord1sv) (const GLshort *);
-
-#define CALL_TexCoord1sv(disp, parameters) \
-    (* GET_TexCoord1sv(disp)) parameters
-static inline _glptr_TexCoord1sv
-GET_TexCoord1sv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord1sv) (GET_by_offset(disp, _gloffset_TexCoord1sv));
-}
-
-static inline void
-SET_TexCoord1sv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord1sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord2d) (GLdouble, GLdouble);
-
-#define CALL_TexCoord2d(disp, parameters) \
-    (* GET_TexCoord2d(disp)) parameters
-static inline _glptr_TexCoord2d
-GET_TexCoord2d(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord2d) (GET_by_offset(disp, _gloffset_TexCoord2d));
-}
-
-static inline void
-SET_TexCoord2d(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_TexCoord2d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord2dv) (const GLdouble *);
-
-#define CALL_TexCoord2dv(disp, parameters) \
-    (* GET_TexCoord2dv(disp)) parameters
-static inline _glptr_TexCoord2dv
-GET_TexCoord2dv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord2dv) (GET_by_offset(disp, _gloffset_TexCoord2dv));
-}
-
-static inline void
-SET_TexCoord2dv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord2dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord2f) (GLfloat, GLfloat);
-
-#define CALL_TexCoord2f(disp, parameters) \
-    (* GET_TexCoord2f(disp)) parameters
-static inline _glptr_TexCoord2f
-GET_TexCoord2f(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord2f) (GET_by_offset(disp, _gloffset_TexCoord2f));
-}
-
-static inline void
-SET_TexCoord2f(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_TexCoord2f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord2fv) (const GLfloat *);
-
-#define CALL_TexCoord2fv(disp, parameters) \
-    (* GET_TexCoord2fv(disp)) parameters
-static inline _glptr_TexCoord2fv
-GET_TexCoord2fv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord2fv) (GET_by_offset(disp, _gloffset_TexCoord2fv));
-}
-
-static inline void
-SET_TexCoord2fv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord2fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord2i) (GLint, GLint);
-
-#define CALL_TexCoord2i(disp, parameters) \
-    (* GET_TexCoord2i(disp)) parameters
-static inline _glptr_TexCoord2i
-GET_TexCoord2i(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord2i) (GET_by_offset(disp, _gloffset_TexCoord2i));
-}
-
-static inline void
-SET_TexCoord2i(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_TexCoord2i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord2iv) (const GLint *);
-
-#define CALL_TexCoord2iv(disp, parameters) \
-    (* GET_TexCoord2iv(disp)) parameters
-static inline _glptr_TexCoord2iv
-GET_TexCoord2iv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord2iv) (GET_by_offset(disp, _gloffset_TexCoord2iv));
-}
-
-static inline void
-SET_TexCoord2iv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord2iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord2s) (GLshort, GLshort);
-
-#define CALL_TexCoord2s(disp, parameters) \
-    (* GET_TexCoord2s(disp)) parameters
-static inline _glptr_TexCoord2s
-GET_TexCoord2s(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord2s) (GET_by_offset(disp, _gloffset_TexCoord2s));
-}
-
-static inline void
-SET_TexCoord2s(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_TexCoord2s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord2sv) (const GLshort *);
-
-#define CALL_TexCoord2sv(disp, parameters) \
-    (* GET_TexCoord2sv(disp)) parameters
-static inline _glptr_TexCoord2sv
-GET_TexCoord2sv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord2sv) (GET_by_offset(disp, _gloffset_TexCoord2sv));
-}
-
-static inline void
-SET_TexCoord2sv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord2sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord3d) (GLdouble, GLdouble, GLdouble);
-
-#define CALL_TexCoord3d(disp, parameters) \
-    (* GET_TexCoord3d(disp)) parameters
-static inline _glptr_TexCoord3d
-GET_TexCoord3d(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord3d) (GET_by_offset(disp, _gloffset_TexCoord3d));
-}
-
-static inline void
-SET_TexCoord3d(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_TexCoord3d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord3dv) (const GLdouble *);
-
-#define CALL_TexCoord3dv(disp, parameters) \
-    (* GET_TexCoord3dv(disp)) parameters
-static inline _glptr_TexCoord3dv
-GET_TexCoord3dv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord3dv) (GET_by_offset(disp, _gloffset_TexCoord3dv));
-}
-
-static inline void
-SET_TexCoord3dv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord3dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord3f) (GLfloat, GLfloat, GLfloat);
-
-#define CALL_TexCoord3f(disp, parameters) \
-    (* GET_TexCoord3f(disp)) parameters
-static inline _glptr_TexCoord3f
-GET_TexCoord3f(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord3f) (GET_by_offset(disp, _gloffset_TexCoord3f));
-}
-
-static inline void
-SET_TexCoord3f(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_TexCoord3f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord3fv) (const GLfloat *);
-
-#define CALL_TexCoord3fv(disp, parameters) \
-    (* GET_TexCoord3fv(disp)) parameters
-static inline _glptr_TexCoord3fv
-GET_TexCoord3fv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord3fv) (GET_by_offset(disp, _gloffset_TexCoord3fv));
-}
-
-static inline void
-SET_TexCoord3fv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord3fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord3i) (GLint, GLint, GLint);
-
-#define CALL_TexCoord3i(disp, parameters) \
-    (* GET_TexCoord3i(disp)) parameters
-static inline _glptr_TexCoord3i
-GET_TexCoord3i(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord3i) (GET_by_offset(disp, _gloffset_TexCoord3i));
-}
-
-static inline void
-SET_TexCoord3i(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_TexCoord3i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord3iv) (const GLint *);
-
-#define CALL_TexCoord3iv(disp, parameters) \
-    (* GET_TexCoord3iv(disp)) parameters
-static inline _glptr_TexCoord3iv
-GET_TexCoord3iv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord3iv) (GET_by_offset(disp, _gloffset_TexCoord3iv));
-}
-
-static inline void
-SET_TexCoord3iv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord3iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord3s) (GLshort, GLshort, GLshort);
-
-#define CALL_TexCoord3s(disp, parameters) \
-    (* GET_TexCoord3s(disp)) parameters
-static inline _glptr_TexCoord3s
-GET_TexCoord3s(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord3s) (GET_by_offset(disp, _gloffset_TexCoord3s));
-}
-
-static inline void
-SET_TexCoord3s(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_TexCoord3s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord3sv) (const GLshort *);
-
-#define CALL_TexCoord3sv(disp, parameters) \
-    (* GET_TexCoord3sv(disp)) parameters
-static inline _glptr_TexCoord3sv
-GET_TexCoord3sv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord3sv) (GET_by_offset(disp, _gloffset_TexCoord3sv));
-}
-
-static inline void
-SET_TexCoord3sv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord3sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord4d) (GLdouble, GLdouble, GLdouble,
-                                              GLdouble);
-#define CALL_TexCoord4d(disp, parameters) \
-    (* GET_TexCoord4d(disp)) parameters
-static inline _glptr_TexCoord4d
-GET_TexCoord4d(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord4d) (GET_by_offset(disp, _gloffset_TexCoord4d));
-}
-
-static inline void
-SET_TexCoord4d(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_TexCoord4d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord4dv) (const GLdouble *);
-
-#define CALL_TexCoord4dv(disp, parameters) \
-    (* GET_TexCoord4dv(disp)) parameters
-static inline _glptr_TexCoord4dv
-GET_TexCoord4dv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord4dv) (GET_by_offset(disp, _gloffset_TexCoord4dv));
-}
-
-static inline void
-SET_TexCoord4dv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord4dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord4f) (GLfloat, GLfloat, GLfloat,
-                                              GLfloat);
-#define CALL_TexCoord4f(disp, parameters) \
-    (* GET_TexCoord4f(disp)) parameters
-static inline _glptr_TexCoord4f
-GET_TexCoord4f(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord4f) (GET_by_offset(disp, _gloffset_TexCoord4f));
-}
-
-static inline void
-SET_TexCoord4f(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_TexCoord4f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord4fv) (const GLfloat *);
-
-#define CALL_TexCoord4fv(disp, parameters) \
-    (* GET_TexCoord4fv(disp)) parameters
-static inline _glptr_TexCoord4fv
-GET_TexCoord4fv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord4fv) (GET_by_offset(disp, _gloffset_TexCoord4fv));
-}
-
-static inline void
-SET_TexCoord4fv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord4fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord4i) (GLint, GLint, GLint, GLint);
-
-#define CALL_TexCoord4i(disp, parameters) \
-    (* GET_TexCoord4i(disp)) parameters
-static inline _glptr_TexCoord4i
-GET_TexCoord4i(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord4i) (GET_by_offset(disp, _gloffset_TexCoord4i));
-}
-
-static inline void
-SET_TexCoord4i(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLint, GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_TexCoord4i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord4iv) (const GLint *);
-
-#define CALL_TexCoord4iv(disp, parameters) \
-    (* GET_TexCoord4iv(disp)) parameters
-static inline _glptr_TexCoord4iv
-GET_TexCoord4iv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord4iv) (GET_by_offset(disp, _gloffset_TexCoord4iv));
-}
-
-static inline void
-SET_TexCoord4iv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord4iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord4s) (GLshort, GLshort, GLshort,
-                                              GLshort);
-#define CALL_TexCoord4s(disp, parameters) \
-    (* GET_TexCoord4s(disp)) parameters
-static inline _glptr_TexCoord4s
-GET_TexCoord4s(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord4s) (GET_by_offset(disp, _gloffset_TexCoord4s));
-}
-
-static inline void
-SET_TexCoord4s(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_TexCoord4s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoord4sv) (const GLshort *);
-
-#define CALL_TexCoord4sv(disp, parameters) \
-    (* GET_TexCoord4sv(disp)) parameters
-static inline _glptr_TexCoord4sv
-GET_TexCoord4sv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoord4sv) (GET_by_offset(disp, _gloffset_TexCoord4sv));
-}
-
-static inline void
-SET_TexCoord4sv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_TexCoord4sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex2d) (GLdouble, GLdouble);
-
-#define CALL_Vertex2d(disp, parameters) \
-    (* GET_Vertex2d(disp)) parameters
-static inline _glptr_Vertex2d
-GET_Vertex2d(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex2d) (GET_by_offset(disp, _gloffset_Vertex2d));
-}
-
-static inline void
-SET_Vertex2d(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Vertex2d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex2dv) (const GLdouble *);
-
-#define CALL_Vertex2dv(disp, parameters) \
-    (* GET_Vertex2dv(disp)) parameters
-static inline _glptr_Vertex2dv
-GET_Vertex2dv(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex2dv) (GET_by_offset(disp, _gloffset_Vertex2dv));
-}
-
-static inline void
-SET_Vertex2dv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_Vertex2dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex2f) (GLfloat, GLfloat);
-
-#define CALL_Vertex2f(disp, parameters) \
-    (* GET_Vertex2f(disp)) parameters
-static inline _glptr_Vertex2f
-GET_Vertex2f(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex2f) (GET_by_offset(disp, _gloffset_Vertex2f));
-}
-
-static inline void
-SET_Vertex2f(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Vertex2f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex2fv) (const GLfloat *);
-
-#define CALL_Vertex2fv(disp, parameters) \
-    (* GET_Vertex2fv(disp)) parameters
-static inline _glptr_Vertex2fv
-GET_Vertex2fv(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex2fv) (GET_by_offset(disp, _gloffset_Vertex2fv));
-}
-
-static inline void
-SET_Vertex2fv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Vertex2fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex2i) (GLint, GLint);
-
-#define CALL_Vertex2i(disp, parameters) \
-    (* GET_Vertex2i(disp)) parameters
-static inline _glptr_Vertex2i
-GET_Vertex2i(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex2i) (GET_by_offset(disp, _gloffset_Vertex2i));
-}
-
-static inline void
-SET_Vertex2i(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_Vertex2i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex2iv) (const GLint *);
-
-#define CALL_Vertex2iv(disp, parameters) \
-    (* GET_Vertex2iv(disp)) parameters
-static inline _glptr_Vertex2iv
-GET_Vertex2iv(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex2iv) (GET_by_offset(disp, _gloffset_Vertex2iv));
-}
-
-static inline void
-SET_Vertex2iv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Vertex2iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex2s) (GLshort, GLshort);
-
-#define CALL_Vertex2s(disp, parameters) \
-    (* GET_Vertex2s(disp)) parameters
-static inline _glptr_Vertex2s
-GET_Vertex2s(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex2s) (GET_by_offset(disp, _gloffset_Vertex2s));
-}
-
-static inline void
-SET_Vertex2s(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_Vertex2s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex2sv) (const GLshort *);
-
-#define CALL_Vertex2sv(disp, parameters) \
-    (* GET_Vertex2sv(disp)) parameters
-static inline _glptr_Vertex2sv
-GET_Vertex2sv(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex2sv) (GET_by_offset(disp, _gloffset_Vertex2sv));
-}
-
-static inline void
-SET_Vertex2sv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_Vertex2sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex3d) (GLdouble, GLdouble, GLdouble);
-
-#define CALL_Vertex3d(disp, parameters) \
-    (* GET_Vertex3d(disp)) parameters
-static inline _glptr_Vertex3d
-GET_Vertex3d(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex3d) (GET_by_offset(disp, _gloffset_Vertex3d));
-}
-
-static inline void
-SET_Vertex3d(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Vertex3d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex3dv) (const GLdouble *);
-
-#define CALL_Vertex3dv(disp, parameters) \
-    (* GET_Vertex3dv(disp)) parameters
-static inline _glptr_Vertex3dv
-GET_Vertex3dv(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex3dv) (GET_by_offset(disp, _gloffset_Vertex3dv));
-}
-
-static inline void
-SET_Vertex3dv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_Vertex3dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex3f) (GLfloat, GLfloat, GLfloat);
-
-#define CALL_Vertex3f(disp, parameters) \
-    (* GET_Vertex3f(disp)) parameters
-static inline _glptr_Vertex3f
-GET_Vertex3f(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex3f) (GET_by_offset(disp, _gloffset_Vertex3f));
-}
-
-static inline void
-SET_Vertex3f(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Vertex3f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex3fv) (const GLfloat *);
-
-#define CALL_Vertex3fv(disp, parameters) \
-    (* GET_Vertex3fv(disp)) parameters
-static inline _glptr_Vertex3fv
-GET_Vertex3fv(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex3fv) (GET_by_offset(disp, _gloffset_Vertex3fv));
-}
-
-static inline void
-SET_Vertex3fv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Vertex3fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex3i) (GLint, GLint, GLint);
-
-#define CALL_Vertex3i(disp, parameters) \
-    (* GET_Vertex3i(disp)) parameters
-static inline _glptr_Vertex3i
-GET_Vertex3i(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex3i) (GET_by_offset(disp, _gloffset_Vertex3i));
-}
-
-static inline void
-SET_Vertex3i(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_Vertex3i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex3iv) (const GLint *);
-
-#define CALL_Vertex3iv(disp, parameters) \
-    (* GET_Vertex3iv(disp)) parameters
-static inline _glptr_Vertex3iv
-GET_Vertex3iv(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex3iv) (GET_by_offset(disp, _gloffset_Vertex3iv));
-}
-
-static inline void
-SET_Vertex3iv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Vertex3iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex3s) (GLshort, GLshort, GLshort);
-
-#define CALL_Vertex3s(disp, parameters) \
-    (* GET_Vertex3s(disp)) parameters
-static inline _glptr_Vertex3s
-GET_Vertex3s(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex3s) (GET_by_offset(disp, _gloffset_Vertex3s));
-}
-
-static inline void
-SET_Vertex3s(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_Vertex3s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex3sv) (const GLshort *);
-
-#define CALL_Vertex3sv(disp, parameters) \
-    (* GET_Vertex3sv(disp)) parameters
-static inline _glptr_Vertex3sv
-GET_Vertex3sv(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex3sv) (GET_by_offset(disp, _gloffset_Vertex3sv));
-}
-
-static inline void
-SET_Vertex3sv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_Vertex3sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex4d) (GLdouble, GLdouble, GLdouble,
-                                            GLdouble);
-#define CALL_Vertex4d(disp, parameters) \
-    (* GET_Vertex4d(disp)) parameters
-static inline _glptr_Vertex4d
-GET_Vertex4d(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex4d) (GET_by_offset(disp, _gloffset_Vertex4d));
-}
-
-static inline void
-SET_Vertex4d(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Vertex4d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex4dv) (const GLdouble *);
-
-#define CALL_Vertex4dv(disp, parameters) \
-    (* GET_Vertex4dv(disp)) parameters
-static inline _glptr_Vertex4dv
-GET_Vertex4dv(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex4dv) (GET_by_offset(disp, _gloffset_Vertex4dv));
-}
-
-static inline void
-SET_Vertex4dv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_Vertex4dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex4f) (GLfloat, GLfloat, GLfloat, GLfloat);
-
-#define CALL_Vertex4f(disp, parameters) \
-    (* GET_Vertex4f(disp)) parameters
-static inline _glptr_Vertex4f
-GET_Vertex4f(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex4f) (GET_by_offset(disp, _gloffset_Vertex4f));
-}
-
-static inline void
-SET_Vertex4f(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Vertex4f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex4fv) (const GLfloat *);
-
-#define CALL_Vertex4fv(disp, parameters) \
-    (* GET_Vertex4fv(disp)) parameters
-static inline _glptr_Vertex4fv
-GET_Vertex4fv(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex4fv) (GET_by_offset(disp, _gloffset_Vertex4fv));
-}
-
-static inline void
-SET_Vertex4fv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Vertex4fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex4i) (GLint, GLint, GLint, GLint);
-
-#define CALL_Vertex4i(disp, parameters) \
-    (* GET_Vertex4i(disp)) parameters
-static inline _glptr_Vertex4i
-GET_Vertex4i(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex4i) (GET_by_offset(disp, _gloffset_Vertex4i));
-}
-
-static inline void
-SET_Vertex4i(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLint, GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_Vertex4i, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex4iv) (const GLint *);
-
-#define CALL_Vertex4iv(disp, parameters) \
-    (* GET_Vertex4iv(disp)) parameters
-static inline _glptr_Vertex4iv
-GET_Vertex4iv(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex4iv) (GET_by_offset(disp, _gloffset_Vertex4iv));
-}
-
-static inline void
-SET_Vertex4iv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Vertex4iv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex4s) (GLshort, GLshort, GLshort, GLshort);
-
-#define CALL_Vertex4s(disp, parameters) \
-    (* GET_Vertex4s(disp)) parameters
-static inline _glptr_Vertex4s
-GET_Vertex4s(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex4s) (GET_by_offset(disp, _gloffset_Vertex4s));
-}
-
-static inline void
-SET_Vertex4s(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_Vertex4s, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Vertex4sv) (const GLshort *);
-
-#define CALL_Vertex4sv(disp, parameters) \
-    (* GET_Vertex4sv(disp)) parameters
-static inline _glptr_Vertex4sv
-GET_Vertex4sv(struct _glapi_table *disp)
-{
-    return (_glptr_Vertex4sv) (GET_by_offset(disp, _gloffset_Vertex4sv));
-}
-
-static inline void
-SET_Vertex4sv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_Vertex4sv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClipPlane) (GLenum, const GLdouble *);
-
-#define CALL_ClipPlane(disp, parameters) \
-    (* GET_ClipPlane(disp)) parameters
-static inline _glptr_ClipPlane
-GET_ClipPlane(struct _glapi_table *disp)
-{
-    return (_glptr_ClipPlane) (GET_by_offset(disp, _gloffset_ClipPlane));
-}
-
-static inline void
-SET_ClipPlane(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLenum, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_ClipPlane, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorMaterial) (GLenum, GLenum);
-
-#define CALL_ColorMaterial(disp, parameters) \
-    (* GET_ColorMaterial(disp)) parameters
-static inline _glptr_ColorMaterial
-GET_ColorMaterial(struct _glapi_table *disp)
-{
-    return (_glptr_ColorMaterial) (GET_by_offset
-                                   (disp, _gloffset_ColorMaterial));
-}
-
-static inline void
-SET_ColorMaterial(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_ColorMaterial, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CullFace) (GLenum);
-
-#define CALL_CullFace(disp, parameters) \
-    (* GET_CullFace(disp)) parameters
-static inline _glptr_CullFace
-GET_CullFace(struct _glapi_table *disp)
-{
-    return (_glptr_CullFace) (GET_by_offset(disp, _gloffset_CullFace));
-}
-
-static inline void
-SET_CullFace(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_CullFace, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Fogf) (GLenum, GLfloat);
-
-#define CALL_Fogf(disp, parameters) \
-    (* GET_Fogf(disp)) parameters
-static inline _glptr_Fogf
-GET_Fogf(struct _glapi_table *disp)
-{
-    return (_glptr_Fogf) (GET_by_offset(disp, _gloffset_Fogf));
-}
-
-static inline void
-SET_Fogf(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Fogf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Fogfv) (GLenum, const GLfloat *);
-
-#define CALL_Fogfv(disp, parameters) \
-    (* GET_Fogfv(disp)) parameters
-static inline _glptr_Fogfv
-GET_Fogfv(struct _glapi_table *disp)
-{
-    return (_glptr_Fogfv) (GET_by_offset(disp, _gloffset_Fogfv));
-}
-
-static inline void
-SET_Fogfv(struct _glapi_table *disp,
-          void (GLAPIENTRYP fn) (GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Fogfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Fogi) (GLenum, GLint);
-
-#define CALL_Fogi(disp, parameters) \
-    (* GET_Fogi(disp)) parameters
-static inline _glptr_Fogi
-GET_Fogi(struct _glapi_table *disp)
-{
-    return (_glptr_Fogi) (GET_by_offset(disp, _gloffset_Fogi));
-}
-
-static inline void
-SET_Fogi(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_Fogi, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Fogiv) (GLenum, const GLint *);
-
-#define CALL_Fogiv(disp, parameters) \
-    (* GET_Fogiv(disp)) parameters
-static inline _glptr_Fogiv
-GET_Fogiv(struct _glapi_table *disp)
-{
-    return (_glptr_Fogiv) (GET_by_offset(disp, _gloffset_Fogiv));
-}
-
-static inline void
-SET_Fogiv(struct _glapi_table *disp,
-          void (GLAPIENTRYP fn) (GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Fogiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FrontFace) (GLenum);
-
-#define CALL_FrontFace(disp, parameters) \
-    (* GET_FrontFace(disp)) parameters
-static inline _glptr_FrontFace
-GET_FrontFace(struct _glapi_table *disp)
-{
-    return (_glptr_FrontFace) (GET_by_offset(disp, _gloffset_FrontFace));
-}
-
-static inline void
-SET_FrontFace(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_FrontFace, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Hint) (GLenum, GLenum);
-
-#define CALL_Hint(disp, parameters) \
-    (* GET_Hint(disp)) parameters
-static inline _glptr_Hint
-GET_Hint(struct _glapi_table *disp)
-{
-    return (_glptr_Hint) (GET_by_offset(disp, _gloffset_Hint));
-}
-
-static inline void
-SET_Hint(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_Hint, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Lightf) (GLenum, GLenum, GLfloat);
-
-#define CALL_Lightf(disp, parameters) \
-    (* GET_Lightf(disp)) parameters
-static inline _glptr_Lightf
-GET_Lightf(struct _glapi_table *disp)
-{
-    return (_glptr_Lightf) (GET_by_offset(disp, _gloffset_Lightf));
-}
-
-static inline void
-SET_Lightf(struct _glapi_table *disp,
-           void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Lightf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Lightfv) (GLenum, GLenum, const GLfloat *);
-
-#define CALL_Lightfv(disp, parameters) \
-    (* GET_Lightfv(disp)) parameters
-static inline _glptr_Lightfv
-GET_Lightfv(struct _glapi_table *disp)
-{
-    return (_glptr_Lightfv) (GET_by_offset(disp, _gloffset_Lightfv));
-}
-
-static inline void
-SET_Lightfv(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLenum, GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Lightfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Lighti) (GLenum, GLenum, GLint);
-
-#define CALL_Lighti(disp, parameters) \
-    (* GET_Lighti(disp)) parameters
-static inline _glptr_Lighti
-GET_Lighti(struct _glapi_table *disp)
-{
-    return (_glptr_Lighti) (GET_by_offset(disp, _gloffset_Lighti));
-}
-
-static inline void
-SET_Lighti(struct _glapi_table *disp,
-           void (GLAPIENTRYP fn) (GLenum, GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_Lighti, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Lightiv) (GLenum, GLenum, const GLint *);
-
-#define CALL_Lightiv(disp, parameters) \
-    (* GET_Lightiv(disp)) parameters
-static inline _glptr_Lightiv
-GET_Lightiv(struct _glapi_table *disp)
-{
-    return (_glptr_Lightiv) (GET_by_offset(disp, _gloffset_Lightiv));
-}
-
-static inline void
-SET_Lightiv(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLenum, GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Lightiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LightModelf) (GLenum, GLfloat);
-
-#define CALL_LightModelf(disp, parameters) \
-    (* GET_LightModelf(disp)) parameters
-static inline _glptr_LightModelf
-GET_LightModelf(struct _glapi_table *disp)
-{
-    return (_glptr_LightModelf) (GET_by_offset(disp, _gloffset_LightModelf));
-}
-
-static inline void
-SET_LightModelf(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_LightModelf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LightModelfv) (GLenum, const GLfloat *);
-
-#define CALL_LightModelfv(disp, parameters) \
-    (* GET_LightModelfv(disp)) parameters
-static inline _glptr_LightModelfv
-GET_LightModelfv(struct _glapi_table *disp)
-{
-    return (_glptr_LightModelfv) (GET_by_offset(disp, _gloffset_LightModelfv));
-}
-
-static inline void
-SET_LightModelfv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_LightModelfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LightModeli) (GLenum, GLint);
-
-#define CALL_LightModeli(disp, parameters) \
-    (* GET_LightModeli(disp)) parameters
-static inline _glptr_LightModeli
-GET_LightModeli(struct _glapi_table *disp)
-{
-    return (_glptr_LightModeli) (GET_by_offset(disp, _gloffset_LightModeli));
-}
-
-static inline void
-SET_LightModeli(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_LightModeli, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LightModeliv) (GLenum, const GLint *);
-
-#define CALL_LightModeliv(disp, parameters) \
-    (* GET_LightModeliv(disp)) parameters
-static inline _glptr_LightModeliv
-GET_LightModeliv(struct _glapi_table *disp)
-{
-    return (_glptr_LightModeliv) (GET_by_offset(disp, _gloffset_LightModeliv));
-}
-
-static inline void
-SET_LightModeliv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_LightModeliv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LineStipple) (GLint, GLushort);
-
-#define CALL_LineStipple(disp, parameters) \
-    (* GET_LineStipple(disp)) parameters
-static inline _glptr_LineStipple
-GET_LineStipple(struct _glapi_table *disp)
-{
-    return (_glptr_LineStipple) (GET_by_offset(disp, _gloffset_LineStipple));
-}
-
-static inline void
-SET_LineStipple(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLint, GLushort))
-{
-    SET_by_offset(disp, _gloffset_LineStipple, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LineWidth) (GLfloat);
-
-#define CALL_LineWidth(disp, parameters) \
-    (* GET_LineWidth(disp)) parameters
-static inline _glptr_LineWidth
-GET_LineWidth(struct _glapi_table *disp)
-{
-    return (_glptr_LineWidth) (GET_by_offset(disp, _gloffset_LineWidth));
-}
-
-static inline void
-SET_LineWidth(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLfloat))
-{
-    SET_by_offset(disp, _gloffset_LineWidth, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Materialf) (GLenum, GLenum, GLfloat);
-
-#define CALL_Materialf(disp, parameters) \
-    (* GET_Materialf(disp)) parameters
-static inline _glptr_Materialf
-GET_Materialf(struct _glapi_table *disp)
-{
-    return (_glptr_Materialf) (GET_by_offset(disp, _gloffset_Materialf));
-}
-
-static inline void
-SET_Materialf(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Materialf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Materialfv) (GLenum, GLenum, const GLfloat *);
-
-#define CALL_Materialfv(disp, parameters) \
-    (* GET_Materialfv(disp)) parameters
-static inline _glptr_Materialfv
-GET_Materialfv(struct _glapi_table *disp)
-{
-    return (_glptr_Materialfv) (GET_by_offset(disp, _gloffset_Materialfv));
-}
-
-static inline void
-SET_Materialfv(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Materialfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Materiali) (GLenum, GLenum, GLint);
-
-#define CALL_Materiali(disp, parameters) \
-    (* GET_Materiali(disp)) parameters
-static inline _glptr_Materiali
-GET_Materiali(struct _glapi_table *disp)
-{
-    return (_glptr_Materiali) (GET_by_offset(disp, _gloffset_Materiali));
-}
-
-static inline void
-SET_Materiali(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLenum, GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_Materiali, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Materialiv) (GLenum, GLenum, const GLint *);
-
-#define CALL_Materialiv(disp, parameters) \
-    (* GET_Materialiv(disp)) parameters
-static inline _glptr_Materialiv
-GET_Materialiv(struct _glapi_table *disp)
-{
-    return (_glptr_Materialiv) (GET_by_offset(disp, _gloffset_Materialiv));
-}
-
-static inline void
-SET_Materialiv(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Materialiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PointSize) (GLfloat);
-
-#define CALL_PointSize(disp, parameters) \
-    (* GET_PointSize(disp)) parameters
-static inline _glptr_PointSize
-GET_PointSize(struct _glapi_table *disp)
-{
-    return (_glptr_PointSize) (GET_by_offset(disp, _gloffset_PointSize));
-}
-
-static inline void
-SET_PointSize(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLfloat))
-{
-    SET_by_offset(disp, _gloffset_PointSize, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PolygonMode) (GLenum, GLenum);
-
-#define CALL_PolygonMode(disp, parameters) \
-    (* GET_PolygonMode(disp)) parameters
-static inline _glptr_PolygonMode
-GET_PolygonMode(struct _glapi_table *disp)
-{
-    return (_glptr_PolygonMode) (GET_by_offset(disp, _gloffset_PolygonMode));
-}
-
-static inline void
-SET_PolygonMode(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_PolygonMode, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PolygonStipple) (const GLubyte *);
-
-#define CALL_PolygonStipple(disp, parameters) \
-    (* GET_PolygonStipple(disp)) parameters
-static inline _glptr_PolygonStipple
-GET_PolygonStipple(struct _glapi_table *disp)
-{
-    return (_glptr_PolygonStipple) (GET_by_offset
-                                    (disp, _gloffset_PolygonStipple));
-}
-
-static inline void
-SET_PolygonStipple(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (const GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_PolygonStipple, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Scissor) (GLint, GLint, GLsizei, GLsizei);
-
-#define CALL_Scissor(disp, parameters) \
-    (* GET_Scissor(disp)) parameters
-static inline _glptr_Scissor
-GET_Scissor(struct _glapi_table *disp)
-{
-    return (_glptr_Scissor) (GET_by_offset(disp, _gloffset_Scissor));
-}
-
-static inline void
-SET_Scissor(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLint, GLint, GLsizei, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_Scissor, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ShadeModel) (GLenum);
-
-#define CALL_ShadeModel(disp, parameters) \
-    (* GET_ShadeModel(disp)) parameters
-static inline _glptr_ShadeModel
-GET_ShadeModel(struct _glapi_table *disp)
-{
-    return (_glptr_ShadeModel) (GET_by_offset(disp, _gloffset_ShadeModel));
-}
-
-static inline void
-SET_ShadeModel(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_ShadeModel, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexParameterf) (GLenum, GLenum, GLfloat);
-
-#define CALL_TexParameterf(disp, parameters) \
-    (* GET_TexParameterf(disp)) parameters
-static inline _glptr_TexParameterf
-GET_TexParameterf(struct _glapi_table *disp)
-{
-    return (_glptr_TexParameterf) (GET_by_offset
-                                   (disp, _gloffset_TexParameterf));
-}
-
-static inline void
-SET_TexParameterf(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_TexParameterf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexParameterfv) (GLenum, GLenum,
-                                                  const GLfloat *);
-#define CALL_TexParameterfv(disp, parameters) \
-    (* GET_TexParameterfv(disp)) parameters
-static inline _glptr_TexParameterfv
-GET_TexParameterfv(struct _glapi_table *disp)
-{
-    return (_glptr_TexParameterfv) (GET_by_offset
-                                    (disp, _gloffset_TexParameterfv));
-}
-
-static inline void
-SET_TexParameterfv(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLenum, GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_TexParameterfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexParameteri) (GLenum, GLenum, GLint);
-
-#define CALL_TexParameteri(disp, parameters) \
-    (* GET_TexParameteri(disp)) parameters
-static inline _glptr_TexParameteri
-GET_TexParameteri(struct _glapi_table *disp)
-{
-    return (_glptr_TexParameteri) (GET_by_offset
-                                   (disp, _gloffset_TexParameteri));
-}
-
-static inline void
-SET_TexParameteri(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_TexParameteri, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexParameteriv) (GLenum, GLenum,
-                                                  const GLint *);
-#define CALL_TexParameteriv(disp, parameters) \
-    (* GET_TexParameteriv(disp)) parameters
-static inline _glptr_TexParameteriv
-GET_TexParameteriv(struct _glapi_table *disp)
-{
-    return (_glptr_TexParameteriv) (GET_by_offset
-                                    (disp, _gloffset_TexParameteriv));
-}
-
-static inline void
-SET_TexParameteriv(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLenum, GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_TexParameteriv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexImage1D) (GLenum, GLint, GLint, GLsizei,
-                                              GLint, GLenum, GLenum,
-                                              const GLvoid *);
-#define CALL_TexImage1D(disp, parameters) \
-    (* GET_TexImage1D(disp)) parameters
-static inline _glptr_TexImage1D
-GET_TexImage1D(struct _glapi_table *disp)
-{
-    return (_glptr_TexImage1D) (GET_by_offset(disp, _gloffset_TexImage1D));
-}
-
-static inline void
-SET_TexImage1D(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLint, GLint, GLsizei, GLint,
-                                      GLenum, GLenum, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_TexImage1D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexImage2D) (GLenum, GLint, GLint, GLsizei,
-                                              GLsizei, GLint, GLenum, GLenum,
-                                              const GLvoid *);
-#define CALL_TexImage2D(disp, parameters) \
-    (* GET_TexImage2D(disp)) parameters
-static inline _glptr_TexImage2D
-GET_TexImage2D(struct _glapi_table *disp)
-{
-    return (_glptr_TexImage2D) (GET_by_offset(disp, _gloffset_TexImage2D));
-}
-
-static inline void
-SET_TexImage2D(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLint, GLint, GLsizei, GLsizei,
-                                      GLint, GLenum, GLenum, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_TexImage2D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexEnvf) (GLenum, GLenum, GLfloat);
-
-#define CALL_TexEnvf(disp, parameters) \
-    (* GET_TexEnvf(disp)) parameters
-static inline _glptr_TexEnvf
-GET_TexEnvf(struct _glapi_table *disp)
-{
-    return (_glptr_TexEnvf) (GET_by_offset(disp, _gloffset_TexEnvf));
-}
-
-static inline void
-SET_TexEnvf(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_TexEnvf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexEnvfv) (GLenum, GLenum, const GLfloat *);
-
-#define CALL_TexEnvfv(disp, parameters) \
-    (* GET_TexEnvfv(disp)) parameters
-static inline _glptr_TexEnvfv
-GET_TexEnvfv(struct _glapi_table *disp)
-{
-    return (_glptr_TexEnvfv) (GET_by_offset(disp, _gloffset_TexEnvfv));
-}
-
-static inline void
-SET_TexEnvfv(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLenum, GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_TexEnvfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexEnvi) (GLenum, GLenum, GLint);
-
-#define CALL_TexEnvi(disp, parameters) \
-    (* GET_TexEnvi(disp)) parameters
-static inline _glptr_TexEnvi
-GET_TexEnvi(struct _glapi_table *disp)
-{
-    return (_glptr_TexEnvi) (GET_by_offset(disp, _gloffset_TexEnvi));
-}
-
-static inline void
-SET_TexEnvi(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLenum, GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_TexEnvi, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexEnviv) (GLenum, GLenum, const GLint *);
-
-#define CALL_TexEnviv(disp, parameters) \
-    (* GET_TexEnviv(disp)) parameters
-static inline _glptr_TexEnviv
-GET_TexEnviv(struct _glapi_table *disp)
-{
-    return (_glptr_TexEnviv) (GET_by_offset(disp, _gloffset_TexEnviv));
-}
-
-static inline void
-SET_TexEnviv(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLenum, GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_TexEnviv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexGend) (GLenum, GLenum, GLdouble);
-
-#define CALL_TexGend(disp, parameters) \
-    (* GET_TexGend(disp)) parameters
-static inline _glptr_TexGend
-GET_TexGend(struct _glapi_table *disp)
-{
-    return (_glptr_TexGend) (GET_by_offset(disp, _gloffset_TexGend));
-}
-
-static inline void
-SET_TexGend(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLenum, GLenum, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_TexGend, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexGendv) (GLenum, GLenum, const GLdouble *);
-
-#define CALL_TexGendv(disp, parameters) \
-    (* GET_TexGendv(disp)) parameters
-static inline _glptr_TexGendv
-GET_TexGendv(struct _glapi_table *disp)
-{
-    return (_glptr_TexGendv) (GET_by_offset(disp, _gloffset_TexGendv));
-}
-
-static inline void
-SET_TexGendv(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLenum, GLenum, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_TexGendv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexGenf) (GLenum, GLenum, GLfloat);
-
-#define CALL_TexGenf(disp, parameters) \
-    (* GET_TexGenf(disp)) parameters
-static inline _glptr_TexGenf
-GET_TexGenf(struct _glapi_table *disp)
-{
-    return (_glptr_TexGenf) (GET_by_offset(disp, _gloffset_TexGenf));
-}
-
-static inline void
-SET_TexGenf(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_TexGenf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexGenfv) (GLenum, GLenum, const GLfloat *);
-
-#define CALL_TexGenfv(disp, parameters) \
-    (* GET_TexGenfv(disp)) parameters
-static inline _glptr_TexGenfv
-GET_TexGenfv(struct _glapi_table *disp)
-{
-    return (_glptr_TexGenfv) (GET_by_offset(disp, _gloffset_TexGenfv));
-}
-
-static inline void
-SET_TexGenfv(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLenum, GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_TexGenfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexGeni) (GLenum, GLenum, GLint);
-
-#define CALL_TexGeni(disp, parameters) \
-    (* GET_TexGeni(disp)) parameters
-static inline _glptr_TexGeni
-GET_TexGeni(struct _glapi_table *disp)
-{
-    return (_glptr_TexGeni) (GET_by_offset(disp, _gloffset_TexGeni));
-}
-
-static inline void
-SET_TexGeni(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLenum, GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_TexGeni, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexGeniv) (GLenum, GLenum, const GLint *);
-
-#define CALL_TexGeniv(disp, parameters) \
-    (* GET_TexGeniv(disp)) parameters
-static inline _glptr_TexGeniv
-GET_TexGeniv(struct _glapi_table *disp)
-{
-    return (_glptr_TexGeniv) (GET_by_offset(disp, _gloffset_TexGeniv));
-}
-
-static inline void
-SET_TexGeniv(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLenum, GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_TexGeniv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FeedbackBuffer) (GLsizei, GLenum, GLfloat *);
-
-#define CALL_FeedbackBuffer(disp, parameters) \
-    (* GET_FeedbackBuffer(disp)) parameters
-static inline _glptr_FeedbackBuffer
-GET_FeedbackBuffer(struct _glapi_table *disp)
-{
-    return (_glptr_FeedbackBuffer) (GET_by_offset
-                                    (disp, _gloffset_FeedbackBuffer));
-}
-
-static inline void
-SET_FeedbackBuffer(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLsizei, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_FeedbackBuffer, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SelectBuffer) (GLsizei, GLuint *);
-
-#define CALL_SelectBuffer(disp, parameters) \
-    (* GET_SelectBuffer(disp)) parameters
-static inline _glptr_SelectBuffer
-GET_SelectBuffer(struct _glapi_table *disp)
-{
-    return (_glptr_SelectBuffer) (GET_by_offset(disp, _gloffset_SelectBuffer));
-}
-
-static inline void
-SET_SelectBuffer(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_SelectBuffer, fn);
-}
-
-typedef GLint(GLAPIENTRYP _glptr_RenderMode) (GLenum);
-
-#define CALL_RenderMode(disp, parameters) \
-    (* GET_RenderMode(disp)) parameters
-static inline _glptr_RenderMode
-GET_RenderMode(struct _glapi_table *disp)
-{
-    return (_glptr_RenderMode) (GET_by_offset(disp, _gloffset_RenderMode));
-}
-
-static inline void
-SET_RenderMode(struct _glapi_table *disp, GLint(GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_RenderMode, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_InitNames) (void);
-
-#define CALL_InitNames(disp, parameters) \
-    (* GET_InitNames(disp)) parameters
-static inline _glptr_InitNames
-GET_InitNames(struct _glapi_table *disp)
-{
-    return (_glptr_InitNames) (GET_by_offset(disp, _gloffset_InitNames));
-}
-
-static inline void
-SET_InitNames(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_InitNames, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LoadName) (GLuint);
-
-#define CALL_LoadName(disp, parameters) \
-    (* GET_LoadName(disp)) parameters
-static inline _glptr_LoadName
-GET_LoadName(struct _glapi_table *disp)
-{
-    return (_glptr_LoadName) (GET_by_offset(disp, _gloffset_LoadName));
-}
-
-static inline void
-SET_LoadName(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_LoadName, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PassThrough) (GLfloat);
-
-#define CALL_PassThrough(disp, parameters) \
-    (* GET_PassThrough(disp)) parameters
-static inline _glptr_PassThrough
-GET_PassThrough(struct _glapi_table *disp)
-{
-    return (_glptr_PassThrough) (GET_by_offset(disp, _gloffset_PassThrough));
-}
-
-static inline void
-SET_PassThrough(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLfloat))
-{
-    SET_by_offset(disp, _gloffset_PassThrough, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PopName) (void);
-
-#define CALL_PopName(disp, parameters) \
-    (* GET_PopName(disp)) parameters
-static inline _glptr_PopName
-GET_PopName(struct _glapi_table *disp)
-{
-    return (_glptr_PopName) (GET_by_offset(disp, _gloffset_PopName));
-}
-
-static inline void
-SET_PopName(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_PopName, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PushName) (GLuint);
-
-#define CALL_PushName(disp, parameters) \
-    (* GET_PushName(disp)) parameters
-static inline _glptr_PushName
-GET_PushName(struct _glapi_table *disp)
-{
-    return (_glptr_PushName) (GET_by_offset(disp, _gloffset_PushName));
-}
-
-static inline void
-SET_PushName(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_PushName, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DrawBuffer) (GLenum);
-
-#define CALL_DrawBuffer(disp, parameters) \
-    (* GET_DrawBuffer(disp)) parameters
-static inline _glptr_DrawBuffer
-GET_DrawBuffer(struct _glapi_table *disp)
-{
-    return (_glptr_DrawBuffer) (GET_by_offset(disp, _gloffset_DrawBuffer));
-}
-
-static inline void
-SET_DrawBuffer(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_DrawBuffer, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Clear) (GLbitfield);
-
-#define CALL_Clear(disp, parameters) \
-    (* GET_Clear(disp)) parameters
-static inline _glptr_Clear
-GET_Clear(struct _glapi_table *disp)
-{
-    return (_glptr_Clear) (GET_by_offset(disp, _gloffset_Clear));
-}
-
-static inline void
-SET_Clear(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLbitfield))
-{
-    SET_by_offset(disp, _gloffset_Clear, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClearAccum) (GLfloat, GLfloat, GLfloat,
-                                              GLfloat);
-#define CALL_ClearAccum(disp, parameters) \
-    (* GET_ClearAccum(disp)) parameters
-static inline _glptr_ClearAccum
-GET_ClearAccum(struct _glapi_table *disp)
-{
-    return (_glptr_ClearAccum) (GET_by_offset(disp, _gloffset_ClearAccum));
-}
-
-static inline void
-SET_ClearAccum(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_ClearAccum, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClearIndex) (GLfloat);
-
-#define CALL_ClearIndex(disp, parameters) \
-    (* GET_ClearIndex(disp)) parameters
-static inline _glptr_ClearIndex
-GET_ClearIndex(struct _glapi_table *disp)
-{
-    return (_glptr_ClearIndex) (GET_by_offset(disp, _gloffset_ClearIndex));
-}
-
-static inline void
-SET_ClearIndex(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLfloat))
-{
-    SET_by_offset(disp, _gloffset_ClearIndex, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClearColor) (GLclampf, GLclampf, GLclampf,
-                                              GLclampf);
-#define CALL_ClearColor(disp, parameters) \
-    (* GET_ClearColor(disp)) parameters
-static inline _glptr_ClearColor
-GET_ClearColor(struct _glapi_table *disp)
-{
-    return (_glptr_ClearColor) (GET_by_offset(disp, _gloffset_ClearColor));
-}
-
-static inline void
-SET_ClearColor(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLclampf, GLclampf, GLclampf, GLclampf))
-{
-    SET_by_offset(disp, _gloffset_ClearColor, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClearStencil) (GLint);
-
-#define CALL_ClearStencil(disp, parameters) \
-    (* GET_ClearStencil(disp)) parameters
-static inline _glptr_ClearStencil
-GET_ClearStencil(struct _glapi_table *disp)
-{
-    return (_glptr_ClearStencil) (GET_by_offset(disp, _gloffset_ClearStencil));
-}
-
-static inline void
-SET_ClearStencil(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLint))
-{
-    SET_by_offset(disp, _gloffset_ClearStencil, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClearDepth) (GLclampd);
-
-#define CALL_ClearDepth(disp, parameters) \
-    (* GET_ClearDepth(disp)) parameters
-static inline _glptr_ClearDepth
-GET_ClearDepth(struct _glapi_table *disp)
-{
-    return (_glptr_ClearDepth) (GET_by_offset(disp, _gloffset_ClearDepth));
-}
-
-static inline void
-SET_ClearDepth(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLclampd))
-{
-    SET_by_offset(disp, _gloffset_ClearDepth, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_StencilMask) (GLuint);
-
-#define CALL_StencilMask(disp, parameters) \
-    (* GET_StencilMask(disp)) parameters
-static inline _glptr_StencilMask
-GET_StencilMask(struct _glapi_table *disp)
-{
-    return (_glptr_StencilMask) (GET_by_offset(disp, _gloffset_StencilMask));
-}
-
-static inline void
-SET_StencilMask(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_StencilMask, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorMask) (GLboolean, GLboolean, GLboolean,
-                                             GLboolean);
-#define CALL_ColorMask(disp, parameters) \
-    (* GET_ColorMask(disp)) parameters
-static inline _glptr_ColorMask
-GET_ColorMask(struct _glapi_table *disp)
-{
-    return (_glptr_ColorMask) (GET_by_offset(disp, _gloffset_ColorMask));
-}
-
-static inline void
-SET_ColorMask(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLboolean, GLboolean, GLboolean,
-                                     GLboolean))
-{
-    SET_by_offset(disp, _gloffset_ColorMask, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DepthMask) (GLboolean);
-
-#define CALL_DepthMask(disp, parameters) \
-    (* GET_DepthMask(disp)) parameters
-static inline _glptr_DepthMask
-GET_DepthMask(struct _glapi_table *disp)
-{
-    return (_glptr_DepthMask) (GET_by_offset(disp, _gloffset_DepthMask));
-}
-
-static inline void
-SET_DepthMask(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLboolean))
-{
-    SET_by_offset(disp, _gloffset_DepthMask, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_IndexMask) (GLuint);
-
-#define CALL_IndexMask(disp, parameters) \
-    (* GET_IndexMask(disp)) parameters
-static inline _glptr_IndexMask
-GET_IndexMask(struct _glapi_table *disp)
-{
-    return (_glptr_IndexMask) (GET_by_offset(disp, _gloffset_IndexMask));
-}
-
-static inline void
-SET_IndexMask(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IndexMask, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Accum) (GLenum, GLfloat);
-
-#define CALL_Accum(disp, parameters) \
-    (* GET_Accum(disp)) parameters
-static inline _glptr_Accum
-GET_Accum(struct _glapi_table *disp)
-{
-    return (_glptr_Accum) (GET_by_offset(disp, _gloffset_Accum));
-}
-
-static inline void
-SET_Accum(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Accum, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Disable) (GLenum);
-
-#define CALL_Disable(disp, parameters) \
-    (* GET_Disable(disp)) parameters
-static inline _glptr_Disable
-GET_Disable(struct _glapi_table *disp)
-{
-    return (_glptr_Disable) (GET_by_offset(disp, _gloffset_Disable));
-}
-
-static inline void
-SET_Disable(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_Disable, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Enable) (GLenum);
-
-#define CALL_Enable(disp, parameters) \
-    (* GET_Enable(disp)) parameters
-static inline _glptr_Enable
-GET_Enable(struct _glapi_table *disp)
-{
-    return (_glptr_Enable) (GET_by_offset(disp, _gloffset_Enable));
-}
-
-static inline void
-SET_Enable(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_Enable, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Finish) (void);
-
-#define CALL_Finish(disp, parameters) \
-    (* GET_Finish(disp)) parameters
-static inline _glptr_Finish
-GET_Finish(struct _glapi_table *disp)
-{
-    return (_glptr_Finish) (GET_by_offset(disp, _gloffset_Finish));
-}
-
-static inline void
-SET_Finish(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_Finish, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Flush) (void);
-
-#define CALL_Flush(disp, parameters) \
-    (* GET_Flush(disp)) parameters
-static inline _glptr_Flush
-GET_Flush(struct _glapi_table *disp)
-{
-    return (_glptr_Flush) (GET_by_offset(disp, _gloffset_Flush));
-}
-
-static inline void
-SET_Flush(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_Flush, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PopAttrib) (void);
-
-#define CALL_PopAttrib(disp, parameters) \
-    (* GET_PopAttrib(disp)) parameters
-static inline _glptr_PopAttrib
-GET_PopAttrib(struct _glapi_table *disp)
-{
-    return (_glptr_PopAttrib) (GET_by_offset(disp, _gloffset_PopAttrib));
-}
-
-static inline void
-SET_PopAttrib(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_PopAttrib, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PushAttrib) (GLbitfield);
-
-#define CALL_PushAttrib(disp, parameters) \
-    (* GET_PushAttrib(disp)) parameters
-static inline _glptr_PushAttrib
-GET_PushAttrib(struct _glapi_table *disp)
-{
-    return (_glptr_PushAttrib) (GET_by_offset(disp, _gloffset_PushAttrib));
-}
-
-static inline void
-SET_PushAttrib(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLbitfield))
-{
-    SET_by_offset(disp, _gloffset_PushAttrib, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Map1d) (GLenum, GLdouble, GLdouble, GLint,
-                                         GLint, const GLdouble *);
-#define CALL_Map1d(disp, parameters) \
-    (* GET_Map1d(disp)) parameters
-static inline _glptr_Map1d
-GET_Map1d(struct _glapi_table *disp)
-{
-    return (_glptr_Map1d) (GET_by_offset(disp, _gloffset_Map1d));
-}
-
-static inline void
-SET_Map1d(struct _glapi_table *disp,
-          void (GLAPIENTRYP fn) (GLenum, GLdouble, GLdouble, GLint, GLint,
-                                 const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_Map1d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Map1f) (GLenum, GLfloat, GLfloat, GLint, GLint,
-                                         const GLfloat *);
-#define CALL_Map1f(disp, parameters) \
-    (* GET_Map1f(disp)) parameters
-static inline _glptr_Map1f
-GET_Map1f(struct _glapi_table *disp)
-{
-    return (_glptr_Map1f) (GET_by_offset(disp, _gloffset_Map1f));
-}
-
-static inline void
-SET_Map1f(struct _glapi_table *disp,
-          void (GLAPIENTRYP fn) (GLenum, GLfloat, GLfloat, GLint, GLint,
-                                 const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Map1f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Map2d) (GLenum, GLdouble, GLdouble, GLint,
-                                         GLint, GLdouble, GLdouble, GLint,
-                                         GLint, const GLdouble *);
-#define CALL_Map2d(disp, parameters) \
-    (* GET_Map2d(disp)) parameters
-static inline _glptr_Map2d
-GET_Map2d(struct _glapi_table *disp)
-{
-    return (_glptr_Map2d) (GET_by_offset(disp, _gloffset_Map2d));
-}
-
-static inline void
-SET_Map2d(struct _glapi_table *disp,
-          void (GLAPIENTRYP fn) (GLenum, GLdouble, GLdouble, GLint, GLint,
-                                 GLdouble, GLdouble, GLint, GLint,
-                                 const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_Map2d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Map2f) (GLenum, GLfloat, GLfloat, GLint, GLint,
-                                         GLfloat, GLfloat, GLint, GLint,
-                                         const GLfloat *);
-#define CALL_Map2f(disp, parameters) \
-    (* GET_Map2f(disp)) parameters
-static inline _glptr_Map2f
-GET_Map2f(struct _glapi_table *disp)
-{
-    return (_glptr_Map2f) (GET_by_offset(disp, _gloffset_Map2f));
-}
-
-static inline void
-SET_Map2f(struct _glapi_table *disp,
-          void (GLAPIENTRYP fn) (GLenum, GLfloat, GLfloat, GLint, GLint,
-                                 GLfloat, GLfloat, GLint, GLint,
-                                 const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Map2f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MapGrid1d) (GLint, GLdouble, GLdouble);
-
-#define CALL_MapGrid1d(disp, parameters) \
-    (* GET_MapGrid1d(disp)) parameters
-static inline _glptr_MapGrid1d
-GET_MapGrid1d(struct _glapi_table *disp)
-{
-    return (_glptr_MapGrid1d) (GET_by_offset(disp, _gloffset_MapGrid1d));
-}
-
-static inline void
-SET_MapGrid1d(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLint, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_MapGrid1d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MapGrid1f) (GLint, GLfloat, GLfloat);
-
-#define CALL_MapGrid1f(disp, parameters) \
-    (* GET_MapGrid1f(disp)) parameters
-static inline _glptr_MapGrid1f
-GET_MapGrid1f(struct _glapi_table *disp)
-{
-    return (_glptr_MapGrid1f) (GET_by_offset(disp, _gloffset_MapGrid1f));
-}
-
-static inline void
-SET_MapGrid1f(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLint, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_MapGrid1f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MapGrid2d) (GLint, GLdouble, GLdouble, GLint,
-                                             GLdouble, GLdouble);
-#define CALL_MapGrid2d(disp, parameters) \
-    (* GET_MapGrid2d(disp)) parameters
-static inline _glptr_MapGrid2d
-GET_MapGrid2d(struct _glapi_table *disp)
-{
-    return (_glptr_MapGrid2d) (GET_by_offset(disp, _gloffset_MapGrid2d));
-}
-
-static inline void
-SET_MapGrid2d(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLint, GLdouble, GLdouble, GLint, GLdouble,
-                                     GLdouble))
-{
-    SET_by_offset(disp, _gloffset_MapGrid2d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MapGrid2f) (GLint, GLfloat, GLfloat, GLint,
-                                             GLfloat, GLfloat);
-#define CALL_MapGrid2f(disp, parameters) \
-    (* GET_MapGrid2f(disp)) parameters
-static inline _glptr_MapGrid2f
-GET_MapGrid2f(struct _glapi_table *disp)
-{
-    return (_glptr_MapGrid2f) (GET_by_offset(disp, _gloffset_MapGrid2f));
-}
-
-static inline void
-SET_MapGrid2f(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLint, GLfloat, GLfloat, GLint, GLfloat,
-                                     GLfloat))
-{
-    SET_by_offset(disp, _gloffset_MapGrid2f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EvalCoord1d) (GLdouble);
-
-#define CALL_EvalCoord1d(disp, parameters) \
-    (* GET_EvalCoord1d(disp)) parameters
-static inline _glptr_EvalCoord1d
-GET_EvalCoord1d(struct _glapi_table *disp)
-{
-    return (_glptr_EvalCoord1d) (GET_by_offset(disp, _gloffset_EvalCoord1d));
-}
-
-static inline void
-SET_EvalCoord1d(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLdouble))
-{
-    SET_by_offset(disp, _gloffset_EvalCoord1d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EvalCoord1dv) (const GLdouble *);
-
-#define CALL_EvalCoord1dv(disp, parameters) \
-    (* GET_EvalCoord1dv(disp)) parameters
-static inline _glptr_EvalCoord1dv
-GET_EvalCoord1dv(struct _glapi_table *disp)
-{
-    return (_glptr_EvalCoord1dv) (GET_by_offset(disp, _gloffset_EvalCoord1dv));
-}
-
-static inline void
-SET_EvalCoord1dv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_EvalCoord1dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EvalCoord1f) (GLfloat);
-
-#define CALL_EvalCoord1f(disp, parameters) \
-    (* GET_EvalCoord1f(disp)) parameters
-static inline _glptr_EvalCoord1f
-GET_EvalCoord1f(struct _glapi_table *disp)
-{
-    return (_glptr_EvalCoord1f) (GET_by_offset(disp, _gloffset_EvalCoord1f));
-}
-
-static inline void
-SET_EvalCoord1f(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLfloat))
-{
-    SET_by_offset(disp, _gloffset_EvalCoord1f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EvalCoord1fv) (const GLfloat *);
-
-#define CALL_EvalCoord1fv(disp, parameters) \
-    (* GET_EvalCoord1fv(disp)) parameters
-static inline _glptr_EvalCoord1fv
-GET_EvalCoord1fv(struct _glapi_table *disp)
-{
-    return (_glptr_EvalCoord1fv) (GET_by_offset(disp, _gloffset_EvalCoord1fv));
-}
-
-static inline void
-SET_EvalCoord1fv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_EvalCoord1fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EvalCoord2d) (GLdouble, GLdouble);
-
-#define CALL_EvalCoord2d(disp, parameters) \
-    (* GET_EvalCoord2d(disp)) parameters
-static inline _glptr_EvalCoord2d
-GET_EvalCoord2d(struct _glapi_table *disp)
-{
-    return (_glptr_EvalCoord2d) (GET_by_offset(disp, _gloffset_EvalCoord2d));
-}
-
-static inline void
-SET_EvalCoord2d(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_EvalCoord2d, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EvalCoord2dv) (const GLdouble *);
-
-#define CALL_EvalCoord2dv(disp, parameters) \
-    (* GET_EvalCoord2dv(disp)) parameters
-static inline _glptr_EvalCoord2dv
-GET_EvalCoord2dv(struct _glapi_table *disp)
-{
-    return (_glptr_EvalCoord2dv) (GET_by_offset(disp, _gloffset_EvalCoord2dv));
-}
-
-static inline void
-SET_EvalCoord2dv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_EvalCoord2dv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EvalCoord2f) (GLfloat, GLfloat);
-
-#define CALL_EvalCoord2f(disp, parameters) \
-    (* GET_EvalCoord2f(disp)) parameters
-static inline _glptr_EvalCoord2f
-GET_EvalCoord2f(struct _glapi_table *disp)
-{
-    return (_glptr_EvalCoord2f) (GET_by_offset(disp, _gloffset_EvalCoord2f));
-}
-
-static inline void
-SET_EvalCoord2f(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_EvalCoord2f, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EvalCoord2fv) (const GLfloat *);
-
-#define CALL_EvalCoord2fv(disp, parameters) \
-    (* GET_EvalCoord2fv(disp)) parameters
-static inline _glptr_EvalCoord2fv
-GET_EvalCoord2fv(struct _glapi_table *disp)
-{
-    return (_glptr_EvalCoord2fv) (GET_by_offset(disp, _gloffset_EvalCoord2fv));
-}
-
-static inline void
-SET_EvalCoord2fv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_EvalCoord2fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EvalMesh1) (GLenum, GLint, GLint);
-
-#define CALL_EvalMesh1(disp, parameters) \
-    (* GET_EvalMesh1(disp)) parameters
-static inline _glptr_EvalMesh1
-GET_EvalMesh1(struct _glapi_table *disp)
-{
-    return (_glptr_EvalMesh1) (GET_by_offset(disp, _gloffset_EvalMesh1));
-}
-
-static inline void
-SET_EvalMesh1(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLenum, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_EvalMesh1, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EvalPoint1) (GLint);
-
-#define CALL_EvalPoint1(disp, parameters) \
-    (* GET_EvalPoint1(disp)) parameters
-static inline _glptr_EvalPoint1
-GET_EvalPoint1(struct _glapi_table *disp)
-{
-    return (_glptr_EvalPoint1) (GET_by_offset(disp, _gloffset_EvalPoint1));
-}
-
-static inline void
-SET_EvalPoint1(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLint))
-{
-    SET_by_offset(disp, _gloffset_EvalPoint1, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EvalMesh2) (GLenum, GLint, GLint, GLint,
-                                             GLint);
-#define CALL_EvalMesh2(disp, parameters) \
-    (* GET_EvalMesh2(disp)) parameters
-static inline _glptr_EvalMesh2
-GET_EvalMesh2(struct _glapi_table *disp)
-{
-    return (_glptr_EvalMesh2) (GET_by_offset(disp, _gloffset_EvalMesh2));
-}
-
-static inline void
-SET_EvalMesh2(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLenum, GLint, GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_EvalMesh2, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EvalPoint2) (GLint, GLint);
-
-#define CALL_EvalPoint2(disp, parameters) \
-    (* GET_EvalPoint2(disp)) parameters
-static inline _glptr_EvalPoint2
-GET_EvalPoint2(struct _glapi_table *disp)
-{
-    return (_glptr_EvalPoint2) (GET_by_offset(disp, _gloffset_EvalPoint2));
-}
-
-static inline void
-SET_EvalPoint2(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_EvalPoint2, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_AlphaFunc) (GLenum, GLclampf);
-
-#define CALL_AlphaFunc(disp, parameters) \
-    (* GET_AlphaFunc(disp)) parameters
-static inline _glptr_AlphaFunc
-GET_AlphaFunc(struct _glapi_table *disp)
-{
-    return (_glptr_AlphaFunc) (GET_by_offset(disp, _gloffset_AlphaFunc));
-}
-
-static inline void
-SET_AlphaFunc(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLenum, GLclampf))
-{
-    SET_by_offset(disp, _gloffset_AlphaFunc, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BlendFunc) (GLenum, GLenum);
-
-#define CALL_BlendFunc(disp, parameters) \
-    (* GET_BlendFunc(disp)) parameters
-static inline _glptr_BlendFunc
-GET_BlendFunc(struct _glapi_table *disp)
-{
-    return (_glptr_BlendFunc) (GET_by_offset(disp, _gloffset_BlendFunc));
-}
-
-static inline void
-SET_BlendFunc(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_BlendFunc, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LogicOp) (GLenum);
-
-#define CALL_LogicOp(disp, parameters) \
-    (* GET_LogicOp(disp)) parameters
-static inline _glptr_LogicOp
-GET_LogicOp(struct _glapi_table *disp)
-{
-    return (_glptr_LogicOp) (GET_by_offset(disp, _gloffset_LogicOp));
-}
-
-static inline void
-SET_LogicOp(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_LogicOp, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_StencilFunc) (GLenum, GLint, GLuint);
-
-#define CALL_StencilFunc(disp, parameters) \
-    (* GET_StencilFunc(disp)) parameters
-static inline _glptr_StencilFunc
-GET_StencilFunc(struct _glapi_table *disp)
-{
-    return (_glptr_StencilFunc) (GET_by_offset(disp, _gloffset_StencilFunc));
-}
-
-static inline void
-SET_StencilFunc(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_StencilFunc, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_StencilOp) (GLenum, GLenum, GLenum);
-
-#define CALL_StencilOp(disp, parameters) \
-    (* GET_StencilOp(disp)) parameters
-static inline _glptr_StencilOp
-GET_StencilOp(struct _glapi_table *disp)
-{
-    return (_glptr_StencilOp) (GET_by_offset(disp, _gloffset_StencilOp));
-}
-
-static inline void
-SET_StencilOp(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_StencilOp, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DepthFunc) (GLenum);
-
-#define CALL_DepthFunc(disp, parameters) \
-    (* GET_DepthFunc(disp)) parameters
-static inline _glptr_DepthFunc
-GET_DepthFunc(struct _glapi_table *disp)
-{
-    return (_glptr_DepthFunc) (GET_by_offset(disp, _gloffset_DepthFunc));
-}
-
-static inline void
-SET_DepthFunc(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_DepthFunc, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelZoom) (GLfloat, GLfloat);
-
-#define CALL_PixelZoom(disp, parameters) \
-    (* GET_PixelZoom(disp)) parameters
-static inline _glptr_PixelZoom
-GET_PixelZoom(struct _glapi_table *disp)
-{
-    return (_glptr_PixelZoom) (GET_by_offset(disp, _gloffset_PixelZoom));
-}
-
-static inline void
-SET_PixelZoom(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_PixelZoom, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelTransferf) (GLenum, GLfloat);
-
-#define CALL_PixelTransferf(disp, parameters) \
-    (* GET_PixelTransferf(disp)) parameters
-static inline _glptr_PixelTransferf
-GET_PixelTransferf(struct _glapi_table *disp)
-{
-    return (_glptr_PixelTransferf) (GET_by_offset
-                                    (disp, _gloffset_PixelTransferf));
-}
-
-static inline void
-SET_PixelTransferf(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_PixelTransferf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelTransferi) (GLenum, GLint);
-
-#define CALL_PixelTransferi(disp, parameters) \
-    (* GET_PixelTransferi(disp)) parameters
-static inline _glptr_PixelTransferi
-GET_PixelTransferi(struct _glapi_table *disp)
-{
-    return (_glptr_PixelTransferi) (GET_by_offset
-                                    (disp, _gloffset_PixelTransferi));
-}
-
-static inline void
-SET_PixelTransferi(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_PixelTransferi, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelStoref) (GLenum, GLfloat);
-
-#define CALL_PixelStoref(disp, parameters) \
-    (* GET_PixelStoref(disp)) parameters
-static inline _glptr_PixelStoref
-GET_PixelStoref(struct _glapi_table *disp)
-{
-    return (_glptr_PixelStoref) (GET_by_offset(disp, _gloffset_PixelStoref));
-}
-
-static inline void
-SET_PixelStoref(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_PixelStoref, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelStorei) (GLenum, GLint);
-
-#define CALL_PixelStorei(disp, parameters) \
-    (* GET_PixelStorei(disp)) parameters
-static inline _glptr_PixelStorei
-GET_PixelStorei(struct _glapi_table *disp)
-{
-    return (_glptr_PixelStorei) (GET_by_offset(disp, _gloffset_PixelStorei));
-}
-
-static inline void
-SET_PixelStorei(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_PixelStorei, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelMapfv) (GLenum, GLsizei, const GLfloat *);
-
-#define CALL_PixelMapfv(disp, parameters) \
-    (* GET_PixelMapfv(disp)) parameters
-static inline _glptr_PixelMapfv
-GET_PixelMapfv(struct _glapi_table *disp)
-{
-    return (_glptr_PixelMapfv) (GET_by_offset(disp, _gloffset_PixelMapfv));
-}
-
-static inline void
-SET_PixelMapfv(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLsizei, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_PixelMapfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelMapuiv) (GLenum, GLsizei, const GLuint *);
-
-#define CALL_PixelMapuiv(disp, parameters) \
-    (* GET_PixelMapuiv(disp)) parameters
-static inline _glptr_PixelMapuiv
-GET_PixelMapuiv(struct _glapi_table *disp)
-{
-    return (_glptr_PixelMapuiv) (GET_by_offset(disp, _gloffset_PixelMapuiv));
-}
-
-static inline void
-SET_PixelMapuiv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_PixelMapuiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelMapusv) (GLenum, GLsizei,
-                                               const GLushort *);
-#define CALL_PixelMapusv(disp, parameters) \
-    (* GET_PixelMapusv(disp)) parameters
-static inline _glptr_PixelMapusv
-GET_PixelMapusv(struct _glapi_table *disp)
-{
-    return (_glptr_PixelMapusv) (GET_by_offset(disp, _gloffset_PixelMapusv));
-}
-
-static inline void
-SET_PixelMapusv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLsizei, const GLushort *))
-{
-    SET_by_offset(disp, _gloffset_PixelMapusv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ReadBuffer) (GLenum);
-
-#define CALL_ReadBuffer(disp, parameters) \
-    (* GET_ReadBuffer(disp)) parameters
-static inline _glptr_ReadBuffer
-GET_ReadBuffer(struct _glapi_table *disp)
-{
-    return (_glptr_ReadBuffer) (GET_by_offset(disp, _gloffset_ReadBuffer));
-}
-
-static inline void
-SET_ReadBuffer(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_ReadBuffer, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CopyPixels) (GLint, GLint, GLsizei, GLsizei,
-                                              GLenum);
-#define CALL_CopyPixels(disp, parameters) \
-    (* GET_CopyPixels(disp)) parameters
-static inline _glptr_CopyPixels
-GET_CopyPixels(struct _glapi_table *disp)
-{
-    return (_glptr_CopyPixels) (GET_by_offset(disp, _gloffset_CopyPixels));
-}
-
-static inline void
-SET_CopyPixels(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLint, GLint, GLsizei, GLsizei, GLenum))
-{
-    SET_by_offset(disp, _gloffset_CopyPixels, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ReadPixels) (GLint, GLint, GLsizei, GLsizei,
-                                              GLenum, GLenum, GLvoid *);
-#define CALL_ReadPixels(disp, parameters) \
-    (* GET_ReadPixels(disp)) parameters
-static inline _glptr_ReadPixels
-GET_ReadPixels(struct _glapi_table *disp)
-{
-    return (_glptr_ReadPixels) (GET_by_offset(disp, _gloffset_ReadPixels));
-}
-
-static inline void
-SET_ReadPixels(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLint, GLint, GLsizei, GLsizei, GLenum,
-                                      GLenum, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_ReadPixels, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DrawPixels) (GLsizei, GLsizei, GLenum, GLenum,
-                                              const GLvoid *);
-#define CALL_DrawPixels(disp, parameters) \
-    (* GET_DrawPixels(disp)) parameters
-static inline _glptr_DrawPixels
-GET_DrawPixels(struct _glapi_table *disp)
-{
-    return (_glptr_DrawPixels) (GET_by_offset(disp, _gloffset_DrawPixels));
-}
-
-static inline void
-SET_DrawPixels(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLsizei, GLsizei, GLenum, GLenum,
-                                      const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_DrawPixels, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetBooleanv) (GLenum, GLboolean *);
-
-#define CALL_GetBooleanv(disp, parameters) \
-    (* GET_GetBooleanv(disp)) parameters
-static inline _glptr_GetBooleanv
-GET_GetBooleanv(struct _glapi_table *disp)
-{
-    return (_glptr_GetBooleanv) (GET_by_offset(disp, _gloffset_GetBooleanv));
-}
-
-static inline void
-SET_GetBooleanv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLboolean *))
-{
-    SET_by_offset(disp, _gloffset_GetBooleanv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetClipPlane) (GLenum, GLdouble *);
-
-#define CALL_GetClipPlane(disp, parameters) \
-    (* GET_GetClipPlane(disp)) parameters
-static inline _glptr_GetClipPlane
-GET_GetClipPlane(struct _glapi_table *disp)
-{
-    return (_glptr_GetClipPlane) (GET_by_offset(disp, _gloffset_GetClipPlane));
-}
-
-static inline void
-SET_GetClipPlane(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_GetClipPlane, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetDoublev) (GLenum, GLdouble *);
-
-#define CALL_GetDoublev(disp, parameters) \
-    (* GET_GetDoublev(disp)) parameters
-static inline _glptr_GetDoublev
-GET_GetDoublev(struct _glapi_table *disp)
-{
-    return (_glptr_GetDoublev) (GET_by_offset(disp, _gloffset_GetDoublev));
-}
-
-static inline void
-SET_GetDoublev(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_GetDoublev, fn);
-}
-
-typedef GLenum(GLAPIENTRYP _glptr_GetError) (void);
-
-#define CALL_GetError(disp, parameters) \
-    (* GET_GetError(disp)) parameters
-static inline _glptr_GetError
-GET_GetError(struct _glapi_table *disp)
-{
-    return (_glptr_GetError) (GET_by_offset(disp, _gloffset_GetError));
-}
-
-static inline void
-SET_GetError(struct _glapi_table *disp, GLenum(GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_GetError, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetFloatv) (GLenum, GLfloat *);
-
-#define CALL_GetFloatv(disp, parameters) \
-    (* GET_GetFloatv(disp)) parameters
-static inline _glptr_GetFloatv
-GET_GetFloatv(struct _glapi_table *disp)
-{
-    return (_glptr_GetFloatv) (GET_by_offset(disp, _gloffset_GetFloatv));
-}
-
-static inline void
-SET_GetFloatv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetFloatv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetIntegerv) (GLenum, GLint *);
-
-#define CALL_GetIntegerv(disp, parameters) \
-    (* GET_GetIntegerv(disp)) parameters
-static inline _glptr_GetIntegerv
-GET_GetIntegerv(struct _glapi_table *disp)
-{
-    return (_glptr_GetIntegerv) (GET_by_offset(disp, _gloffset_GetIntegerv));
-}
-
-static inline void
-SET_GetIntegerv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetIntegerv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetLightfv) (GLenum, GLenum, GLfloat *);
-
-#define CALL_GetLightfv(disp, parameters) \
-    (* GET_GetLightfv(disp)) parameters
-static inline _glptr_GetLightfv
-GET_GetLightfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetLightfv) (GET_by_offset(disp, _gloffset_GetLightfv));
-}
-
-static inline void
-SET_GetLightfv(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetLightfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetLightiv) (GLenum, GLenum, GLint *);
-
-#define CALL_GetLightiv(disp, parameters) \
-    (* GET_GetLightiv(disp)) parameters
-static inline _glptr_GetLightiv
-GET_GetLightiv(struct _glapi_table *disp)
-{
-    return (_glptr_GetLightiv) (GET_by_offset(disp, _gloffset_GetLightiv));
-}
-
-static inline void
-SET_GetLightiv(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetLightiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetMapdv) (GLenum, GLenum, GLdouble *);
-
-#define CALL_GetMapdv(disp, parameters) \
-    (* GET_GetMapdv(disp)) parameters
-static inline _glptr_GetMapdv
-GET_GetMapdv(struct _glapi_table *disp)
-{
-    return (_glptr_GetMapdv) (GET_by_offset(disp, _gloffset_GetMapdv));
-}
-
-static inline void
-SET_GetMapdv(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLenum, GLenum, GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_GetMapdv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetMapfv) (GLenum, GLenum, GLfloat *);
-
-#define CALL_GetMapfv(disp, parameters) \
-    (* GET_GetMapfv(disp)) parameters
-static inline _glptr_GetMapfv
-GET_GetMapfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetMapfv) (GET_by_offset(disp, _gloffset_GetMapfv));
-}
-
-static inline void
-SET_GetMapfv(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetMapfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetMapiv) (GLenum, GLenum, GLint *);
-
-#define CALL_GetMapiv(disp, parameters) \
-    (* GET_GetMapiv(disp)) parameters
-static inline _glptr_GetMapiv
-GET_GetMapiv(struct _glapi_table *disp)
-{
-    return (_glptr_GetMapiv) (GET_by_offset(disp, _gloffset_GetMapiv));
-}
-
-static inline void
-SET_GetMapiv(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetMapiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetMaterialfv) (GLenum, GLenum, GLfloat *);
-
-#define CALL_GetMaterialfv(disp, parameters) \
-    (* GET_GetMaterialfv(disp)) parameters
-static inline _glptr_GetMaterialfv
-GET_GetMaterialfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetMaterialfv) (GET_by_offset
-                                   (disp, _gloffset_GetMaterialfv));
-}
-
-static inline void
-SET_GetMaterialfv(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetMaterialfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetMaterialiv) (GLenum, GLenum, GLint *);
-
-#define CALL_GetMaterialiv(disp, parameters) \
-    (* GET_GetMaterialiv(disp)) parameters
-static inline _glptr_GetMaterialiv
-GET_GetMaterialiv(struct _glapi_table *disp)
-{
-    return (_glptr_GetMaterialiv) (GET_by_offset
-                                   (disp, _gloffset_GetMaterialiv));
-}
-
-static inline void
-SET_GetMaterialiv(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetMaterialiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetPixelMapfv) (GLenum, GLfloat *);
-
-#define CALL_GetPixelMapfv(disp, parameters) \
-    (* GET_GetPixelMapfv(disp)) parameters
-static inline _glptr_GetPixelMapfv
-GET_GetPixelMapfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetPixelMapfv) (GET_by_offset
-                                   (disp, _gloffset_GetPixelMapfv));
-}
-
-static inline void
-SET_GetPixelMapfv(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetPixelMapfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetPixelMapuiv) (GLenum, GLuint *);
-
-#define CALL_GetPixelMapuiv(disp, parameters) \
-    (* GET_GetPixelMapuiv(disp)) parameters
-static inline _glptr_GetPixelMapuiv
-GET_GetPixelMapuiv(struct _glapi_table *disp)
-{
-    return (_glptr_GetPixelMapuiv) (GET_by_offset
-                                    (disp, _gloffset_GetPixelMapuiv));
-}
-
-static inline void
-SET_GetPixelMapuiv(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLenum, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GetPixelMapuiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetPixelMapusv) (GLenum, GLushort *);
-
-#define CALL_GetPixelMapusv(disp, parameters) \
-    (* GET_GetPixelMapusv(disp)) parameters
-static inline _glptr_GetPixelMapusv
-GET_GetPixelMapusv(struct _glapi_table *disp)
-{
-    return (_glptr_GetPixelMapusv) (GET_by_offset
-                                    (disp, _gloffset_GetPixelMapusv));
-}
-
-static inline void
-SET_GetPixelMapusv(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLenum, GLushort *))
-{
-    SET_by_offset(disp, _gloffset_GetPixelMapusv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetPolygonStipple) (GLubyte *);
-
-#define CALL_GetPolygonStipple(disp, parameters) \
-    (* GET_GetPolygonStipple(disp)) parameters
-static inline _glptr_GetPolygonStipple
-GET_GetPolygonStipple(struct _glapi_table *disp)
-{
-    return (_glptr_GetPolygonStipple) (GET_by_offset
-                                       (disp, _gloffset_GetPolygonStipple));
-}
-
-static inline void
-SET_GetPolygonStipple(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_GetPolygonStipple, fn);
-}
-
-typedef const GLubyte *(GLAPIENTRYP _glptr_GetString) (GLenum);
-
-#define CALL_GetString(disp, parameters) \
-    (* GET_GetString(disp)) parameters
-static inline _glptr_GetString
-GET_GetString(struct _glapi_table *disp)
-{
-    return (_glptr_GetString) (GET_by_offset(disp, _gloffset_GetString));
-}
-
-static inline void
-SET_GetString(struct _glapi_table *disp,
-              const GLubyte * (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_GetString, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexEnvfv) (GLenum, GLenum, GLfloat *);
-
-#define CALL_GetTexEnvfv(disp, parameters) \
-    (* GET_GetTexEnvfv(disp)) parameters
-static inline _glptr_GetTexEnvfv
-GET_GetTexEnvfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexEnvfv) (GET_by_offset(disp, _gloffset_GetTexEnvfv));
-}
-
-static inline void
-SET_GetTexEnvfv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetTexEnvfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexEnviv) (GLenum, GLenum, GLint *);
-
-#define CALL_GetTexEnviv(disp, parameters) \
-    (* GET_GetTexEnviv(disp)) parameters
-static inline _glptr_GetTexEnviv
-GET_GetTexEnviv(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexEnviv) (GET_by_offset(disp, _gloffset_GetTexEnviv));
-}
-
-static inline void
-SET_GetTexEnviv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetTexEnviv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexGendv) (GLenum, GLenum, GLdouble *);
-
-#define CALL_GetTexGendv(disp, parameters) \
-    (* GET_GetTexGendv(disp)) parameters
-static inline _glptr_GetTexGendv
-GET_GetTexGendv(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexGendv) (GET_by_offset(disp, _gloffset_GetTexGendv));
-}
-
-static inline void
-SET_GetTexGendv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLenum, GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_GetTexGendv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexGenfv) (GLenum, GLenum, GLfloat *);
-
-#define CALL_GetTexGenfv(disp, parameters) \
-    (* GET_GetTexGenfv(disp)) parameters
-static inline _glptr_GetTexGenfv
-GET_GetTexGenfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexGenfv) (GET_by_offset(disp, _gloffset_GetTexGenfv));
-}
-
-static inline void
-SET_GetTexGenfv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetTexGenfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexGeniv) (GLenum, GLenum, GLint *);
-
-#define CALL_GetTexGeniv(disp, parameters) \
-    (* GET_GetTexGeniv(disp)) parameters
-static inline _glptr_GetTexGeniv
-GET_GetTexGeniv(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexGeniv) (GET_by_offset(disp, _gloffset_GetTexGeniv));
-}
-
-static inline void
-SET_GetTexGeniv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetTexGeniv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexImage) (GLenum, GLint, GLenum, GLenum,
-                                               GLvoid *);
-#define CALL_GetTexImage(disp, parameters) \
-    (* GET_GetTexImage(disp)) parameters
-static inline _glptr_GetTexImage
-GET_GetTexImage(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexImage) (GET_by_offset(disp, _gloffset_GetTexImage));
-}
-
-static inline void
-SET_GetTexImage(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLint, GLenum, GLenum, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetTexImage, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexParameterfv) (GLenum, GLenum, GLfloat *);
-
-#define CALL_GetTexParameterfv(disp, parameters) \
-    (* GET_GetTexParameterfv(disp)) parameters
-static inline _glptr_GetTexParameterfv
-GET_GetTexParameterfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexParameterfv) (GET_by_offset
-                                       (disp, _gloffset_GetTexParameterfv));
-}
-
-static inline void
-SET_GetTexParameterfv(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetTexParameterfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexParameteriv) (GLenum, GLenum, GLint *);
-
-#define CALL_GetTexParameteriv(disp, parameters) \
-    (* GET_GetTexParameteriv(disp)) parameters
-static inline _glptr_GetTexParameteriv
-GET_GetTexParameteriv(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexParameteriv) (GET_by_offset
-                                       (disp, _gloffset_GetTexParameteriv));
-}
-
-static inline void
-SET_GetTexParameteriv(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetTexParameteriv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexLevelParameterfv) (GLenum, GLint, GLenum,
-                                                          GLfloat *);
-#define CALL_GetTexLevelParameterfv(disp, parameters) \
-    (* GET_GetTexLevelParameterfv(disp)) parameters
-static inline _glptr_GetTexLevelParameterfv
-GET_GetTexLevelParameterfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexLevelParameterfv) (GET_by_offset
-                                            (disp,
-                                             _gloffset_GetTexLevelParameterfv));
-}
-
-static inline void
-SET_GetTexLevelParameterfv(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLint, GLenum,
-                                                  GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetTexLevelParameterfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexLevelParameteriv) (GLenum, GLint, GLenum,
-                                                          GLint *);
-#define CALL_GetTexLevelParameteriv(disp, parameters) \
-    (* GET_GetTexLevelParameteriv(disp)) parameters
-static inline _glptr_GetTexLevelParameteriv
-GET_GetTexLevelParameteriv(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexLevelParameteriv) (GET_by_offset
-                                            (disp,
-                                             _gloffset_GetTexLevelParameteriv));
-}
-
-static inline void
-SET_GetTexLevelParameteriv(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLint, GLenum,
-                                                  GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetTexLevelParameteriv, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsEnabled) (GLenum);
-
-#define CALL_IsEnabled(disp, parameters) \
-    (* GET_IsEnabled(disp)) parameters
-static inline _glptr_IsEnabled
-GET_IsEnabled(struct _glapi_table *disp)
-{
-    return (_glptr_IsEnabled) (GET_by_offset(disp, _gloffset_IsEnabled));
-}
-
-static inline void
-SET_IsEnabled(struct _glapi_table *disp, GLboolean(GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_IsEnabled, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsList) (GLuint);
-
-#define CALL_IsList(disp, parameters) \
-    (* GET_IsList(disp)) parameters
-static inline _glptr_IsList
-GET_IsList(struct _glapi_table *disp)
-{
-    return (_glptr_IsList) (GET_by_offset(disp, _gloffset_IsList));
-}
-
-static inline void
-SET_IsList(struct _glapi_table *disp, GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsList, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DepthRange) (GLclampd, GLclampd);
-
-#define CALL_DepthRange(disp, parameters) \
-    (* GET_DepthRange(disp)) parameters
-static inline _glptr_DepthRange
-GET_DepthRange(struct _glapi_table *disp)
-{
-    return (_glptr_DepthRange) (GET_by_offset(disp, _gloffset_DepthRange));
-}
-
-static inline void
-SET_DepthRange(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLclampd, GLclampd))
-{
-    SET_by_offset(disp, _gloffset_DepthRange, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Frustum) (GLdouble, GLdouble, GLdouble,
-                                           GLdouble, GLdouble, GLdouble);
-#define CALL_Frustum(disp, parameters) \
-    (* GET_Frustum(disp)) parameters
-static inline _glptr_Frustum
-GET_Frustum(struct _glapi_table *disp)
-{
-    return (_glptr_Frustum) (GET_by_offset(disp, _gloffset_Frustum));
-}
-
-static inline void
-SET_Frustum(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble, GLdouble,
-                                   GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Frustum, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LoadIdentity) (void);
-
-#define CALL_LoadIdentity(disp, parameters) \
-    (* GET_LoadIdentity(disp)) parameters
-static inline _glptr_LoadIdentity
-GET_LoadIdentity(struct _glapi_table *disp)
-{
-    return (_glptr_LoadIdentity) (GET_by_offset(disp, _gloffset_LoadIdentity));
-}
-
-static inline void
-SET_LoadIdentity(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_LoadIdentity, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LoadMatrixf) (const GLfloat *);
-
-#define CALL_LoadMatrixf(disp, parameters) \
-    (* GET_LoadMatrixf(disp)) parameters
-static inline _glptr_LoadMatrixf
-GET_LoadMatrixf(struct _glapi_table *disp)
-{
-    return (_glptr_LoadMatrixf) (GET_by_offset(disp, _gloffset_LoadMatrixf));
-}
-
-static inline void
-SET_LoadMatrixf(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_LoadMatrixf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LoadMatrixd) (const GLdouble *);
-
-#define CALL_LoadMatrixd(disp, parameters) \
-    (* GET_LoadMatrixd(disp)) parameters
-static inline _glptr_LoadMatrixd
-GET_LoadMatrixd(struct _glapi_table *disp)
-{
-    return (_glptr_LoadMatrixd) (GET_by_offset(disp, _gloffset_LoadMatrixd));
-}
-
-static inline void
-SET_LoadMatrixd(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_LoadMatrixd, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MatrixMode) (GLenum);
-
-#define CALL_MatrixMode(disp, parameters) \
-    (* GET_MatrixMode(disp)) parameters
-static inline _glptr_MatrixMode
-GET_MatrixMode(struct _glapi_table *disp)
-{
-    return (_glptr_MatrixMode) (GET_by_offset(disp, _gloffset_MatrixMode));
-}
-
-static inline void
-SET_MatrixMode(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_MatrixMode, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultMatrixf) (const GLfloat *);
-
-#define CALL_MultMatrixf(disp, parameters) \
-    (* GET_MultMatrixf(disp)) parameters
-static inline _glptr_MultMatrixf
-GET_MultMatrixf(struct _glapi_table *disp)
-{
-    return (_glptr_MultMatrixf) (GET_by_offset(disp, _gloffset_MultMatrixf));
-}
-
-static inline void
-SET_MultMatrixf(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_MultMatrixf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultMatrixd) (const GLdouble *);
-
-#define CALL_MultMatrixd(disp, parameters) \
-    (* GET_MultMatrixd(disp)) parameters
-static inline _glptr_MultMatrixd
-GET_MultMatrixd(struct _glapi_table *disp)
-{
-    return (_glptr_MultMatrixd) (GET_by_offset(disp, _gloffset_MultMatrixd));
-}
-
-static inline void
-SET_MultMatrixd(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_MultMatrixd, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Ortho) (GLdouble, GLdouble, GLdouble, GLdouble,
-                                         GLdouble, GLdouble);
-#define CALL_Ortho(disp, parameters) \
-    (* GET_Ortho(disp)) parameters
-static inline _glptr_Ortho
-GET_Ortho(struct _glapi_table *disp)
-{
-    return (_glptr_Ortho) (GET_by_offset(disp, _gloffset_Ortho));
-}
-
-static inline void
-SET_Ortho(struct _glapi_table *disp,
-          void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble, GLdouble,
-                                 GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Ortho, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PopMatrix) (void);
-
-#define CALL_PopMatrix(disp, parameters) \
-    (* GET_PopMatrix(disp)) parameters
-static inline _glptr_PopMatrix
-GET_PopMatrix(struct _glapi_table *disp)
-{
-    return (_glptr_PopMatrix) (GET_by_offset(disp, _gloffset_PopMatrix));
-}
-
-static inline void
-SET_PopMatrix(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_PopMatrix, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PushMatrix) (void);
-
-#define CALL_PushMatrix(disp, parameters) \
-    (* GET_PushMatrix(disp)) parameters
-static inline _glptr_PushMatrix
-GET_PushMatrix(struct _glapi_table *disp)
-{
-    return (_glptr_PushMatrix) (GET_by_offset(disp, _gloffset_PushMatrix));
-}
-
-static inline void
-SET_PushMatrix(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_PushMatrix, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Rotated) (GLdouble, GLdouble, GLdouble,
-                                           GLdouble);
-#define CALL_Rotated(disp, parameters) \
-    (* GET_Rotated(disp)) parameters
-static inline _glptr_Rotated
-GET_Rotated(struct _glapi_table *disp)
-{
-    return (_glptr_Rotated) (GET_by_offset(disp, _gloffset_Rotated));
-}
-
-static inline void
-SET_Rotated(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Rotated, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Rotatef) (GLfloat, GLfloat, GLfloat, GLfloat);
-
-#define CALL_Rotatef(disp, parameters) \
-    (* GET_Rotatef(disp)) parameters
-static inline _glptr_Rotatef
-GET_Rotatef(struct _glapi_table *disp)
-{
-    return (_glptr_Rotatef) (GET_by_offset(disp, _gloffset_Rotatef));
-}
-
-static inline void
-SET_Rotatef(struct _glapi_table *disp,
-            void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Rotatef, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Scaled) (GLdouble, GLdouble, GLdouble);
-
-#define CALL_Scaled(disp, parameters) \
-    (* GET_Scaled(disp)) parameters
-static inline _glptr_Scaled
-GET_Scaled(struct _glapi_table *disp)
-{
-    return (_glptr_Scaled) (GET_by_offset(disp, _gloffset_Scaled));
-}
-
-static inline void
-SET_Scaled(struct _glapi_table *disp,
-           void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Scaled, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Scalef) (GLfloat, GLfloat, GLfloat);
-
-#define CALL_Scalef(disp, parameters) \
-    (* GET_Scalef(disp)) parameters
-static inline _glptr_Scalef
-GET_Scalef(struct _glapi_table *disp)
-{
-    return (_glptr_Scalef) (GET_by_offset(disp, _gloffset_Scalef));
-}
-
-static inline void
-SET_Scalef(struct _glapi_table *disp,
-           void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Scalef, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Translated) (GLdouble, GLdouble, GLdouble);
-
-#define CALL_Translated(disp, parameters) \
-    (* GET_Translated(disp)) parameters
-static inline _glptr_Translated
-GET_Translated(struct _glapi_table *disp)
-{
-    return (_glptr_Translated) (GET_by_offset(disp, _gloffset_Translated));
-}
-
-static inline void
-SET_Translated(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_Translated, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Translatef) (GLfloat, GLfloat, GLfloat);
-
-#define CALL_Translatef(disp, parameters) \
-    (* GET_Translatef(disp)) parameters
-static inline _glptr_Translatef
-GET_Translatef(struct _glapi_table *disp)
-{
-    return (_glptr_Translatef) (GET_by_offset(disp, _gloffset_Translatef));
-}
-
-static inline void
-SET_Translatef(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Translatef, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Viewport) (GLint, GLint, GLsizei, GLsizei);
-
-#define CALL_Viewport(disp, parameters) \
-    (* GET_Viewport(disp)) parameters
-static inline _glptr_Viewport
-GET_Viewport(struct _glapi_table *disp)
-{
-    return (_glptr_Viewport) (GET_by_offset(disp, _gloffset_Viewport));
-}
-
-static inline void
-SET_Viewport(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLint, GLint, GLsizei, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_Viewport, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ArrayElement) (GLint);
-
-#define CALL_ArrayElement(disp, parameters) \
-    (* GET_ArrayElement(disp)) parameters
-static inline _glptr_ArrayElement
-GET_ArrayElement(struct _glapi_table *disp)
-{
-    return (_glptr_ArrayElement) (GET_by_offset(disp, _gloffset_ArrayElement));
-}
-
-static inline void
-SET_ArrayElement(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLint))
-{
-    SET_by_offset(disp, _gloffset_ArrayElement, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindTexture) (GLenum, GLuint);
-
-#define CALL_BindTexture(disp, parameters) \
-    (* GET_BindTexture(disp)) parameters
-static inline _glptr_BindTexture
-GET_BindTexture(struct _glapi_table *disp)
-{
-    return (_glptr_BindTexture) (GET_by_offset(disp, _gloffset_BindTexture));
-}
-
-static inline void
-SET_BindTexture(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_BindTexture, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorPointer) (GLint, GLenum, GLsizei,
-                                                const GLvoid *);
-#define CALL_ColorPointer(disp, parameters) \
-    (* GET_ColorPointer(disp)) parameters
-static inline _glptr_ColorPointer
-GET_ColorPointer(struct _glapi_table *disp)
-{
-    return (_glptr_ColorPointer) (GET_by_offset(disp, _gloffset_ColorPointer));
-}
-
-static inline void
-SET_ColorPointer(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLint, GLenum, GLsizei, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_ColorPointer, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DisableClientState) (GLenum);
-
-#define CALL_DisableClientState(disp, parameters) \
-    (* GET_DisableClientState(disp)) parameters
-static inline _glptr_DisableClientState
-GET_DisableClientState(struct _glapi_table *disp)
-{
-    return (_glptr_DisableClientState) (GET_by_offset
-                                        (disp, _gloffset_DisableClientState));
-}
-
-static inline void
-SET_DisableClientState(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_DisableClientState, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DrawArrays) (GLenum, GLint, GLsizei);
-
-#define CALL_DrawArrays(disp, parameters) \
-    (* GET_DrawArrays(disp)) parameters
-static inline _glptr_DrawArrays
-GET_DrawArrays(struct _glapi_table *disp)
-{
-    return (_glptr_DrawArrays) (GET_by_offset(disp, _gloffset_DrawArrays));
-}
-
-static inline void
-SET_DrawArrays(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLint, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_DrawArrays, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DrawElements) (GLenum, GLsizei, GLenum,
-                                                const GLvoid *);
-#define CALL_DrawElements(disp, parameters) \
-    (* GET_DrawElements(disp)) parameters
-static inline _glptr_DrawElements
-GET_DrawElements(struct _glapi_table *disp)
-{
-    return (_glptr_DrawElements) (GET_by_offset(disp, _gloffset_DrawElements));
-}
-
-static inline void
-SET_DrawElements(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLsizei, GLenum,
-                                        const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_DrawElements, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EdgeFlagPointer) (GLsizei, const GLvoid *);
-
-#define CALL_EdgeFlagPointer(disp, parameters) \
-    (* GET_EdgeFlagPointer(disp)) parameters
-static inline _glptr_EdgeFlagPointer
-GET_EdgeFlagPointer(struct _glapi_table *disp)
-{
-    return (_glptr_EdgeFlagPointer) (GET_by_offset
-                                     (disp, _gloffset_EdgeFlagPointer));
-}
-
-static inline void
-SET_EdgeFlagPointer(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLsizei, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_EdgeFlagPointer, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EnableClientState) (GLenum);
-
-#define CALL_EnableClientState(disp, parameters) \
-    (* GET_EnableClientState(disp)) parameters
-static inline _glptr_EnableClientState
-GET_EnableClientState(struct _glapi_table *disp)
-{
-    return (_glptr_EnableClientState) (GET_by_offset
-                                       (disp, _gloffset_EnableClientState));
-}
-
-static inline void
-SET_EnableClientState(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_EnableClientState, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_IndexPointer) (GLenum, GLsizei,
-                                                const GLvoid *);
-#define CALL_IndexPointer(disp, parameters) \
-    (* GET_IndexPointer(disp)) parameters
-static inline _glptr_IndexPointer
-GET_IndexPointer(struct _glapi_table *disp)
-{
-    return (_glptr_IndexPointer) (GET_by_offset(disp, _gloffset_IndexPointer));
-}
-
-static inline void
-SET_IndexPointer(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLsizei, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_IndexPointer, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Indexub) (GLubyte);
-
-#define CALL_Indexub(disp, parameters) \
-    (* GET_Indexub(disp)) parameters
-static inline _glptr_Indexub
-GET_Indexub(struct _glapi_table *disp)
-{
-    return (_glptr_Indexub) (GET_by_offset(disp, _gloffset_Indexub));
-}
-
-static inline void
-SET_Indexub(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLubyte))
-{
-    SET_by_offset(disp, _gloffset_Indexub, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Indexubv) (const GLubyte *);
-
-#define CALL_Indexubv(disp, parameters) \
-    (* GET_Indexubv(disp)) parameters
-static inline _glptr_Indexubv
-GET_Indexubv(struct _glapi_table *disp)
-{
-    return (_glptr_Indexubv) (GET_by_offset(disp, _gloffset_Indexubv));
-}
-
-static inline void
-SET_Indexubv(struct _glapi_table *disp, void (GLAPIENTRYP fn) (const GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_Indexubv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_InterleavedArrays) (GLenum, GLsizei,
-                                                     const GLvoid *);
-#define CALL_InterleavedArrays(disp, parameters) \
-    (* GET_InterleavedArrays(disp)) parameters
-static inline _glptr_InterleavedArrays
-GET_InterleavedArrays(struct _glapi_table *disp)
-{
-    return (_glptr_InterleavedArrays) (GET_by_offset
-                                       (disp, _gloffset_InterleavedArrays));
-}
-
-static inline void
-SET_InterleavedArrays(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLsizei, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_InterleavedArrays, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_NormalPointer) (GLenum, GLsizei,
-                                                 const GLvoid *);
-#define CALL_NormalPointer(disp, parameters) \
-    (* GET_NormalPointer(disp)) parameters
-static inline _glptr_NormalPointer
-GET_NormalPointer(struct _glapi_table *disp)
-{
-    return (_glptr_NormalPointer) (GET_by_offset
-                                   (disp, _gloffset_NormalPointer));
-}
-
-static inline void
-SET_NormalPointer(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLsizei, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_NormalPointer, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PolygonOffset) (GLfloat, GLfloat);
-
-#define CALL_PolygonOffset(disp, parameters) \
-    (* GET_PolygonOffset(disp)) parameters
-static inline _glptr_PolygonOffset
-GET_PolygonOffset(struct _glapi_table *disp)
-{
-    return (_glptr_PolygonOffset) (GET_by_offset
-                                   (disp, _gloffset_PolygonOffset));
-}
-
-static inline void
-SET_PolygonOffset(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_PolygonOffset, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoordPointer) (GLint, GLenum, GLsizei,
-                                                   const GLvoid *);
-#define CALL_TexCoordPointer(disp, parameters) \
-    (* GET_TexCoordPointer(disp)) parameters
-static inline _glptr_TexCoordPointer
-GET_TexCoordPointer(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoordPointer) (GET_by_offset
-                                     (disp, _gloffset_TexCoordPointer));
-}
-
-static inline void
-SET_TexCoordPointer(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLint, GLenum, GLsizei,
-                                           const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_TexCoordPointer, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexPointer) (GLint, GLenum, GLsizei,
-                                                 const GLvoid *);
-#define CALL_VertexPointer(disp, parameters) \
-    (* GET_VertexPointer(disp)) parameters
-static inline _glptr_VertexPointer
-GET_VertexPointer(struct _glapi_table *disp)
-{
-    return (_glptr_VertexPointer) (GET_by_offset
-                                   (disp, _gloffset_VertexPointer));
-}
-
-static inline void
-SET_VertexPointer(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLenum, GLsizei,
-                                         const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_VertexPointer, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_AreTexturesResident) (GLsizei,
-                                                           const GLuint *,
-                                                           GLboolean *);
-#define CALL_AreTexturesResident(disp, parameters) \
-    (* GET_AreTexturesResident(disp)) parameters
-static inline _glptr_AreTexturesResident
-GET_AreTexturesResident(struct _glapi_table *disp)
-{
-    return (_glptr_AreTexturesResident) (GET_by_offset
-                                         (disp, _gloffset_AreTexturesResident));
-}
-
-static inline void
-SET_AreTexturesResident(struct _glapi_table *disp,
-                        GLboolean(GLAPIENTRYP fn) (GLsizei, const GLuint *,
-                                                   GLboolean *))
-{
-    SET_by_offset(disp, _gloffset_AreTexturesResident, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CopyTexImage1D) (GLenum, GLint, GLenum, GLint,
-                                                  GLint, GLsizei, GLint);
-#define CALL_CopyTexImage1D(disp, parameters) \
-    (* GET_CopyTexImage1D(disp)) parameters
-static inline _glptr_CopyTexImage1D
-GET_CopyTexImage1D(struct _glapi_table *disp)
-{
-    return (_glptr_CopyTexImage1D) (GET_by_offset
-                                    (disp, _gloffset_CopyTexImage1D));
-}
-
-static inline void
-SET_CopyTexImage1D(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLenum, GLint, GLenum, GLint, GLint,
-                                          GLsizei, GLint))
-{
-    SET_by_offset(disp, _gloffset_CopyTexImage1D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CopyTexImage2D) (GLenum, GLint, GLenum, GLint,
-                                                  GLint, GLsizei, GLsizei,
-                                                  GLint);
-#define CALL_CopyTexImage2D(disp, parameters) \
-    (* GET_CopyTexImage2D(disp)) parameters
-static inline _glptr_CopyTexImage2D
-GET_CopyTexImage2D(struct _glapi_table *disp)
-{
-    return (_glptr_CopyTexImage2D) (GET_by_offset
-                                    (disp, _gloffset_CopyTexImage2D));
-}
-
-static inline void
-SET_CopyTexImage2D(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLenum, GLint, GLenum, GLint, GLint,
-                                          GLsizei, GLsizei, GLint))
-{
-    SET_by_offset(disp, _gloffset_CopyTexImage2D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CopyTexSubImage1D) (GLenum, GLint, GLint,
-                                                     GLint, GLint, GLsizei);
-#define CALL_CopyTexSubImage1D(disp, parameters) \
-    (* GET_CopyTexSubImage1D(disp)) parameters
-static inline _glptr_CopyTexSubImage1D
-GET_CopyTexSubImage1D(struct _glapi_table *disp)
-{
-    return (_glptr_CopyTexSubImage1D) (GET_by_offset
-                                       (disp, _gloffset_CopyTexSubImage1D));
-}
-
-static inline void
-SET_CopyTexSubImage1D(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLint, GLint, GLint, GLint,
-                                             GLsizei))
-{
-    SET_by_offset(disp, _gloffset_CopyTexSubImage1D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CopyTexSubImage2D) (GLenum, GLint, GLint,
-                                                     GLint, GLint, GLint,
-                                                     GLsizei, GLsizei);
-#define CALL_CopyTexSubImage2D(disp, parameters) \
-    (* GET_CopyTexSubImage2D(disp)) parameters
-static inline _glptr_CopyTexSubImage2D
-GET_CopyTexSubImage2D(struct _glapi_table *disp)
-{
-    return (_glptr_CopyTexSubImage2D) (GET_by_offset
-                                       (disp, _gloffset_CopyTexSubImage2D));
-}
-
-static inline void
-SET_CopyTexSubImage2D(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLint, GLint, GLint, GLint,
-                                             GLint, GLsizei, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_CopyTexSubImage2D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteTextures) (GLsizei, const GLuint *);
-
-#define CALL_DeleteTextures(disp, parameters) \
-    (* GET_DeleteTextures(disp)) parameters
-static inline _glptr_DeleteTextures
-GET_DeleteTextures(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteTextures) (GET_by_offset
-                                    (disp, _gloffset_DeleteTextures));
-}
-
-static inline void
-SET_DeleteTextures(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_DeleteTextures, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenTextures) (GLsizei, GLuint *);
-
-#define CALL_GenTextures(disp, parameters) \
-    (* GET_GenTextures(disp)) parameters
-static inline _glptr_GenTextures
-GET_GenTextures(struct _glapi_table *disp)
-{
-    return (_glptr_GenTextures) (GET_by_offset(disp, _gloffset_GenTextures));
-}
-
-static inline void
-SET_GenTextures(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GenTextures, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetPointerv) (GLenum, GLvoid **);
-
-#define CALL_GetPointerv(disp, parameters) \
-    (* GET_GetPointerv(disp)) parameters
-static inline _glptr_GetPointerv
-GET_GetPointerv(struct _glapi_table *disp)
-{
-    return (_glptr_GetPointerv) (GET_by_offset(disp, _gloffset_GetPointerv));
-}
-
-static inline void
-SET_GetPointerv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, GLvoid **))
-{
-    SET_by_offset(disp, _gloffset_GetPointerv, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsTexture) (GLuint);
-
-#define CALL_IsTexture(disp, parameters) \
-    (* GET_IsTexture(disp)) parameters
-static inline _glptr_IsTexture
-GET_IsTexture(struct _glapi_table *disp)
-{
-    return (_glptr_IsTexture) (GET_by_offset(disp, _gloffset_IsTexture));
-}
-
-static inline void
-SET_IsTexture(struct _glapi_table *disp, GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsTexture, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PrioritizeTextures) (GLsizei, const GLuint *,
-                                                      const GLclampf *);
-#define CALL_PrioritizeTextures(disp, parameters) \
-    (* GET_PrioritizeTextures(disp)) parameters
-static inline _glptr_PrioritizeTextures
-GET_PrioritizeTextures(struct _glapi_table *disp)
-{
-    return (_glptr_PrioritizeTextures) (GET_by_offset
-                                        (disp, _gloffset_PrioritizeTextures));
-}
-
-static inline void
-SET_PrioritizeTextures(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLsizei, const GLuint *,
-                                              const GLclampf *))
-{
-    SET_by_offset(disp, _gloffset_PrioritizeTextures, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexSubImage1D) (GLenum, GLint, GLint, GLsizei,
-                                                 GLenum, GLenum,
-                                                 const GLvoid *);
-#define CALL_TexSubImage1D(disp, parameters) \
-    (* GET_TexSubImage1D(disp)) parameters
-static inline _glptr_TexSubImage1D
-GET_TexSubImage1D(struct _glapi_table *disp)
-{
-    return (_glptr_TexSubImage1D) (GET_by_offset
-                                   (disp, _gloffset_TexSubImage1D));
-}
-
-static inline void
-SET_TexSubImage1D(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLint, GLint, GLsizei, GLenum,
-                                         GLenum, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_TexSubImage1D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexSubImage2D) (GLenum, GLint, GLint, GLint,
-                                                 GLsizei, GLsizei, GLenum,
-                                                 GLenum, const GLvoid *);
-#define CALL_TexSubImage2D(disp, parameters) \
-    (* GET_TexSubImage2D(disp)) parameters
-static inline _glptr_TexSubImage2D
-GET_TexSubImage2D(struct _glapi_table *disp)
-{
-    return (_glptr_TexSubImage2D) (GET_by_offset
-                                   (disp, _gloffset_TexSubImage2D));
-}
-
-static inline void
-SET_TexSubImage2D(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLint, GLint, GLint, GLsizei,
-                                         GLsizei, GLenum, GLenum,
-                                         const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_TexSubImage2D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PopClientAttrib) (void);
-
-#define CALL_PopClientAttrib(disp, parameters) \
-    (* GET_PopClientAttrib(disp)) parameters
-static inline _glptr_PopClientAttrib
-GET_PopClientAttrib(struct _glapi_table *disp)
-{
-    return (_glptr_PopClientAttrib) (GET_by_offset
-                                     (disp, _gloffset_PopClientAttrib));
-}
-
-static inline void
-SET_PopClientAttrib(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_PopClientAttrib, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PushClientAttrib) (GLbitfield);
-
-#define CALL_PushClientAttrib(disp, parameters) \
-    (* GET_PushClientAttrib(disp)) parameters
-static inline _glptr_PushClientAttrib
-GET_PushClientAttrib(struct _glapi_table *disp)
-{
-    return (_glptr_PushClientAttrib) (GET_by_offset
-                                      (disp, _gloffset_PushClientAttrib));
-}
-
-static inline void
-SET_PushClientAttrib(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLbitfield))
-{
-    SET_by_offset(disp, _gloffset_PushClientAttrib, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BlendColor) (GLclampf, GLclampf, GLclampf,
-                                              GLclampf);
-#define CALL_BlendColor(disp, parameters) \
-    (* GET_BlendColor(disp)) parameters
-static inline _glptr_BlendColor
-GET_BlendColor(struct _glapi_table *disp)
-{
-    return (_glptr_BlendColor) (GET_by_offset(disp, _gloffset_BlendColor));
-}
-
-static inline void
-SET_BlendColor(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLclampf, GLclampf, GLclampf, GLclampf))
-{
-    SET_by_offset(disp, _gloffset_BlendColor, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BlendEquation) (GLenum);
-
-#define CALL_BlendEquation(disp, parameters) \
-    (* GET_BlendEquation(disp)) parameters
-static inline _glptr_BlendEquation
-GET_BlendEquation(struct _glapi_table *disp)
-{
-    return (_glptr_BlendEquation) (GET_by_offset
-                                   (disp, _gloffset_BlendEquation));
-}
-
-static inline void
-SET_BlendEquation(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_BlendEquation, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DrawRangeElements) (GLenum, GLuint, GLuint,
-                                                     GLsizei, GLenum,
-                                                     const GLvoid *);
-#define CALL_DrawRangeElements(disp, parameters) \
-    (* GET_DrawRangeElements(disp)) parameters
-static inline _glptr_DrawRangeElements
-GET_DrawRangeElements(struct _glapi_table *disp)
-{
-    return (_glptr_DrawRangeElements) (GET_by_offset
-                                       (disp, _gloffset_DrawRangeElements));
-}
-
-static inline void
-SET_DrawRangeElements(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLuint, GLuint, GLsizei,
-                                             GLenum, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_DrawRangeElements, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorTable) (GLenum, GLenum, GLsizei, GLenum,
-                                              GLenum, const GLvoid *);
-#define CALL_ColorTable(disp, parameters) \
-    (* GET_ColorTable(disp)) parameters
-static inline _glptr_ColorTable
-GET_ColorTable(struct _glapi_table *disp)
-{
-    return (_glptr_ColorTable) (GET_by_offset(disp, _gloffset_ColorTable));
-}
-
-static inline void
-SET_ColorTable(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLenum, GLsizei, GLenum, GLenum,
-                                      const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_ColorTable, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorTableParameterfv) (GLenum, GLenum,
-                                                         const GLfloat *);
-#define CALL_ColorTableParameterfv(disp, parameters) \
-    (* GET_ColorTableParameterfv(disp)) parameters
-static inline _glptr_ColorTableParameterfv
-GET_ColorTableParameterfv(struct _glapi_table *disp)
-{
-    return (_glptr_ColorTableParameterfv) (GET_by_offset
-                                           (disp,
-                                            _gloffset_ColorTableParameterfv));
-}
-
-static inline void
-SET_ColorTableParameterfv(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, GLenum,
-                                                 const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_ColorTableParameterfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorTableParameteriv) (GLenum, GLenum,
-                                                         const GLint *);
-#define CALL_ColorTableParameteriv(disp, parameters) \
-    (* GET_ColorTableParameteriv(disp)) parameters
-static inline _glptr_ColorTableParameteriv
-GET_ColorTableParameteriv(struct _glapi_table *disp)
-{
-    return (_glptr_ColorTableParameteriv) (GET_by_offset
-                                           (disp,
-                                            _gloffset_ColorTableParameteriv));
-}
-
-static inline void
-SET_ColorTableParameteriv(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_ColorTableParameteriv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CopyColorTable) (GLenum, GLenum, GLint, GLint,
-                                                  GLsizei);
-#define CALL_CopyColorTable(disp, parameters) \
-    (* GET_CopyColorTable(disp)) parameters
-static inline _glptr_CopyColorTable
-GET_CopyColorTable(struct _glapi_table *disp)
-{
-    return (_glptr_CopyColorTable) (GET_by_offset
-                                    (disp, _gloffset_CopyColorTable));
-}
-
-static inline void
-SET_CopyColorTable(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLenum, GLenum, GLint, GLint,
-                                          GLsizei))
-{
-    SET_by_offset(disp, _gloffset_CopyColorTable, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetColorTable) (GLenum, GLenum, GLenum,
-                                                 GLvoid *);
-#define CALL_GetColorTable(disp, parameters) \
-    (* GET_GetColorTable(disp)) parameters
-static inline _glptr_GetColorTable
-GET_GetColorTable(struct _glapi_table *disp)
-{
-    return (_glptr_GetColorTable) (GET_by_offset
-                                   (disp, _gloffset_GetColorTable));
-}
-
-static inline void
-SET_GetColorTable(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetColorTable, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetColorTableParameterfv) (GLenum, GLenum,
-                                                            GLfloat *);
-#define CALL_GetColorTableParameterfv(disp, parameters) \
-    (* GET_GetColorTableParameterfv(disp)) parameters
-static inline _glptr_GetColorTableParameterfv
-GET_GetColorTableParameterfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetColorTableParameterfv) (GET_by_offset
-                                              (disp,
-                                               _gloffset_GetColorTableParameterfv));
-}
-
-static inline void
-SET_GetColorTableParameterfv(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetColorTableParameterfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetColorTableParameteriv) (GLenum, GLenum,
-                                                            GLint *);
-#define CALL_GetColorTableParameteriv(disp, parameters) \
-    (* GET_GetColorTableParameteriv(disp)) parameters
-static inline _glptr_GetColorTableParameteriv
-GET_GetColorTableParameteriv(struct _glapi_table *disp)
-{
-    return (_glptr_GetColorTableParameteriv) (GET_by_offset
-                                              (disp,
-                                               _gloffset_GetColorTableParameteriv));
-}
-
-static inline void
-SET_GetColorTableParameteriv(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetColorTableParameteriv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorSubTable) (GLenum, GLsizei, GLsizei,
-                                                 GLenum, GLenum,
-                                                 const GLvoid *);
-#define CALL_ColorSubTable(disp, parameters) \
-    (* GET_ColorSubTable(disp)) parameters
-static inline _glptr_ColorSubTable
-GET_ColorSubTable(struct _glapi_table *disp)
-{
-    return (_glptr_ColorSubTable) (GET_by_offset
-                                   (disp, _gloffset_ColorSubTable));
-}
-
-static inline void
-SET_ColorSubTable(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLsizei, GLsizei, GLenum,
-                                         GLenum, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_ColorSubTable, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CopyColorSubTable) (GLenum, GLsizei, GLint,
-                                                     GLint, GLsizei);
-#define CALL_CopyColorSubTable(disp, parameters) \
-    (* GET_CopyColorSubTable(disp)) parameters
-static inline _glptr_CopyColorSubTable
-GET_CopyColorSubTable(struct _glapi_table *disp)
-{
-    return (_glptr_CopyColorSubTable) (GET_by_offset
-                                       (disp, _gloffset_CopyColorSubTable));
-}
-
-static inline void
-SET_CopyColorSubTable(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLsizei, GLint, GLint,
-                                             GLsizei))
-{
-    SET_by_offset(disp, _gloffset_CopyColorSubTable, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ConvolutionFilter1D) (GLenum, GLenum, GLsizei,
-                                                       GLenum, GLenum,
-                                                       const GLvoid *);
-#define CALL_ConvolutionFilter1D(disp, parameters) \
-    (* GET_ConvolutionFilter1D(disp)) parameters
-static inline _glptr_ConvolutionFilter1D
-GET_ConvolutionFilter1D(struct _glapi_table *disp)
-{
-    return (_glptr_ConvolutionFilter1D) (GET_by_offset
-                                         (disp, _gloffset_ConvolutionFilter1D));
-}
-
-static inline void
-SET_ConvolutionFilter1D(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLenum, GLsizei, GLenum,
-                                               GLenum, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_ConvolutionFilter1D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ConvolutionFilter2D) (GLenum, GLenum, GLsizei,
-                                                       GLsizei, GLenum, GLenum,
-                                                       const GLvoid *);
-#define CALL_ConvolutionFilter2D(disp, parameters) \
-    (* GET_ConvolutionFilter2D(disp)) parameters
-static inline _glptr_ConvolutionFilter2D
-GET_ConvolutionFilter2D(struct _glapi_table *disp)
-{
-    return (_glptr_ConvolutionFilter2D) (GET_by_offset
-                                         (disp, _gloffset_ConvolutionFilter2D));
-}
-
-static inline void
-SET_ConvolutionFilter2D(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLenum, GLsizei, GLsizei,
-                                               GLenum, GLenum, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_ConvolutionFilter2D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ConvolutionParameterf) (GLenum, GLenum,
-                                                         GLfloat);
-#define CALL_ConvolutionParameterf(disp, parameters) \
-    (* GET_ConvolutionParameterf(disp)) parameters
-static inline _glptr_ConvolutionParameterf
-GET_ConvolutionParameterf(struct _glapi_table *disp)
-{
-    return (_glptr_ConvolutionParameterf) (GET_by_offset
-                                           (disp,
-                                            _gloffset_ConvolutionParameterf));
-}
-
-static inline void
-SET_ConvolutionParameterf(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_ConvolutionParameterf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ConvolutionParameterfv) (GLenum, GLenum,
-                                                          const GLfloat *);
-#define CALL_ConvolutionParameterfv(disp, parameters) \
-    (* GET_ConvolutionParameterfv(disp)) parameters
-static inline _glptr_ConvolutionParameterfv
-GET_ConvolutionParameterfv(struct _glapi_table *disp)
-{
-    return (_glptr_ConvolutionParameterfv) (GET_by_offset
-                                            (disp,
-                                             _gloffset_ConvolutionParameterfv));
-}
-
-static inline void
-SET_ConvolutionParameterfv(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLenum,
-                                                  const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_ConvolutionParameterfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ConvolutionParameteri) (GLenum, GLenum, GLint);
-
-#define CALL_ConvolutionParameteri(disp, parameters) \
-    (* GET_ConvolutionParameteri(disp)) parameters
-static inline _glptr_ConvolutionParameteri
-GET_ConvolutionParameteri(struct _glapi_table *disp)
-{
-    return (_glptr_ConvolutionParameteri) (GET_by_offset
-                                           (disp,
-                                            _gloffset_ConvolutionParameteri));
-}
-
-static inline void
-SET_ConvolutionParameteri(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_ConvolutionParameteri, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ConvolutionParameteriv) (GLenum, GLenum,
-                                                          const GLint *);
-#define CALL_ConvolutionParameteriv(disp, parameters) \
-    (* GET_ConvolutionParameteriv(disp)) parameters
-static inline _glptr_ConvolutionParameteriv
-GET_ConvolutionParameteriv(struct _glapi_table *disp)
-{
-    return (_glptr_ConvolutionParameteriv) (GET_by_offset
-                                            (disp,
-                                             _gloffset_ConvolutionParameteriv));
-}
-
-static inline void
-SET_ConvolutionParameteriv(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLenum,
-                                                  const GLint *))
-{
-    SET_by_offset(disp, _gloffset_ConvolutionParameteriv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CopyConvolutionFilter1D) (GLenum, GLenum,
-                                                           GLint, GLint,
-                                                           GLsizei);
-#define CALL_CopyConvolutionFilter1D(disp, parameters) \
-    (* GET_CopyConvolutionFilter1D(disp)) parameters
-static inline _glptr_CopyConvolutionFilter1D
-GET_CopyConvolutionFilter1D(struct _glapi_table *disp)
-{
-    return (_glptr_CopyConvolutionFilter1D) (GET_by_offset
-                                             (disp,
-                                              _gloffset_CopyConvolutionFilter1D));
-}
-
-static inline void
-SET_CopyConvolutionFilter1D(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLenum, GLint, GLint,
-                                                   GLsizei))
-{
-    SET_by_offset(disp, _gloffset_CopyConvolutionFilter1D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CopyConvolutionFilter2D) (GLenum, GLenum,
-                                                           GLint, GLint,
-                                                           GLsizei, GLsizei);
-#define CALL_CopyConvolutionFilter2D(disp, parameters) \
-    (* GET_CopyConvolutionFilter2D(disp)) parameters
-static inline _glptr_CopyConvolutionFilter2D
-GET_CopyConvolutionFilter2D(struct _glapi_table *disp)
-{
-    return (_glptr_CopyConvolutionFilter2D) (GET_by_offset
-                                             (disp,
-                                              _gloffset_CopyConvolutionFilter2D));
-}
-
-static inline void
-SET_CopyConvolutionFilter2D(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLenum, GLint, GLint,
-                                                   GLsizei, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_CopyConvolutionFilter2D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetConvolutionFilter) (GLenum, GLenum, GLenum,
-                                                        GLvoid *);
-#define CALL_GetConvolutionFilter(disp, parameters) \
-    (* GET_GetConvolutionFilter(disp)) parameters
-static inline _glptr_GetConvolutionFilter
-GET_GetConvolutionFilter(struct _glapi_table *disp)
-{
-    return (_glptr_GetConvolutionFilter) (GET_by_offset
-                                          (disp,
-                                           _gloffset_GetConvolutionFilter));
-}
-
-static inline void
-SET_GetConvolutionFilter(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum,
-                                                GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetConvolutionFilter, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetConvolutionParameterfv) (GLenum, GLenum,
-                                                             GLfloat *);
-#define CALL_GetConvolutionParameterfv(disp, parameters) \
-    (* GET_GetConvolutionParameterfv(disp)) parameters
-static inline _glptr_GetConvolutionParameterfv
-GET_GetConvolutionParameterfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetConvolutionParameterfv) (GET_by_offset
-                                               (disp,
-                                                _gloffset_GetConvolutionParameterfv));
-}
-
-static inline void
-SET_GetConvolutionParameterfv(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetConvolutionParameterfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetConvolutionParameteriv) (GLenum, GLenum,
-                                                             GLint *);
-#define CALL_GetConvolutionParameteriv(disp, parameters) \
-    (* GET_GetConvolutionParameteriv(disp)) parameters
-static inline _glptr_GetConvolutionParameteriv
-GET_GetConvolutionParameteriv(struct _glapi_table *disp)
-{
-    return (_glptr_GetConvolutionParameteriv) (GET_by_offset
-                                               (disp,
-                                                _gloffset_GetConvolutionParameteriv));
-}
-
-static inline void
-SET_GetConvolutionParameteriv(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetConvolutionParameteriv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetSeparableFilter) (GLenum, GLenum, GLenum,
-                                                      GLvoid *, GLvoid *,
-                                                      GLvoid *);
-#define CALL_GetSeparableFilter(disp, parameters) \
-    (* GET_GetSeparableFilter(disp)) parameters
-static inline _glptr_GetSeparableFilter
-GET_GetSeparableFilter(struct _glapi_table *disp)
-{
-    return (_glptr_GetSeparableFilter) (GET_by_offset
-                                        (disp, _gloffset_GetSeparableFilter));
-}
-
-static inline void
-SET_GetSeparableFilter(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum, GLvoid *,
-                                              GLvoid *, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetSeparableFilter, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SeparableFilter2D) (GLenum, GLenum, GLsizei,
-                                                     GLsizei, GLenum, GLenum,
-                                                     const GLvoid *,
-                                                     const GLvoid *);
-#define CALL_SeparableFilter2D(disp, parameters) \
-    (* GET_SeparableFilter2D(disp)) parameters
-static inline _glptr_SeparableFilter2D
-GET_SeparableFilter2D(struct _glapi_table *disp)
-{
-    return (_glptr_SeparableFilter2D) (GET_by_offset
-                                       (disp, _gloffset_SeparableFilter2D));
-}
-
-static inline void
-SET_SeparableFilter2D(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLenum, GLsizei, GLsizei,
-                                             GLenum, GLenum, const GLvoid *,
-                                             const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_SeparableFilter2D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetHistogram) (GLenum, GLboolean, GLenum,
-                                                GLenum, GLvoid *);
-#define CALL_GetHistogram(disp, parameters) \
-    (* GET_GetHistogram(disp)) parameters
-static inline _glptr_GetHistogram
-GET_GetHistogram(struct _glapi_table *disp)
-{
-    return (_glptr_GetHistogram) (GET_by_offset(disp, _gloffset_GetHistogram));
-}
-
-static inline void
-SET_GetHistogram(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLboolean, GLenum, GLenum,
-                                        GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetHistogram, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetHistogramParameterfv) (GLenum, GLenum,
-                                                           GLfloat *);
-#define CALL_GetHistogramParameterfv(disp, parameters) \
-    (* GET_GetHistogramParameterfv(disp)) parameters
-static inline _glptr_GetHistogramParameterfv
-GET_GetHistogramParameterfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetHistogramParameterfv) (GET_by_offset
-                                             (disp,
-                                              _gloffset_GetHistogramParameterfv));
-}
-
-static inline void
-SET_GetHistogramParameterfv(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetHistogramParameterfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetHistogramParameteriv) (GLenum, GLenum,
-                                                           GLint *);
-#define CALL_GetHistogramParameteriv(disp, parameters) \
-    (* GET_GetHistogramParameteriv(disp)) parameters
-static inline _glptr_GetHistogramParameteriv
-GET_GetHistogramParameteriv(struct _glapi_table *disp)
-{
-    return (_glptr_GetHistogramParameteriv) (GET_by_offset
-                                             (disp,
-                                              _gloffset_GetHistogramParameteriv));
-}
-
-static inline void
-SET_GetHistogramParameteriv(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetHistogramParameteriv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetMinmax) (GLenum, GLboolean, GLenum, GLenum,
-                                             GLvoid *);
-#define CALL_GetMinmax(disp, parameters) \
-    (* GET_GetMinmax(disp)) parameters
-static inline _glptr_GetMinmax
-GET_GetMinmax(struct _glapi_table *disp)
-{
-    return (_glptr_GetMinmax) (GET_by_offset(disp, _gloffset_GetMinmax));
-}
-
-static inline void
-SET_GetMinmax(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLenum, GLboolean, GLenum, GLenum,
-                                     GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetMinmax, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetMinmaxParameterfv) (GLenum, GLenum,
-                                                        GLfloat *);
-#define CALL_GetMinmaxParameterfv(disp, parameters) \
-    (* GET_GetMinmaxParameterfv(disp)) parameters
-static inline _glptr_GetMinmaxParameterfv
-GET_GetMinmaxParameterfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetMinmaxParameterfv) (GET_by_offset
-                                          (disp,
-                                           _gloffset_GetMinmaxParameterfv));
-}
-
-static inline void
-SET_GetMinmaxParameterfv(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLenum, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetMinmaxParameterfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetMinmaxParameteriv) (GLenum, GLenum,
-                                                        GLint *);
-#define CALL_GetMinmaxParameteriv(disp, parameters) \
-    (* GET_GetMinmaxParameteriv(disp)) parameters
-static inline _glptr_GetMinmaxParameteriv
-GET_GetMinmaxParameteriv(struct _glapi_table *disp)
-{
-    return (_glptr_GetMinmaxParameteriv) (GET_by_offset
-                                          (disp,
-                                           _gloffset_GetMinmaxParameteriv));
-}
-
-static inline void
-SET_GetMinmaxParameteriv(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetMinmaxParameteriv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Histogram) (GLenum, GLsizei, GLenum,
-                                             GLboolean);
-#define CALL_Histogram(disp, parameters) \
-    (* GET_Histogram(disp)) parameters
-static inline _glptr_Histogram
-GET_Histogram(struct _glapi_table *disp)
-{
-    return (_glptr_Histogram) (GET_by_offset(disp, _gloffset_Histogram));
-}
-
-static inline void
-SET_Histogram(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLenum, GLsizei, GLenum, GLboolean))
-{
-    SET_by_offset(disp, _gloffset_Histogram, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Minmax) (GLenum, GLenum, GLboolean);
-
-#define CALL_Minmax(disp, parameters) \
-    (* GET_Minmax(disp)) parameters
-static inline _glptr_Minmax
-GET_Minmax(struct _glapi_table *disp)
-{
-    return (_glptr_Minmax) (GET_by_offset(disp, _gloffset_Minmax));
-}
-
-static inline void
-SET_Minmax(struct _glapi_table *disp,
-           void (GLAPIENTRYP fn) (GLenum, GLenum, GLboolean))
-{
-    SET_by_offset(disp, _gloffset_Minmax, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ResetHistogram) (GLenum);
-
-#define CALL_ResetHistogram(disp, parameters) \
-    (* GET_ResetHistogram(disp)) parameters
-static inline _glptr_ResetHistogram
-GET_ResetHistogram(struct _glapi_table *disp)
-{
-    return (_glptr_ResetHistogram) (GET_by_offset
-                                    (disp, _gloffset_ResetHistogram));
-}
-
-static inline void
-SET_ResetHistogram(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_ResetHistogram, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ResetMinmax) (GLenum);
-
-#define CALL_ResetMinmax(disp, parameters) \
-    (* GET_ResetMinmax(disp)) parameters
-static inline _glptr_ResetMinmax
-GET_ResetMinmax(struct _glapi_table *disp)
-{
-    return (_glptr_ResetMinmax) (GET_by_offset(disp, _gloffset_ResetMinmax));
-}
-
-static inline void
-SET_ResetMinmax(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_ResetMinmax, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexImage3D) (GLenum, GLint, GLint, GLsizei,
-                                              GLsizei, GLsizei, GLint, GLenum,
-                                              GLenum, const GLvoid *);
-#define CALL_TexImage3D(disp, parameters) \
-    (* GET_TexImage3D(disp)) parameters
-static inline _glptr_TexImage3D
-GET_TexImage3D(struct _glapi_table *disp)
-{
-    return (_glptr_TexImage3D) (GET_by_offset(disp, _gloffset_TexImage3D));
-}
-
-static inline void
-SET_TexImage3D(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLint, GLint, GLsizei, GLsizei,
-                                      GLsizei, GLint, GLenum, GLenum,
-                                      const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_TexImage3D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexSubImage3D) (GLenum, GLint, GLint, GLint,
-                                                 GLint, GLsizei, GLsizei,
-                                                 GLsizei, GLenum, GLenum,
-                                                 const GLvoid *);
-#define CALL_TexSubImage3D(disp, parameters) \
-    (* GET_TexSubImage3D(disp)) parameters
-static inline _glptr_TexSubImage3D
-GET_TexSubImage3D(struct _glapi_table *disp)
-{
-    return (_glptr_TexSubImage3D) (GET_by_offset
-                                   (disp, _gloffset_TexSubImage3D));
-}
-
-static inline void
-SET_TexSubImage3D(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLint, GLint, GLint, GLint,
-                                         GLsizei, GLsizei, GLsizei, GLenum,
-                                         GLenum, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_TexSubImage3D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CopyTexSubImage3D) (GLenum, GLint, GLint,
-                                                     GLint, GLint, GLint, GLint,
-                                                     GLsizei, GLsizei);
-#define CALL_CopyTexSubImage3D(disp, parameters) \
-    (* GET_CopyTexSubImage3D(disp)) parameters
-static inline _glptr_CopyTexSubImage3D
-GET_CopyTexSubImage3D(struct _glapi_table *disp)
-{
-    return (_glptr_CopyTexSubImage3D) (GET_by_offset
-                                       (disp, _gloffset_CopyTexSubImage3D));
-}
-
-static inline void
-SET_CopyTexSubImage3D(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLint, GLint, GLint, GLint,
-                                             GLint, GLint, GLsizei, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_CopyTexSubImage3D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ActiveTextureARB) (GLenum);
-
-#define CALL_ActiveTextureARB(disp, parameters) \
-    (* GET_ActiveTextureARB(disp)) parameters
-static inline _glptr_ActiveTextureARB
-GET_ActiveTextureARB(struct _glapi_table *disp)
-{
-    return (_glptr_ActiveTextureARB) (GET_by_offset
-                                      (disp, _gloffset_ActiveTextureARB));
-}
-
-static inline void
-SET_ActiveTextureARB(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_ActiveTextureARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClientActiveTextureARB) (GLenum);
-
-#define CALL_ClientActiveTextureARB(disp, parameters) \
-    (* GET_ClientActiveTextureARB(disp)) parameters
-static inline _glptr_ClientActiveTextureARB
-GET_ClientActiveTextureARB(struct _glapi_table *disp)
-{
-    return (_glptr_ClientActiveTextureARB) (GET_by_offset
-                                            (disp,
-                                             _gloffset_ClientActiveTextureARB));
-}
-
-static inline void
-SET_ClientActiveTextureARB(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_ClientActiveTextureARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord1dARB) (GLenum, GLdouble);
-
-#define CALL_MultiTexCoord1dARB(disp, parameters) \
-    (* GET_MultiTexCoord1dARB(disp)) parameters
-static inline _glptr_MultiTexCoord1dARB
-GET_MultiTexCoord1dARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord1dARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord1dARB));
-}
-
-static inline void
-SET_MultiTexCoord1dARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord1dARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord1dvARB) (GLenum,
-                                                       const GLdouble *);
-#define CALL_MultiTexCoord1dvARB(disp, parameters) \
-    (* GET_MultiTexCoord1dvARB(disp)) parameters
-static inline _glptr_MultiTexCoord1dvARB
-GET_MultiTexCoord1dvARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord1dvARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord1dvARB));
-}
-
-static inline void
-SET_MultiTexCoord1dvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord1dvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord1fARB) (GLenum, GLfloat);
-
-#define CALL_MultiTexCoord1fARB(disp, parameters) \
-    (* GET_MultiTexCoord1fARB(disp)) parameters
-static inline _glptr_MultiTexCoord1fARB
-GET_MultiTexCoord1fARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord1fARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord1fARB));
-}
-
-static inline void
-SET_MultiTexCoord1fARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord1fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord1fvARB) (GLenum, const GLfloat *);
-
-#define CALL_MultiTexCoord1fvARB(disp, parameters) \
-    (* GET_MultiTexCoord1fvARB(disp)) parameters
-static inline _glptr_MultiTexCoord1fvARB
-GET_MultiTexCoord1fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord1fvARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord1fvARB));
-}
-
-static inline void
-SET_MultiTexCoord1fvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord1fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord1iARB) (GLenum, GLint);
-
-#define CALL_MultiTexCoord1iARB(disp, parameters) \
-    (* GET_MultiTexCoord1iARB(disp)) parameters
-static inline _glptr_MultiTexCoord1iARB
-GET_MultiTexCoord1iARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord1iARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord1iARB));
-}
-
-static inline void
-SET_MultiTexCoord1iARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord1iARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord1ivARB) (GLenum, const GLint *);
-
-#define CALL_MultiTexCoord1ivARB(disp, parameters) \
-    (* GET_MultiTexCoord1ivARB(disp)) parameters
-static inline _glptr_MultiTexCoord1ivARB
-GET_MultiTexCoord1ivARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord1ivARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord1ivARB));
-}
-
-static inline void
-SET_MultiTexCoord1ivARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord1ivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord1sARB) (GLenum, GLshort);
-
-#define CALL_MultiTexCoord1sARB(disp, parameters) \
-    (* GET_MultiTexCoord1sARB(disp)) parameters
-static inline _glptr_MultiTexCoord1sARB
-GET_MultiTexCoord1sARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord1sARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord1sARB));
-}
-
-static inline void
-SET_MultiTexCoord1sARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLshort))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord1sARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord1svARB) (GLenum, const GLshort *);
-
-#define CALL_MultiTexCoord1svARB(disp, parameters) \
-    (* GET_MultiTexCoord1svARB(disp)) parameters
-static inline _glptr_MultiTexCoord1svARB
-GET_MultiTexCoord1svARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord1svARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord1svARB));
-}
-
-static inline void
-SET_MultiTexCoord1svARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord1svARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord2dARB) (GLenum, GLdouble,
-                                                      GLdouble);
-#define CALL_MultiTexCoord2dARB(disp, parameters) \
-    (* GET_MultiTexCoord2dARB(disp)) parameters
-static inline _glptr_MultiTexCoord2dARB
-GET_MultiTexCoord2dARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord2dARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord2dARB));
-}
-
-static inline void
-SET_MultiTexCoord2dARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord2dARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord2dvARB) (GLenum,
-                                                       const GLdouble *);
-#define CALL_MultiTexCoord2dvARB(disp, parameters) \
-    (* GET_MultiTexCoord2dvARB(disp)) parameters
-static inline _glptr_MultiTexCoord2dvARB
-GET_MultiTexCoord2dvARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord2dvARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord2dvARB));
-}
-
-static inline void
-SET_MultiTexCoord2dvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord2dvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord2fARB) (GLenum, GLfloat, GLfloat);
-
-#define CALL_MultiTexCoord2fARB(disp, parameters) \
-    (* GET_MultiTexCoord2fARB(disp)) parameters
-static inline _glptr_MultiTexCoord2fARB
-GET_MultiTexCoord2fARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord2fARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord2fARB));
-}
-
-static inline void
-SET_MultiTexCoord2fARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord2fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord2fvARB) (GLenum, const GLfloat *);
-
-#define CALL_MultiTexCoord2fvARB(disp, parameters) \
-    (* GET_MultiTexCoord2fvARB(disp)) parameters
-static inline _glptr_MultiTexCoord2fvARB
-GET_MultiTexCoord2fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord2fvARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord2fvARB));
-}
-
-static inline void
-SET_MultiTexCoord2fvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord2fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord2iARB) (GLenum, GLint, GLint);
-
-#define CALL_MultiTexCoord2iARB(disp, parameters) \
-    (* GET_MultiTexCoord2iARB(disp)) parameters
-static inline _glptr_MultiTexCoord2iARB
-GET_MultiTexCoord2iARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord2iARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord2iARB));
-}
-
-static inline void
-SET_MultiTexCoord2iARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord2iARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord2ivARB) (GLenum, const GLint *);
-
-#define CALL_MultiTexCoord2ivARB(disp, parameters) \
-    (* GET_MultiTexCoord2ivARB(disp)) parameters
-static inline _glptr_MultiTexCoord2ivARB
-GET_MultiTexCoord2ivARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord2ivARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord2ivARB));
-}
-
-static inline void
-SET_MultiTexCoord2ivARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord2ivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord2sARB) (GLenum, GLshort, GLshort);
-
-#define CALL_MultiTexCoord2sARB(disp, parameters) \
-    (* GET_MultiTexCoord2sARB(disp)) parameters
-static inline _glptr_MultiTexCoord2sARB
-GET_MultiTexCoord2sARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord2sARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord2sARB));
-}
-
-static inline void
-SET_MultiTexCoord2sARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord2sARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord2svARB) (GLenum, const GLshort *);
-
-#define CALL_MultiTexCoord2svARB(disp, parameters) \
-    (* GET_MultiTexCoord2svARB(disp)) parameters
-static inline _glptr_MultiTexCoord2svARB
-GET_MultiTexCoord2svARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord2svARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord2svARB));
-}
-
-static inline void
-SET_MultiTexCoord2svARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord2svARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord3dARB) (GLenum, GLdouble,
-                                                      GLdouble, GLdouble);
-#define CALL_MultiTexCoord3dARB(disp, parameters) \
-    (* GET_MultiTexCoord3dARB(disp)) parameters
-static inline _glptr_MultiTexCoord3dARB
-GET_MultiTexCoord3dARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord3dARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord3dARB));
-}
-
-static inline void
-SET_MultiTexCoord3dARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLdouble, GLdouble,
-                                              GLdouble))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord3dARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord3dvARB) (GLenum,
-                                                       const GLdouble *);
-#define CALL_MultiTexCoord3dvARB(disp, parameters) \
-    (* GET_MultiTexCoord3dvARB(disp)) parameters
-static inline _glptr_MultiTexCoord3dvARB
-GET_MultiTexCoord3dvARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord3dvARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord3dvARB));
-}
-
-static inline void
-SET_MultiTexCoord3dvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord3dvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord3fARB) (GLenum, GLfloat, GLfloat,
-                                                      GLfloat);
-#define CALL_MultiTexCoord3fARB(disp, parameters) \
-    (* GET_MultiTexCoord3fARB(disp)) parameters
-static inline _glptr_MultiTexCoord3fARB
-GET_MultiTexCoord3fARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord3fARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord3fARB));
-}
-
-static inline void
-SET_MultiTexCoord3fARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLfloat, GLfloat,
-                                              GLfloat))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord3fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord3fvARB) (GLenum, const GLfloat *);
-
-#define CALL_MultiTexCoord3fvARB(disp, parameters) \
-    (* GET_MultiTexCoord3fvARB(disp)) parameters
-static inline _glptr_MultiTexCoord3fvARB
-GET_MultiTexCoord3fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord3fvARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord3fvARB));
-}
-
-static inline void
-SET_MultiTexCoord3fvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord3fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord3iARB) (GLenum, GLint, GLint,
-                                                      GLint);
-#define CALL_MultiTexCoord3iARB(disp, parameters) \
-    (* GET_MultiTexCoord3iARB(disp)) parameters
-static inline _glptr_MultiTexCoord3iARB
-GET_MultiTexCoord3iARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord3iARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord3iARB));
-}
-
-static inline void
-SET_MultiTexCoord3iARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord3iARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord3ivARB) (GLenum, const GLint *);
-
-#define CALL_MultiTexCoord3ivARB(disp, parameters) \
-    (* GET_MultiTexCoord3ivARB(disp)) parameters
-static inline _glptr_MultiTexCoord3ivARB
-GET_MultiTexCoord3ivARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord3ivARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord3ivARB));
-}
-
-static inline void
-SET_MultiTexCoord3ivARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord3ivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord3sARB) (GLenum, GLshort, GLshort,
-                                                      GLshort);
-#define CALL_MultiTexCoord3sARB(disp, parameters) \
-    (* GET_MultiTexCoord3sARB(disp)) parameters
-static inline _glptr_MultiTexCoord3sARB
-GET_MultiTexCoord3sARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord3sARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord3sARB));
-}
-
-static inline void
-SET_MultiTexCoord3sARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLshort, GLshort,
-                                              GLshort))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord3sARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord3svARB) (GLenum, const GLshort *);
-
-#define CALL_MultiTexCoord3svARB(disp, parameters) \
-    (* GET_MultiTexCoord3svARB(disp)) parameters
-static inline _glptr_MultiTexCoord3svARB
-GET_MultiTexCoord3svARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord3svARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord3svARB));
-}
-
-static inline void
-SET_MultiTexCoord3svARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord3svARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord4dARB) (GLenum, GLdouble,
-                                                      GLdouble, GLdouble,
-                                                      GLdouble);
-#define CALL_MultiTexCoord4dARB(disp, parameters) \
-    (* GET_MultiTexCoord4dARB(disp)) parameters
-static inline _glptr_MultiTexCoord4dARB
-GET_MultiTexCoord4dARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord4dARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord4dARB));
-}
-
-static inline void
-SET_MultiTexCoord4dARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLdouble, GLdouble,
-                                              GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord4dARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord4dvARB) (GLenum,
-                                                       const GLdouble *);
-#define CALL_MultiTexCoord4dvARB(disp, parameters) \
-    (* GET_MultiTexCoord4dvARB(disp)) parameters
-static inline _glptr_MultiTexCoord4dvARB
-GET_MultiTexCoord4dvARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord4dvARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord4dvARB));
-}
-
-static inline void
-SET_MultiTexCoord4dvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord4dvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord4fARB) (GLenum, GLfloat, GLfloat,
-                                                      GLfloat, GLfloat);
-#define CALL_MultiTexCoord4fARB(disp, parameters) \
-    (* GET_MultiTexCoord4fARB(disp)) parameters
-static inline _glptr_MultiTexCoord4fARB
-GET_MultiTexCoord4fARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord4fARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord4fARB));
-}
-
-static inline void
-SET_MultiTexCoord4fARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLfloat, GLfloat, GLfloat,
-                                              GLfloat))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord4fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord4fvARB) (GLenum, const GLfloat *);
-
-#define CALL_MultiTexCoord4fvARB(disp, parameters) \
-    (* GET_MultiTexCoord4fvARB(disp)) parameters
-static inline _glptr_MultiTexCoord4fvARB
-GET_MultiTexCoord4fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord4fvARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord4fvARB));
-}
-
-static inline void
-SET_MultiTexCoord4fvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord4fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord4iARB) (GLenum, GLint, GLint,
-                                                      GLint, GLint);
-#define CALL_MultiTexCoord4iARB(disp, parameters) \
-    (* GET_MultiTexCoord4iARB(disp)) parameters
-static inline _glptr_MultiTexCoord4iARB
-GET_MultiTexCoord4iARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord4iARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord4iARB));
-}
-
-static inline void
-SET_MultiTexCoord4iARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLint, GLint, GLint,
-                                              GLint))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord4iARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord4ivARB) (GLenum, const GLint *);
-
-#define CALL_MultiTexCoord4ivARB(disp, parameters) \
-    (* GET_MultiTexCoord4ivARB(disp)) parameters
-static inline _glptr_MultiTexCoord4ivARB
-GET_MultiTexCoord4ivARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord4ivARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord4ivARB));
-}
-
-static inline void
-SET_MultiTexCoord4ivARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord4ivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord4sARB) (GLenum, GLshort, GLshort,
-                                                      GLshort, GLshort);
-#define CALL_MultiTexCoord4sARB(disp, parameters) \
-    (* GET_MultiTexCoord4sARB(disp)) parameters
-static inline _glptr_MultiTexCoord4sARB
-GET_MultiTexCoord4sARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord4sARB) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoord4sARB));
-}
-
-static inline void
-SET_MultiTexCoord4sARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLshort, GLshort, GLshort,
-                                              GLshort))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord4sARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoord4svARB) (GLenum, const GLshort *);
-
-#define CALL_MultiTexCoord4svARB(disp, parameters) \
-    (* GET_MultiTexCoord4svARB(disp)) parameters
-static inline _glptr_MultiTexCoord4svARB
-GET_MultiTexCoord4svARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoord4svARB) (GET_by_offset
-                                         (disp, _gloffset_MultiTexCoord4svARB));
-}
-
-static inline void
-SET_MultiTexCoord4svARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoord4svARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_AttachShader) (GLuint, GLuint);
-
-#define CALL_AttachShader(disp, parameters) \
-    (* GET_AttachShader(disp)) parameters
-static inline _glptr_AttachShader
-GET_AttachShader(struct _glapi_table *disp)
-{
-    return (_glptr_AttachShader) (GET_by_offset(disp, _gloffset_AttachShader));
-}
-
-static inline void
-SET_AttachShader(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_AttachShader, fn);
-}
-
-typedef GLuint(GLAPIENTRYP _glptr_CreateProgram) (void);
-
-#define CALL_CreateProgram(disp, parameters) \
-    (* GET_CreateProgram(disp)) parameters
-static inline _glptr_CreateProgram
-GET_CreateProgram(struct _glapi_table *disp)
-{
-    return (_glptr_CreateProgram) (GET_by_offset
-                                   (disp, _gloffset_CreateProgram));
-}
-
-static inline void
-SET_CreateProgram(struct _glapi_table *disp, GLuint(GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_CreateProgram, fn);
-}
-
-typedef GLuint(GLAPIENTRYP _glptr_CreateShader) (GLenum);
-
-#define CALL_CreateShader(disp, parameters) \
-    (* GET_CreateShader(disp)) parameters
-static inline _glptr_CreateShader
-GET_CreateShader(struct _glapi_table *disp)
-{
-    return (_glptr_CreateShader) (GET_by_offset(disp, _gloffset_CreateShader));
-}
-
-static inline void
-SET_CreateShader(struct _glapi_table *disp, GLuint(GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_CreateShader, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteProgram) (GLuint);
-
-#define CALL_DeleteProgram(disp, parameters) \
-    (* GET_DeleteProgram(disp)) parameters
-static inline _glptr_DeleteProgram
-GET_DeleteProgram(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteProgram) (GET_by_offset
-                                   (disp, _gloffset_DeleteProgram));
-}
-
-static inline void
-SET_DeleteProgram(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_DeleteProgram, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteShader) (GLuint);
-
-#define CALL_DeleteShader(disp, parameters) \
-    (* GET_DeleteShader(disp)) parameters
-static inline _glptr_DeleteShader
-GET_DeleteShader(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteShader) (GET_by_offset(disp, _gloffset_DeleteShader));
-}
-
-static inline void
-SET_DeleteShader(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_DeleteShader, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DetachShader) (GLuint, GLuint);
-
-#define CALL_DetachShader(disp, parameters) \
-    (* GET_DetachShader(disp)) parameters
-static inline _glptr_DetachShader
-GET_DetachShader(struct _glapi_table *disp)
-{
-    return (_glptr_DetachShader) (GET_by_offset(disp, _gloffset_DetachShader));
-}
-
-static inline void
-SET_DetachShader(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_DetachShader, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetAttachedShaders) (GLuint, GLsizei,
-                                                      GLsizei *, GLuint *);
-#define CALL_GetAttachedShaders(disp, parameters) \
-    (* GET_GetAttachedShaders(disp)) parameters
-static inline _glptr_GetAttachedShaders
-GET_GetAttachedShaders(struct _glapi_table *disp)
-{
-    return (_glptr_GetAttachedShaders) (GET_by_offset
-                                        (disp, _gloffset_GetAttachedShaders));
-}
-
-static inline void
-SET_GetAttachedShaders(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei, GLsizei *,
-                                              GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GetAttachedShaders, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramInfoLog) (GLuint, GLsizei, GLsizei *,
-                                                     GLchar *);
-#define CALL_GetProgramInfoLog(disp, parameters) \
-    (* GET_GetProgramInfoLog(disp)) parameters
-static inline _glptr_GetProgramInfoLog
-GET_GetProgramInfoLog(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramInfoLog) (GET_by_offset
-                                       (disp, _gloffset_GetProgramInfoLog));
-}
-
-static inline void
-SET_GetProgramInfoLog(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLsizei, GLsizei *,
-                                             GLchar *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramInfoLog, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramiv) (GLuint, GLenum, GLint *);
-
-#define CALL_GetProgramiv(disp, parameters) \
-    (* GET_GetProgramiv(disp)) parameters
-static inline _glptr_GetProgramiv
-GET_GetProgramiv(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramiv) (GET_by_offset(disp, _gloffset_GetProgramiv));
-}
-
-static inline void
-SET_GetProgramiv(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLuint, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetShaderInfoLog) (GLuint, GLsizei, GLsizei *,
-                                                    GLchar *);
-#define CALL_GetShaderInfoLog(disp, parameters) \
-    (* GET_GetShaderInfoLog(disp)) parameters
-static inline _glptr_GetShaderInfoLog
-GET_GetShaderInfoLog(struct _glapi_table *disp)
-{
-    return (_glptr_GetShaderInfoLog) (GET_by_offset
-                                      (disp, _gloffset_GetShaderInfoLog));
-}
-
-static inline void
-SET_GetShaderInfoLog(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLsizei, GLsizei *,
-                                            GLchar *))
-{
-    SET_by_offset(disp, _gloffset_GetShaderInfoLog, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetShaderiv) (GLuint, GLenum, GLint *);
-
-#define CALL_GetShaderiv(disp, parameters) \
-    (* GET_GetShaderiv(disp)) parameters
-static inline _glptr_GetShaderiv
-GET_GetShaderiv(struct _glapi_table *disp)
-{
-    return (_glptr_GetShaderiv) (GET_by_offset(disp, _gloffset_GetShaderiv));
-}
-
-static inline void
-SET_GetShaderiv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLuint, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetShaderiv, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsProgram) (GLuint);
-
-#define CALL_IsProgram(disp, parameters) \
-    (* GET_IsProgram(disp)) parameters
-static inline _glptr_IsProgram
-GET_IsProgram(struct _glapi_table *disp)
-{
-    return (_glptr_IsProgram) (GET_by_offset(disp, _gloffset_IsProgram));
-}
-
-static inline void
-SET_IsProgram(struct _glapi_table *disp, GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsProgram, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsShader) (GLuint);
-
-#define CALL_IsShader(disp, parameters) \
-    (* GET_IsShader(disp)) parameters
-static inline _glptr_IsShader
-GET_IsShader(struct _glapi_table *disp)
-{
-    return (_glptr_IsShader) (GET_by_offset(disp, _gloffset_IsShader));
-}
-
-static inline void
-SET_IsShader(struct _glapi_table *disp, GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsShader, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_StencilFuncSeparate) (GLenum, GLenum, GLint,
-                                                       GLuint);
-#define CALL_StencilFuncSeparate(disp, parameters) \
-    (* GET_StencilFuncSeparate(disp)) parameters
-static inline _glptr_StencilFuncSeparate
-GET_StencilFuncSeparate(struct _glapi_table *disp)
-{
-    return (_glptr_StencilFuncSeparate) (GET_by_offset
-                                         (disp, _gloffset_StencilFuncSeparate));
-}
-
-static inline void
-SET_StencilFuncSeparate(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLenum, GLint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_StencilFuncSeparate, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_StencilMaskSeparate) (GLenum, GLuint);
-
-#define CALL_StencilMaskSeparate(disp, parameters) \
-    (* GET_StencilMaskSeparate(disp)) parameters
-static inline _glptr_StencilMaskSeparate
-GET_StencilMaskSeparate(struct _glapi_table *disp)
-{
-    return (_glptr_StencilMaskSeparate) (GET_by_offset
-                                         (disp, _gloffset_StencilMaskSeparate));
-}
-
-static inline void
-SET_StencilMaskSeparate(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_StencilMaskSeparate, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_StencilOpSeparate) (GLenum, GLenum, GLenum,
-                                                     GLenum);
-#define CALL_StencilOpSeparate(disp, parameters) \
-    (* GET_StencilOpSeparate(disp)) parameters
-static inline _glptr_StencilOpSeparate
-GET_StencilOpSeparate(struct _glapi_table *disp)
-{
-    return (_glptr_StencilOpSeparate) (GET_by_offset
-                                       (disp, _gloffset_StencilOpSeparate));
-}
-
-static inline void
-SET_StencilOpSeparate(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_StencilOpSeparate, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_UniformMatrix2x3fv) (GLint, GLsizei, GLboolean,
-                                                      const GLfloat *);
-#define CALL_UniformMatrix2x3fv(disp, parameters) \
-    (* GET_UniformMatrix2x3fv(disp)) parameters
-static inline _glptr_UniformMatrix2x3fv
-GET_UniformMatrix2x3fv(struct _glapi_table *disp)
-{
-    return (_glptr_UniformMatrix2x3fv) (GET_by_offset
-                                        (disp, _gloffset_UniformMatrix2x3fv));
-}
-
-static inline void
-SET_UniformMatrix2x3fv(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLint, GLsizei, GLboolean,
-                                              const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_UniformMatrix2x3fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_UniformMatrix2x4fv) (GLint, GLsizei, GLboolean,
-                                                      const GLfloat *);
-#define CALL_UniformMatrix2x4fv(disp, parameters) \
-    (* GET_UniformMatrix2x4fv(disp)) parameters
-static inline _glptr_UniformMatrix2x4fv
-GET_UniformMatrix2x4fv(struct _glapi_table *disp)
-{
-    return (_glptr_UniformMatrix2x4fv) (GET_by_offset
-                                        (disp, _gloffset_UniformMatrix2x4fv));
-}
-
-static inline void
-SET_UniformMatrix2x4fv(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLint, GLsizei, GLboolean,
-                                              const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_UniformMatrix2x4fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_UniformMatrix3x2fv) (GLint, GLsizei, GLboolean,
-                                                      const GLfloat *);
-#define CALL_UniformMatrix3x2fv(disp, parameters) \
-    (* GET_UniformMatrix3x2fv(disp)) parameters
-static inline _glptr_UniformMatrix3x2fv
-GET_UniformMatrix3x2fv(struct _glapi_table *disp)
-{
-    return (_glptr_UniformMatrix3x2fv) (GET_by_offset
-                                        (disp, _gloffset_UniformMatrix3x2fv));
-}
-
-static inline void
-SET_UniformMatrix3x2fv(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLint, GLsizei, GLboolean,
-                                              const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_UniformMatrix3x2fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_UniformMatrix3x4fv) (GLint, GLsizei, GLboolean,
-                                                      const GLfloat *);
-#define CALL_UniformMatrix3x4fv(disp, parameters) \
-    (* GET_UniformMatrix3x4fv(disp)) parameters
-static inline _glptr_UniformMatrix3x4fv
-GET_UniformMatrix3x4fv(struct _glapi_table *disp)
-{
-    return (_glptr_UniformMatrix3x4fv) (GET_by_offset
-                                        (disp, _gloffset_UniformMatrix3x4fv));
-}
-
-static inline void
-SET_UniformMatrix3x4fv(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLint, GLsizei, GLboolean,
-                                              const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_UniformMatrix3x4fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_UniformMatrix4x2fv) (GLint, GLsizei, GLboolean,
-                                                      const GLfloat *);
-#define CALL_UniformMatrix4x2fv(disp, parameters) \
-    (* GET_UniformMatrix4x2fv(disp)) parameters
-static inline _glptr_UniformMatrix4x2fv
-GET_UniformMatrix4x2fv(struct _glapi_table *disp)
-{
-    return (_glptr_UniformMatrix4x2fv) (GET_by_offset
-                                        (disp, _gloffset_UniformMatrix4x2fv));
-}
-
-static inline void
-SET_UniformMatrix4x2fv(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLint, GLsizei, GLboolean,
-                                              const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_UniformMatrix4x2fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_UniformMatrix4x3fv) (GLint, GLsizei, GLboolean,
-                                                      const GLfloat *);
-#define CALL_UniformMatrix4x3fv(disp, parameters) \
-    (* GET_UniformMatrix4x3fv(disp)) parameters
-static inline _glptr_UniformMatrix4x3fv
-GET_UniformMatrix4x3fv(struct _glapi_table *disp)
-{
-    return (_glptr_UniformMatrix4x3fv) (GET_by_offset
-                                        (disp, _gloffset_UniformMatrix4x3fv));
-}
-
-static inline void
-SET_UniformMatrix4x3fv(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLint, GLsizei, GLboolean,
-                                              const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_UniformMatrix4x3fv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClampColor) (GLenum, GLenum);
-
-#define CALL_ClampColor(disp, parameters) \
-    (* GET_ClampColor(disp)) parameters
-static inline _glptr_ClampColor
-GET_ClampColor(struct _glapi_table *disp)
-{
-    return (_glptr_ClampColor) (GET_by_offset(disp, _gloffset_ClampColor));
-}
-
-static inline void
-SET_ClampColor(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_ClampColor, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClearBufferfi) (GLenum, GLint, GLfloat, GLint);
-
-#define CALL_ClearBufferfi(disp, parameters) \
-    (* GET_ClearBufferfi(disp)) parameters
-static inline _glptr_ClearBufferfi
-GET_ClearBufferfi(struct _glapi_table *disp)
-{
-    return (_glptr_ClearBufferfi) (GET_by_offset
-                                   (disp, _gloffset_ClearBufferfi));
-}
-
-static inline void
-SET_ClearBufferfi(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLint, GLfloat, GLint))
-{
-    SET_by_offset(disp, _gloffset_ClearBufferfi, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClearBufferfv) (GLenum, GLint,
-                                                 const GLfloat *);
-#define CALL_ClearBufferfv(disp, parameters) \
-    (* GET_ClearBufferfv(disp)) parameters
-static inline _glptr_ClearBufferfv
-GET_ClearBufferfv(struct _glapi_table *disp)
-{
-    return (_glptr_ClearBufferfv) (GET_by_offset
-                                   (disp, _gloffset_ClearBufferfv));
-}
-
-static inline void
-SET_ClearBufferfv(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLint, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_ClearBufferfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClearBufferiv) (GLenum, GLint, const GLint *);
-
-#define CALL_ClearBufferiv(disp, parameters) \
-    (* GET_ClearBufferiv(disp)) parameters
-static inline _glptr_ClearBufferiv
-GET_ClearBufferiv(struct _glapi_table *disp)
-{
-    return (_glptr_ClearBufferiv) (GET_by_offset
-                                   (disp, _gloffset_ClearBufferiv));
-}
-
-static inline void
-SET_ClearBufferiv(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLint, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_ClearBufferiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClearBufferuiv) (GLenum, GLint,
-                                                  const GLuint *);
-#define CALL_ClearBufferuiv(disp, parameters) \
-    (* GET_ClearBufferuiv(disp)) parameters
-static inline _glptr_ClearBufferuiv
-GET_ClearBufferuiv(struct _glapi_table *disp)
-{
-    return (_glptr_ClearBufferuiv) (GET_by_offset
-                                    (disp, _gloffset_ClearBufferuiv));
-}
-
-static inline void
-SET_ClearBufferuiv(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLenum, GLint, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_ClearBufferuiv, fn);
-}
-
-typedef const GLubyte *(GLAPIENTRYP _glptr_GetStringi) (GLenum, GLuint);
-
-#define CALL_GetStringi(disp, parameters) \
-    (* GET_GetStringi(disp)) parameters
-static inline _glptr_GetStringi
-GET_GetStringi(struct _glapi_table *disp)
-{
-    return (_glptr_GetStringi) (GET_by_offset(disp, _gloffset_GetStringi));
-}
-
-static inline void
-SET_GetStringi(struct _glapi_table *disp,
-               const GLubyte * (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_GetStringi, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexBuffer) (GLenum, GLenum, GLuint);
-
-#define CALL_TexBuffer(disp, parameters) \
-    (* GET_TexBuffer(disp)) parameters
-static inline _glptr_TexBuffer
-GET_TexBuffer(struct _glapi_table *disp)
-{
-    return (_glptr_TexBuffer) (GET_by_offset(disp, _gloffset_TexBuffer));
-}
-
-static inline void
-SET_TexBuffer(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLenum, GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_TexBuffer, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FramebufferTexture) (GLenum, GLenum, GLuint,
-                                                      GLint);
-#define CALL_FramebufferTexture(disp, parameters) \
-    (* GET_FramebufferTexture(disp)) parameters
-static inline _glptr_FramebufferTexture
-GET_FramebufferTexture(struct _glapi_table *disp)
-{
-    return (_glptr_FramebufferTexture) (GET_by_offset
-                                        (disp, _gloffset_FramebufferTexture));
-}
-
-static inline void
-SET_FramebufferTexture(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLenum, GLuint, GLint))
-{
-    SET_by_offset(disp, _gloffset_FramebufferTexture, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetBufferParameteri64v) (GLenum, GLenum,
-                                                          GLint64 *);
-#define CALL_GetBufferParameteri64v(disp, parameters) \
-    (* GET_GetBufferParameteri64v(disp)) parameters
-static inline _glptr_GetBufferParameteri64v
-GET_GetBufferParameteri64v(struct _glapi_table *disp)
-{
-    return (_glptr_GetBufferParameteri64v) (GET_by_offset
-                                            (disp,
-                                             _gloffset_GetBufferParameteri64v));
-}
-
-static inline void
-SET_GetBufferParameteri64v(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLenum, GLint64 *))
-{
-    SET_by_offset(disp, _gloffset_GetBufferParameteri64v, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetInteger64i_v) (GLenum, GLuint, GLint64 *);
-
-#define CALL_GetInteger64i_v(disp, parameters) \
-    (* GET_GetInteger64i_v(disp)) parameters
-static inline _glptr_GetInteger64i_v
-GET_GetInteger64i_v(struct _glapi_table *disp)
-{
-    return (_glptr_GetInteger64i_v) (GET_by_offset
-                                     (disp, _gloffset_GetInteger64i_v));
-}
-
-static inline void
-SET_GetInteger64i_v(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLenum, GLuint, GLint64 *))
-{
-    SET_by_offset(disp, _gloffset_GetInteger64i_v, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribDivisor) (GLuint, GLuint);
-
-#define CALL_VertexAttribDivisor(disp, parameters) \
-    (* GET_VertexAttribDivisor(disp)) parameters
-static inline _glptr_VertexAttribDivisor
-GET_VertexAttribDivisor(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribDivisor) (GET_by_offset
-                                         (disp, _gloffset_VertexAttribDivisor));
-}
-
-static inline void
-SET_VertexAttribDivisor(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribDivisor, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LoadTransposeMatrixdARB) (const GLdouble *);
-
-#define CALL_LoadTransposeMatrixdARB(disp, parameters) \
-    (* GET_LoadTransposeMatrixdARB(disp)) parameters
-static inline _glptr_LoadTransposeMatrixdARB
-GET_LoadTransposeMatrixdARB(struct _glapi_table *disp)
-{
-    return (_glptr_LoadTransposeMatrixdARB) (GET_by_offset
-                                             (disp,
-                                              _gloffset_LoadTransposeMatrixdARB));
-}
-
-static inline void
-SET_LoadTransposeMatrixdARB(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_LoadTransposeMatrixdARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LoadTransposeMatrixfARB) (const GLfloat *);
-
-#define CALL_LoadTransposeMatrixfARB(disp, parameters) \
-    (* GET_LoadTransposeMatrixfARB(disp)) parameters
-static inline _glptr_LoadTransposeMatrixfARB
-GET_LoadTransposeMatrixfARB(struct _glapi_table *disp)
-{
-    return (_glptr_LoadTransposeMatrixfARB) (GET_by_offset
-                                             (disp,
-                                              _gloffset_LoadTransposeMatrixfARB));
-}
-
-static inline void
-SET_LoadTransposeMatrixfARB(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_LoadTransposeMatrixfARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultTransposeMatrixdARB) (const GLdouble *);
-
-#define CALL_MultTransposeMatrixdARB(disp, parameters) \
-    (* GET_MultTransposeMatrixdARB(disp)) parameters
-static inline _glptr_MultTransposeMatrixdARB
-GET_MultTransposeMatrixdARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultTransposeMatrixdARB) (GET_by_offset
-                                             (disp,
-                                              _gloffset_MultTransposeMatrixdARB));
-}
-
-static inline void
-SET_MultTransposeMatrixdARB(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_MultTransposeMatrixdARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultTransposeMatrixfARB) (const GLfloat *);
-
-#define CALL_MultTransposeMatrixfARB(disp, parameters) \
-    (* GET_MultTransposeMatrixfARB(disp)) parameters
-static inline _glptr_MultTransposeMatrixfARB
-GET_MultTransposeMatrixfARB(struct _glapi_table *disp)
-{
-    return (_glptr_MultTransposeMatrixfARB) (GET_by_offset
-                                             (disp,
-                                              _gloffset_MultTransposeMatrixfARB));
-}
-
-static inline void
-SET_MultTransposeMatrixfARB(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_MultTransposeMatrixfARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SampleCoverageARB) (GLclampf, GLboolean);
-
-#define CALL_SampleCoverageARB(disp, parameters) \
-    (* GET_SampleCoverageARB(disp)) parameters
-static inline _glptr_SampleCoverageARB
-GET_SampleCoverageARB(struct _glapi_table *disp)
-{
-    return (_glptr_SampleCoverageARB) (GET_by_offset
-                                       (disp, _gloffset_SampleCoverageARB));
-}
-
-static inline void
-SET_SampleCoverageARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLclampf, GLboolean))
-{
-    SET_by_offset(disp, _gloffset_SampleCoverageARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CompressedTexImage1DARB) (GLenum, GLint,
-                                                           GLenum, GLsizei,
-                                                           GLint, GLsizei,
-                                                           const GLvoid *);
-#define CALL_CompressedTexImage1DARB(disp, parameters) \
-    (* GET_CompressedTexImage1DARB(disp)) parameters
-static inline _glptr_CompressedTexImage1DARB
-GET_CompressedTexImage1DARB(struct _glapi_table *disp)
-{
-    return (_glptr_CompressedTexImage1DARB) (GET_by_offset
-                                             (disp,
-                                              _gloffset_CompressedTexImage1DARB));
-}
-
-static inline void
-SET_CompressedTexImage1DARB(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLint, GLenum,
-                                                   GLsizei, GLint, GLsizei,
-                                                   const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_CompressedTexImage1DARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CompressedTexImage2DARB) (GLenum, GLint,
-                                                           GLenum, GLsizei,
-                                                           GLsizei, GLint,
-                                                           GLsizei,
-                                                           const GLvoid *);
-#define CALL_CompressedTexImage2DARB(disp, parameters) \
-    (* GET_CompressedTexImage2DARB(disp)) parameters
-static inline _glptr_CompressedTexImage2DARB
-GET_CompressedTexImage2DARB(struct _glapi_table *disp)
-{
-    return (_glptr_CompressedTexImage2DARB) (GET_by_offset
-                                             (disp,
-                                              _gloffset_CompressedTexImage2DARB));
-}
-
-static inline void
-SET_CompressedTexImage2DARB(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLint, GLenum,
-                                                   GLsizei, GLsizei, GLint,
-                                                   GLsizei, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_CompressedTexImage2DARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CompressedTexImage3DARB) (GLenum, GLint,
-                                                           GLenum, GLsizei,
-                                                           GLsizei, GLsizei,
-                                                           GLint, GLsizei,
-                                                           const GLvoid *);
-#define CALL_CompressedTexImage3DARB(disp, parameters) \
-    (* GET_CompressedTexImage3DARB(disp)) parameters
-static inline _glptr_CompressedTexImage3DARB
-GET_CompressedTexImage3DARB(struct _glapi_table *disp)
-{
-    return (_glptr_CompressedTexImage3DARB) (GET_by_offset
-                                             (disp,
-                                              _gloffset_CompressedTexImage3DARB));
-}
-
-static inline void
-SET_CompressedTexImage3DARB(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLint, GLenum,
-                                                   GLsizei, GLsizei, GLsizei,
-                                                   GLint, GLsizei,
-                                                   const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_CompressedTexImage3DARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CompressedTexSubImage1DARB) (GLenum, GLint,
-                                                              GLint, GLsizei,
-                                                              GLenum, GLsizei,
-                                                              const GLvoid *);
-#define CALL_CompressedTexSubImage1DARB(disp, parameters) \
-    (* GET_CompressedTexSubImage1DARB(disp)) parameters
-static inline _glptr_CompressedTexSubImage1DARB
-GET_CompressedTexSubImage1DARB(struct _glapi_table *disp)
-{
-    return (_glptr_CompressedTexSubImage1DARB) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_CompressedTexSubImage1DARB));
-}
-
-static inline void
-SET_CompressedTexSubImage1DARB(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLenum, GLint, GLint,
-                                                      GLsizei, GLenum, GLsizei,
-                                                      const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_CompressedTexSubImage1DARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CompressedTexSubImage2DARB) (GLenum, GLint,
-                                                              GLint, GLint,
-                                                              GLsizei, GLsizei,
-                                                              GLenum, GLsizei,
-                                                              const GLvoid *);
-#define CALL_CompressedTexSubImage2DARB(disp, parameters) \
-    (* GET_CompressedTexSubImage2DARB(disp)) parameters
-static inline _glptr_CompressedTexSubImage2DARB
-GET_CompressedTexSubImage2DARB(struct _glapi_table *disp)
-{
-    return (_glptr_CompressedTexSubImage2DARB) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_CompressedTexSubImage2DARB));
-}
-
-static inline void
-SET_CompressedTexSubImage2DARB(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLenum, GLint, GLint,
-                                                      GLint, GLsizei, GLsizei,
-                                                      GLenum, GLsizei,
-                                                      const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_CompressedTexSubImage2DARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CompressedTexSubImage3DARB) (GLenum, GLint,
-                                                              GLint, GLint,
-                                                              GLint, GLsizei,
-                                                              GLsizei, GLsizei,
-                                                              GLenum, GLsizei,
-                                                              const GLvoid *);
-#define CALL_CompressedTexSubImage3DARB(disp, parameters) \
-    (* GET_CompressedTexSubImage3DARB(disp)) parameters
-static inline _glptr_CompressedTexSubImage3DARB
-GET_CompressedTexSubImage3DARB(struct _glapi_table *disp)
-{
-    return (_glptr_CompressedTexSubImage3DARB) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_CompressedTexSubImage3DARB));
-}
-
-static inline void
-SET_CompressedTexSubImage3DARB(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLenum, GLint, GLint,
-                                                      GLint, GLint, GLsizei,
-                                                      GLsizei, GLsizei, GLenum,
-                                                      GLsizei, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_CompressedTexSubImage3DARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetCompressedTexImageARB) (GLenum, GLint,
-                                                            GLvoid *);
-#define CALL_GetCompressedTexImageARB(disp, parameters) \
-    (* GET_GetCompressedTexImageARB(disp)) parameters
-static inline _glptr_GetCompressedTexImageARB
-GET_GetCompressedTexImageARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetCompressedTexImageARB) (GET_by_offset
-                                              (disp,
-                                               _gloffset_GetCompressedTexImageARB));
-}
-
-static inline void
-SET_GetCompressedTexImageARB(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLenum, GLint, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetCompressedTexImageARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DisableVertexAttribArrayARB) (GLuint);
-
-#define CALL_DisableVertexAttribArrayARB(disp, parameters) \
-    (* GET_DisableVertexAttribArrayARB(disp)) parameters
-static inline _glptr_DisableVertexAttribArrayARB
-GET_DisableVertexAttribArrayARB(struct _glapi_table *disp)
-{
-    return (_glptr_DisableVertexAttribArrayARB) (GET_by_offset
-                                                 (disp,
-                                                  _gloffset_DisableVertexAttribArrayARB));
-}
-
-static inline void
-SET_DisableVertexAttribArrayARB(struct _glapi_table *disp,
-                                void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_DisableVertexAttribArrayARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EnableVertexAttribArrayARB) (GLuint);
-
-#define CALL_EnableVertexAttribArrayARB(disp, parameters) \
-    (* GET_EnableVertexAttribArrayARB(disp)) parameters
-static inline _glptr_EnableVertexAttribArrayARB
-GET_EnableVertexAttribArrayARB(struct _glapi_table *disp)
-{
-    return (_glptr_EnableVertexAttribArrayARB) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_EnableVertexAttribArrayARB));
-}
-
-static inline void
-SET_EnableVertexAttribArrayARB(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_EnableVertexAttribArrayARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramEnvParameterdvARB) (GLenum, GLuint,
-                                                               GLdouble *);
-#define CALL_GetProgramEnvParameterdvARB(disp, parameters) \
-    (* GET_GetProgramEnvParameterdvARB(disp)) parameters
-static inline _glptr_GetProgramEnvParameterdvARB
-GET_GetProgramEnvParameterdvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramEnvParameterdvARB) (GET_by_offset
-                                                 (disp,
-                                                  _gloffset_GetProgramEnvParameterdvARB));
-}
-
-static inline void
-SET_GetProgramEnvParameterdvARB(struct _glapi_table *disp,
-                                void (GLAPIENTRYP fn) (GLenum, GLuint,
-                                                       GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramEnvParameterdvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramEnvParameterfvARB) (GLenum, GLuint,
-                                                               GLfloat *);
-#define CALL_GetProgramEnvParameterfvARB(disp, parameters) \
-    (* GET_GetProgramEnvParameterfvARB(disp)) parameters
-static inline _glptr_GetProgramEnvParameterfvARB
-GET_GetProgramEnvParameterfvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramEnvParameterfvARB) (GET_by_offset
-                                                 (disp,
-                                                  _gloffset_GetProgramEnvParameterfvARB));
-}
-
-static inline void
-SET_GetProgramEnvParameterfvARB(struct _glapi_table *disp,
-                                void (GLAPIENTRYP fn) (GLenum, GLuint,
-                                                       GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramEnvParameterfvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramLocalParameterdvARB) (GLenum, GLuint,
-                                                                 GLdouble *);
-#define CALL_GetProgramLocalParameterdvARB(disp, parameters) \
-    (* GET_GetProgramLocalParameterdvARB(disp)) parameters
-static inline _glptr_GetProgramLocalParameterdvARB
-GET_GetProgramLocalParameterdvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramLocalParameterdvARB) (GET_by_offset
-                                                   (disp,
-                                                    _gloffset_GetProgramLocalParameterdvARB));
-}
-
-static inline void
-SET_GetProgramLocalParameterdvARB(struct _glapi_table *disp,
-                                  void (GLAPIENTRYP fn) (GLenum, GLuint,
-                                                         GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramLocalParameterdvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramLocalParameterfvARB) (GLenum, GLuint,
-                                                                 GLfloat *);
-#define CALL_GetProgramLocalParameterfvARB(disp, parameters) \
-    (* GET_GetProgramLocalParameterfvARB(disp)) parameters
-static inline _glptr_GetProgramLocalParameterfvARB
-GET_GetProgramLocalParameterfvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramLocalParameterfvARB) (GET_by_offset
-                                                   (disp,
-                                                    _gloffset_GetProgramLocalParameterfvARB));
-}
-
-static inline void
-SET_GetProgramLocalParameterfvARB(struct _glapi_table *disp,
-                                  void (GLAPIENTRYP fn) (GLenum, GLuint,
-                                                         GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramLocalParameterfvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramStringARB) (GLenum, GLenum,
-                                                       GLvoid *);
-#define CALL_GetProgramStringARB(disp, parameters) \
-    (* GET_GetProgramStringARB(disp)) parameters
-static inline _glptr_GetProgramStringARB
-GET_GetProgramStringARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramStringARB) (GET_by_offset
-                                         (disp, _gloffset_GetProgramStringARB));
-}
-
-static inline void
-SET_GetProgramStringARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLenum, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramStringARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramivARB) (GLenum, GLenum, GLint *);
-
-#define CALL_GetProgramivARB(disp, parameters) \
-    (* GET_GetProgramivARB(disp)) parameters
-static inline _glptr_GetProgramivARB
-GET_GetProgramivARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramivARB) (GET_by_offset
-                                     (disp, _gloffset_GetProgramivARB));
-}
-
-static inline void
-SET_GetProgramivARB(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetVertexAttribdvARB) (GLuint, GLenum,
-                                                        GLdouble *);
-#define CALL_GetVertexAttribdvARB(disp, parameters) \
-    (* GET_GetVertexAttribdvARB(disp)) parameters
-static inline _glptr_GetVertexAttribdvARB
-GET_GetVertexAttribdvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetVertexAttribdvARB) (GET_by_offset
-                                          (disp,
-                                           _gloffset_GetVertexAttribdvARB));
-}
-
-static inline void
-SET_GetVertexAttribdvARB(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, GLenum, GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_GetVertexAttribdvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetVertexAttribfvARB) (GLuint, GLenum,
-                                                        GLfloat *);
-#define CALL_GetVertexAttribfvARB(disp, parameters) \
-    (* GET_GetVertexAttribfvARB(disp)) parameters
-static inline _glptr_GetVertexAttribfvARB
-GET_GetVertexAttribfvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetVertexAttribfvARB) (GET_by_offset
-                                          (disp,
-                                           _gloffset_GetVertexAttribfvARB));
-}
-
-static inline void
-SET_GetVertexAttribfvARB(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetVertexAttribfvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetVertexAttribivARB) (GLuint, GLenum,
-                                                        GLint *);
-#define CALL_GetVertexAttribivARB(disp, parameters) \
-    (* GET_GetVertexAttribivARB(disp)) parameters
-static inline _glptr_GetVertexAttribivARB
-GET_GetVertexAttribivARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetVertexAttribivARB) (GET_by_offset
-                                          (disp,
-                                           _gloffset_GetVertexAttribivARB));
-}
-
-static inline void
-SET_GetVertexAttribivARB(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetVertexAttribivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramEnvParameter4dARB) (GLenum, GLuint,
-                                                            GLdouble, GLdouble,
-                                                            GLdouble, GLdouble);
-#define CALL_ProgramEnvParameter4dARB(disp, parameters) \
-    (* GET_ProgramEnvParameter4dARB(disp)) parameters
-static inline _glptr_ProgramEnvParameter4dARB
-GET_ProgramEnvParameter4dARB(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramEnvParameter4dARB) (GET_by_offset
-                                              (disp,
-                                               _gloffset_ProgramEnvParameter4dARB));
-}
-
-static inline void
-SET_ProgramEnvParameter4dARB(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLenum, GLuint, GLdouble,
-                                                    GLdouble, GLdouble,
-                                                    GLdouble))
-{
-    SET_by_offset(disp, _gloffset_ProgramEnvParameter4dARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramEnvParameter4dvARB) (GLenum, GLuint,
-                                                             const GLdouble *);
-#define CALL_ProgramEnvParameter4dvARB(disp, parameters) \
-    (* GET_ProgramEnvParameter4dvARB(disp)) parameters
-static inline _glptr_ProgramEnvParameter4dvARB
-GET_ProgramEnvParameter4dvARB(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramEnvParameter4dvARB) (GET_by_offset
-                                               (disp,
-                                                _gloffset_ProgramEnvParameter4dvARB));
-}
-
-static inline void
-SET_ProgramEnvParameter4dvARB(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLenum, GLuint,
-                                                     const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_ProgramEnvParameter4dvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramEnvParameter4fARB) (GLenum, GLuint,
-                                                            GLfloat, GLfloat,
-                                                            GLfloat, GLfloat);
-#define CALL_ProgramEnvParameter4fARB(disp, parameters) \
-    (* GET_ProgramEnvParameter4fARB(disp)) parameters
-static inline _glptr_ProgramEnvParameter4fARB
-GET_ProgramEnvParameter4fARB(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramEnvParameter4fARB) (GET_by_offset
-                                              (disp,
-                                               _gloffset_ProgramEnvParameter4fARB));
-}
-
-static inline void
-SET_ProgramEnvParameter4fARB(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLenum, GLuint, GLfloat,
-                                                    GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_ProgramEnvParameter4fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramEnvParameter4fvARB) (GLenum, GLuint,
-                                                             const GLfloat *);
-#define CALL_ProgramEnvParameter4fvARB(disp, parameters) \
-    (* GET_ProgramEnvParameter4fvARB(disp)) parameters
-static inline _glptr_ProgramEnvParameter4fvARB
-GET_ProgramEnvParameter4fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramEnvParameter4fvARB) (GET_by_offset
-                                               (disp,
-                                                _gloffset_ProgramEnvParameter4fvARB));
-}
-
-static inline void
-SET_ProgramEnvParameter4fvARB(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLenum, GLuint,
-                                                     const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_ProgramEnvParameter4fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramLocalParameter4dARB) (GLenum, GLuint,
-                                                              GLdouble,
-                                                              GLdouble,
-                                                              GLdouble,
-                                                              GLdouble);
-#define CALL_ProgramLocalParameter4dARB(disp, parameters) \
-    (* GET_ProgramLocalParameter4dARB(disp)) parameters
-static inline _glptr_ProgramLocalParameter4dARB
-GET_ProgramLocalParameter4dARB(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramLocalParameter4dARB) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_ProgramLocalParameter4dARB));
-}
-
-static inline void
-SET_ProgramLocalParameter4dARB(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLenum, GLuint, GLdouble,
-                                                      GLdouble, GLdouble,
-                                                      GLdouble))
-{
-    SET_by_offset(disp, _gloffset_ProgramLocalParameter4dARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramLocalParameter4dvARB) (GLenum, GLuint,
-                                                               const GLdouble
-                                                               *);
-#define CALL_ProgramLocalParameter4dvARB(disp, parameters) \
-    (* GET_ProgramLocalParameter4dvARB(disp)) parameters
-static inline _glptr_ProgramLocalParameter4dvARB
-GET_ProgramLocalParameter4dvARB(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramLocalParameter4dvARB) (GET_by_offset
-                                                 (disp,
-                                                  _gloffset_ProgramLocalParameter4dvARB));
-}
-
-static inline void
-SET_ProgramLocalParameter4dvARB(struct _glapi_table *disp,
-                                void (GLAPIENTRYP fn) (GLenum, GLuint,
-                                                       const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_ProgramLocalParameter4dvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramLocalParameter4fARB) (GLenum, GLuint,
-                                                              GLfloat, GLfloat,
-                                                              GLfloat, GLfloat);
-#define CALL_ProgramLocalParameter4fARB(disp, parameters) \
-    (* GET_ProgramLocalParameter4fARB(disp)) parameters
-static inline _glptr_ProgramLocalParameter4fARB
-GET_ProgramLocalParameter4fARB(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramLocalParameter4fARB) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_ProgramLocalParameter4fARB));
-}
-
-static inline void
-SET_ProgramLocalParameter4fARB(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLenum, GLuint, GLfloat,
-                                                      GLfloat, GLfloat,
-                                                      GLfloat))
-{
-    SET_by_offset(disp, _gloffset_ProgramLocalParameter4fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramLocalParameter4fvARB) (GLenum, GLuint,
-                                                               const GLfloat *);
-#define CALL_ProgramLocalParameter4fvARB(disp, parameters) \
-    (* GET_ProgramLocalParameter4fvARB(disp)) parameters
-static inline _glptr_ProgramLocalParameter4fvARB
-GET_ProgramLocalParameter4fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramLocalParameter4fvARB) (GET_by_offset
-                                                 (disp,
-                                                  _gloffset_ProgramLocalParameter4fvARB));
-}
-
-static inline void
-SET_ProgramLocalParameter4fvARB(struct _glapi_table *disp,
-                                void (GLAPIENTRYP fn) (GLenum, GLuint,
-                                                       const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_ProgramLocalParameter4fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramStringARB) (GLenum, GLenum, GLsizei,
-                                                    const GLvoid *);
-#define CALL_ProgramStringARB(disp, parameters) \
-    (* GET_ProgramStringARB(disp)) parameters
-static inline _glptr_ProgramStringARB
-GET_ProgramStringARB(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramStringARB) (GET_by_offset
-                                      (disp, _gloffset_ProgramStringARB));
-}
-
-static inline void
-SET_ProgramStringARB(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLenum, GLenum, GLsizei,
-                                            const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_ProgramStringARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib1dARB) (GLuint, GLdouble);
-
-#define CALL_VertexAttrib1dARB(disp, parameters) \
-    (* GET_VertexAttrib1dARB(disp)) parameters
-static inline _glptr_VertexAttrib1dARB
-GET_VertexAttrib1dARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib1dARB) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib1dARB));
-}
-
-static inline void
-SET_VertexAttrib1dARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib1dARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib1dvARB) (GLuint, const GLdouble *);
-
-#define CALL_VertexAttrib1dvARB(disp, parameters) \
-    (* GET_VertexAttrib1dvARB(disp)) parameters
-static inline _glptr_VertexAttrib1dvARB
-GET_VertexAttrib1dvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib1dvARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib1dvARB));
-}
-
-static inline void
-SET_VertexAttrib1dvARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib1dvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib1fARB) (GLuint, GLfloat);
-
-#define CALL_VertexAttrib1fARB(disp, parameters) \
-    (* GET_VertexAttrib1fARB(disp)) parameters
-static inline _glptr_VertexAttrib1fARB
-GET_VertexAttrib1fARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib1fARB) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib1fARB));
-}
-
-static inline void
-SET_VertexAttrib1fARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib1fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib1fvARB) (GLuint, const GLfloat *);
-
-#define CALL_VertexAttrib1fvARB(disp, parameters) \
-    (* GET_VertexAttrib1fvARB(disp)) parameters
-static inline _glptr_VertexAttrib1fvARB
-GET_VertexAttrib1fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib1fvARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib1fvARB));
-}
-
-static inline void
-SET_VertexAttrib1fvARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib1fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib1sARB) (GLuint, GLshort);
-
-#define CALL_VertexAttrib1sARB(disp, parameters) \
-    (* GET_VertexAttrib1sARB(disp)) parameters
-static inline _glptr_VertexAttrib1sARB
-GET_VertexAttrib1sARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib1sARB) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib1sARB));
-}
-
-static inline void
-SET_VertexAttrib1sARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLshort))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib1sARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib1svARB) (GLuint, const GLshort *);
-
-#define CALL_VertexAttrib1svARB(disp, parameters) \
-    (* GET_VertexAttrib1svARB(disp)) parameters
-static inline _glptr_VertexAttrib1svARB
-GET_VertexAttrib1svARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib1svARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib1svARB));
-}
-
-static inline void
-SET_VertexAttrib1svARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib1svARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib2dARB) (GLuint, GLdouble,
-                                                     GLdouble);
-#define CALL_VertexAttrib2dARB(disp, parameters) \
-    (* GET_VertexAttrib2dARB(disp)) parameters
-static inline _glptr_VertexAttrib2dARB
-GET_VertexAttrib2dARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib2dARB) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib2dARB));
-}
-
-static inline void
-SET_VertexAttrib2dARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib2dARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib2dvARB) (GLuint, const GLdouble *);
-
-#define CALL_VertexAttrib2dvARB(disp, parameters) \
-    (* GET_VertexAttrib2dvARB(disp)) parameters
-static inline _glptr_VertexAttrib2dvARB
-GET_VertexAttrib2dvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib2dvARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib2dvARB));
-}
-
-static inline void
-SET_VertexAttrib2dvARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib2dvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib2fARB) (GLuint, GLfloat, GLfloat);
-
-#define CALL_VertexAttrib2fARB(disp, parameters) \
-    (* GET_VertexAttrib2fARB(disp)) parameters
-static inline _glptr_VertexAttrib2fARB
-GET_VertexAttrib2fARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib2fARB) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib2fARB));
-}
-
-static inline void
-SET_VertexAttrib2fARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib2fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib2fvARB) (GLuint, const GLfloat *);
-
-#define CALL_VertexAttrib2fvARB(disp, parameters) \
-    (* GET_VertexAttrib2fvARB(disp)) parameters
-static inline _glptr_VertexAttrib2fvARB
-GET_VertexAttrib2fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib2fvARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib2fvARB));
-}
-
-static inline void
-SET_VertexAttrib2fvARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib2fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib2sARB) (GLuint, GLshort, GLshort);
-
-#define CALL_VertexAttrib2sARB(disp, parameters) \
-    (* GET_VertexAttrib2sARB(disp)) parameters
-static inline _glptr_VertexAttrib2sARB
-GET_VertexAttrib2sARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib2sARB) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib2sARB));
-}
-
-static inline void
-SET_VertexAttrib2sARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib2sARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib2svARB) (GLuint, const GLshort *);
-
-#define CALL_VertexAttrib2svARB(disp, parameters) \
-    (* GET_VertexAttrib2svARB(disp)) parameters
-static inline _glptr_VertexAttrib2svARB
-GET_VertexAttrib2svARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib2svARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib2svARB));
-}
-
-static inline void
-SET_VertexAttrib2svARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib2svARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib3dARB) (GLuint, GLdouble, GLdouble,
-                                                     GLdouble);
-#define CALL_VertexAttrib3dARB(disp, parameters) \
-    (* GET_VertexAttrib3dARB(disp)) parameters
-static inline _glptr_VertexAttrib3dARB
-GET_VertexAttrib3dARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib3dARB) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib3dARB));
-}
-
-static inline void
-SET_VertexAttrib3dARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLdouble, GLdouble,
-                                             GLdouble))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib3dARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib3dvARB) (GLuint, const GLdouble *);
-
-#define CALL_VertexAttrib3dvARB(disp, parameters) \
-    (* GET_VertexAttrib3dvARB(disp)) parameters
-static inline _glptr_VertexAttrib3dvARB
-GET_VertexAttrib3dvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib3dvARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib3dvARB));
-}
-
-static inline void
-SET_VertexAttrib3dvARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib3dvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib3fARB) (GLuint, GLfloat, GLfloat,
-                                                     GLfloat);
-#define CALL_VertexAttrib3fARB(disp, parameters) \
-    (* GET_VertexAttrib3fARB(disp)) parameters
-static inline _glptr_VertexAttrib3fARB
-GET_VertexAttrib3fARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib3fARB) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib3fARB));
-}
-
-static inline void
-SET_VertexAttrib3fARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib3fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib3fvARB) (GLuint, const GLfloat *);
-
-#define CALL_VertexAttrib3fvARB(disp, parameters) \
-    (* GET_VertexAttrib3fvARB(disp)) parameters
-static inline _glptr_VertexAttrib3fvARB
-GET_VertexAttrib3fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib3fvARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib3fvARB));
-}
-
-static inline void
-SET_VertexAttrib3fvARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib3fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib3sARB) (GLuint, GLshort, GLshort,
-                                                     GLshort);
-#define CALL_VertexAttrib3sARB(disp, parameters) \
-    (* GET_VertexAttrib3sARB(disp)) parameters
-static inline _glptr_VertexAttrib3sARB
-GET_VertexAttrib3sARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib3sARB) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib3sARB));
-}
-
-static inline void
-SET_VertexAttrib3sARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib3sARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib3svARB) (GLuint, const GLshort *);
-
-#define CALL_VertexAttrib3svARB(disp, parameters) \
-    (* GET_VertexAttrib3svARB(disp)) parameters
-static inline _glptr_VertexAttrib3svARB
-GET_VertexAttrib3svARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib3svARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib3svARB));
-}
-
-static inline void
-SET_VertexAttrib3svARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib3svARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4NbvARB) (GLuint, const GLbyte *);
-
-#define CALL_VertexAttrib4NbvARB(disp, parameters) \
-    (* GET_VertexAttrib4NbvARB(disp)) parameters
-static inline _glptr_VertexAttrib4NbvARB
-GET_VertexAttrib4NbvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4NbvARB) (GET_by_offset
-                                         (disp, _gloffset_VertexAttrib4NbvARB));
-}
-
-static inline void
-SET_VertexAttrib4NbvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, const GLbyte *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4NbvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4NivARB) (GLuint, const GLint *);
-
-#define CALL_VertexAttrib4NivARB(disp, parameters) \
-    (* GET_VertexAttrib4NivARB(disp)) parameters
-static inline _glptr_VertexAttrib4NivARB
-GET_VertexAttrib4NivARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4NivARB) (GET_by_offset
-                                         (disp, _gloffset_VertexAttrib4NivARB));
-}
-
-static inline void
-SET_VertexAttrib4NivARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4NivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4NsvARB) (GLuint, const GLshort *);
-
-#define CALL_VertexAttrib4NsvARB(disp, parameters) \
-    (* GET_VertexAttrib4NsvARB(disp)) parameters
-static inline _glptr_VertexAttrib4NsvARB
-GET_VertexAttrib4NsvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4NsvARB) (GET_by_offset
-                                         (disp, _gloffset_VertexAttrib4NsvARB));
-}
-
-static inline void
-SET_VertexAttrib4NsvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4NsvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4NubARB) (GLuint, GLubyte, GLubyte,
-                                                       GLubyte, GLubyte);
-#define CALL_VertexAttrib4NubARB(disp, parameters) \
-    (* GET_VertexAttrib4NubARB(disp)) parameters
-static inline _glptr_VertexAttrib4NubARB
-GET_VertexAttrib4NubARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4NubARB) (GET_by_offset
-                                         (disp, _gloffset_VertexAttrib4NubARB));
-}
-
-static inline void
-SET_VertexAttrib4NubARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLubyte, GLubyte,
-                                               GLubyte, GLubyte))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4NubARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4NubvARB) (GLuint,
-                                                        const GLubyte *);
-#define CALL_VertexAttrib4NubvARB(disp, parameters) \
-    (* GET_VertexAttrib4NubvARB(disp)) parameters
-static inline _glptr_VertexAttrib4NubvARB
-GET_VertexAttrib4NubvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4NubvARB) (GET_by_offset
-                                          (disp,
-                                           _gloffset_VertexAttrib4NubvARB));
-}
-
-static inline void
-SET_VertexAttrib4NubvARB(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, const GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4NubvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4NuivARB) (GLuint, const GLuint *);
-
-#define CALL_VertexAttrib4NuivARB(disp, parameters) \
-    (* GET_VertexAttrib4NuivARB(disp)) parameters
-static inline _glptr_VertexAttrib4NuivARB
-GET_VertexAttrib4NuivARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4NuivARB) (GET_by_offset
-                                          (disp,
-                                           _gloffset_VertexAttrib4NuivARB));
-}
-
-static inline void
-SET_VertexAttrib4NuivARB(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4NuivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4NusvARB) (GLuint,
-                                                        const GLushort *);
-#define CALL_VertexAttrib4NusvARB(disp, parameters) \
-    (* GET_VertexAttrib4NusvARB(disp)) parameters
-static inline _glptr_VertexAttrib4NusvARB
-GET_VertexAttrib4NusvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4NusvARB) (GET_by_offset
-                                          (disp,
-                                           _gloffset_VertexAttrib4NusvARB));
-}
-
-static inline void
-SET_VertexAttrib4NusvARB(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, const GLushort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4NusvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4bvARB) (GLuint, const GLbyte *);
-
-#define CALL_VertexAttrib4bvARB(disp, parameters) \
-    (* GET_VertexAttrib4bvARB(disp)) parameters
-static inline _glptr_VertexAttrib4bvARB
-GET_VertexAttrib4bvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4bvARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib4bvARB));
-}
-
-static inline void
-SET_VertexAttrib4bvARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLbyte *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4bvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4dARB) (GLuint, GLdouble, GLdouble,
-                                                     GLdouble, GLdouble);
-#define CALL_VertexAttrib4dARB(disp, parameters) \
-    (* GET_VertexAttrib4dARB(disp)) parameters
-static inline _glptr_VertexAttrib4dARB
-GET_VertexAttrib4dARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4dARB) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib4dARB));
-}
-
-static inline void
-SET_VertexAttrib4dARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLdouble, GLdouble,
-                                             GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4dARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4dvARB) (GLuint, const GLdouble *);
-
-#define CALL_VertexAttrib4dvARB(disp, parameters) \
-    (* GET_VertexAttrib4dvARB(disp)) parameters
-static inline _glptr_VertexAttrib4dvARB
-GET_VertexAttrib4dvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4dvARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib4dvARB));
-}
-
-static inline void
-SET_VertexAttrib4dvARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4dvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4fARB) (GLuint, GLfloat, GLfloat,
-                                                     GLfloat, GLfloat);
-#define CALL_VertexAttrib4fARB(disp, parameters) \
-    (* GET_VertexAttrib4fARB(disp)) parameters
-static inline _glptr_VertexAttrib4fARB
-GET_VertexAttrib4fARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4fARB) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib4fARB));
-}
-
-static inline void
-SET_VertexAttrib4fARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLfloat, GLfloat, GLfloat,
-                                             GLfloat))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4fvARB) (GLuint, const GLfloat *);
-
-#define CALL_VertexAttrib4fvARB(disp, parameters) \
-    (* GET_VertexAttrib4fvARB(disp)) parameters
-static inline _glptr_VertexAttrib4fvARB
-GET_VertexAttrib4fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4fvARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib4fvARB));
-}
-
-static inline void
-SET_VertexAttrib4fvARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4ivARB) (GLuint, const GLint *);
-
-#define CALL_VertexAttrib4ivARB(disp, parameters) \
-    (* GET_VertexAttrib4ivARB(disp)) parameters
-static inline _glptr_VertexAttrib4ivARB
-GET_VertexAttrib4ivARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4ivARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib4ivARB));
-}
-
-static inline void
-SET_VertexAttrib4ivARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4ivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4sARB) (GLuint, GLshort, GLshort,
-                                                     GLshort, GLshort);
-#define CALL_VertexAttrib4sARB(disp, parameters) \
-    (* GET_VertexAttrib4sARB(disp)) parameters
-static inline _glptr_VertexAttrib4sARB
-GET_VertexAttrib4sARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4sARB) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib4sARB));
-}
-
-static inline void
-SET_VertexAttrib4sARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLshort, GLshort, GLshort,
-                                             GLshort))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4sARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4svARB) (GLuint, const GLshort *);
-
-#define CALL_VertexAttrib4svARB(disp, parameters) \
-    (* GET_VertexAttrib4svARB(disp)) parameters
-static inline _glptr_VertexAttrib4svARB
-GET_VertexAttrib4svARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4svARB) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib4svARB));
-}
-
-static inline void
-SET_VertexAttrib4svARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4svARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4ubvARB) (GLuint, const GLubyte *);
-
-#define CALL_VertexAttrib4ubvARB(disp, parameters) \
-    (* GET_VertexAttrib4ubvARB(disp)) parameters
-static inline _glptr_VertexAttrib4ubvARB
-GET_VertexAttrib4ubvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4ubvARB) (GET_by_offset
-                                         (disp, _gloffset_VertexAttrib4ubvARB));
-}
-
-static inline void
-SET_VertexAttrib4ubvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, const GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4ubvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4uivARB) (GLuint, const GLuint *);
-
-#define CALL_VertexAttrib4uivARB(disp, parameters) \
-    (* GET_VertexAttrib4uivARB(disp)) parameters
-static inline _glptr_VertexAttrib4uivARB
-GET_VertexAttrib4uivARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4uivARB) (GET_by_offset
-                                         (disp, _gloffset_VertexAttrib4uivARB));
-}
-
-static inline void
-SET_VertexAttrib4uivARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4uivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4usvARB) (GLuint,
-                                                       const GLushort *);
-#define CALL_VertexAttrib4usvARB(disp, parameters) \
-    (* GET_VertexAttrib4usvARB(disp)) parameters
-static inline _glptr_VertexAttrib4usvARB
-GET_VertexAttrib4usvARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4usvARB) (GET_by_offset
-                                         (disp, _gloffset_VertexAttrib4usvARB));
-}
-
-static inline void
-SET_VertexAttrib4usvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, const GLushort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4usvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribPointerARB) (GLuint, GLint, GLenum,
-                                                          GLboolean, GLsizei,
-                                                          const GLvoid *);
-#define CALL_VertexAttribPointerARB(disp, parameters) \
-    (* GET_VertexAttribPointerARB(disp)) parameters
-static inline _glptr_VertexAttribPointerARB
-GET_VertexAttribPointerARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribPointerARB) (GET_by_offset
-                                            (disp,
-                                             _gloffset_VertexAttribPointerARB));
-}
-
-static inline void
-SET_VertexAttribPointerARB(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLuint, GLint, GLenum,
-                                                  GLboolean, GLsizei,
-                                                  const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribPointerARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindBufferARB) (GLenum, GLuint);
-
-#define CALL_BindBufferARB(disp, parameters) \
-    (* GET_BindBufferARB(disp)) parameters
-static inline _glptr_BindBufferARB
-GET_BindBufferARB(struct _glapi_table *disp)
-{
-    return (_glptr_BindBufferARB) (GET_by_offset
-                                   (disp, _gloffset_BindBufferARB));
-}
-
-static inline void
-SET_BindBufferARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_BindBufferARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BufferDataARB) (GLenum, GLsizeiptrARB,
-                                                 const GLvoid *, GLenum);
-#define CALL_BufferDataARB(disp, parameters) \
-    (* GET_BufferDataARB(disp)) parameters
-static inline _glptr_BufferDataARB
-GET_BufferDataARB(struct _glapi_table *disp)
-{
-    return (_glptr_BufferDataARB) (GET_by_offset
-                                   (disp, _gloffset_BufferDataARB));
-}
-
-static inline void
-SET_BufferDataARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLsizeiptrARB, const GLvoid *,
-                                         GLenum))
-{
-    SET_by_offset(disp, _gloffset_BufferDataARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BufferSubDataARB) (GLenum, GLintptrARB,
-                                                    GLsizeiptrARB,
-                                                    const GLvoid *);
-#define CALL_BufferSubDataARB(disp, parameters) \
-    (* GET_BufferSubDataARB(disp)) parameters
-static inline _glptr_BufferSubDataARB
-GET_BufferSubDataARB(struct _glapi_table *disp)
-{
-    return (_glptr_BufferSubDataARB) (GET_by_offset
-                                      (disp, _gloffset_BufferSubDataARB));
-}
-
-static inline void
-SET_BufferSubDataARB(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLenum, GLintptrARB, GLsizeiptrARB,
-                                            const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_BufferSubDataARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteBuffersARB) (GLsizei, const GLuint *);
-
-#define CALL_DeleteBuffersARB(disp, parameters) \
-    (* GET_DeleteBuffersARB(disp)) parameters
-static inline _glptr_DeleteBuffersARB
-GET_DeleteBuffersARB(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteBuffersARB) (GET_by_offset
-                                      (disp, _gloffset_DeleteBuffersARB));
-}
-
-static inline void
-SET_DeleteBuffersARB(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_DeleteBuffersARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenBuffersARB) (GLsizei, GLuint *);
-
-#define CALL_GenBuffersARB(disp, parameters) \
-    (* GET_GenBuffersARB(disp)) parameters
-static inline _glptr_GenBuffersARB
-GET_GenBuffersARB(struct _glapi_table *disp)
-{
-    return (_glptr_GenBuffersARB) (GET_by_offset
-                                   (disp, _gloffset_GenBuffersARB));
-}
-
-static inline void
-SET_GenBuffersARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GenBuffersARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetBufferParameterivARB) (GLenum, GLenum,
-                                                           GLint *);
-#define CALL_GetBufferParameterivARB(disp, parameters) \
-    (* GET_GetBufferParameterivARB(disp)) parameters
-static inline _glptr_GetBufferParameterivARB
-GET_GetBufferParameterivARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetBufferParameterivARB) (GET_by_offset
-                                             (disp,
-                                              _gloffset_GetBufferParameterivARB));
-}
-
-static inline void
-SET_GetBufferParameterivARB(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetBufferParameterivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetBufferPointervARB) (GLenum, GLenum,
-                                                        GLvoid **);
-#define CALL_GetBufferPointervARB(disp, parameters) \
-    (* GET_GetBufferPointervARB(disp)) parameters
-static inline _glptr_GetBufferPointervARB
-GET_GetBufferPointervARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetBufferPointervARB) (GET_by_offset
-                                          (disp,
-                                           _gloffset_GetBufferPointervARB));
-}
-
-static inline void
-SET_GetBufferPointervARB(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLenum, GLenum, GLvoid **))
-{
-    SET_by_offset(disp, _gloffset_GetBufferPointervARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetBufferSubDataARB) (GLenum, GLintptrARB,
-                                                       GLsizeiptrARB, GLvoid *);
-#define CALL_GetBufferSubDataARB(disp, parameters) \
-    (* GET_GetBufferSubDataARB(disp)) parameters
-static inline _glptr_GetBufferSubDataARB
-GET_GetBufferSubDataARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetBufferSubDataARB) (GET_by_offset
-                                         (disp, _gloffset_GetBufferSubDataARB));
-}
-
-static inline void
-SET_GetBufferSubDataARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLintptrARB,
-                                               GLsizeiptrARB, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetBufferSubDataARB, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsBufferARB) (GLuint);
-
-#define CALL_IsBufferARB(disp, parameters) \
-    (* GET_IsBufferARB(disp)) parameters
-static inline _glptr_IsBufferARB
-GET_IsBufferARB(struct _glapi_table *disp)
-{
-    return (_glptr_IsBufferARB) (GET_by_offset(disp, _gloffset_IsBufferARB));
-}
-
-static inline void
-SET_IsBufferARB(struct _glapi_table *disp, GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsBufferARB, fn);
-}
-
-typedef GLvoid *(GLAPIENTRYP _glptr_MapBufferARB) (GLenum, GLenum);
-
-#define CALL_MapBufferARB(disp, parameters) \
-    (* GET_MapBufferARB(disp)) parameters
-static inline _glptr_MapBufferARB
-GET_MapBufferARB(struct _glapi_table *disp)
-{
-    return (_glptr_MapBufferARB) (GET_by_offset(disp, _gloffset_MapBufferARB));
-}
-
-static inline void
-SET_MapBufferARB(struct _glapi_table *disp,
-                 GLvoid * (GLAPIENTRYP fn) (GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_MapBufferARB, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_UnmapBufferARB) (GLenum);
-
-#define CALL_UnmapBufferARB(disp, parameters) \
-    (* GET_UnmapBufferARB(disp)) parameters
-static inline _glptr_UnmapBufferARB
-GET_UnmapBufferARB(struct _glapi_table *disp)
-{
-    return (_glptr_UnmapBufferARB) (GET_by_offset
-                                    (disp, _gloffset_UnmapBufferARB));
-}
-
-static inline void
-SET_UnmapBufferARB(struct _glapi_table *disp,
-                   GLboolean(GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_UnmapBufferARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BeginQueryARB) (GLenum, GLuint);
-
-#define CALL_BeginQueryARB(disp, parameters) \
-    (* GET_BeginQueryARB(disp)) parameters
-static inline _glptr_BeginQueryARB
-GET_BeginQueryARB(struct _glapi_table *disp)
-{
-    return (_glptr_BeginQueryARB) (GET_by_offset
-                                   (disp, _gloffset_BeginQueryARB));
-}
-
-static inline void
-SET_BeginQueryARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_BeginQueryARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteQueriesARB) (GLsizei, const GLuint *);
-
-#define CALL_DeleteQueriesARB(disp, parameters) \
-    (* GET_DeleteQueriesARB(disp)) parameters
-static inline _glptr_DeleteQueriesARB
-GET_DeleteQueriesARB(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteQueriesARB) (GET_by_offset
-                                      (disp, _gloffset_DeleteQueriesARB));
-}
-
-static inline void
-SET_DeleteQueriesARB(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_DeleteQueriesARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EndQueryARB) (GLenum);
-
-#define CALL_EndQueryARB(disp, parameters) \
-    (* GET_EndQueryARB(disp)) parameters
-static inline _glptr_EndQueryARB
-GET_EndQueryARB(struct _glapi_table *disp)
-{
-    return (_glptr_EndQueryARB) (GET_by_offset(disp, _gloffset_EndQueryARB));
-}
-
-static inline void
-SET_EndQueryARB(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_EndQueryARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenQueriesARB) (GLsizei, GLuint *);
-
-#define CALL_GenQueriesARB(disp, parameters) \
-    (* GET_GenQueriesARB(disp)) parameters
-static inline _glptr_GenQueriesARB
-GET_GenQueriesARB(struct _glapi_table *disp)
-{
-    return (_glptr_GenQueriesARB) (GET_by_offset
-                                   (disp, _gloffset_GenQueriesARB));
-}
-
-static inline void
-SET_GenQueriesARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GenQueriesARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetQueryObjectivARB) (GLuint, GLenum, GLint *);
-
-#define CALL_GetQueryObjectivARB(disp, parameters) \
-    (* GET_GetQueryObjectivARB(disp)) parameters
-static inline _glptr_GetQueryObjectivARB
-GET_GetQueryObjectivARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetQueryObjectivARB) (GET_by_offset
-                                         (disp, _gloffset_GetQueryObjectivARB));
-}
-
-static inline void
-SET_GetQueryObjectivARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetQueryObjectivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetQueryObjectuivARB) (GLuint, GLenum,
-                                                        GLuint *);
-#define CALL_GetQueryObjectuivARB(disp, parameters) \
-    (* GET_GetQueryObjectuivARB(disp)) parameters
-static inline _glptr_GetQueryObjectuivARB
-GET_GetQueryObjectuivARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetQueryObjectuivARB) (GET_by_offset
-                                          (disp,
-                                           _gloffset_GetQueryObjectuivARB));
-}
-
-static inline void
-SET_GetQueryObjectuivARB(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, GLenum, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GetQueryObjectuivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetQueryivARB) (GLenum, GLenum, GLint *);
-
-#define CALL_GetQueryivARB(disp, parameters) \
-    (* GET_GetQueryivARB(disp)) parameters
-static inline _glptr_GetQueryivARB
-GET_GetQueryivARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetQueryivARB) (GET_by_offset
-                                   (disp, _gloffset_GetQueryivARB));
-}
-
-static inline void
-SET_GetQueryivARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetQueryivARB, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsQueryARB) (GLuint);
-
-#define CALL_IsQueryARB(disp, parameters) \
-    (* GET_IsQueryARB(disp)) parameters
-static inline _glptr_IsQueryARB
-GET_IsQueryARB(struct _glapi_table *disp)
-{
-    return (_glptr_IsQueryARB) (GET_by_offset(disp, _gloffset_IsQueryARB));
-}
-
-static inline void
-SET_IsQueryARB(struct _glapi_table *disp, GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsQueryARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_AttachObjectARB) (GLhandleARB, GLhandleARB);
-
-#define CALL_AttachObjectARB(disp, parameters) \
-    (* GET_AttachObjectARB(disp)) parameters
-static inline _glptr_AttachObjectARB
-GET_AttachObjectARB(struct _glapi_table *disp)
-{
-    return (_glptr_AttachObjectARB) (GET_by_offset
-                                     (disp, _gloffset_AttachObjectARB));
-}
-
-static inline void
-SET_AttachObjectARB(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLhandleARB, GLhandleARB))
-{
-    SET_by_offset(disp, _gloffset_AttachObjectARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CompileShaderARB) (GLhandleARB);
-
-#define CALL_CompileShaderARB(disp, parameters) \
-    (* GET_CompileShaderARB(disp)) parameters
-static inline _glptr_CompileShaderARB
-GET_CompileShaderARB(struct _glapi_table *disp)
-{
-    return (_glptr_CompileShaderARB) (GET_by_offset
-                                      (disp, _gloffset_CompileShaderARB));
-}
-
-static inline void
-SET_CompileShaderARB(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLhandleARB))
-{
-    SET_by_offset(disp, _gloffset_CompileShaderARB, fn);
-}
-
-typedef GLhandleARB(GLAPIENTRYP _glptr_CreateProgramObjectARB) (void);
-
-#define CALL_CreateProgramObjectARB(disp, parameters) \
-    (* GET_CreateProgramObjectARB(disp)) parameters
-static inline _glptr_CreateProgramObjectARB
-GET_CreateProgramObjectARB(struct _glapi_table *disp)
-{
-    return (_glptr_CreateProgramObjectARB) (GET_by_offset
-                                            (disp,
-                                             _gloffset_CreateProgramObjectARB));
-}
-
-static inline void
-SET_CreateProgramObjectARB(struct _glapi_table *disp,
-                           GLhandleARB(GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_CreateProgramObjectARB, fn);
-}
-
-typedef GLhandleARB(GLAPIENTRYP _glptr_CreateShaderObjectARB) (GLenum);
-
-#define CALL_CreateShaderObjectARB(disp, parameters) \
-    (* GET_CreateShaderObjectARB(disp)) parameters
-static inline _glptr_CreateShaderObjectARB
-GET_CreateShaderObjectARB(struct _glapi_table *disp)
-{
-    return (_glptr_CreateShaderObjectARB) (GET_by_offset
-                                           (disp,
-                                            _gloffset_CreateShaderObjectARB));
-}
-
-static inline void
-SET_CreateShaderObjectARB(struct _glapi_table *disp,
-                          GLhandleARB(GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_CreateShaderObjectARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteObjectARB) (GLhandleARB);
-
-#define CALL_DeleteObjectARB(disp, parameters) \
-    (* GET_DeleteObjectARB(disp)) parameters
-static inline _glptr_DeleteObjectARB
-GET_DeleteObjectARB(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteObjectARB) (GET_by_offset
-                                     (disp, _gloffset_DeleteObjectARB));
-}
-
-static inline void
-SET_DeleteObjectARB(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLhandleARB))
-{
-    SET_by_offset(disp, _gloffset_DeleteObjectARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DetachObjectARB) (GLhandleARB, GLhandleARB);
-
-#define CALL_DetachObjectARB(disp, parameters) \
-    (* GET_DetachObjectARB(disp)) parameters
-static inline _glptr_DetachObjectARB
-GET_DetachObjectARB(struct _glapi_table *disp)
-{
-    return (_glptr_DetachObjectARB) (GET_by_offset
-                                     (disp, _gloffset_DetachObjectARB));
-}
-
-static inline void
-SET_DetachObjectARB(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLhandleARB, GLhandleARB))
-{
-    SET_by_offset(disp, _gloffset_DetachObjectARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetActiveUniformARB) (GLhandleARB, GLuint,
-                                                       GLsizei, GLsizei *,
-                                                       GLint *, GLenum *,
-                                                       GLcharARB *);
-#define CALL_GetActiveUniformARB(disp, parameters) \
-    (* GET_GetActiveUniformARB(disp)) parameters
-static inline _glptr_GetActiveUniformARB
-GET_GetActiveUniformARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetActiveUniformARB) (GET_by_offset
-                                         (disp, _gloffset_GetActiveUniformARB));
-}
-
-static inline void
-SET_GetActiveUniformARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLhandleARB, GLuint, GLsizei,
-                                               GLsizei *, GLint *, GLenum *,
-                                               GLcharARB *))
-{
-    SET_by_offset(disp, _gloffset_GetActiveUniformARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetAttachedObjectsARB) (GLhandleARB, GLsizei,
-                                                         GLsizei *,
-                                                         GLhandleARB *);
-#define CALL_GetAttachedObjectsARB(disp, parameters) \
-    (* GET_GetAttachedObjectsARB(disp)) parameters
-static inline _glptr_GetAttachedObjectsARB
-GET_GetAttachedObjectsARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetAttachedObjectsARB) (GET_by_offset
-                                           (disp,
-                                            _gloffset_GetAttachedObjectsARB));
-}
-
-static inline void
-SET_GetAttachedObjectsARB(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLhandleARB, GLsizei,
-                                                 GLsizei *, GLhandleARB *))
-{
-    SET_by_offset(disp, _gloffset_GetAttachedObjectsARB, fn);
-}
-
-typedef GLhandleARB(GLAPIENTRYP _glptr_GetHandleARB) (GLenum);
-
-#define CALL_GetHandleARB(disp, parameters) \
-    (* GET_GetHandleARB(disp)) parameters
-static inline _glptr_GetHandleARB
-GET_GetHandleARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetHandleARB) (GET_by_offset(disp, _gloffset_GetHandleARB));
-}
-
-static inline void
-SET_GetHandleARB(struct _glapi_table *disp,
-                 GLhandleARB(GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_GetHandleARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetInfoLogARB) (GLhandleARB, GLsizei,
-                                                 GLsizei *, GLcharARB *);
-#define CALL_GetInfoLogARB(disp, parameters) \
-    (* GET_GetInfoLogARB(disp)) parameters
-static inline _glptr_GetInfoLogARB
-GET_GetInfoLogARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetInfoLogARB) (GET_by_offset
-                                   (disp, _gloffset_GetInfoLogARB));
-}
-
-static inline void
-SET_GetInfoLogARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLhandleARB, GLsizei, GLsizei *,
-                                         GLcharARB *))
-{
-    SET_by_offset(disp, _gloffset_GetInfoLogARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetObjectParameterfvARB) (GLhandleARB, GLenum,
-                                                           GLfloat *);
-#define CALL_GetObjectParameterfvARB(disp, parameters) \
-    (* GET_GetObjectParameterfvARB(disp)) parameters
-static inline _glptr_GetObjectParameterfvARB
-GET_GetObjectParameterfvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetObjectParameterfvARB) (GET_by_offset
-                                             (disp,
-                                              _gloffset_GetObjectParameterfvARB));
-}
-
-static inline void
-SET_GetObjectParameterfvARB(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLhandleARB, GLenum,
-                                                   GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetObjectParameterfvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetObjectParameterivARB) (GLhandleARB, GLenum,
-                                                           GLint *);
-#define CALL_GetObjectParameterivARB(disp, parameters) \
-    (* GET_GetObjectParameterivARB(disp)) parameters
-static inline _glptr_GetObjectParameterivARB
-GET_GetObjectParameterivARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetObjectParameterivARB) (GET_by_offset
-                                             (disp,
-                                              _gloffset_GetObjectParameterivARB));
-}
-
-static inline void
-SET_GetObjectParameterivARB(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLhandleARB, GLenum,
-                                                   GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetObjectParameterivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetShaderSourceARB) (GLhandleARB, GLsizei,
-                                                      GLsizei *, GLcharARB *);
-#define CALL_GetShaderSourceARB(disp, parameters) \
-    (* GET_GetShaderSourceARB(disp)) parameters
-static inline _glptr_GetShaderSourceARB
-GET_GetShaderSourceARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetShaderSourceARB) (GET_by_offset
-                                        (disp, _gloffset_GetShaderSourceARB));
-}
-
-static inline void
-SET_GetShaderSourceARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLhandleARB, GLsizei, GLsizei *,
-                                              GLcharARB *))
-{
-    SET_by_offset(disp, _gloffset_GetShaderSourceARB, fn);
-}
-
-typedef GLint(GLAPIENTRYP _glptr_GetUniformLocationARB) (GLhandleARB,
-                                                         const GLcharARB *);
-#define CALL_GetUniformLocationARB(disp, parameters) \
-    (* GET_GetUniformLocationARB(disp)) parameters
-static inline _glptr_GetUniformLocationARB
-GET_GetUniformLocationARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetUniformLocationARB) (GET_by_offset
-                                           (disp,
-                                            _gloffset_GetUniformLocationARB));
-}
-
-static inline void
-SET_GetUniformLocationARB(struct _glapi_table *disp,
-                          GLint(GLAPIENTRYP fn) (GLhandleARB,
-                                                 const GLcharARB *))
-{
-    SET_by_offset(disp, _gloffset_GetUniformLocationARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetUniformfvARB) (GLhandleARB, GLint,
-                                                   GLfloat *);
-#define CALL_GetUniformfvARB(disp, parameters) \
-    (* GET_GetUniformfvARB(disp)) parameters
-static inline _glptr_GetUniformfvARB
-GET_GetUniformfvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetUniformfvARB) (GET_by_offset
-                                     (disp, _gloffset_GetUniformfvARB));
-}
-
-static inline void
-SET_GetUniformfvARB(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLhandleARB, GLint, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetUniformfvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetUniformivARB) (GLhandleARB, GLint, GLint *);
-
-#define CALL_GetUniformivARB(disp, parameters) \
-    (* GET_GetUniformivARB(disp)) parameters
-static inline _glptr_GetUniformivARB
-GET_GetUniformivARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetUniformivARB) (GET_by_offset
-                                     (disp, _gloffset_GetUniformivARB));
-}
-
-static inline void
-SET_GetUniformivARB(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLhandleARB, GLint, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetUniformivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LinkProgramARB) (GLhandleARB);
-
-#define CALL_LinkProgramARB(disp, parameters) \
-    (* GET_LinkProgramARB(disp)) parameters
-static inline _glptr_LinkProgramARB
-GET_LinkProgramARB(struct _glapi_table *disp)
-{
-    return (_glptr_LinkProgramARB) (GET_by_offset
-                                    (disp, _gloffset_LinkProgramARB));
-}
-
-static inline void
-SET_LinkProgramARB(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLhandleARB))
-{
-    SET_by_offset(disp, _gloffset_LinkProgramARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ShaderSourceARB) (GLhandleARB, GLsizei,
-                                                   const GLcharARB **,
-                                                   const GLint *);
-#define CALL_ShaderSourceARB(disp, parameters) \
-    (* GET_ShaderSourceARB(disp)) parameters
-static inline _glptr_ShaderSourceARB
-GET_ShaderSourceARB(struct _glapi_table *disp)
-{
-    return (_glptr_ShaderSourceARB) (GET_by_offset
-                                     (disp, _gloffset_ShaderSourceARB));
-}
-
-static inline void
-SET_ShaderSourceARB(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLhandleARB, GLsizei,
-                                           const GLcharARB **, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_ShaderSourceARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform1fARB) (GLint, GLfloat);
-
-#define CALL_Uniform1fARB(disp, parameters) \
-    (* GET_Uniform1fARB(disp)) parameters
-static inline _glptr_Uniform1fARB
-GET_Uniform1fARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform1fARB) (GET_by_offset(disp, _gloffset_Uniform1fARB));
-}
-
-static inline void
-SET_Uniform1fARB(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLint, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Uniform1fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform1fvARB) (GLint, GLsizei,
-                                                 const GLfloat *);
-#define CALL_Uniform1fvARB(disp, parameters) \
-    (* GET_Uniform1fvARB(disp)) parameters
-static inline _glptr_Uniform1fvARB
-GET_Uniform1fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform1fvARB) (GET_by_offset
-                                   (disp, _gloffset_Uniform1fvARB));
-}
-
-static inline void
-SET_Uniform1fvARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLsizei, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Uniform1fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform1iARB) (GLint, GLint);
-
-#define CALL_Uniform1iARB(disp, parameters) \
-    (* GET_Uniform1iARB(disp)) parameters
-static inline _glptr_Uniform1iARB
-GET_Uniform1iARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform1iARB) (GET_by_offset(disp, _gloffset_Uniform1iARB));
-}
-
-static inline void
-SET_Uniform1iARB(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_Uniform1iARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform1ivARB) (GLint, GLsizei, const GLint *);
-
-#define CALL_Uniform1ivARB(disp, parameters) \
-    (* GET_Uniform1ivARB(disp)) parameters
-static inline _glptr_Uniform1ivARB
-GET_Uniform1ivARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform1ivARB) (GET_by_offset
-                                   (disp, _gloffset_Uniform1ivARB));
-}
-
-static inline void
-SET_Uniform1ivARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLsizei, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Uniform1ivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform2fARB) (GLint, GLfloat, GLfloat);
-
-#define CALL_Uniform2fARB(disp, parameters) \
-    (* GET_Uniform2fARB(disp)) parameters
-static inline _glptr_Uniform2fARB
-GET_Uniform2fARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform2fARB) (GET_by_offset(disp, _gloffset_Uniform2fARB));
-}
-
-static inline void
-SET_Uniform2fARB(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLint, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Uniform2fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform2fvARB) (GLint, GLsizei,
-                                                 const GLfloat *);
-#define CALL_Uniform2fvARB(disp, parameters) \
-    (* GET_Uniform2fvARB(disp)) parameters
-static inline _glptr_Uniform2fvARB
-GET_Uniform2fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform2fvARB) (GET_by_offset
-                                   (disp, _gloffset_Uniform2fvARB));
-}
-
-static inline void
-SET_Uniform2fvARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLsizei, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Uniform2fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform2iARB) (GLint, GLint, GLint);
-
-#define CALL_Uniform2iARB(disp, parameters) \
-    (* GET_Uniform2iARB(disp)) parameters
-static inline _glptr_Uniform2iARB
-GET_Uniform2iARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform2iARB) (GET_by_offset(disp, _gloffset_Uniform2iARB));
-}
-
-static inline void
-SET_Uniform2iARB(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_Uniform2iARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform2ivARB) (GLint, GLsizei, const GLint *);
-
-#define CALL_Uniform2ivARB(disp, parameters) \
-    (* GET_Uniform2ivARB(disp)) parameters
-static inline _glptr_Uniform2ivARB
-GET_Uniform2ivARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform2ivARB) (GET_by_offset
-                                   (disp, _gloffset_Uniform2ivARB));
-}
-
-static inline void
-SET_Uniform2ivARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLsizei, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Uniform2ivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform3fARB) (GLint, GLfloat, GLfloat,
-                                                GLfloat);
-#define CALL_Uniform3fARB(disp, parameters) \
-    (* GET_Uniform3fARB(disp)) parameters
-static inline _glptr_Uniform3fARB
-GET_Uniform3fARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform3fARB) (GET_by_offset(disp, _gloffset_Uniform3fARB));
-}
-
-static inline void
-SET_Uniform3fARB(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLint, GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Uniform3fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform3fvARB) (GLint, GLsizei,
-                                                 const GLfloat *);
-#define CALL_Uniform3fvARB(disp, parameters) \
-    (* GET_Uniform3fvARB(disp)) parameters
-static inline _glptr_Uniform3fvARB
-GET_Uniform3fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform3fvARB) (GET_by_offset
-                                   (disp, _gloffset_Uniform3fvARB));
-}
-
-static inline void
-SET_Uniform3fvARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLsizei, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Uniform3fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform3iARB) (GLint, GLint, GLint, GLint);
-
-#define CALL_Uniform3iARB(disp, parameters) \
-    (* GET_Uniform3iARB(disp)) parameters
-static inline _glptr_Uniform3iARB
-GET_Uniform3iARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform3iARB) (GET_by_offset(disp, _gloffset_Uniform3iARB));
-}
-
-static inline void
-SET_Uniform3iARB(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLint, GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_Uniform3iARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform3ivARB) (GLint, GLsizei, const GLint *);
-
-#define CALL_Uniform3ivARB(disp, parameters) \
-    (* GET_Uniform3ivARB(disp)) parameters
-static inline _glptr_Uniform3ivARB
-GET_Uniform3ivARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform3ivARB) (GET_by_offset
-                                   (disp, _gloffset_Uniform3ivARB));
-}
-
-static inline void
-SET_Uniform3ivARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLsizei, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Uniform3ivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform4fARB) (GLint, GLfloat, GLfloat,
-                                                GLfloat, GLfloat);
-#define CALL_Uniform4fARB(disp, parameters) \
-    (* GET_Uniform4fARB(disp)) parameters
-static inline _glptr_Uniform4fARB
-GET_Uniform4fARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform4fARB) (GET_by_offset(disp, _gloffset_Uniform4fARB));
-}
-
-static inline void
-SET_Uniform4fARB(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLint, GLfloat, GLfloat, GLfloat,
-                                        GLfloat))
-{
-    SET_by_offset(disp, _gloffset_Uniform4fARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform4fvARB) (GLint, GLsizei,
-                                                 const GLfloat *);
-#define CALL_Uniform4fvARB(disp, parameters) \
-    (* GET_Uniform4fvARB(disp)) parameters
-static inline _glptr_Uniform4fvARB
-GET_Uniform4fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform4fvARB) (GET_by_offset
-                                   (disp, _gloffset_Uniform4fvARB));
-}
-
-static inline void
-SET_Uniform4fvARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLsizei, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_Uniform4fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform4iARB) (GLint, GLint, GLint, GLint,
-                                                GLint);
-#define CALL_Uniform4iARB(disp, parameters) \
-    (* GET_Uniform4iARB(disp)) parameters
-static inline _glptr_Uniform4iARB
-GET_Uniform4iARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform4iARB) (GET_by_offset(disp, _gloffset_Uniform4iARB));
-}
-
-static inline void
-SET_Uniform4iARB(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLint, GLint, GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_Uniform4iARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform4ivARB) (GLint, GLsizei, const GLint *);
-
-#define CALL_Uniform4ivARB(disp, parameters) \
-    (* GET_Uniform4ivARB(disp)) parameters
-static inline _glptr_Uniform4ivARB
-GET_Uniform4ivARB(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform4ivARB) (GET_by_offset
-                                   (disp, _gloffset_Uniform4ivARB));
-}
-
-static inline void
-SET_Uniform4ivARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLsizei, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_Uniform4ivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_UniformMatrix2fvARB) (GLint, GLsizei,
-                                                       GLboolean,
-                                                       const GLfloat *);
-#define CALL_UniformMatrix2fvARB(disp, parameters) \
-    (* GET_UniformMatrix2fvARB(disp)) parameters
-static inline _glptr_UniformMatrix2fvARB
-GET_UniformMatrix2fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_UniformMatrix2fvARB) (GET_by_offset
-                                         (disp, _gloffset_UniformMatrix2fvARB));
-}
-
-static inline void
-SET_UniformMatrix2fvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLint, GLsizei, GLboolean,
-                                               const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_UniformMatrix2fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_UniformMatrix3fvARB) (GLint, GLsizei,
-                                                       GLboolean,
-                                                       const GLfloat *);
-#define CALL_UniformMatrix3fvARB(disp, parameters) \
-    (* GET_UniformMatrix3fvARB(disp)) parameters
-static inline _glptr_UniformMatrix3fvARB
-GET_UniformMatrix3fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_UniformMatrix3fvARB) (GET_by_offset
-                                         (disp, _gloffset_UniformMatrix3fvARB));
-}
-
-static inline void
-SET_UniformMatrix3fvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLint, GLsizei, GLboolean,
-                                               const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_UniformMatrix3fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_UniformMatrix4fvARB) (GLint, GLsizei,
-                                                       GLboolean,
-                                                       const GLfloat *);
-#define CALL_UniformMatrix4fvARB(disp, parameters) \
-    (* GET_UniformMatrix4fvARB(disp)) parameters
-static inline _glptr_UniformMatrix4fvARB
-GET_UniformMatrix4fvARB(struct _glapi_table *disp)
-{
-    return (_glptr_UniformMatrix4fvARB) (GET_by_offset
-                                         (disp, _gloffset_UniformMatrix4fvARB));
-}
-
-static inline void
-SET_UniformMatrix4fvARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLint, GLsizei, GLboolean,
-                                               const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_UniformMatrix4fvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_UseProgramObjectARB) (GLhandleARB);
-
-#define CALL_UseProgramObjectARB(disp, parameters) \
-    (* GET_UseProgramObjectARB(disp)) parameters
-static inline _glptr_UseProgramObjectARB
-GET_UseProgramObjectARB(struct _glapi_table *disp)
-{
-    return (_glptr_UseProgramObjectARB) (GET_by_offset
-                                         (disp, _gloffset_UseProgramObjectARB));
-}
-
-static inline void
-SET_UseProgramObjectARB(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLhandleARB))
-{
-    SET_by_offset(disp, _gloffset_UseProgramObjectARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ValidateProgramARB) (GLhandleARB);
-
-#define CALL_ValidateProgramARB(disp, parameters) \
-    (* GET_ValidateProgramARB(disp)) parameters
-static inline _glptr_ValidateProgramARB
-GET_ValidateProgramARB(struct _glapi_table *disp)
-{
-    return (_glptr_ValidateProgramARB) (GET_by_offset
-                                        (disp, _gloffset_ValidateProgramARB));
-}
-
-static inline void
-SET_ValidateProgramARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLhandleARB))
-{
-    SET_by_offset(disp, _gloffset_ValidateProgramARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindAttribLocationARB) (GLhandleARB, GLuint,
-                                                         const GLcharARB *);
-#define CALL_BindAttribLocationARB(disp, parameters) \
-    (* GET_BindAttribLocationARB(disp)) parameters
-static inline _glptr_BindAttribLocationARB
-GET_BindAttribLocationARB(struct _glapi_table *disp)
-{
-    return (_glptr_BindAttribLocationARB) (GET_by_offset
-                                           (disp,
-                                            _gloffset_BindAttribLocationARB));
-}
-
-static inline void
-SET_BindAttribLocationARB(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLhandleARB, GLuint,
-                                                 const GLcharARB *))
-{
-    SET_by_offset(disp, _gloffset_BindAttribLocationARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetActiveAttribARB) (GLhandleARB, GLuint,
-                                                      GLsizei, GLsizei *,
-                                                      GLint *, GLenum *,
-                                                      GLcharARB *);
-#define CALL_GetActiveAttribARB(disp, parameters) \
-    (* GET_GetActiveAttribARB(disp)) parameters
-static inline _glptr_GetActiveAttribARB
-GET_GetActiveAttribARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetActiveAttribARB) (GET_by_offset
-                                        (disp, _gloffset_GetActiveAttribARB));
-}
-
-static inline void
-SET_GetActiveAttribARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLhandleARB, GLuint, GLsizei,
-                                              GLsizei *, GLint *, GLenum *,
-                                              GLcharARB *))
-{
-    SET_by_offset(disp, _gloffset_GetActiveAttribARB, fn);
-}
-
-typedef GLint(GLAPIENTRYP _glptr_GetAttribLocationARB) (GLhandleARB,
-                                                        const GLcharARB *);
-#define CALL_GetAttribLocationARB(disp, parameters) \
-    (* GET_GetAttribLocationARB(disp)) parameters
-static inline _glptr_GetAttribLocationARB
-GET_GetAttribLocationARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetAttribLocationARB) (GET_by_offset
-                                          (disp,
-                                           _gloffset_GetAttribLocationARB));
-}
-
-static inline void
-SET_GetAttribLocationARB(struct _glapi_table *disp,
-                         GLint(GLAPIENTRYP fn) (GLhandleARB, const GLcharARB *))
-{
-    SET_by_offset(disp, _gloffset_GetAttribLocationARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DrawBuffersARB) (GLsizei, const GLenum *);
-
-#define CALL_DrawBuffersARB(disp, parameters) \
-    (* GET_DrawBuffersARB(disp)) parameters
-static inline _glptr_DrawBuffersARB
-GET_DrawBuffersARB(struct _glapi_table *disp)
-{
-    return (_glptr_DrawBuffersARB) (GET_by_offset
-                                    (disp, _gloffset_DrawBuffersARB));
-}
-
-static inline void
-SET_DrawBuffersARB(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLsizei, const GLenum *))
-{
-    SET_by_offset(disp, _gloffset_DrawBuffersARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClampColorARB) (GLenum, GLenum);
-
-#define CALL_ClampColorARB(disp, parameters) \
-    (* GET_ClampColorARB(disp)) parameters
-static inline _glptr_ClampColorARB
-GET_ClampColorARB(struct _glapi_table *disp)
-{
-    return (_glptr_ClampColorARB) (GET_by_offset
-                                   (disp, _gloffset_ClampColorARB));
-}
-
-static inline void
-SET_ClampColorARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_ClampColorARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DrawArraysInstancedARB) (GLenum, GLint,
-                                                          GLsizei, GLsizei);
-#define CALL_DrawArraysInstancedARB(disp, parameters) \
-    (* GET_DrawArraysInstancedARB(disp)) parameters
-static inline _glptr_DrawArraysInstancedARB
-GET_DrawArraysInstancedARB(struct _glapi_table *disp)
-{
-    return (_glptr_DrawArraysInstancedARB) (GET_by_offset
-                                            (disp,
-                                             _gloffset_DrawArraysInstancedARB));
-}
-
-static inline void
-SET_DrawArraysInstancedARB(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLint, GLsizei,
-                                                  GLsizei))
-{
-    SET_by_offset(disp, _gloffset_DrawArraysInstancedARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DrawElementsInstancedARB) (GLenum, GLsizei,
-                                                            GLenum,
-                                                            const GLvoid *,
-                                                            GLsizei);
-#define CALL_DrawElementsInstancedARB(disp, parameters) \
-    (* GET_DrawElementsInstancedARB(disp)) parameters
-static inline _glptr_DrawElementsInstancedARB
-GET_DrawElementsInstancedARB(struct _glapi_table *disp)
-{
-    return (_glptr_DrawElementsInstancedARB) (GET_by_offset
-                                              (disp,
-                                               _gloffset_DrawElementsInstancedARB));
-}
-
-static inline void
-SET_DrawElementsInstancedARB(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLenum, GLsizei, GLenum,
-                                                    const GLvoid *, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_DrawElementsInstancedARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RenderbufferStorageMultisample) (GLenum,
-                                                                  GLsizei,
-                                                                  GLenum,
-                                                                  GLsizei,
-                                                                  GLsizei);
-#define CALL_RenderbufferStorageMultisample(disp, parameters) \
-    (* GET_RenderbufferStorageMultisample(disp)) parameters
-static inline _glptr_RenderbufferStorageMultisample
-GET_RenderbufferStorageMultisample(struct _glapi_table *disp)
-{
-    return (_glptr_RenderbufferStorageMultisample) (GET_by_offset
-                                                    (disp,
-                                                     _gloffset_RenderbufferStorageMultisample));
-}
-
-static inline void
-SET_RenderbufferStorageMultisample(struct _glapi_table *disp,
-                                   void (GLAPIENTRYP fn) (GLenum, GLsizei,
-                                                          GLenum, GLsizei,
-                                                          GLsizei))
-{
-    SET_by_offset(disp, _gloffset_RenderbufferStorageMultisample, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FramebufferTextureARB) (GLenum, GLenum, GLuint,
-                                                         GLint);
-#define CALL_FramebufferTextureARB(disp, parameters) \
-    (* GET_FramebufferTextureARB(disp)) parameters
-static inline _glptr_FramebufferTextureARB
-GET_FramebufferTextureARB(struct _glapi_table *disp)
-{
-    return (_glptr_FramebufferTextureARB) (GET_by_offset
-                                           (disp,
-                                            _gloffset_FramebufferTextureARB));
-}
-
-static inline void
-SET_FramebufferTextureARB(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, GLenum, GLuint, GLint))
-{
-    SET_by_offset(disp, _gloffset_FramebufferTextureARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FramebufferTextureFaceARB) (GLenum, GLenum,
-                                                             GLuint, GLint,
-                                                             GLenum);
-#define CALL_FramebufferTextureFaceARB(disp, parameters) \
-    (* GET_FramebufferTextureFaceARB(disp)) parameters
-static inline _glptr_FramebufferTextureFaceARB
-GET_FramebufferTextureFaceARB(struct _glapi_table *disp)
-{
-    return (_glptr_FramebufferTextureFaceARB) (GET_by_offset
-                                               (disp,
-                                                _gloffset_FramebufferTextureFaceARB));
-}
-
-static inline void
-SET_FramebufferTextureFaceARB(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLenum, GLenum, GLuint,
-                                                     GLint, GLenum))
-{
-    SET_by_offset(disp, _gloffset_FramebufferTextureFaceARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramParameteriARB) (GLuint, GLenum, GLint);
-
-#define CALL_ProgramParameteriARB(disp, parameters) \
-    (* GET_ProgramParameteriARB(disp)) parameters
-static inline _glptr_ProgramParameteriARB
-GET_ProgramParameteriARB(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramParameteriARB) (GET_by_offset
-                                          (disp,
-                                           _gloffset_ProgramParameteriARB));
-}
-
-static inline void
-SET_ProgramParameteriARB(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_ProgramParameteriARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribDivisorARB) (GLuint, GLuint);
-
-#define CALL_VertexAttribDivisorARB(disp, parameters) \
-    (* GET_VertexAttribDivisorARB(disp)) parameters
-static inline _glptr_VertexAttribDivisorARB
-GET_VertexAttribDivisorARB(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribDivisorARB) (GET_by_offset
-                                            (disp,
-                                             _gloffset_VertexAttribDivisorARB));
-}
-
-static inline void
-SET_VertexAttribDivisorARB(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribDivisorARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FlushMappedBufferRange) (GLenum, GLintptr,
-                                                          GLsizeiptr);
-#define CALL_FlushMappedBufferRange(disp, parameters) \
-    (* GET_FlushMappedBufferRange(disp)) parameters
-static inline _glptr_FlushMappedBufferRange
-GET_FlushMappedBufferRange(struct _glapi_table *disp)
-{
-    return (_glptr_FlushMappedBufferRange) (GET_by_offset
-                                            (disp,
-                                             _gloffset_FlushMappedBufferRange));
-}
-
-static inline void
-SET_FlushMappedBufferRange(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLintptr, GLsizeiptr))
-{
-    SET_by_offset(disp, _gloffset_FlushMappedBufferRange, fn);
-}
-
-typedef GLvoid *(GLAPIENTRYP _glptr_MapBufferRange) (GLenum, GLintptr,
-                                                     GLsizeiptr, GLbitfield);
-#define CALL_MapBufferRange(disp, parameters) \
-    (* GET_MapBufferRange(disp)) parameters
-static inline _glptr_MapBufferRange
-GET_MapBufferRange(struct _glapi_table *disp)
-{
-    return (_glptr_MapBufferRange) (GET_by_offset
-                                    (disp, _gloffset_MapBufferRange));
-}
-
-static inline void
-SET_MapBufferRange(struct _glapi_table *disp,
-                   GLvoid * (GLAPIENTRYP fn) (GLenum, GLintptr, GLsizeiptr,
-                                              GLbitfield))
-{
-    SET_by_offset(disp, _gloffset_MapBufferRange, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexBufferARB) (GLenum, GLenum, GLuint);
-
-#define CALL_TexBufferARB(disp, parameters) \
-    (* GET_TexBufferARB(disp)) parameters
-static inline _glptr_TexBufferARB
-GET_TexBufferARB(struct _glapi_table *disp)
-{
-    return (_glptr_TexBufferARB) (GET_by_offset(disp, _gloffset_TexBufferARB));
-}
-
-static inline void
-SET_TexBufferARB(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_TexBufferARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindVertexArray) (GLuint);
-
-#define CALL_BindVertexArray(disp, parameters) \
-    (* GET_BindVertexArray(disp)) parameters
-static inline _glptr_BindVertexArray
-GET_BindVertexArray(struct _glapi_table *disp)
-{
-    return (_glptr_BindVertexArray) (GET_by_offset
-                                     (disp, _gloffset_BindVertexArray));
-}
-
-static inline void
-SET_BindVertexArray(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_BindVertexArray, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenVertexArrays) (GLsizei, GLuint *);
-
-#define CALL_GenVertexArrays(disp, parameters) \
-    (* GET_GenVertexArrays(disp)) parameters
-static inline _glptr_GenVertexArrays
-GET_GenVertexArrays(struct _glapi_table *disp)
-{
-    return (_glptr_GenVertexArrays) (GET_by_offset
-                                     (disp, _gloffset_GenVertexArrays));
-}
-
-static inline void
-SET_GenVertexArrays(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GenVertexArrays, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CopyBufferSubData) (GLenum, GLenum, GLintptr,
-                                                     GLintptr, GLsizeiptr);
-#define CALL_CopyBufferSubData(disp, parameters) \
-    (* GET_CopyBufferSubData(disp)) parameters
-static inline _glptr_CopyBufferSubData
-GET_CopyBufferSubData(struct _glapi_table *disp)
-{
-    return (_glptr_CopyBufferSubData) (GET_by_offset
-                                       (disp, _gloffset_CopyBufferSubData));
-}
-
-static inline void
-SET_CopyBufferSubData(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLenum, GLintptr, GLintptr,
-                                             GLsizeiptr))
-{
-    SET_by_offset(disp, _gloffset_CopyBufferSubData, fn);
-}
-
-typedef GLenum(GLAPIENTRYP _glptr_ClientWaitSync) (GLsync, GLbitfield,
-                                                   GLuint64);
-#define CALL_ClientWaitSync(disp, parameters) \
-    (* GET_ClientWaitSync(disp)) parameters
-static inline _glptr_ClientWaitSync
-GET_ClientWaitSync(struct _glapi_table *disp)
-{
-    return (_glptr_ClientWaitSync) (GET_by_offset
-                                    (disp, _gloffset_ClientWaitSync));
-}
-
-static inline void
-SET_ClientWaitSync(struct _glapi_table *disp,
-                   GLenum(GLAPIENTRYP fn) (GLsync, GLbitfield, GLuint64))
-{
-    SET_by_offset(disp, _gloffset_ClientWaitSync, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteSync) (GLsync);
-
-#define CALL_DeleteSync(disp, parameters) \
-    (* GET_DeleteSync(disp)) parameters
-static inline _glptr_DeleteSync
-GET_DeleteSync(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteSync) (GET_by_offset(disp, _gloffset_DeleteSync));
-}
-
-static inline void
-SET_DeleteSync(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLsync))
-{
-    SET_by_offset(disp, _gloffset_DeleteSync, fn);
-}
-
-typedef GLsync(GLAPIENTRYP _glptr_FenceSync) (GLenum, GLbitfield);
-
-#define CALL_FenceSync(disp, parameters) \
-    (* GET_FenceSync(disp)) parameters
-static inline _glptr_FenceSync
-GET_FenceSync(struct _glapi_table *disp)
-{
-    return (_glptr_FenceSync) (GET_by_offset(disp, _gloffset_FenceSync));
-}
-
-static inline void
-SET_FenceSync(struct _glapi_table *disp,
-              GLsync(GLAPIENTRYP fn) (GLenum, GLbitfield))
-{
-    SET_by_offset(disp, _gloffset_FenceSync, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetInteger64v) (GLenum, GLint64 *);
-
-#define CALL_GetInteger64v(disp, parameters) \
-    (* GET_GetInteger64v(disp)) parameters
-static inline _glptr_GetInteger64v
-GET_GetInteger64v(struct _glapi_table *disp)
-{
-    return (_glptr_GetInteger64v) (GET_by_offset
-                                   (disp, _gloffset_GetInteger64v));
-}
-
-static inline void
-SET_GetInteger64v(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLint64 *))
-{
-    SET_by_offset(disp, _gloffset_GetInteger64v, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetSynciv) (GLsync, GLenum, GLsizei, GLsizei *,
-                                             GLint *);
-#define CALL_GetSynciv(disp, parameters) \
-    (* GET_GetSynciv(disp)) parameters
-static inline _glptr_GetSynciv
-GET_GetSynciv(struct _glapi_table *disp)
-{
-    return (_glptr_GetSynciv) (GET_by_offset(disp, _gloffset_GetSynciv));
-}
-
-static inline void
-SET_GetSynciv(struct _glapi_table *disp,
-              void (GLAPIENTRYP fn) (GLsync, GLenum, GLsizei, GLsizei *,
-                                     GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetSynciv, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsSync) (GLsync);
-
-#define CALL_IsSync(disp, parameters) \
-    (* GET_IsSync(disp)) parameters
-static inline _glptr_IsSync
-GET_IsSync(struct _glapi_table *disp)
-{
-    return (_glptr_IsSync) (GET_by_offset(disp, _gloffset_IsSync));
-}
-
-static inline void
-SET_IsSync(struct _glapi_table *disp, GLboolean(GLAPIENTRYP fn) (GLsync))
-{
-    SET_by_offset(disp, _gloffset_IsSync, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WaitSync) (GLsync, GLbitfield, GLuint64);
-
-#define CALL_WaitSync(disp, parameters) \
-    (* GET_WaitSync(disp)) parameters
-static inline _glptr_WaitSync
-GET_WaitSync(struct _glapi_table *disp)
-{
-    return (_glptr_WaitSync) (GET_by_offset(disp, _gloffset_WaitSync));
-}
-
-static inline void
-SET_WaitSync(struct _glapi_table *disp,
-             void (GLAPIENTRYP fn) (GLsync, GLbitfield, GLuint64))
-{
-    SET_by_offset(disp, _gloffset_WaitSync, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DrawElementsBaseVertex) (GLenum, GLsizei,
-                                                          GLenum,
-                                                          const GLvoid *,
-                                                          GLint);
-#define CALL_DrawElementsBaseVertex(disp, parameters) \
-    (* GET_DrawElementsBaseVertex(disp)) parameters
-static inline _glptr_DrawElementsBaseVertex
-GET_DrawElementsBaseVertex(struct _glapi_table *disp)
-{
-    return (_glptr_DrawElementsBaseVertex) (GET_by_offset
-                                            (disp,
-                                             _gloffset_DrawElementsBaseVertex));
-}
-
-static inline void
-SET_DrawElementsBaseVertex(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLsizei, GLenum,
-                                                  const GLvoid *, GLint))
-{
-    SET_by_offset(disp, _gloffset_DrawElementsBaseVertex, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DrawElementsInstancedBaseVertex) (GLenum,
-                                                                   GLsizei,
-                                                                   GLenum,
-                                                                   const GLvoid
-                                                                   *, GLsizei,
-                                                                   GLint);
-#define CALL_DrawElementsInstancedBaseVertex(disp, parameters) \
-    (* GET_DrawElementsInstancedBaseVertex(disp)) parameters
-static inline _glptr_DrawElementsInstancedBaseVertex
-GET_DrawElementsInstancedBaseVertex(struct _glapi_table *disp)
-{
-    return (_glptr_DrawElementsInstancedBaseVertex) (GET_by_offset
-                                                     (disp,
-                                                      _gloffset_DrawElementsInstancedBaseVertex));
-}
-
-static inline void
-SET_DrawElementsInstancedBaseVertex(struct _glapi_table *disp,
-                                    void (GLAPIENTRYP fn) (GLenum, GLsizei,
-                                                           GLenum,
-                                                           const GLvoid *,
-                                                           GLsizei, GLint))
-{
-    SET_by_offset(disp, _gloffset_DrawElementsInstancedBaseVertex, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DrawRangeElementsBaseVertex) (GLenum, GLuint,
-                                                               GLuint, GLsizei,
-                                                               GLenum,
-                                                               const GLvoid *,
-                                                               GLint);
-#define CALL_DrawRangeElementsBaseVertex(disp, parameters) \
-    (* GET_DrawRangeElementsBaseVertex(disp)) parameters
-static inline _glptr_DrawRangeElementsBaseVertex
-GET_DrawRangeElementsBaseVertex(struct _glapi_table *disp)
-{
-    return (_glptr_DrawRangeElementsBaseVertex) (GET_by_offset
-                                                 (disp,
-                                                  _gloffset_DrawRangeElementsBaseVertex));
-}
-
-static inline void
-SET_DrawRangeElementsBaseVertex(struct _glapi_table *disp,
-                                void (GLAPIENTRYP fn) (GLenum, GLuint, GLuint,
-                                                       GLsizei, GLenum,
-                                                       const GLvoid *, GLint))
-{
-    SET_by_offset(disp, _gloffset_DrawRangeElementsBaseVertex, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiDrawElementsBaseVertex) (GLenum,
-                                                               const GLsizei *,
-                                                               GLenum,
-                                                               const GLvoid **,
-                                                               GLsizei,
-                                                               const GLint *);
-#define CALL_MultiDrawElementsBaseVertex(disp, parameters) \
-    (* GET_MultiDrawElementsBaseVertex(disp)) parameters
-static inline _glptr_MultiDrawElementsBaseVertex
-GET_MultiDrawElementsBaseVertex(struct _glapi_table *disp)
-{
-    return (_glptr_MultiDrawElementsBaseVertex) (GET_by_offset
-                                                 (disp,
-                                                  _gloffset_MultiDrawElementsBaseVertex));
-}
-
-static inline void
-SET_MultiDrawElementsBaseVertex(struct _glapi_table *disp,
-                                void (GLAPIENTRYP fn) (GLenum, const GLsizei *,
-                                                       GLenum, const GLvoid **,
-                                                       GLsizei, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_MultiDrawElementsBaseVertex, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BlendEquationSeparateiARB) (GLuint, GLenum,
-                                                             GLenum);
-#define CALL_BlendEquationSeparateiARB(disp, parameters) \
-    (* GET_BlendEquationSeparateiARB(disp)) parameters
-static inline _glptr_BlendEquationSeparateiARB
-GET_BlendEquationSeparateiARB(struct _glapi_table *disp)
-{
-    return (_glptr_BlendEquationSeparateiARB) (GET_by_offset
-                                               (disp,
-                                                _gloffset_BlendEquationSeparateiARB));
-}
-
-static inline void
-SET_BlendEquationSeparateiARB(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLuint, GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_BlendEquationSeparateiARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BlendEquationiARB) (GLuint, GLenum);
-
-#define CALL_BlendEquationiARB(disp, parameters) \
-    (* GET_BlendEquationiARB(disp)) parameters
-static inline _glptr_BlendEquationiARB
-GET_BlendEquationiARB(struct _glapi_table *disp)
-{
-    return (_glptr_BlendEquationiARB) (GET_by_offset
-                                       (disp, _gloffset_BlendEquationiARB));
-}
-
-static inline void
-SET_BlendEquationiARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLenum))
-{
-    SET_by_offset(disp, _gloffset_BlendEquationiARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BlendFuncSeparateiARB) (GLuint, GLenum, GLenum,
-                                                         GLenum, GLenum);
-#define CALL_BlendFuncSeparateiARB(disp, parameters) \
-    (* GET_BlendFuncSeparateiARB(disp)) parameters
-static inline _glptr_BlendFuncSeparateiARB
-GET_BlendFuncSeparateiARB(struct _glapi_table *disp)
-{
-    return (_glptr_BlendFuncSeparateiARB) (GET_by_offset
-                                           (disp,
-                                            _gloffset_BlendFuncSeparateiARB));
-}
-
-static inline void
-SET_BlendFuncSeparateiARB(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLuint, GLenum, GLenum, GLenum,
-                                                 GLenum))
-{
-    SET_by_offset(disp, _gloffset_BlendFuncSeparateiARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BlendFunciARB) (GLuint, GLenum, GLenum);
-
-#define CALL_BlendFunciARB(disp, parameters) \
-    (* GET_BlendFunciARB(disp)) parameters
-static inline _glptr_BlendFunciARB
-GET_BlendFunciARB(struct _glapi_table *disp)
-{
-    return (_glptr_BlendFunciARB) (GET_by_offset
-                                   (disp, _gloffset_BlendFunciARB));
-}
-
-static inline void
-SET_BlendFunciARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLuint, GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_BlendFunciARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindSampler) (GLuint, GLuint);
-
-#define CALL_BindSampler(disp, parameters) \
-    (* GET_BindSampler(disp)) parameters
-static inline _glptr_BindSampler
-GET_BindSampler(struct _glapi_table *disp)
-{
-    return (_glptr_BindSampler) (GET_by_offset(disp, _gloffset_BindSampler));
-}
-
-static inline void
-SET_BindSampler(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_BindSampler, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteSamplers) (GLsizei, const GLuint *);
-
-#define CALL_DeleteSamplers(disp, parameters) \
-    (* GET_DeleteSamplers(disp)) parameters
-static inline _glptr_DeleteSamplers
-GET_DeleteSamplers(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteSamplers) (GET_by_offset
-                                    (disp, _gloffset_DeleteSamplers));
-}
-
-static inline void
-SET_DeleteSamplers(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_DeleteSamplers, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenSamplers) (GLsizei, GLuint *);
-
-#define CALL_GenSamplers(disp, parameters) \
-    (* GET_GenSamplers(disp)) parameters
-static inline _glptr_GenSamplers
-GET_GenSamplers(struct _glapi_table *disp)
-{
-    return (_glptr_GenSamplers) (GET_by_offset(disp, _gloffset_GenSamplers));
-}
-
-static inline void
-SET_GenSamplers(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GenSamplers, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetSamplerParameterIiv) (GLuint, GLenum,
-                                                          GLint *);
-#define CALL_GetSamplerParameterIiv(disp, parameters) \
-    (* GET_GetSamplerParameterIiv(disp)) parameters
-static inline _glptr_GetSamplerParameterIiv
-GET_GetSamplerParameterIiv(struct _glapi_table *disp)
-{
-    return (_glptr_GetSamplerParameterIiv) (GET_by_offset
-                                            (disp,
-                                             _gloffset_GetSamplerParameterIiv));
-}
-
-static inline void
-SET_GetSamplerParameterIiv(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLuint, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetSamplerParameterIiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetSamplerParameterIuiv) (GLuint, GLenum,
-                                                           GLuint *);
-#define CALL_GetSamplerParameterIuiv(disp, parameters) \
-    (* GET_GetSamplerParameterIuiv(disp)) parameters
-static inline _glptr_GetSamplerParameterIuiv
-GET_GetSamplerParameterIuiv(struct _glapi_table *disp)
-{
-    return (_glptr_GetSamplerParameterIuiv) (GET_by_offset
-                                             (disp,
-                                              _gloffset_GetSamplerParameterIuiv));
-}
-
-static inline void
-SET_GetSamplerParameterIuiv(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLuint, GLenum, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GetSamplerParameterIuiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetSamplerParameterfv) (GLuint, GLenum,
-                                                         GLfloat *);
-#define CALL_GetSamplerParameterfv(disp, parameters) \
-    (* GET_GetSamplerParameterfv(disp)) parameters
-static inline _glptr_GetSamplerParameterfv
-GET_GetSamplerParameterfv(struct _glapi_table *disp)
-{
-    return (_glptr_GetSamplerParameterfv) (GET_by_offset
-                                           (disp,
-                                            _gloffset_GetSamplerParameterfv));
-}
-
-static inline void
-SET_GetSamplerParameterfv(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLuint, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetSamplerParameterfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetSamplerParameteriv) (GLuint, GLenum,
-                                                         GLint *);
-#define CALL_GetSamplerParameteriv(disp, parameters) \
-    (* GET_GetSamplerParameteriv(disp)) parameters
-static inline _glptr_GetSamplerParameteriv
-GET_GetSamplerParameteriv(struct _glapi_table *disp)
-{
-    return (_glptr_GetSamplerParameteriv) (GET_by_offset
-                                           (disp,
-                                            _gloffset_GetSamplerParameteriv));
-}
-
-static inline void
-SET_GetSamplerParameteriv(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLuint, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetSamplerParameteriv, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsSampler) (GLuint);
-
-#define CALL_IsSampler(disp, parameters) \
-    (* GET_IsSampler(disp)) parameters
-static inline _glptr_IsSampler
-GET_IsSampler(struct _glapi_table *disp)
-{
-    return (_glptr_IsSampler) (GET_by_offset(disp, _gloffset_IsSampler));
-}
-
-static inline void
-SET_IsSampler(struct _glapi_table *disp, GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsSampler, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SamplerParameterIiv) (GLuint, GLenum,
-                                                       const GLint *);
-#define CALL_SamplerParameterIiv(disp, parameters) \
-    (* GET_SamplerParameterIiv(disp)) parameters
-static inline _glptr_SamplerParameterIiv
-GET_SamplerParameterIiv(struct _glapi_table *disp)
-{
-    return (_glptr_SamplerParameterIiv) (GET_by_offset
-                                         (disp, _gloffset_SamplerParameterIiv));
-}
-
-static inline void
-SET_SamplerParameterIiv(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_SamplerParameterIiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SamplerParameterIuiv) (GLuint, GLenum,
-                                                        const GLuint *);
-#define CALL_SamplerParameterIuiv(disp, parameters) \
-    (* GET_SamplerParameterIuiv(disp)) parameters
-static inline _glptr_SamplerParameterIuiv
-GET_SamplerParameterIuiv(struct _glapi_table *disp)
-{
-    return (_glptr_SamplerParameterIuiv) (GET_by_offset
-                                          (disp,
-                                           _gloffset_SamplerParameterIuiv));
-}
-
-static inline void
-SET_SamplerParameterIuiv(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_SamplerParameterIuiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SamplerParameterf) (GLuint, GLenum, GLfloat);
-
-#define CALL_SamplerParameterf(disp, parameters) \
-    (* GET_SamplerParameterf(disp)) parameters
-static inline _glptr_SamplerParameterf
-GET_SamplerParameterf(struct _glapi_table *disp)
-{
-    return (_glptr_SamplerParameterf) (GET_by_offset
-                                       (disp, _gloffset_SamplerParameterf));
-}
-
-static inline void
-SET_SamplerParameterf(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_SamplerParameterf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SamplerParameterfv) (GLuint, GLenum,
-                                                      const GLfloat *);
-#define CALL_SamplerParameterfv(disp, parameters) \
-    (* GET_SamplerParameterfv(disp)) parameters
-static inline _glptr_SamplerParameterfv
-GET_SamplerParameterfv(struct _glapi_table *disp)
-{
-    return (_glptr_SamplerParameterfv) (GET_by_offset
-                                        (disp, _gloffset_SamplerParameterfv));
-}
-
-static inline void
-SET_SamplerParameterfv(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_SamplerParameterfv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SamplerParameteri) (GLuint, GLenum, GLint);
-
-#define CALL_SamplerParameteri(disp, parameters) \
-    (* GET_SamplerParameteri(disp)) parameters
-static inline _glptr_SamplerParameteri
-GET_SamplerParameteri(struct _glapi_table *disp)
-{
-    return (_glptr_SamplerParameteri) (GET_by_offset
-                                       (disp, _gloffset_SamplerParameteri));
-}
-
-static inline void
-SET_SamplerParameteri(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_SamplerParameteri, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SamplerParameteriv) (GLuint, GLenum,
-                                                      const GLint *);
-#define CALL_SamplerParameteriv(disp, parameters) \
-    (* GET_SamplerParameteriv(disp)) parameters
-static inline _glptr_SamplerParameteriv
-GET_SamplerParameteriv(struct _glapi_table *disp)
-{
-    return (_glptr_SamplerParameteriv) (GET_by_offset
-                                        (disp, _gloffset_SamplerParameteriv));
-}
-
-static inline void
-SET_SamplerParameteriv(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_SamplerParameteriv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorP3ui) (GLenum, GLuint);
-
-#define CALL_ColorP3ui(disp, parameters) \
-    (* GET_ColorP3ui(disp)) parameters
-static inline _glptr_ColorP3ui
-GET_ColorP3ui(struct _glapi_table *disp)
-{
-    return (_glptr_ColorP3ui) (GET_by_offset(disp, _gloffset_ColorP3ui));
-}
-
-static inline void
-SET_ColorP3ui(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_ColorP3ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorP3uiv) (GLenum, const GLuint *);
-
-#define CALL_ColorP3uiv(disp, parameters) \
-    (* GET_ColorP3uiv(disp)) parameters
-static inline _glptr_ColorP3uiv
-GET_ColorP3uiv(struct _glapi_table *disp)
-{
-    return (_glptr_ColorP3uiv) (GET_by_offset(disp, _gloffset_ColorP3uiv));
-}
-
-static inline void
-SET_ColorP3uiv(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_ColorP3uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorP4ui) (GLenum, GLuint);
-
-#define CALL_ColorP4ui(disp, parameters) \
-    (* GET_ColorP4ui(disp)) parameters
-static inline _glptr_ColorP4ui
-GET_ColorP4ui(struct _glapi_table *disp)
-{
-    return (_glptr_ColorP4ui) (GET_by_offset(disp, _gloffset_ColorP4ui));
-}
-
-static inline void
-SET_ColorP4ui(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_ColorP4ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorP4uiv) (GLenum, const GLuint *);
-
-#define CALL_ColorP4uiv(disp, parameters) \
-    (* GET_ColorP4uiv(disp)) parameters
-static inline _glptr_ColorP4uiv
-GET_ColorP4uiv(struct _glapi_table *disp)
-{
-    return (_glptr_ColorP4uiv) (GET_by_offset(disp, _gloffset_ColorP4uiv));
-}
-
-static inline void
-SET_ColorP4uiv(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_ColorP4uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoordP1ui) (GLenum, GLenum, GLuint);
-
-#define CALL_MultiTexCoordP1ui(disp, parameters) \
-    (* GET_MultiTexCoordP1ui(disp)) parameters
-static inline _glptr_MultiTexCoordP1ui
-GET_MultiTexCoordP1ui(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoordP1ui) (GET_by_offset
-                                       (disp, _gloffset_MultiTexCoordP1ui));
-}
-
-static inline void
-SET_MultiTexCoordP1ui(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoordP1ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoordP1uiv) (GLenum, GLenum,
-                                                      const GLuint *);
-#define CALL_MultiTexCoordP1uiv(disp, parameters) \
-    (* GET_MultiTexCoordP1uiv(disp)) parameters
-static inline _glptr_MultiTexCoordP1uiv
-GET_MultiTexCoordP1uiv(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoordP1uiv) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoordP1uiv));
-}
-
-static inline void
-SET_MultiTexCoordP1uiv(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoordP1uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoordP2ui) (GLenum, GLenum, GLuint);
-
-#define CALL_MultiTexCoordP2ui(disp, parameters) \
-    (* GET_MultiTexCoordP2ui(disp)) parameters
-static inline _glptr_MultiTexCoordP2ui
-GET_MultiTexCoordP2ui(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoordP2ui) (GET_by_offset
-                                       (disp, _gloffset_MultiTexCoordP2ui));
-}
-
-static inline void
-SET_MultiTexCoordP2ui(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoordP2ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoordP2uiv) (GLenum, GLenum,
-                                                      const GLuint *);
-#define CALL_MultiTexCoordP2uiv(disp, parameters) \
-    (* GET_MultiTexCoordP2uiv(disp)) parameters
-static inline _glptr_MultiTexCoordP2uiv
-GET_MultiTexCoordP2uiv(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoordP2uiv) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoordP2uiv));
-}
-
-static inline void
-SET_MultiTexCoordP2uiv(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoordP2uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoordP3ui) (GLenum, GLenum, GLuint);
-
-#define CALL_MultiTexCoordP3ui(disp, parameters) \
-    (* GET_MultiTexCoordP3ui(disp)) parameters
-static inline _glptr_MultiTexCoordP3ui
-GET_MultiTexCoordP3ui(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoordP3ui) (GET_by_offset
-                                       (disp, _gloffset_MultiTexCoordP3ui));
-}
-
-static inline void
-SET_MultiTexCoordP3ui(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoordP3ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoordP3uiv) (GLenum, GLenum,
-                                                      const GLuint *);
-#define CALL_MultiTexCoordP3uiv(disp, parameters) \
-    (* GET_MultiTexCoordP3uiv(disp)) parameters
-static inline _glptr_MultiTexCoordP3uiv
-GET_MultiTexCoordP3uiv(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoordP3uiv) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoordP3uiv));
-}
-
-static inline void
-SET_MultiTexCoordP3uiv(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoordP3uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoordP4ui) (GLenum, GLenum, GLuint);
-
-#define CALL_MultiTexCoordP4ui(disp, parameters) \
-    (* GET_MultiTexCoordP4ui(disp)) parameters
-static inline _glptr_MultiTexCoordP4ui
-GET_MultiTexCoordP4ui(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoordP4ui) (GET_by_offset
-                                       (disp, _gloffset_MultiTexCoordP4ui));
-}
-
-static inline void
-SET_MultiTexCoordP4ui(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoordP4ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiTexCoordP4uiv) (GLenum, GLenum,
-                                                      const GLuint *);
-#define CALL_MultiTexCoordP4uiv(disp, parameters) \
-    (* GET_MultiTexCoordP4uiv(disp)) parameters
-static inline _glptr_MultiTexCoordP4uiv
-GET_MultiTexCoordP4uiv(struct _glapi_table *disp)
-{
-    return (_glptr_MultiTexCoordP4uiv) (GET_by_offset
-                                        (disp, _gloffset_MultiTexCoordP4uiv));
-}
-
-static inline void
-SET_MultiTexCoordP4uiv(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_MultiTexCoordP4uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_NormalP3ui) (GLenum, GLuint);
-
-#define CALL_NormalP3ui(disp, parameters) \
-    (* GET_NormalP3ui(disp)) parameters
-static inline _glptr_NormalP3ui
-GET_NormalP3ui(struct _glapi_table *disp)
-{
-    return (_glptr_NormalP3ui) (GET_by_offset(disp, _gloffset_NormalP3ui));
-}
-
-static inline void
-SET_NormalP3ui(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_NormalP3ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_NormalP3uiv) (GLenum, const GLuint *);
-
-#define CALL_NormalP3uiv(disp, parameters) \
-    (* GET_NormalP3uiv(disp)) parameters
-static inline _glptr_NormalP3uiv
-GET_NormalP3uiv(struct _glapi_table *disp)
-{
-    return (_glptr_NormalP3uiv) (GET_by_offset(disp, _gloffset_NormalP3uiv));
-}
-
-static inline void
-SET_NormalP3uiv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_NormalP3uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColorP3ui) (GLenum, GLuint);
-
-#define CALL_SecondaryColorP3ui(disp, parameters) \
-    (* GET_SecondaryColorP3ui(disp)) parameters
-static inline _glptr_SecondaryColorP3ui
-GET_SecondaryColorP3ui(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColorP3ui) (GET_by_offset
-                                        (disp, _gloffset_SecondaryColorP3ui));
-}
-
-static inline void
-SET_SecondaryColorP3ui(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColorP3ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColorP3uiv) (GLenum, const GLuint *);
-
-#define CALL_SecondaryColorP3uiv(disp, parameters) \
-    (* GET_SecondaryColorP3uiv(disp)) parameters
-static inline _glptr_SecondaryColorP3uiv
-GET_SecondaryColorP3uiv(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColorP3uiv) (GET_by_offset
-                                         (disp, _gloffset_SecondaryColorP3uiv));
-}
-
-static inline void
-SET_SecondaryColorP3uiv(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColorP3uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoordP1ui) (GLenum, GLuint);
-
-#define CALL_TexCoordP1ui(disp, parameters) \
-    (* GET_TexCoordP1ui(disp)) parameters
-static inline _glptr_TexCoordP1ui
-GET_TexCoordP1ui(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoordP1ui) (GET_by_offset(disp, _gloffset_TexCoordP1ui));
-}
-
-static inline void
-SET_TexCoordP1ui(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_TexCoordP1ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoordP1uiv) (GLenum, const GLuint *);
-
-#define CALL_TexCoordP1uiv(disp, parameters) \
-    (* GET_TexCoordP1uiv(disp)) parameters
-static inline _glptr_TexCoordP1uiv
-GET_TexCoordP1uiv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoordP1uiv) (GET_by_offset
-                                   (disp, _gloffset_TexCoordP1uiv));
-}
-
-static inline void
-SET_TexCoordP1uiv(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_TexCoordP1uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoordP2ui) (GLenum, GLuint);
-
-#define CALL_TexCoordP2ui(disp, parameters) \
-    (* GET_TexCoordP2ui(disp)) parameters
-static inline _glptr_TexCoordP2ui
-GET_TexCoordP2ui(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoordP2ui) (GET_by_offset(disp, _gloffset_TexCoordP2ui));
-}
-
-static inline void
-SET_TexCoordP2ui(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_TexCoordP2ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoordP2uiv) (GLenum, const GLuint *);
-
-#define CALL_TexCoordP2uiv(disp, parameters) \
-    (* GET_TexCoordP2uiv(disp)) parameters
-static inline _glptr_TexCoordP2uiv
-GET_TexCoordP2uiv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoordP2uiv) (GET_by_offset
-                                   (disp, _gloffset_TexCoordP2uiv));
-}
-
-static inline void
-SET_TexCoordP2uiv(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_TexCoordP2uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoordP3ui) (GLenum, GLuint);
-
-#define CALL_TexCoordP3ui(disp, parameters) \
-    (* GET_TexCoordP3ui(disp)) parameters
-static inline _glptr_TexCoordP3ui
-GET_TexCoordP3ui(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoordP3ui) (GET_by_offset(disp, _gloffset_TexCoordP3ui));
-}
-
-static inline void
-SET_TexCoordP3ui(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_TexCoordP3ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoordP3uiv) (GLenum, const GLuint *);
-
-#define CALL_TexCoordP3uiv(disp, parameters) \
-    (* GET_TexCoordP3uiv(disp)) parameters
-static inline _glptr_TexCoordP3uiv
-GET_TexCoordP3uiv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoordP3uiv) (GET_by_offset
-                                   (disp, _gloffset_TexCoordP3uiv));
-}
-
-static inline void
-SET_TexCoordP3uiv(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_TexCoordP3uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoordP4ui) (GLenum, GLuint);
-
-#define CALL_TexCoordP4ui(disp, parameters) \
-    (* GET_TexCoordP4ui(disp)) parameters
-static inline _glptr_TexCoordP4ui
-GET_TexCoordP4ui(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoordP4ui) (GET_by_offset(disp, _gloffset_TexCoordP4ui));
-}
-
-static inline void
-SET_TexCoordP4ui(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_TexCoordP4ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoordP4uiv) (GLenum, const GLuint *);
-
-#define CALL_TexCoordP4uiv(disp, parameters) \
-    (* GET_TexCoordP4uiv(disp)) parameters
-static inline _glptr_TexCoordP4uiv
-GET_TexCoordP4uiv(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoordP4uiv) (GET_by_offset
-                                   (disp, _gloffset_TexCoordP4uiv));
-}
-
-static inline void
-SET_TexCoordP4uiv(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_TexCoordP4uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribP1ui) (GLuint, GLenum, GLboolean,
-                                                    GLuint);
-#define CALL_VertexAttribP1ui(disp, parameters) \
-    (* GET_VertexAttribP1ui(disp)) parameters
-static inline _glptr_VertexAttribP1ui
-GET_VertexAttribP1ui(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribP1ui) (GET_by_offset
-                                      (disp, _gloffset_VertexAttribP1ui));
-}
-
-static inline void
-SET_VertexAttribP1ui(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLenum, GLboolean, GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribP1ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribP1uiv) (GLuint, GLenum, GLboolean,
-                                                     const GLuint *);
-#define CALL_VertexAttribP1uiv(disp, parameters) \
-    (* GET_VertexAttribP1uiv(disp)) parameters
-static inline _glptr_VertexAttribP1uiv
-GET_VertexAttribP1uiv(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribP1uiv) (GET_by_offset
-                                       (disp, _gloffset_VertexAttribP1uiv));
-}
-
-static inline void
-SET_VertexAttribP1uiv(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLenum, GLboolean,
-                                             const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribP1uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribP2ui) (GLuint, GLenum, GLboolean,
-                                                    GLuint);
-#define CALL_VertexAttribP2ui(disp, parameters) \
-    (* GET_VertexAttribP2ui(disp)) parameters
-static inline _glptr_VertexAttribP2ui
-GET_VertexAttribP2ui(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribP2ui) (GET_by_offset
-                                      (disp, _gloffset_VertexAttribP2ui));
-}
-
-static inline void
-SET_VertexAttribP2ui(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLenum, GLboolean, GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribP2ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribP2uiv) (GLuint, GLenum, GLboolean,
-                                                     const GLuint *);
-#define CALL_VertexAttribP2uiv(disp, parameters) \
-    (* GET_VertexAttribP2uiv(disp)) parameters
-static inline _glptr_VertexAttribP2uiv
-GET_VertexAttribP2uiv(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribP2uiv) (GET_by_offset
-                                       (disp, _gloffset_VertexAttribP2uiv));
-}
-
-static inline void
-SET_VertexAttribP2uiv(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLenum, GLboolean,
-                                             const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribP2uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribP3ui) (GLuint, GLenum, GLboolean,
-                                                    GLuint);
-#define CALL_VertexAttribP3ui(disp, parameters) \
-    (* GET_VertexAttribP3ui(disp)) parameters
-static inline _glptr_VertexAttribP3ui
-GET_VertexAttribP3ui(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribP3ui) (GET_by_offset
-                                      (disp, _gloffset_VertexAttribP3ui));
-}
-
-static inline void
-SET_VertexAttribP3ui(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLenum, GLboolean, GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribP3ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribP3uiv) (GLuint, GLenum, GLboolean,
-                                                     const GLuint *);
-#define CALL_VertexAttribP3uiv(disp, parameters) \
-    (* GET_VertexAttribP3uiv(disp)) parameters
-static inline _glptr_VertexAttribP3uiv
-GET_VertexAttribP3uiv(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribP3uiv) (GET_by_offset
-                                       (disp, _gloffset_VertexAttribP3uiv));
-}
-
-static inline void
-SET_VertexAttribP3uiv(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLenum, GLboolean,
-                                             const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribP3uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribP4ui) (GLuint, GLenum, GLboolean,
-                                                    GLuint);
-#define CALL_VertexAttribP4ui(disp, parameters) \
-    (* GET_VertexAttribP4ui(disp)) parameters
-static inline _glptr_VertexAttribP4ui
-GET_VertexAttribP4ui(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribP4ui) (GET_by_offset
-                                      (disp, _gloffset_VertexAttribP4ui));
-}
-
-static inline void
-SET_VertexAttribP4ui(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLenum, GLboolean, GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribP4ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribP4uiv) (GLuint, GLenum, GLboolean,
-                                                     const GLuint *);
-#define CALL_VertexAttribP4uiv(disp, parameters) \
-    (* GET_VertexAttribP4uiv(disp)) parameters
-static inline _glptr_VertexAttribP4uiv
-GET_VertexAttribP4uiv(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribP4uiv) (GET_by_offset
-                                       (disp, _gloffset_VertexAttribP4uiv));
-}
-
-static inline void
-SET_VertexAttribP4uiv(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLenum, GLboolean,
-                                             const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribP4uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexP2ui) (GLenum, GLuint);
-
-#define CALL_VertexP2ui(disp, parameters) \
-    (* GET_VertexP2ui(disp)) parameters
-static inline _glptr_VertexP2ui
-GET_VertexP2ui(struct _glapi_table *disp)
-{
-    return (_glptr_VertexP2ui) (GET_by_offset(disp, _gloffset_VertexP2ui));
-}
-
-static inline void
-SET_VertexP2ui(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexP2ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexP2uiv) (GLenum, const GLuint *);
-
-#define CALL_VertexP2uiv(disp, parameters) \
-    (* GET_VertexP2uiv(disp)) parameters
-static inline _glptr_VertexP2uiv
-GET_VertexP2uiv(struct _glapi_table *disp)
-{
-    return (_glptr_VertexP2uiv) (GET_by_offset(disp, _gloffset_VertexP2uiv));
-}
-
-static inline void
-SET_VertexP2uiv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexP2uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexP3ui) (GLenum, GLuint);
-
-#define CALL_VertexP3ui(disp, parameters) \
-    (* GET_VertexP3ui(disp)) parameters
-static inline _glptr_VertexP3ui
-GET_VertexP3ui(struct _glapi_table *disp)
-{
-    return (_glptr_VertexP3ui) (GET_by_offset(disp, _gloffset_VertexP3ui));
-}
-
-static inline void
-SET_VertexP3ui(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexP3ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexP3uiv) (GLenum, const GLuint *);
-
-#define CALL_VertexP3uiv(disp, parameters) \
-    (* GET_VertexP3uiv(disp)) parameters
-static inline _glptr_VertexP3uiv
-GET_VertexP3uiv(struct _glapi_table *disp)
-{
-    return (_glptr_VertexP3uiv) (GET_by_offset(disp, _gloffset_VertexP3uiv));
-}
-
-static inline void
-SET_VertexP3uiv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexP3uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexP4ui) (GLenum, GLuint);
-
-#define CALL_VertexP4ui(disp, parameters) \
-    (* GET_VertexP4ui(disp)) parameters
-static inline _glptr_VertexP4ui
-GET_VertexP4ui(struct _glapi_table *disp)
-{
-    return (_glptr_VertexP4ui) (GET_by_offset(disp, _gloffset_VertexP4ui));
-}
-
-static inline void
-SET_VertexP4ui(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexP4ui, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexP4uiv) (GLenum, const GLuint *);
-
-#define CALL_VertexP4uiv(disp, parameters) \
-    (* GET_VertexP4uiv(disp)) parameters
-static inline _glptr_VertexP4uiv
-GET_VertexP4uiv(struct _glapi_table *disp)
-{
-    return (_glptr_VertexP4uiv) (GET_by_offset(disp, _gloffset_VertexP4uiv));
-}
-
-static inline void
-SET_VertexP4uiv(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexP4uiv, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindTransformFeedback) (GLenum, GLuint);
-
-#define CALL_BindTransformFeedback(disp, parameters) \
-    (* GET_BindTransformFeedback(disp)) parameters
-static inline _glptr_BindTransformFeedback
-GET_BindTransformFeedback(struct _glapi_table *disp)
-{
-    return (_glptr_BindTransformFeedback) (GET_by_offset
-                                           (disp,
-                                            _gloffset_BindTransformFeedback));
-}
-
-static inline void
-SET_BindTransformFeedback(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_BindTransformFeedback, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteTransformFeedbacks) (GLsizei,
-                                                            const GLuint *);
-#define CALL_DeleteTransformFeedbacks(disp, parameters) \
-    (* GET_DeleteTransformFeedbacks(disp)) parameters
-static inline _glptr_DeleteTransformFeedbacks
-GET_DeleteTransformFeedbacks(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteTransformFeedbacks) (GET_by_offset
-                                              (disp,
-                                               _gloffset_DeleteTransformFeedbacks));
-}
-
-static inline void
-SET_DeleteTransformFeedbacks(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_DeleteTransformFeedbacks, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DrawTransformFeedback) (GLenum, GLuint);
-
-#define CALL_DrawTransformFeedback(disp, parameters) \
-    (* GET_DrawTransformFeedback(disp)) parameters
-static inline _glptr_DrawTransformFeedback
-GET_DrawTransformFeedback(struct _glapi_table *disp)
-{
-    return (_glptr_DrawTransformFeedback) (GET_by_offset
-                                           (disp,
-                                            _gloffset_DrawTransformFeedback));
-}
-
-static inline void
-SET_DrawTransformFeedback(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_DrawTransformFeedback, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenTransformFeedbacks) (GLsizei, GLuint *);
-
-#define CALL_GenTransformFeedbacks(disp, parameters) \
-    (* GET_GenTransformFeedbacks(disp)) parameters
-static inline _glptr_GenTransformFeedbacks
-GET_GenTransformFeedbacks(struct _glapi_table *disp)
-{
-    return (_glptr_GenTransformFeedbacks) (GET_by_offset
-                                           (disp,
-                                            _gloffset_GenTransformFeedbacks));
-}
-
-static inline void
-SET_GenTransformFeedbacks(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GenTransformFeedbacks, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsTransformFeedback) (GLuint);
-
-#define CALL_IsTransformFeedback(disp, parameters) \
-    (* GET_IsTransformFeedback(disp)) parameters
-static inline _glptr_IsTransformFeedback
-GET_IsTransformFeedback(struct _glapi_table *disp)
-{
-    return (_glptr_IsTransformFeedback) (GET_by_offset
-                                         (disp, _gloffset_IsTransformFeedback));
-}
-
-static inline void
-SET_IsTransformFeedback(struct _glapi_table *disp,
-                        GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsTransformFeedback, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PauseTransformFeedback) (void);
-
-#define CALL_PauseTransformFeedback(disp, parameters) \
-    (* GET_PauseTransformFeedback(disp)) parameters
-static inline _glptr_PauseTransformFeedback
-GET_PauseTransformFeedback(struct _glapi_table *disp)
-{
-    return (_glptr_PauseTransformFeedback) (GET_by_offset
-                                            (disp,
-                                             _gloffset_PauseTransformFeedback));
-}
-
-static inline void
-SET_PauseTransformFeedback(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_PauseTransformFeedback, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ResumeTransformFeedback) (void);
-
-#define CALL_ResumeTransformFeedback(disp, parameters) \
-    (* GET_ResumeTransformFeedback(disp)) parameters
-static inline _glptr_ResumeTransformFeedback
-GET_ResumeTransformFeedback(struct _glapi_table *disp)
-{
-    return (_glptr_ResumeTransformFeedback) (GET_by_offset
-                                             (disp,
-                                              _gloffset_ResumeTransformFeedback));
-}
-
-static inline void
-SET_ResumeTransformFeedback(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_ResumeTransformFeedback, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClearDepthf) (GLclampf);
-
-#define CALL_ClearDepthf(disp, parameters) \
-    (* GET_ClearDepthf(disp)) parameters
-static inline _glptr_ClearDepthf
-GET_ClearDepthf(struct _glapi_table *disp)
-{
-    return (_glptr_ClearDepthf) (GET_by_offset(disp, _gloffset_ClearDepthf));
-}
-
-static inline void
-SET_ClearDepthf(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLclampf))
-{
-    SET_by_offset(disp, _gloffset_ClearDepthf, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DepthRangef) (GLclampf, GLclampf);
-
-#define CALL_DepthRangef(disp, parameters) \
-    (* GET_DepthRangef(disp)) parameters
-static inline _glptr_DepthRangef
-GET_DepthRangef(struct _glapi_table *disp)
-{
-    return (_glptr_DepthRangef) (GET_by_offset(disp, _gloffset_DepthRangef));
-}
-
-static inline void
-SET_DepthRangef(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLclampf, GLclampf))
-{
-    SET_by_offset(disp, _gloffset_DepthRangef, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetShaderPrecisionFormat) (GLenum, GLenum,
-                                                            GLint *, GLint *);
-#define CALL_GetShaderPrecisionFormat(disp, parameters) \
-    (* GET_GetShaderPrecisionFormat(disp)) parameters
-static inline _glptr_GetShaderPrecisionFormat
-GET_GetShaderPrecisionFormat(struct _glapi_table *disp)
-{
-    return (_glptr_GetShaderPrecisionFormat) (GET_by_offset
-                                              (disp,
-                                               _gloffset_GetShaderPrecisionFormat));
-}
-
-static inline void
-SET_GetShaderPrecisionFormat(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *,
-                                                    GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetShaderPrecisionFormat, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ReleaseShaderCompiler) (void);
-
-#define CALL_ReleaseShaderCompiler(disp, parameters) \
-    (* GET_ReleaseShaderCompiler(disp)) parameters
-static inline _glptr_ReleaseShaderCompiler
-GET_ReleaseShaderCompiler(struct _glapi_table *disp)
-{
-    return (_glptr_ReleaseShaderCompiler) (GET_by_offset
-                                           (disp,
-                                            _gloffset_ReleaseShaderCompiler));
-}
-
-static inline void
-SET_ReleaseShaderCompiler(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_ReleaseShaderCompiler, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ShaderBinary) (GLsizei, const GLuint *, GLenum,
-                                                const GLvoid *, GLsizei);
-#define CALL_ShaderBinary(disp, parameters) \
-    (* GET_ShaderBinary(disp)) parameters
-static inline _glptr_ShaderBinary
-GET_ShaderBinary(struct _glapi_table *disp)
-{
-    return (_glptr_ShaderBinary) (GET_by_offset(disp, _gloffset_ShaderBinary));
-}
-
-static inline void
-SET_ShaderBinary(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLsizei, const GLuint *, GLenum,
-                                        const GLvoid *, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_ShaderBinary, fn);
-}
-
-typedef GLenum(GLAPIENTRYP _glptr_GetGraphicsResetStatusARB) (void);
-
-#define CALL_GetGraphicsResetStatusARB(disp, parameters) \
-    (* GET_GetGraphicsResetStatusARB(disp)) parameters
-static inline _glptr_GetGraphicsResetStatusARB
-GET_GetGraphicsResetStatusARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetGraphicsResetStatusARB) (GET_by_offset
-                                               (disp,
-                                                _gloffset_GetGraphicsResetStatusARB));
-}
-
-static inline void
-SET_GetGraphicsResetStatusARB(struct _glapi_table *disp,
-                              GLenum(GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_GetGraphicsResetStatusARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnColorTableARB) (GLenum, GLenum, GLenum,
-                                                     GLsizei, GLvoid *);
-#define CALL_GetnColorTableARB(disp, parameters) \
-    (* GET_GetnColorTableARB(disp)) parameters
-static inline _glptr_GetnColorTableARB
-GET_GetnColorTableARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnColorTableARB) (GET_by_offset
-                                       (disp, _gloffset_GetnColorTableARB));
-}
-
-static inline void
-SET_GetnColorTableARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum, GLsizei,
-                                             GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetnColorTableARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnCompressedTexImageARB) (GLenum, GLint,
-                                                             GLsizei, GLvoid *);
-#define CALL_GetnCompressedTexImageARB(disp, parameters) \
-    (* GET_GetnCompressedTexImageARB(disp)) parameters
-static inline _glptr_GetnCompressedTexImageARB
-GET_GetnCompressedTexImageARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnCompressedTexImageARB) (GET_by_offset
-                                               (disp,
-                                                _gloffset_GetnCompressedTexImageARB));
-}
-
-static inline void
-SET_GetnCompressedTexImageARB(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLenum, GLint, GLsizei,
-                                                     GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetnCompressedTexImageARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnConvolutionFilterARB) (GLenum, GLenum,
-                                                            GLenum, GLsizei,
-                                                            GLvoid *);
-#define CALL_GetnConvolutionFilterARB(disp, parameters) \
-    (* GET_GetnConvolutionFilterARB(disp)) parameters
-static inline _glptr_GetnConvolutionFilterARB
-GET_GetnConvolutionFilterARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnConvolutionFilterARB) (GET_by_offset
-                                              (disp,
-                                               _gloffset_GetnConvolutionFilterARB));
-}
-
-static inline void
-SET_GetnConvolutionFilterARB(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum,
-                                                    GLsizei, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetnConvolutionFilterARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnHistogramARB) (GLenum, GLboolean, GLenum,
-                                                    GLenum, GLsizei, GLvoid *);
-#define CALL_GetnHistogramARB(disp, parameters) \
-    (* GET_GetnHistogramARB(disp)) parameters
-static inline _glptr_GetnHistogramARB
-GET_GetnHistogramARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnHistogramARB) (GET_by_offset
-                                      (disp, _gloffset_GetnHistogramARB));
-}
-
-static inline void
-SET_GetnHistogramARB(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLenum, GLboolean, GLenum, GLenum,
-                                            GLsizei, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetnHistogramARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnMapdvARB) (GLenum, GLenum, GLsizei,
-                                                GLdouble *);
-#define CALL_GetnMapdvARB(disp, parameters) \
-    (* GET_GetnMapdvARB(disp)) parameters
-static inline _glptr_GetnMapdvARB
-GET_GetnMapdvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnMapdvARB) (GET_by_offset(disp, _gloffset_GetnMapdvARB));
-}
-
-static inline void
-SET_GetnMapdvARB(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLenum, GLsizei, GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_GetnMapdvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnMapfvARB) (GLenum, GLenum, GLsizei,
-                                                GLfloat *);
-#define CALL_GetnMapfvARB(disp, parameters) \
-    (* GET_GetnMapfvARB(disp)) parameters
-static inline _glptr_GetnMapfvARB
-GET_GetnMapfvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnMapfvARB) (GET_by_offset(disp, _gloffset_GetnMapfvARB));
-}
-
-static inline void
-SET_GetnMapfvARB(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLenum, GLsizei, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetnMapfvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnMapivARB) (GLenum, GLenum, GLsizei,
-                                                GLint *);
-#define CALL_GetnMapivARB(disp, parameters) \
-    (* GET_GetnMapivARB(disp)) parameters
-static inline _glptr_GetnMapivARB
-GET_GetnMapivARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnMapivARB) (GET_by_offset(disp, _gloffset_GetnMapivARB));
-}
-
-static inline void
-SET_GetnMapivARB(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLenum, GLsizei, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetnMapivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnMinmaxARB) (GLenum, GLboolean, GLenum,
-                                                 GLenum, GLsizei, GLvoid *);
-#define CALL_GetnMinmaxARB(disp, parameters) \
-    (* GET_GetnMinmaxARB(disp)) parameters
-static inline _glptr_GetnMinmaxARB
-GET_GetnMinmaxARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnMinmaxARB) (GET_by_offset
-                                   (disp, _gloffset_GetnMinmaxARB));
-}
-
-static inline void
-SET_GetnMinmaxARB(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLboolean, GLenum, GLenum,
-                                         GLsizei, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetnMinmaxARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnPixelMapfvARB) (GLenum, GLsizei,
-                                                     GLfloat *);
-#define CALL_GetnPixelMapfvARB(disp, parameters) \
-    (* GET_GetnPixelMapfvARB(disp)) parameters
-static inline _glptr_GetnPixelMapfvARB
-GET_GetnPixelMapfvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnPixelMapfvARB) (GET_by_offset
-                                       (disp, _gloffset_GetnPixelMapfvARB));
-}
-
-static inline void
-SET_GetnPixelMapfvARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLsizei, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetnPixelMapfvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnPixelMapuivARB) (GLenum, GLsizei,
-                                                      GLuint *);
-#define CALL_GetnPixelMapuivARB(disp, parameters) \
-    (* GET_GetnPixelMapuivARB(disp)) parameters
-static inline _glptr_GetnPixelMapuivARB
-GET_GetnPixelMapuivARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnPixelMapuivARB) (GET_by_offset
-                                        (disp, _gloffset_GetnPixelMapuivARB));
-}
-
-static inline void
-SET_GetnPixelMapuivARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GetnPixelMapuivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnPixelMapusvARB) (GLenum, GLsizei,
-                                                      GLushort *);
-#define CALL_GetnPixelMapusvARB(disp, parameters) \
-    (* GET_GetnPixelMapusvARB(disp)) parameters
-static inline _glptr_GetnPixelMapusvARB
-GET_GetnPixelMapusvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnPixelMapusvARB) (GET_by_offset
-                                        (disp, _gloffset_GetnPixelMapusvARB));
-}
-
-static inline void
-SET_GetnPixelMapusvARB(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLsizei, GLushort *))
-{
-    SET_by_offset(disp, _gloffset_GetnPixelMapusvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnPolygonStippleARB) (GLsizei, GLubyte *);
-
-#define CALL_GetnPolygonStippleARB(disp, parameters) \
-    (* GET_GetnPolygonStippleARB(disp)) parameters
-static inline _glptr_GetnPolygonStippleARB
-GET_GetnPolygonStippleARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnPolygonStippleARB) (GET_by_offset
-                                           (disp,
-                                            _gloffset_GetnPolygonStippleARB));
-}
-
-static inline void
-SET_GetnPolygonStippleARB(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLsizei, GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_GetnPolygonStippleARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnSeparableFilterARB) (GLenum, GLenum,
-                                                          GLenum, GLsizei,
-                                                          GLvoid *, GLsizei,
-                                                          GLvoid *, GLvoid *);
-#define CALL_GetnSeparableFilterARB(disp, parameters) \
-    (* GET_GetnSeparableFilterARB(disp)) parameters
-static inline _glptr_GetnSeparableFilterARB
-GET_GetnSeparableFilterARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnSeparableFilterARB) (GET_by_offset
-                                            (disp,
-                                             _gloffset_GetnSeparableFilterARB));
-}
-
-static inline void
-SET_GetnSeparableFilterARB(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum,
-                                                  GLsizei, GLvoid *, GLsizei,
-                                                  GLvoid *, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetnSeparableFilterARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnTexImageARB) (GLenum, GLint, GLenum,
-                                                   GLenum, GLsizei, GLvoid *);
-#define CALL_GetnTexImageARB(disp, parameters) \
-    (* GET_GetnTexImageARB(disp)) parameters
-static inline _glptr_GetnTexImageARB
-GET_GetnTexImageARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnTexImageARB) (GET_by_offset
-                                     (disp, _gloffset_GetnTexImageARB));
-}
-
-static inline void
-SET_GetnTexImageARB(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLenum, GLint, GLenum, GLenum,
-                                           GLsizei, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_GetnTexImageARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnUniformdvARB) (GLhandleARB, GLint, GLsizei,
-                                                    GLdouble *);
-#define CALL_GetnUniformdvARB(disp, parameters) \
-    (* GET_GetnUniformdvARB(disp)) parameters
-static inline _glptr_GetnUniformdvARB
-GET_GetnUniformdvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnUniformdvARB) (GET_by_offset
-                                      (disp, _gloffset_GetnUniformdvARB));
-}
-
-static inline void
-SET_GetnUniformdvARB(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLhandleARB, GLint, GLsizei,
-                                            GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_GetnUniformdvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnUniformfvARB) (GLhandleARB, GLint, GLsizei,
-                                                    GLfloat *);
-#define CALL_GetnUniformfvARB(disp, parameters) \
-    (* GET_GetnUniformfvARB(disp)) parameters
-static inline _glptr_GetnUniformfvARB
-GET_GetnUniformfvARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnUniformfvARB) (GET_by_offset
-                                      (disp, _gloffset_GetnUniformfvARB));
-}
-
-static inline void
-SET_GetnUniformfvARB(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLhandleARB, GLint, GLsizei,
-                                            GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetnUniformfvARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnUniformivARB) (GLhandleARB, GLint, GLsizei,
-                                                    GLint *);
-#define CALL_GetnUniformivARB(disp, parameters) \
-    (* GET_GetnUniformivARB(disp)) parameters
-static inline _glptr_GetnUniformivARB
-GET_GetnUniformivARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnUniformivARB) (GET_by_offset
-                                      (disp, _gloffset_GetnUniformivARB));
-}
-
-static inline void
-SET_GetnUniformivARB(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLhandleARB, GLint, GLsizei,
-                                            GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetnUniformivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetnUniformuivARB) (GLhandleARB, GLint,
-                                                     GLsizei, GLuint *);
-#define CALL_GetnUniformuivARB(disp, parameters) \
-    (* GET_GetnUniformuivARB(disp)) parameters
-static inline _glptr_GetnUniformuivARB
-GET_GetnUniformuivARB(struct _glapi_table *disp)
-{
-    return (_glptr_GetnUniformuivARB) (GET_by_offset
-                                       (disp, _gloffset_GetnUniformuivARB));
-}
-
-static inline void
-SET_GetnUniformuivARB(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLhandleARB, GLint, GLsizei,
-                                             GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GetnUniformuivARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ReadnPixelsARB) (GLint, GLint, GLsizei,
-                                                  GLsizei, GLenum, GLenum,
-                                                  GLsizei, GLvoid *);
-#define CALL_ReadnPixelsARB(disp, parameters) \
-    (* GET_ReadnPixelsARB(disp)) parameters
-static inline _glptr_ReadnPixelsARB
-GET_ReadnPixelsARB(struct _glapi_table *disp)
-{
-    return (_glptr_ReadnPixelsARB) (GET_by_offset
-                                    (disp, _gloffset_ReadnPixelsARB));
-}
-
-static inline void
-SET_ReadnPixelsARB(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLint, GLint, GLsizei, GLsizei,
-                                          GLenum, GLenum, GLsizei, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_ReadnPixelsARB, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexStorage1D) (GLenum, GLsizei, GLenum,
-                                                GLsizei);
-#define CALL_TexStorage1D(disp, parameters) \
-    (* GET_TexStorage1D(disp)) parameters
-static inline _glptr_TexStorage1D
-GET_TexStorage1D(struct _glapi_table *disp)
-{
-    return (_glptr_TexStorage1D) (GET_by_offset(disp, _gloffset_TexStorage1D));
-}
-
-static inline void
-SET_TexStorage1D(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLsizei, GLenum, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_TexStorage1D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexStorage2D) (GLenum, GLsizei, GLenum,
-                                                GLsizei, GLsizei);
-#define CALL_TexStorage2D(disp, parameters) \
-    (* GET_TexStorage2D(disp)) parameters
-static inline _glptr_TexStorage2D
-GET_TexStorage2D(struct _glapi_table *disp)
-{
-    return (_glptr_TexStorage2D) (GET_by_offset(disp, _gloffset_TexStorage2D));
-}
-
-static inline void
-SET_TexStorage2D(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLsizei, GLenum, GLsizei,
-                                        GLsizei))
-{
-    SET_by_offset(disp, _gloffset_TexStorage2D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexStorage3D) (GLenum, GLsizei, GLenum,
-                                                GLsizei, GLsizei, GLsizei);
-#define CALL_TexStorage3D(disp, parameters) \
-    (* GET_TexStorage3D(disp)) parameters
-static inline _glptr_TexStorage3D
-GET_TexStorage3D(struct _glapi_table *disp)
-{
-    return (_glptr_TexStorage3D) (GET_by_offset(disp, _gloffset_TexStorage3D));
-}
-
-static inline void
-SET_TexStorage3D(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLenum, GLsizei, GLenum, GLsizei,
-                                        GLsizei, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_TexStorage3D, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TextureStorage1DEXT) (GLuint, GLenum, GLsizei,
-                                                       GLenum, GLsizei);
-#define CALL_TextureStorage1DEXT(disp, parameters) \
-    (* GET_TextureStorage1DEXT(disp)) parameters
-static inline _glptr_TextureStorage1DEXT
-GET_TextureStorage1DEXT(struct _glapi_table *disp)
-{
-    return (_glptr_TextureStorage1DEXT) (GET_by_offset
-                                         (disp, _gloffset_TextureStorage1DEXT));
-}
-
-static inline void
-SET_TextureStorage1DEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLenum, GLsizei, GLenum,
-                                               GLsizei))
-{
-    SET_by_offset(disp, _gloffset_TextureStorage1DEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TextureStorage2DEXT) (GLuint, GLenum, GLsizei,
-                                                       GLenum, GLsizei,
-                                                       GLsizei);
-#define CALL_TextureStorage2DEXT(disp, parameters) \
-    (* GET_TextureStorage2DEXT(disp)) parameters
-static inline _glptr_TextureStorage2DEXT
-GET_TextureStorage2DEXT(struct _glapi_table *disp)
-{
-    return (_glptr_TextureStorage2DEXT) (GET_by_offset
-                                         (disp, _gloffset_TextureStorage2DEXT));
-}
-
-static inline void
-SET_TextureStorage2DEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLenum, GLsizei, GLenum,
-                                               GLsizei, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_TextureStorage2DEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TextureStorage3DEXT) (GLuint, GLenum, GLsizei,
-                                                       GLenum, GLsizei, GLsizei,
-                                                       GLsizei);
-#define CALL_TextureStorage3DEXT(disp, parameters) \
-    (* GET_TextureStorage3DEXT(disp)) parameters
-static inline _glptr_TextureStorage3DEXT
-GET_TextureStorage3DEXT(struct _glapi_table *disp)
-{
-    return (_glptr_TextureStorage3DEXT) (GET_by_offset
-                                         (disp, _gloffset_TextureStorage3DEXT));
-}
-
-static inline void
-SET_TextureStorage3DEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLenum, GLsizei, GLenum,
-                                               GLsizei, GLsizei, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_TextureStorage3DEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PolygonOffsetEXT) (GLfloat, GLfloat);
-
-#define CALL_PolygonOffsetEXT(disp, parameters) \
-    (* GET_PolygonOffsetEXT(disp)) parameters
-static inline _glptr_PolygonOffsetEXT
-GET_PolygonOffsetEXT(struct _glapi_table *disp)
-{
-    return (_glptr_PolygonOffsetEXT) (GET_by_offset
-                                      (disp, _gloffset_PolygonOffsetEXT));
-}
-
-static inline void
-SET_PolygonOffsetEXT(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_PolygonOffsetEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetPixelTexGenParameterfvSGIS) (GLenum,
-                                                                 GLfloat *);
-#define CALL_GetPixelTexGenParameterfvSGIS(disp, parameters) \
-    (* GET_GetPixelTexGenParameterfvSGIS(disp)) parameters
-static inline _glptr_GetPixelTexGenParameterfvSGIS
-GET_GetPixelTexGenParameterfvSGIS(struct _glapi_table *disp)
-{
-    return (_glptr_GetPixelTexGenParameterfvSGIS) (GET_by_offset
-                                                   (disp,
-                                                    _gloffset_GetPixelTexGenParameterfvSGIS));
-}
-
-static inline void
-SET_GetPixelTexGenParameterfvSGIS(struct _glapi_table *disp,
-                                  void (GLAPIENTRYP fn) (GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetPixelTexGenParameterfvSGIS, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetPixelTexGenParameterivSGIS) (GLenum,
-                                                                 GLint *);
-#define CALL_GetPixelTexGenParameterivSGIS(disp, parameters) \
-    (* GET_GetPixelTexGenParameterivSGIS(disp)) parameters
-static inline _glptr_GetPixelTexGenParameterivSGIS
-GET_GetPixelTexGenParameterivSGIS(struct _glapi_table *disp)
-{
-    return (_glptr_GetPixelTexGenParameterivSGIS) (GET_by_offset
-                                                   (disp,
-                                                    _gloffset_GetPixelTexGenParameterivSGIS));
-}
-
-static inline void
-SET_GetPixelTexGenParameterivSGIS(struct _glapi_table *disp,
-                                  void (GLAPIENTRYP fn) (GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetPixelTexGenParameterivSGIS, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelTexGenParameterfSGIS) (GLenum, GLfloat);
-
-#define CALL_PixelTexGenParameterfSGIS(disp, parameters) \
-    (* GET_PixelTexGenParameterfSGIS(disp)) parameters
-static inline _glptr_PixelTexGenParameterfSGIS
-GET_PixelTexGenParameterfSGIS(struct _glapi_table *disp)
-{
-    return (_glptr_PixelTexGenParameterfSGIS) (GET_by_offset
-                                               (disp,
-                                                _gloffset_PixelTexGenParameterfSGIS));
-}
-
-static inline void
-SET_PixelTexGenParameterfSGIS(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_PixelTexGenParameterfSGIS, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelTexGenParameterfvSGIS) (GLenum,
-                                                              const GLfloat *);
-#define CALL_PixelTexGenParameterfvSGIS(disp, parameters) \
-    (* GET_PixelTexGenParameterfvSGIS(disp)) parameters
-static inline _glptr_PixelTexGenParameterfvSGIS
-GET_PixelTexGenParameterfvSGIS(struct _glapi_table *disp)
-{
-    return (_glptr_PixelTexGenParameterfvSGIS) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_PixelTexGenParameterfvSGIS));
-}
-
-static inline void
-SET_PixelTexGenParameterfvSGIS(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_PixelTexGenParameterfvSGIS, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelTexGenParameteriSGIS) (GLenum, GLint);
-
-#define CALL_PixelTexGenParameteriSGIS(disp, parameters) \
-    (* GET_PixelTexGenParameteriSGIS(disp)) parameters
-static inline _glptr_PixelTexGenParameteriSGIS
-GET_PixelTexGenParameteriSGIS(struct _glapi_table *disp)
-{
-    return (_glptr_PixelTexGenParameteriSGIS) (GET_by_offset
-                                               (disp,
-                                                _gloffset_PixelTexGenParameteriSGIS));
-}
-
-static inline void
-SET_PixelTexGenParameteriSGIS(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_PixelTexGenParameteriSGIS, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelTexGenParameterivSGIS) (GLenum,
-                                                              const GLint *);
-#define CALL_PixelTexGenParameterivSGIS(disp, parameters) \
-    (* GET_PixelTexGenParameterivSGIS(disp)) parameters
-static inline _glptr_PixelTexGenParameterivSGIS
-GET_PixelTexGenParameterivSGIS(struct _glapi_table *disp)
-{
-    return (_glptr_PixelTexGenParameterivSGIS) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_PixelTexGenParameterivSGIS));
-}
-
-static inline void
-SET_PixelTexGenParameterivSGIS(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_PixelTexGenParameterivSGIS, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SampleMaskSGIS) (GLclampf, GLboolean);
-
-#define CALL_SampleMaskSGIS(disp, parameters) \
-    (* GET_SampleMaskSGIS(disp)) parameters
-static inline _glptr_SampleMaskSGIS
-GET_SampleMaskSGIS(struct _glapi_table *disp)
-{
-    return (_glptr_SampleMaskSGIS) (GET_by_offset
-                                    (disp, _gloffset_SampleMaskSGIS));
-}
-
-static inline void
-SET_SampleMaskSGIS(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLclampf, GLboolean))
-{
-    SET_by_offset(disp, _gloffset_SampleMaskSGIS, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SamplePatternSGIS) (GLenum);
-
-#define CALL_SamplePatternSGIS(disp, parameters) \
-    (* GET_SamplePatternSGIS(disp)) parameters
-static inline _glptr_SamplePatternSGIS
-GET_SamplePatternSGIS(struct _glapi_table *disp)
-{
-    return (_glptr_SamplePatternSGIS) (GET_by_offset
-                                       (disp, _gloffset_SamplePatternSGIS));
-}
-
-static inline void
-SET_SamplePatternSGIS(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_SamplePatternSGIS, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorPointerEXT) (GLint, GLenum, GLsizei,
-                                                   GLsizei, const GLvoid *);
-#define CALL_ColorPointerEXT(disp, parameters) \
-    (* GET_ColorPointerEXT(disp)) parameters
-static inline _glptr_ColorPointerEXT
-GET_ColorPointerEXT(struct _glapi_table *disp)
-{
-    return (_glptr_ColorPointerEXT) (GET_by_offset
-                                     (disp, _gloffset_ColorPointerEXT));
-}
-
-static inline void
-SET_ColorPointerEXT(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLint, GLenum, GLsizei, GLsizei,
-                                           const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_ColorPointerEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EdgeFlagPointerEXT) (GLsizei, GLsizei,
-                                                      const GLboolean *);
-#define CALL_EdgeFlagPointerEXT(disp, parameters) \
-    (* GET_EdgeFlagPointerEXT(disp)) parameters
-static inline _glptr_EdgeFlagPointerEXT
-GET_EdgeFlagPointerEXT(struct _glapi_table *disp)
-{
-    return (_glptr_EdgeFlagPointerEXT) (GET_by_offset
-                                        (disp, _gloffset_EdgeFlagPointerEXT));
-}
-
-static inline void
-SET_EdgeFlagPointerEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLsizei, GLsizei,
-                                              const GLboolean *))
-{
-    SET_by_offset(disp, _gloffset_EdgeFlagPointerEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_IndexPointerEXT) (GLenum, GLsizei, GLsizei,
-                                                   const GLvoid *);
-#define CALL_IndexPointerEXT(disp, parameters) \
-    (* GET_IndexPointerEXT(disp)) parameters
-static inline _glptr_IndexPointerEXT
-GET_IndexPointerEXT(struct _glapi_table *disp)
-{
-    return (_glptr_IndexPointerEXT) (GET_by_offset
-                                     (disp, _gloffset_IndexPointerEXT));
-}
-
-static inline void
-SET_IndexPointerEXT(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLenum, GLsizei, GLsizei,
-                                           const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_IndexPointerEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_NormalPointerEXT) (GLenum, GLsizei, GLsizei,
-                                                    const GLvoid *);
-#define CALL_NormalPointerEXT(disp, parameters) \
-    (* GET_NormalPointerEXT(disp)) parameters
-static inline _glptr_NormalPointerEXT
-GET_NormalPointerEXT(struct _glapi_table *disp)
-{
-    return (_glptr_NormalPointerEXT) (GET_by_offset
-                                      (disp, _gloffset_NormalPointerEXT));
-}
-
-static inline void
-SET_NormalPointerEXT(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLenum, GLsizei, GLsizei,
-                                            const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_NormalPointerEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexCoordPointerEXT) (GLint, GLenum, GLsizei,
-                                                      GLsizei, const GLvoid *);
-#define CALL_TexCoordPointerEXT(disp, parameters) \
-    (* GET_TexCoordPointerEXT(disp)) parameters
-static inline _glptr_TexCoordPointerEXT
-GET_TexCoordPointerEXT(struct _glapi_table *disp)
-{
-    return (_glptr_TexCoordPointerEXT) (GET_by_offset
-                                        (disp, _gloffset_TexCoordPointerEXT));
-}
-
-static inline void
-SET_TexCoordPointerEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLint, GLenum, GLsizei, GLsizei,
-                                              const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_TexCoordPointerEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexPointerEXT) (GLint, GLenum, GLsizei,
-                                                    GLsizei, const GLvoid *);
-#define CALL_VertexPointerEXT(disp, parameters) \
-    (* GET_VertexPointerEXT(disp)) parameters
-static inline _glptr_VertexPointerEXT
-GET_VertexPointerEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexPointerEXT) (GET_by_offset
-                                      (disp, _gloffset_VertexPointerEXT));
-}
-
-static inline void
-SET_VertexPointerEXT(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLint, GLenum, GLsizei, GLsizei,
-                                            const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_VertexPointerEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PointParameterfEXT) (GLenum, GLfloat);
-
-#define CALL_PointParameterfEXT(disp, parameters) \
-    (* GET_PointParameterfEXT(disp)) parameters
-static inline _glptr_PointParameterfEXT
-GET_PointParameterfEXT(struct _glapi_table *disp)
-{
-    return (_glptr_PointParameterfEXT) (GET_by_offset
-                                        (disp, _gloffset_PointParameterfEXT));
-}
-
-static inline void
-SET_PointParameterfEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_PointParameterfEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PointParameterfvEXT) (GLenum, const GLfloat *);
-
-#define CALL_PointParameterfvEXT(disp, parameters) \
-    (* GET_PointParameterfvEXT(disp)) parameters
-static inline _glptr_PointParameterfvEXT
-GET_PointParameterfvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_PointParameterfvEXT) (GET_by_offset
-                                         (disp, _gloffset_PointParameterfvEXT));
-}
-
-static inline void
-SET_PointParameterfvEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_PointParameterfvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LockArraysEXT) (GLint, GLsizei);
-
-#define CALL_LockArraysEXT(disp, parameters) \
-    (* GET_LockArraysEXT(disp)) parameters
-static inline _glptr_LockArraysEXT
-GET_LockArraysEXT(struct _glapi_table *disp)
-{
-    return (_glptr_LockArraysEXT) (GET_by_offset
-                                   (disp, _gloffset_LockArraysEXT));
-}
-
-static inline void
-SET_LockArraysEXT(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_LockArraysEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_UnlockArraysEXT) (void);
-
-#define CALL_UnlockArraysEXT(disp, parameters) \
-    (* GET_UnlockArraysEXT(disp)) parameters
-static inline _glptr_UnlockArraysEXT
-GET_UnlockArraysEXT(struct _glapi_table *disp)
-{
-    return (_glptr_UnlockArraysEXT) (GET_by_offset
-                                     (disp, _gloffset_UnlockArraysEXT));
-}
-
-static inline void
-SET_UnlockArraysEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_UnlockArraysEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3bEXT) (GLbyte, GLbyte, GLbyte);
-
-#define CALL_SecondaryColor3bEXT(disp, parameters) \
-    (* GET_SecondaryColor3bEXT(disp)) parameters
-static inline _glptr_SecondaryColor3bEXT
-GET_SecondaryColor3bEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3bEXT) (GET_by_offset
-                                         (disp, _gloffset_SecondaryColor3bEXT));
-}
-
-static inline void
-SET_SecondaryColor3bEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLbyte, GLbyte, GLbyte))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3bEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3bvEXT) (const GLbyte *);
-
-#define CALL_SecondaryColor3bvEXT(disp, parameters) \
-    (* GET_SecondaryColor3bvEXT(disp)) parameters
-static inline _glptr_SecondaryColor3bvEXT
-GET_SecondaryColor3bvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3bvEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_SecondaryColor3bvEXT));
-}
-
-static inline void
-SET_SecondaryColor3bvEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (const GLbyte *))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3bvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3dEXT) (GLdouble, GLdouble,
-                                                       GLdouble);
-#define CALL_SecondaryColor3dEXT(disp, parameters) \
-    (* GET_SecondaryColor3dEXT(disp)) parameters
-static inline _glptr_SecondaryColor3dEXT
-GET_SecondaryColor3dEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3dEXT) (GET_by_offset
-                                         (disp, _gloffset_SecondaryColor3dEXT));
-}
-
-static inline void
-SET_SecondaryColor3dEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3dEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3dvEXT) (const GLdouble *);
-
-#define CALL_SecondaryColor3dvEXT(disp, parameters) \
-    (* GET_SecondaryColor3dvEXT(disp)) parameters
-static inline _glptr_SecondaryColor3dvEXT
-GET_SecondaryColor3dvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3dvEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_SecondaryColor3dvEXT));
-}
-
-static inline void
-SET_SecondaryColor3dvEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3dvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3fEXT) (GLfloat, GLfloat,
-                                                       GLfloat);
-#define CALL_SecondaryColor3fEXT(disp, parameters) \
-    (* GET_SecondaryColor3fEXT(disp)) parameters
-static inline _glptr_SecondaryColor3fEXT
-GET_SecondaryColor3fEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3fEXT) (GET_by_offset
-                                         (disp, _gloffset_SecondaryColor3fEXT));
-}
-
-static inline void
-SET_SecondaryColor3fEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3fEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3fvEXT) (const GLfloat *);
-
-#define CALL_SecondaryColor3fvEXT(disp, parameters) \
-    (* GET_SecondaryColor3fvEXT(disp)) parameters
-static inline _glptr_SecondaryColor3fvEXT
-GET_SecondaryColor3fvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3fvEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_SecondaryColor3fvEXT));
-}
-
-static inline void
-SET_SecondaryColor3fvEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3fvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3iEXT) (GLint, GLint, GLint);
-
-#define CALL_SecondaryColor3iEXT(disp, parameters) \
-    (* GET_SecondaryColor3iEXT(disp)) parameters
-static inline _glptr_SecondaryColor3iEXT
-GET_SecondaryColor3iEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3iEXT) (GET_by_offset
-                                         (disp, _gloffset_SecondaryColor3iEXT));
-}
-
-static inline void
-SET_SecondaryColor3iEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3iEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3ivEXT) (const GLint *);
-
-#define CALL_SecondaryColor3ivEXT(disp, parameters) \
-    (* GET_SecondaryColor3ivEXT(disp)) parameters
-static inline _glptr_SecondaryColor3ivEXT
-GET_SecondaryColor3ivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3ivEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_SecondaryColor3ivEXT));
-}
-
-static inline void
-SET_SecondaryColor3ivEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3ivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3sEXT) (GLshort, GLshort,
-                                                       GLshort);
-#define CALL_SecondaryColor3sEXT(disp, parameters) \
-    (* GET_SecondaryColor3sEXT(disp)) parameters
-static inline _glptr_SecondaryColor3sEXT
-GET_SecondaryColor3sEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3sEXT) (GET_by_offset
-                                         (disp, _gloffset_SecondaryColor3sEXT));
-}
-
-static inline void
-SET_SecondaryColor3sEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3sEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3svEXT) (const GLshort *);
-
-#define CALL_SecondaryColor3svEXT(disp, parameters) \
-    (* GET_SecondaryColor3svEXT(disp)) parameters
-static inline _glptr_SecondaryColor3svEXT
-GET_SecondaryColor3svEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3svEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_SecondaryColor3svEXT));
-}
-
-static inline void
-SET_SecondaryColor3svEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3svEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3ubEXT) (GLubyte, GLubyte,
-                                                        GLubyte);
-#define CALL_SecondaryColor3ubEXT(disp, parameters) \
-    (* GET_SecondaryColor3ubEXT(disp)) parameters
-static inline _glptr_SecondaryColor3ubEXT
-GET_SecondaryColor3ubEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3ubEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_SecondaryColor3ubEXT));
-}
-
-static inline void
-SET_SecondaryColor3ubEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLubyte, GLubyte, GLubyte))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3ubEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3ubvEXT) (const GLubyte *);
-
-#define CALL_SecondaryColor3ubvEXT(disp, parameters) \
-    (* GET_SecondaryColor3ubvEXT(disp)) parameters
-static inline _glptr_SecondaryColor3ubvEXT
-GET_SecondaryColor3ubvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3ubvEXT) (GET_by_offset
-                                           (disp,
-                                            _gloffset_SecondaryColor3ubvEXT));
-}
-
-static inline void
-SET_SecondaryColor3ubvEXT(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (const GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3ubvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3uiEXT) (GLuint, GLuint, GLuint);
-
-#define CALL_SecondaryColor3uiEXT(disp, parameters) \
-    (* GET_SecondaryColor3uiEXT(disp)) parameters
-static inline _glptr_SecondaryColor3uiEXT
-GET_SecondaryColor3uiEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3uiEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_SecondaryColor3uiEXT));
-}
-
-static inline void
-SET_SecondaryColor3uiEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3uiEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3uivEXT) (const GLuint *);
-
-#define CALL_SecondaryColor3uivEXT(disp, parameters) \
-    (* GET_SecondaryColor3uivEXT(disp)) parameters
-static inline _glptr_SecondaryColor3uivEXT
-GET_SecondaryColor3uivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3uivEXT) (GET_by_offset
-                                           (disp,
-                                            _gloffset_SecondaryColor3uivEXT));
-}
-
-static inline void
-SET_SecondaryColor3uivEXT(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3uivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3usEXT) (GLushort, GLushort,
-                                                        GLushort);
-#define CALL_SecondaryColor3usEXT(disp, parameters) \
-    (* GET_SecondaryColor3usEXT(disp)) parameters
-static inline _glptr_SecondaryColor3usEXT
-GET_SecondaryColor3usEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3usEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_SecondaryColor3usEXT));
-}
-
-static inline void
-SET_SecondaryColor3usEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLushort, GLushort, GLushort))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3usEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColor3usvEXT) (const GLushort *);
-
-#define CALL_SecondaryColor3usvEXT(disp, parameters) \
-    (* GET_SecondaryColor3usvEXT(disp)) parameters
-static inline _glptr_SecondaryColor3usvEXT
-GET_SecondaryColor3usvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColor3usvEXT) (GET_by_offset
-                                           (disp,
-                                            _gloffset_SecondaryColor3usvEXT));
-}
-
-static inline void
-SET_SecondaryColor3usvEXT(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (const GLushort *))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColor3usvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SecondaryColorPointerEXT) (GLint, GLenum,
-                                                            GLsizei,
-                                                            const GLvoid *);
-#define CALL_SecondaryColorPointerEXT(disp, parameters) \
-    (* GET_SecondaryColorPointerEXT(disp)) parameters
-static inline _glptr_SecondaryColorPointerEXT
-GET_SecondaryColorPointerEXT(struct _glapi_table *disp)
-{
-    return (_glptr_SecondaryColorPointerEXT) (GET_by_offset
-                                              (disp,
-                                               _gloffset_SecondaryColorPointerEXT));
-}
-
-static inline void
-SET_SecondaryColorPointerEXT(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLint, GLenum, GLsizei,
-                                                    const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_SecondaryColorPointerEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiDrawArraysEXT) (GLenum, const GLint *,
-                                                      const GLsizei *, GLsizei);
-#define CALL_MultiDrawArraysEXT(disp, parameters) \
-    (* GET_MultiDrawArraysEXT(disp)) parameters
-static inline _glptr_MultiDrawArraysEXT
-GET_MultiDrawArraysEXT(struct _glapi_table *disp)
-{
-    return (_glptr_MultiDrawArraysEXT) (GET_by_offset
-                                        (disp, _gloffset_MultiDrawArraysEXT));
-}
-
-static inline void
-SET_MultiDrawArraysEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, const GLint *,
-                                              const GLsizei *, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_MultiDrawArraysEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiDrawElementsEXT) (GLenum, const GLsizei *,
-                                                        GLenum, const GLvoid **,
-                                                        GLsizei);
-#define CALL_MultiDrawElementsEXT(disp, parameters) \
-    (* GET_MultiDrawElementsEXT(disp)) parameters
-static inline _glptr_MultiDrawElementsEXT
-GET_MultiDrawElementsEXT(struct _glapi_table *disp)
-{
-    return (_glptr_MultiDrawElementsEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_MultiDrawElementsEXT));
-}
-
-static inline void
-SET_MultiDrawElementsEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLenum, const GLsizei *, GLenum,
-                                                const GLvoid **, GLsizei))
-{
-    SET_by_offset(disp, _gloffset_MultiDrawElementsEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FogCoordPointerEXT) (GLenum, GLsizei,
-                                                      const GLvoid *);
-#define CALL_FogCoordPointerEXT(disp, parameters) \
-    (* GET_FogCoordPointerEXT(disp)) parameters
-static inline _glptr_FogCoordPointerEXT
-GET_FogCoordPointerEXT(struct _glapi_table *disp)
-{
-    return (_glptr_FogCoordPointerEXT) (GET_by_offset
-                                        (disp, _gloffset_FogCoordPointerEXT));
-}
-
-static inline void
-SET_FogCoordPointerEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLsizei, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_FogCoordPointerEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FogCoorddEXT) (GLdouble);
-
-#define CALL_FogCoorddEXT(disp, parameters) \
-    (* GET_FogCoorddEXT(disp)) parameters
-static inline _glptr_FogCoorddEXT
-GET_FogCoorddEXT(struct _glapi_table *disp)
-{
-    return (_glptr_FogCoorddEXT) (GET_by_offset(disp, _gloffset_FogCoorddEXT));
-}
-
-static inline void
-SET_FogCoorddEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLdouble))
-{
-    SET_by_offset(disp, _gloffset_FogCoorddEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FogCoorddvEXT) (const GLdouble *);
-
-#define CALL_FogCoorddvEXT(disp, parameters) \
-    (* GET_FogCoorddvEXT(disp)) parameters
-static inline _glptr_FogCoorddvEXT
-GET_FogCoorddvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_FogCoorddvEXT) (GET_by_offset
-                                   (disp, _gloffset_FogCoorddvEXT));
-}
-
-static inline void
-SET_FogCoorddvEXT(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_FogCoorddvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FogCoordfEXT) (GLfloat);
-
-#define CALL_FogCoordfEXT(disp, parameters) \
-    (* GET_FogCoordfEXT(disp)) parameters
-static inline _glptr_FogCoordfEXT
-GET_FogCoordfEXT(struct _glapi_table *disp)
-{
-    return (_glptr_FogCoordfEXT) (GET_by_offset(disp, _gloffset_FogCoordfEXT));
-}
-
-static inline void
-SET_FogCoordfEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLfloat))
-{
-    SET_by_offset(disp, _gloffset_FogCoordfEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FogCoordfvEXT) (const GLfloat *);
-
-#define CALL_FogCoordfvEXT(disp, parameters) \
-    (* GET_FogCoordfvEXT(disp)) parameters
-static inline _glptr_FogCoordfvEXT
-GET_FogCoordfvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_FogCoordfvEXT) (GET_by_offset
-                                   (disp, _gloffset_FogCoordfvEXT));
-}
-
-static inline void
-SET_FogCoordfvEXT(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_FogCoordfvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PixelTexGenSGIX) (GLenum);
-
-#define CALL_PixelTexGenSGIX(disp, parameters) \
-    (* GET_PixelTexGenSGIX(disp)) parameters
-static inline _glptr_PixelTexGenSGIX
-GET_PixelTexGenSGIX(struct _glapi_table *disp)
-{
-    return (_glptr_PixelTexGenSGIX) (GET_by_offset
-                                     (disp, _gloffset_PixelTexGenSGIX));
-}
-
-static inline void
-SET_PixelTexGenSGIX(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_PixelTexGenSGIX, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BlendFuncSeparateEXT) (GLenum, GLenum, GLenum,
-                                                        GLenum);
-#define CALL_BlendFuncSeparateEXT(disp, parameters) \
-    (* GET_BlendFuncSeparateEXT(disp)) parameters
-static inline _glptr_BlendFuncSeparateEXT
-GET_BlendFuncSeparateEXT(struct _glapi_table *disp)
-{
-    return (_glptr_BlendFuncSeparateEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_BlendFuncSeparateEXT));
-}
-
-static inline void
-SET_BlendFuncSeparateEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_BlendFuncSeparateEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FlushVertexArrayRangeNV) (void);
-
-#define CALL_FlushVertexArrayRangeNV(disp, parameters) \
-    (* GET_FlushVertexArrayRangeNV(disp)) parameters
-static inline _glptr_FlushVertexArrayRangeNV
-GET_FlushVertexArrayRangeNV(struct _glapi_table *disp)
-{
-    return (_glptr_FlushVertexArrayRangeNV) (GET_by_offset
-                                             (disp,
-                                              _gloffset_FlushVertexArrayRangeNV));
-}
-
-static inline void
-SET_FlushVertexArrayRangeNV(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_FlushVertexArrayRangeNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexArrayRangeNV) (GLsizei, const GLvoid *);
-
-#define CALL_VertexArrayRangeNV(disp, parameters) \
-    (* GET_VertexArrayRangeNV(disp)) parameters
-static inline _glptr_VertexArrayRangeNV
-GET_VertexArrayRangeNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexArrayRangeNV) (GET_by_offset
-                                        (disp, _gloffset_VertexArrayRangeNV));
-}
-
-static inline void
-SET_VertexArrayRangeNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLsizei, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_VertexArrayRangeNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CombinerInputNV) (GLenum, GLenum, GLenum,
-                                                   GLenum, GLenum, GLenum);
-#define CALL_CombinerInputNV(disp, parameters) \
-    (* GET_CombinerInputNV(disp)) parameters
-static inline _glptr_CombinerInputNV
-GET_CombinerInputNV(struct _glapi_table *disp)
-{
-    return (_glptr_CombinerInputNV) (GET_by_offset
-                                     (disp, _gloffset_CombinerInputNV));
-}
-
-static inline void
-SET_CombinerInputNV(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum, GLenum,
-                                           GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_CombinerInputNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CombinerOutputNV) (GLenum, GLenum, GLenum,
-                                                    GLenum, GLenum, GLenum,
-                                                    GLenum, GLboolean,
-                                                    GLboolean, GLboolean);
-#define CALL_CombinerOutputNV(disp, parameters) \
-    (* GET_CombinerOutputNV(disp)) parameters
-static inline _glptr_CombinerOutputNV
-GET_CombinerOutputNV(struct _glapi_table *disp)
-{
-    return (_glptr_CombinerOutputNV) (GET_by_offset
-                                      (disp, _gloffset_CombinerOutputNV));
-}
-
-static inline void
-SET_CombinerOutputNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum, GLenum,
-                                            GLenum, GLenum, GLenum, GLboolean,
-                                            GLboolean, GLboolean))
-{
-    SET_by_offset(disp, _gloffset_CombinerOutputNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CombinerParameterfNV) (GLenum, GLfloat);
-
-#define CALL_CombinerParameterfNV(disp, parameters) \
-    (* GET_CombinerParameterfNV(disp)) parameters
-static inline _glptr_CombinerParameterfNV
-GET_CombinerParameterfNV(struct _glapi_table *disp)
-{
-    return (_glptr_CombinerParameterfNV) (GET_by_offset
-                                          (disp,
-                                           _gloffset_CombinerParameterfNV));
-}
-
-static inline void
-SET_CombinerParameterfNV(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLenum, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_CombinerParameterfNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CombinerParameterfvNV) (GLenum,
-                                                         const GLfloat *);
-#define CALL_CombinerParameterfvNV(disp, parameters) \
-    (* GET_CombinerParameterfvNV(disp)) parameters
-static inline _glptr_CombinerParameterfvNV
-GET_CombinerParameterfvNV(struct _glapi_table *disp)
-{
-    return (_glptr_CombinerParameterfvNV) (GET_by_offset
-                                           (disp,
-                                            _gloffset_CombinerParameterfvNV));
-}
-
-static inline void
-SET_CombinerParameterfvNV(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_CombinerParameterfvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CombinerParameteriNV) (GLenum, GLint);
-
-#define CALL_CombinerParameteriNV(disp, parameters) \
-    (* GET_CombinerParameteriNV(disp)) parameters
-static inline _glptr_CombinerParameteriNV
-GET_CombinerParameteriNV(struct _glapi_table *disp)
-{
-    return (_glptr_CombinerParameteriNV) (GET_by_offset
-                                          (disp,
-                                           _gloffset_CombinerParameteriNV));
-}
-
-static inline void
-SET_CombinerParameteriNV(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_CombinerParameteriNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_CombinerParameterivNV) (GLenum, const GLint *);
-
-#define CALL_CombinerParameterivNV(disp, parameters) \
-    (* GET_CombinerParameterivNV(disp)) parameters
-static inline _glptr_CombinerParameterivNV
-GET_CombinerParameterivNV(struct _glapi_table *disp)
-{
-    return (_glptr_CombinerParameterivNV) (GET_by_offset
-                                           (disp,
-                                            _gloffset_CombinerParameterivNV));
-}
-
-static inline void
-SET_CombinerParameterivNV(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_CombinerParameterivNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FinalCombinerInputNV) (GLenum, GLenum, GLenum,
-                                                        GLenum);
-#define CALL_FinalCombinerInputNV(disp, parameters) \
-    (* GET_FinalCombinerInputNV(disp)) parameters
-static inline _glptr_FinalCombinerInputNV
-GET_FinalCombinerInputNV(struct _glapi_table *disp)
-{
-    return (_glptr_FinalCombinerInputNV) (GET_by_offset
-                                          (disp,
-                                           _gloffset_FinalCombinerInputNV));
-}
-
-static inline void
-SET_FinalCombinerInputNV(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_FinalCombinerInputNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetCombinerInputParameterfvNV) (GLenum, GLenum,
-                                                                 GLenum, GLenum,
-                                                                 GLfloat *);
-#define CALL_GetCombinerInputParameterfvNV(disp, parameters) \
-    (* GET_GetCombinerInputParameterfvNV(disp)) parameters
-static inline _glptr_GetCombinerInputParameterfvNV
-GET_GetCombinerInputParameterfvNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetCombinerInputParameterfvNV) (GET_by_offset
-                                                   (disp,
-                                                    _gloffset_GetCombinerInputParameterfvNV));
-}
-
-static inline void
-SET_GetCombinerInputParameterfvNV(struct _glapi_table *disp,
-                                  void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum,
-                                                         GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetCombinerInputParameterfvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetCombinerInputParameterivNV) (GLenum, GLenum,
-                                                                 GLenum, GLenum,
-                                                                 GLint *);
-#define CALL_GetCombinerInputParameterivNV(disp, parameters) \
-    (* GET_GetCombinerInputParameterivNV(disp)) parameters
-static inline _glptr_GetCombinerInputParameterivNV
-GET_GetCombinerInputParameterivNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetCombinerInputParameterivNV) (GET_by_offset
-                                                   (disp,
-                                                    _gloffset_GetCombinerInputParameterivNV));
-}
-
-static inline void
-SET_GetCombinerInputParameterivNV(struct _glapi_table *disp,
-                                  void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum,
-                                                         GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetCombinerInputParameterivNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetCombinerOutputParameterfvNV) (GLenum,
-                                                                  GLenum,
-                                                                  GLenum,
-                                                                  GLfloat *);
-#define CALL_GetCombinerOutputParameterfvNV(disp, parameters) \
-    (* GET_GetCombinerOutputParameterfvNV(disp)) parameters
-static inline _glptr_GetCombinerOutputParameterfvNV
-GET_GetCombinerOutputParameterfvNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetCombinerOutputParameterfvNV) (GET_by_offset
-                                                    (disp,
-                                                     _gloffset_GetCombinerOutputParameterfvNV));
-}
-
-static inline void
-SET_GetCombinerOutputParameterfvNV(struct _glapi_table *disp,
-                                   void (GLAPIENTRYP fn) (GLenum, GLenum,
-                                                          GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetCombinerOutputParameterfvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetCombinerOutputParameterivNV) (GLenum,
-                                                                  GLenum,
-                                                                  GLenum,
-                                                                  GLint *);
-#define CALL_GetCombinerOutputParameterivNV(disp, parameters) \
-    (* GET_GetCombinerOutputParameterivNV(disp)) parameters
-static inline _glptr_GetCombinerOutputParameterivNV
-GET_GetCombinerOutputParameterivNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetCombinerOutputParameterivNV) (GET_by_offset
-                                                    (disp,
-                                                     _gloffset_GetCombinerOutputParameterivNV));
-}
-
-static inline void
-SET_GetCombinerOutputParameterivNV(struct _glapi_table *disp,
-                                   void (GLAPIENTRYP fn) (GLenum, GLenum,
-                                                          GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetCombinerOutputParameterivNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetFinalCombinerInputParameterfvNV) (GLenum,
-                                                                      GLenum,
-                                                                      GLfloat
-                                                                      *);
-#define CALL_GetFinalCombinerInputParameterfvNV(disp, parameters) \
-    (* GET_GetFinalCombinerInputParameterfvNV(disp)) parameters
-static inline _glptr_GetFinalCombinerInputParameterfvNV
-GET_GetFinalCombinerInputParameterfvNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetFinalCombinerInputParameterfvNV) (GET_by_offset
-                                                        (disp,
-                                                         _gloffset_GetFinalCombinerInputParameterfvNV));
-}
-
-static inline void
-SET_GetFinalCombinerInputParameterfvNV(struct _glapi_table *disp,
-                                       void (GLAPIENTRYP fn) (GLenum, GLenum,
-                                                              GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetFinalCombinerInputParameterfvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetFinalCombinerInputParameterivNV) (GLenum,
-                                                                      GLenum,
-                                                                      GLint *);
-#define CALL_GetFinalCombinerInputParameterivNV(disp, parameters) \
-    (* GET_GetFinalCombinerInputParameterivNV(disp)) parameters
-static inline _glptr_GetFinalCombinerInputParameterivNV
-GET_GetFinalCombinerInputParameterivNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetFinalCombinerInputParameterivNV) (GET_by_offset
-                                                        (disp,
-                                                         _gloffset_GetFinalCombinerInputParameterivNV));
-}
-
-static inline void
-SET_GetFinalCombinerInputParameterivNV(struct _glapi_table *disp,
-                                       void (GLAPIENTRYP fn) (GLenum, GLenum,
-                                                              GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetFinalCombinerInputParameterivNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ResizeBuffersMESA) (void);
-
-#define CALL_ResizeBuffersMESA(disp, parameters) \
-    (* GET_ResizeBuffersMESA(disp)) parameters
-static inline _glptr_ResizeBuffersMESA
-GET_ResizeBuffersMESA(struct _glapi_table *disp)
-{
-    return (_glptr_ResizeBuffersMESA) (GET_by_offset
-                                       (disp, _gloffset_ResizeBuffersMESA));
-}
-
-static inline void
-SET_ResizeBuffersMESA(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_ResizeBuffersMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos2dMESA) (GLdouble, GLdouble);
-
-#define CALL_WindowPos2dMESA(disp, parameters) \
-    (* GET_WindowPos2dMESA(disp)) parameters
-static inline _glptr_WindowPos2dMESA
-GET_WindowPos2dMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos2dMESA) (GET_by_offset
-                                     (disp, _gloffset_WindowPos2dMESA));
-}
-
-static inline void
-SET_WindowPos2dMESA(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_WindowPos2dMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos2dvMESA) (const GLdouble *);
-
-#define CALL_WindowPos2dvMESA(disp, parameters) \
-    (* GET_WindowPos2dvMESA(disp)) parameters
-static inline _glptr_WindowPos2dvMESA
-GET_WindowPos2dvMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos2dvMESA) (GET_by_offset
-                                      (disp, _gloffset_WindowPos2dvMESA));
-}
-
-static inline void
-SET_WindowPos2dvMESA(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_WindowPos2dvMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos2fMESA) (GLfloat, GLfloat);
-
-#define CALL_WindowPos2fMESA(disp, parameters) \
-    (* GET_WindowPos2fMESA(disp)) parameters
-static inline _glptr_WindowPos2fMESA
-GET_WindowPos2fMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos2fMESA) (GET_by_offset
-                                     (disp, _gloffset_WindowPos2fMESA));
-}
-
-static inline void
-SET_WindowPos2fMESA(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_WindowPos2fMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos2fvMESA) (const GLfloat *);
-
-#define CALL_WindowPos2fvMESA(disp, parameters) \
-    (* GET_WindowPos2fvMESA(disp)) parameters
-static inline _glptr_WindowPos2fvMESA
-GET_WindowPos2fvMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos2fvMESA) (GET_by_offset
-                                      (disp, _gloffset_WindowPos2fvMESA));
-}
-
-static inline void
-SET_WindowPos2fvMESA(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_WindowPos2fvMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos2iMESA) (GLint, GLint);
-
-#define CALL_WindowPos2iMESA(disp, parameters) \
-    (* GET_WindowPos2iMESA(disp)) parameters
-static inline _glptr_WindowPos2iMESA
-GET_WindowPos2iMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos2iMESA) (GET_by_offset
-                                     (disp, _gloffset_WindowPos2iMESA));
-}
-
-static inline void
-SET_WindowPos2iMESA(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_WindowPos2iMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos2ivMESA) (const GLint *);
-
-#define CALL_WindowPos2ivMESA(disp, parameters) \
-    (* GET_WindowPos2ivMESA(disp)) parameters
-static inline _glptr_WindowPos2ivMESA
-GET_WindowPos2ivMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos2ivMESA) (GET_by_offset
-                                      (disp, _gloffset_WindowPos2ivMESA));
-}
-
-static inline void
-SET_WindowPos2ivMESA(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_WindowPos2ivMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos2sMESA) (GLshort, GLshort);
-
-#define CALL_WindowPos2sMESA(disp, parameters) \
-    (* GET_WindowPos2sMESA(disp)) parameters
-static inline _glptr_WindowPos2sMESA
-GET_WindowPos2sMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos2sMESA) (GET_by_offset
-                                     (disp, _gloffset_WindowPos2sMESA));
-}
-
-static inline void
-SET_WindowPos2sMESA(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_WindowPos2sMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos2svMESA) (const GLshort *);
-
-#define CALL_WindowPos2svMESA(disp, parameters) \
-    (* GET_WindowPos2svMESA(disp)) parameters
-static inline _glptr_WindowPos2svMESA
-GET_WindowPos2svMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos2svMESA) (GET_by_offset
-                                      (disp, _gloffset_WindowPos2svMESA));
-}
-
-static inline void
-SET_WindowPos2svMESA(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_WindowPos2svMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos3dMESA) (GLdouble, GLdouble,
-                                                   GLdouble);
-#define CALL_WindowPos3dMESA(disp, parameters) \
-    (* GET_WindowPos3dMESA(disp)) parameters
-static inline _glptr_WindowPos3dMESA
-GET_WindowPos3dMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos3dMESA) (GET_by_offset
-                                     (disp, _gloffset_WindowPos3dMESA));
-}
-
-static inline void
-SET_WindowPos3dMESA(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_WindowPos3dMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos3dvMESA) (const GLdouble *);
-
-#define CALL_WindowPos3dvMESA(disp, parameters) \
-    (* GET_WindowPos3dvMESA(disp)) parameters
-static inline _glptr_WindowPos3dvMESA
-GET_WindowPos3dvMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos3dvMESA) (GET_by_offset
-                                      (disp, _gloffset_WindowPos3dvMESA));
-}
-
-static inline void
-SET_WindowPos3dvMESA(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_WindowPos3dvMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos3fMESA) (GLfloat, GLfloat, GLfloat);
-
-#define CALL_WindowPos3fMESA(disp, parameters) \
-    (* GET_WindowPos3fMESA(disp)) parameters
-static inline _glptr_WindowPos3fMESA
-GET_WindowPos3fMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos3fMESA) (GET_by_offset
-                                     (disp, _gloffset_WindowPos3fMESA));
-}
-
-static inline void
-SET_WindowPos3fMESA(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_WindowPos3fMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos3fvMESA) (const GLfloat *);
-
-#define CALL_WindowPos3fvMESA(disp, parameters) \
-    (* GET_WindowPos3fvMESA(disp)) parameters
-static inline _glptr_WindowPos3fvMESA
-GET_WindowPos3fvMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos3fvMESA) (GET_by_offset
-                                      (disp, _gloffset_WindowPos3fvMESA));
-}
-
-static inline void
-SET_WindowPos3fvMESA(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_WindowPos3fvMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos3iMESA) (GLint, GLint, GLint);
-
-#define CALL_WindowPos3iMESA(disp, parameters) \
-    (* GET_WindowPos3iMESA(disp)) parameters
-static inline _glptr_WindowPos3iMESA
-GET_WindowPos3iMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos3iMESA) (GET_by_offset
-                                     (disp, _gloffset_WindowPos3iMESA));
-}
-
-static inline void
-SET_WindowPos3iMESA(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_WindowPos3iMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos3ivMESA) (const GLint *);
-
-#define CALL_WindowPos3ivMESA(disp, parameters) \
-    (* GET_WindowPos3ivMESA(disp)) parameters
-static inline _glptr_WindowPos3ivMESA
-GET_WindowPos3ivMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos3ivMESA) (GET_by_offset
-                                      (disp, _gloffset_WindowPos3ivMESA));
-}
-
-static inline void
-SET_WindowPos3ivMESA(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_WindowPos3ivMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos3sMESA) (GLshort, GLshort, GLshort);
-
-#define CALL_WindowPos3sMESA(disp, parameters) \
-    (* GET_WindowPos3sMESA(disp)) parameters
-static inline _glptr_WindowPos3sMESA
-GET_WindowPos3sMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos3sMESA) (GET_by_offset
-                                     (disp, _gloffset_WindowPos3sMESA));
-}
-
-static inline void
-SET_WindowPos3sMESA(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_WindowPos3sMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos3svMESA) (const GLshort *);
-
-#define CALL_WindowPos3svMESA(disp, parameters) \
-    (* GET_WindowPos3svMESA(disp)) parameters
-static inline _glptr_WindowPos3svMESA
-GET_WindowPos3svMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos3svMESA) (GET_by_offset
-                                      (disp, _gloffset_WindowPos3svMESA));
-}
-
-static inline void
-SET_WindowPos3svMESA(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_WindowPos3svMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos4dMESA) (GLdouble, GLdouble, GLdouble,
-                                                   GLdouble);
-#define CALL_WindowPos4dMESA(disp, parameters) \
-    (* GET_WindowPos4dMESA(disp)) parameters
-static inline _glptr_WindowPos4dMESA
-GET_WindowPos4dMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos4dMESA) (GET_by_offset
-                                     (disp, _gloffset_WindowPos4dMESA));
-}
-
-static inline void
-SET_WindowPos4dMESA(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLdouble, GLdouble, GLdouble,
-                                           GLdouble))
-{
-    SET_by_offset(disp, _gloffset_WindowPos4dMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos4dvMESA) (const GLdouble *);
-
-#define CALL_WindowPos4dvMESA(disp, parameters) \
-    (* GET_WindowPos4dvMESA(disp)) parameters
-static inline _glptr_WindowPos4dvMESA
-GET_WindowPos4dvMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos4dvMESA) (GET_by_offset
-                                      (disp, _gloffset_WindowPos4dvMESA));
-}
-
-static inline void
-SET_WindowPos4dvMESA(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_WindowPos4dvMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos4fMESA) (GLfloat, GLfloat, GLfloat,
-                                                   GLfloat);
-#define CALL_WindowPos4fMESA(disp, parameters) \
-    (* GET_WindowPos4fMESA(disp)) parameters
-static inline _glptr_WindowPos4fMESA
-GET_WindowPos4fMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos4fMESA) (GET_by_offset
-                                     (disp, _gloffset_WindowPos4fMESA));
-}
-
-static inline void
-SET_WindowPos4fMESA(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLfloat, GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_WindowPos4fMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos4fvMESA) (const GLfloat *);
-
-#define CALL_WindowPos4fvMESA(disp, parameters) \
-    (* GET_WindowPos4fvMESA(disp)) parameters
-static inline _glptr_WindowPos4fvMESA
-GET_WindowPos4fvMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos4fvMESA) (GET_by_offset
-                                      (disp, _gloffset_WindowPos4fvMESA));
-}
-
-static inline void
-SET_WindowPos4fvMESA(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_WindowPos4fvMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos4iMESA) (GLint, GLint, GLint, GLint);
-
-#define CALL_WindowPos4iMESA(disp, parameters) \
-    (* GET_WindowPos4iMESA(disp)) parameters
-static inline _glptr_WindowPos4iMESA
-GET_WindowPos4iMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos4iMESA) (GET_by_offset
-                                     (disp, _gloffset_WindowPos4iMESA));
-}
-
-static inline void
-SET_WindowPos4iMESA(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLint, GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_WindowPos4iMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos4ivMESA) (const GLint *);
-
-#define CALL_WindowPos4ivMESA(disp, parameters) \
-    (* GET_WindowPos4ivMESA(disp)) parameters
-static inline _glptr_WindowPos4ivMESA
-GET_WindowPos4ivMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos4ivMESA) (GET_by_offset
-                                      (disp, _gloffset_WindowPos4ivMESA));
-}
-
-static inline void
-SET_WindowPos4ivMESA(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (const GLint *))
-{
-    SET_by_offset(disp, _gloffset_WindowPos4ivMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos4sMESA) (GLshort, GLshort, GLshort,
-                                                   GLshort);
-#define CALL_WindowPos4sMESA(disp, parameters) \
-    (* GET_WindowPos4sMESA(disp)) parameters
-static inline _glptr_WindowPos4sMESA
-GET_WindowPos4sMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos4sMESA) (GET_by_offset
-                                     (disp, _gloffset_WindowPos4sMESA));
-}
-
-static inline void
-SET_WindowPos4sMESA(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLshort, GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_WindowPos4sMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_WindowPos4svMESA) (const GLshort *);
-
-#define CALL_WindowPos4svMESA(disp, parameters) \
-    (* GET_WindowPos4svMESA(disp)) parameters
-static inline _glptr_WindowPos4svMESA
-GET_WindowPos4svMESA(struct _glapi_table *disp)
-{
-    return (_glptr_WindowPos4svMESA) (GET_by_offset
-                                      (disp, _gloffset_WindowPos4svMESA));
-}
-
-static inline void
-SET_WindowPos4svMESA(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_WindowPos4svMESA, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiModeDrawArraysIBM) (const GLenum *,
-                                                          const GLint *,
-                                                          const GLsizei *,
-                                                          GLsizei, GLint);
-#define CALL_MultiModeDrawArraysIBM(disp, parameters) \
-    (* GET_MultiModeDrawArraysIBM(disp)) parameters
-static inline _glptr_MultiModeDrawArraysIBM
-GET_MultiModeDrawArraysIBM(struct _glapi_table *disp)
-{
-    return (_glptr_MultiModeDrawArraysIBM) (GET_by_offset
-                                            (disp,
-                                             _gloffset_MultiModeDrawArraysIBM));
-}
-
-static inline void
-SET_MultiModeDrawArraysIBM(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (const GLenum *, const GLint *,
-                                                  const GLsizei *, GLsizei,
-                                                  GLint))
-{
-    SET_by_offset(disp, _gloffset_MultiModeDrawArraysIBM, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_MultiModeDrawElementsIBM) (const GLenum *,
-                                                            const GLsizei *,
-                                                            GLenum,
-                                                            const GLvoid *
-                                                            const *, GLsizei,
-                                                            GLint);
-#define CALL_MultiModeDrawElementsIBM(disp, parameters) \
-    (* GET_MultiModeDrawElementsIBM(disp)) parameters
-static inline _glptr_MultiModeDrawElementsIBM
-GET_MultiModeDrawElementsIBM(struct _glapi_table *disp)
-{
-    return (_glptr_MultiModeDrawElementsIBM) (GET_by_offset
-                                              (disp,
-                                               _gloffset_MultiModeDrawElementsIBM));
-}
-
-static inline void
-SET_MultiModeDrawElementsIBM(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (const GLenum *,
-                                                    const GLsizei *, GLenum,
-                                                    const GLvoid * const *,
-                                                    GLsizei, GLint))
-{
-    SET_by_offset(disp, _gloffset_MultiModeDrawElementsIBM, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteFencesNV) (GLsizei, const GLuint *);
-
-#define CALL_DeleteFencesNV(disp, parameters) \
-    (* GET_DeleteFencesNV(disp)) parameters
-static inline _glptr_DeleteFencesNV
-GET_DeleteFencesNV(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteFencesNV) (GET_by_offset
-                                    (disp, _gloffset_DeleteFencesNV));
-}
-
-static inline void
-SET_DeleteFencesNV(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_DeleteFencesNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FinishFenceNV) (GLuint);
-
-#define CALL_FinishFenceNV(disp, parameters) \
-    (* GET_FinishFenceNV(disp)) parameters
-static inline _glptr_FinishFenceNV
-GET_FinishFenceNV(struct _glapi_table *disp)
-{
-    return (_glptr_FinishFenceNV) (GET_by_offset
-                                   (disp, _gloffset_FinishFenceNV));
-}
-
-static inline void
-SET_FinishFenceNV(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_FinishFenceNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenFencesNV) (GLsizei, GLuint *);
-
-#define CALL_GenFencesNV(disp, parameters) \
-    (* GET_GenFencesNV(disp)) parameters
-static inline _glptr_GenFencesNV
-GET_GenFencesNV(struct _glapi_table *disp)
-{
-    return (_glptr_GenFencesNV) (GET_by_offset(disp, _gloffset_GenFencesNV));
-}
-
-static inline void
-SET_GenFencesNV(struct _glapi_table *disp,
-                void (GLAPIENTRYP fn) (GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GenFencesNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetFenceivNV) (GLuint, GLenum, GLint *);
-
-#define CALL_GetFenceivNV(disp, parameters) \
-    (* GET_GetFenceivNV(disp)) parameters
-static inline _glptr_GetFenceivNV
-GET_GetFenceivNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetFenceivNV) (GET_by_offset(disp, _gloffset_GetFenceivNV));
-}
-
-static inline void
-SET_GetFenceivNV(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLuint, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetFenceivNV, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsFenceNV) (GLuint);
-
-#define CALL_IsFenceNV(disp, parameters) \
-    (* GET_IsFenceNV(disp)) parameters
-static inline _glptr_IsFenceNV
-GET_IsFenceNV(struct _glapi_table *disp)
-{
-    return (_glptr_IsFenceNV) (GET_by_offset(disp, _gloffset_IsFenceNV));
-}
-
-static inline void
-SET_IsFenceNV(struct _glapi_table *disp, GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsFenceNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SetFenceNV) (GLuint, GLenum);
-
-#define CALL_SetFenceNV(disp, parameters) \
-    (* GET_SetFenceNV(disp)) parameters
-static inline _glptr_SetFenceNV
-GET_SetFenceNV(struct _glapi_table *disp)
-{
-    return (_glptr_SetFenceNV) (GET_by_offset(disp, _gloffset_SetFenceNV));
-}
-
-static inline void
-SET_SetFenceNV(struct _glapi_table *disp,
-               void (GLAPIENTRYP fn) (GLuint, GLenum))
-{
-    SET_by_offset(disp, _gloffset_SetFenceNV, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_TestFenceNV) (GLuint);
-
-#define CALL_TestFenceNV(disp, parameters) \
-    (* GET_TestFenceNV(disp)) parameters
-static inline _glptr_TestFenceNV
-GET_TestFenceNV(struct _glapi_table *disp)
-{
-    return (_glptr_TestFenceNV) (GET_by_offset(disp, _gloffset_TestFenceNV));
-}
-
-static inline void
-SET_TestFenceNV(struct _glapi_table *disp, GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_TestFenceNV, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_AreProgramsResidentNV) (GLsizei,
-                                                             const GLuint *,
-                                                             GLboolean *);
-#define CALL_AreProgramsResidentNV(disp, parameters) \
-    (* GET_AreProgramsResidentNV(disp)) parameters
-static inline _glptr_AreProgramsResidentNV
-GET_AreProgramsResidentNV(struct _glapi_table *disp)
-{
-    return (_glptr_AreProgramsResidentNV) (GET_by_offset
-                                           (disp,
-                                            _gloffset_AreProgramsResidentNV));
-}
-
-static inline void
-SET_AreProgramsResidentNV(struct _glapi_table *disp,
-                          GLboolean(GLAPIENTRYP fn) (GLsizei, const GLuint *,
-                                                     GLboolean *))
-{
-    SET_by_offset(disp, _gloffset_AreProgramsResidentNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindProgramNV) (GLenum, GLuint);
-
-#define CALL_BindProgramNV(disp, parameters) \
-    (* GET_BindProgramNV(disp)) parameters
-static inline _glptr_BindProgramNV
-GET_BindProgramNV(struct _glapi_table *disp)
-{
-    return (_glptr_BindProgramNV) (GET_by_offset
-                                   (disp, _gloffset_BindProgramNV));
-}
-
-static inline void
-SET_BindProgramNV(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_BindProgramNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteProgramsNV) (GLsizei, const GLuint *);
-
-#define CALL_DeleteProgramsNV(disp, parameters) \
-    (* GET_DeleteProgramsNV(disp)) parameters
-static inline _glptr_DeleteProgramsNV
-GET_DeleteProgramsNV(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteProgramsNV) (GET_by_offset
-                                      (disp, _gloffset_DeleteProgramsNV));
-}
-
-static inline void
-SET_DeleteProgramsNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_DeleteProgramsNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ExecuteProgramNV) (GLenum, GLuint,
-                                                    const GLfloat *);
-#define CALL_ExecuteProgramNV(disp, parameters) \
-    (* GET_ExecuteProgramNV(disp)) parameters
-static inline _glptr_ExecuteProgramNV
-GET_ExecuteProgramNV(struct _glapi_table *disp)
-{
-    return (_glptr_ExecuteProgramNV) (GET_by_offset
-                                      (disp, _gloffset_ExecuteProgramNV));
-}
-
-static inline void
-SET_ExecuteProgramNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLenum, GLuint, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_ExecuteProgramNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenProgramsNV) (GLsizei, GLuint *);
-
-#define CALL_GenProgramsNV(disp, parameters) \
-    (* GET_GenProgramsNV(disp)) parameters
-static inline _glptr_GenProgramsNV
-GET_GenProgramsNV(struct _glapi_table *disp)
-{
-    return (_glptr_GenProgramsNV) (GET_by_offset
-                                   (disp, _gloffset_GenProgramsNV));
-}
-
-static inline void
-SET_GenProgramsNV(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GenProgramsNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramParameterdvNV) (GLenum, GLuint,
-                                                           GLenum, GLdouble *);
-#define CALL_GetProgramParameterdvNV(disp, parameters) \
-    (* GET_GetProgramParameterdvNV(disp)) parameters
-static inline _glptr_GetProgramParameterdvNV
-GET_GetProgramParameterdvNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramParameterdvNV) (GET_by_offset
-                                             (disp,
-                                              _gloffset_GetProgramParameterdvNV));
-}
-
-static inline void
-SET_GetProgramParameterdvNV(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLuint, GLenum,
-                                                   GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramParameterdvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramParameterfvNV) (GLenum, GLuint,
-                                                           GLenum, GLfloat *);
-#define CALL_GetProgramParameterfvNV(disp, parameters) \
-    (* GET_GetProgramParameterfvNV(disp)) parameters
-static inline _glptr_GetProgramParameterfvNV
-GET_GetProgramParameterfvNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramParameterfvNV) (GET_by_offset
-                                             (disp,
-                                              _gloffset_GetProgramParameterfvNV));
-}
-
-static inline void
-SET_GetProgramParameterfvNV(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLuint, GLenum,
-                                                   GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramParameterfvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramStringNV) (GLuint, GLenum,
-                                                      GLubyte *);
-#define CALL_GetProgramStringNV(disp, parameters) \
-    (* GET_GetProgramStringNV(disp)) parameters
-static inline _glptr_GetProgramStringNV
-GET_GetProgramStringNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramStringNV) (GET_by_offset
-                                        (disp, _gloffset_GetProgramStringNV));
-}
-
-static inline void
-SET_GetProgramStringNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLenum, GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramStringNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramivNV) (GLuint, GLenum, GLint *);
-
-#define CALL_GetProgramivNV(disp, parameters) \
-    (* GET_GetProgramivNV(disp)) parameters
-static inline _glptr_GetProgramivNV
-GET_GetProgramivNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramivNV) (GET_by_offset
-                                    (disp, _gloffset_GetProgramivNV));
-}
-
-static inline void
-SET_GetProgramivNV(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLuint, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramivNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTrackMatrixivNV) (GLenum, GLuint, GLenum,
-                                                      GLint *);
-#define CALL_GetTrackMatrixivNV(disp, parameters) \
-    (* GET_GetTrackMatrixivNV(disp)) parameters
-static inline _glptr_GetTrackMatrixivNV
-GET_GetTrackMatrixivNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetTrackMatrixivNV) (GET_by_offset
-                                        (disp, _gloffset_GetTrackMatrixivNV));
-}
-
-static inline void
-SET_GetTrackMatrixivNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLuint, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetTrackMatrixivNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetVertexAttribPointervNV) (GLuint, GLenum,
-                                                             GLvoid **);
-#define CALL_GetVertexAttribPointervNV(disp, parameters) \
-    (* GET_GetVertexAttribPointervNV(disp)) parameters
-static inline _glptr_GetVertexAttribPointervNV
-GET_GetVertexAttribPointervNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetVertexAttribPointervNV) (GET_by_offset
-                                               (disp,
-                                                _gloffset_GetVertexAttribPointervNV));
-}
-
-static inline void
-SET_GetVertexAttribPointervNV(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLuint, GLenum, GLvoid **))
-{
-    SET_by_offset(disp, _gloffset_GetVertexAttribPointervNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetVertexAttribdvNV) (GLuint, GLenum,
-                                                       GLdouble *);
-#define CALL_GetVertexAttribdvNV(disp, parameters) \
-    (* GET_GetVertexAttribdvNV(disp)) parameters
-static inline _glptr_GetVertexAttribdvNV
-GET_GetVertexAttribdvNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetVertexAttribdvNV) (GET_by_offset
-                                         (disp, _gloffset_GetVertexAttribdvNV));
-}
-
-static inline void
-SET_GetVertexAttribdvNV(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLenum, GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_GetVertexAttribdvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetVertexAttribfvNV) (GLuint, GLenum,
-                                                       GLfloat *);
-#define CALL_GetVertexAttribfvNV(disp, parameters) \
-    (* GET_GetVertexAttribfvNV(disp)) parameters
-static inline _glptr_GetVertexAttribfvNV
-GET_GetVertexAttribfvNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetVertexAttribfvNV) (GET_by_offset
-                                         (disp, _gloffset_GetVertexAttribfvNV));
-}
-
-static inline void
-SET_GetVertexAttribfvNV(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetVertexAttribfvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetVertexAttribivNV) (GLuint, GLenum, GLint *);
-
-#define CALL_GetVertexAttribivNV(disp, parameters) \
-    (* GET_GetVertexAttribivNV(disp)) parameters
-static inline _glptr_GetVertexAttribivNV
-GET_GetVertexAttribivNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetVertexAttribivNV) (GET_by_offset
-                                         (disp, _gloffset_GetVertexAttribivNV));
-}
-
-static inline void
-SET_GetVertexAttribivNV(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetVertexAttribivNV, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsProgramNV) (GLuint);
-
-#define CALL_IsProgramNV(disp, parameters) \
-    (* GET_IsProgramNV(disp)) parameters
-static inline _glptr_IsProgramNV
-GET_IsProgramNV(struct _glapi_table *disp)
-{
-    return (_glptr_IsProgramNV) (GET_by_offset(disp, _gloffset_IsProgramNV));
-}
-
-static inline void
-SET_IsProgramNV(struct _glapi_table *disp, GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsProgramNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_LoadProgramNV) (GLenum, GLuint, GLsizei,
-                                                 const GLubyte *);
-#define CALL_LoadProgramNV(disp, parameters) \
-    (* GET_LoadProgramNV(disp)) parameters
-static inline _glptr_LoadProgramNV
-GET_LoadProgramNV(struct _glapi_table *disp)
-{
-    return (_glptr_LoadProgramNV) (GET_by_offset
-                                   (disp, _gloffset_LoadProgramNV));
-}
-
-static inline void
-SET_LoadProgramNV(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLuint, GLsizei,
-                                         const GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_LoadProgramNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramParameters4dvNV) (GLenum, GLuint,
-                                                          GLsizei,
-                                                          const GLdouble *);
-#define CALL_ProgramParameters4dvNV(disp, parameters) \
-    (* GET_ProgramParameters4dvNV(disp)) parameters
-static inline _glptr_ProgramParameters4dvNV
-GET_ProgramParameters4dvNV(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramParameters4dvNV) (GET_by_offset
-                                            (disp,
-                                             _gloffset_ProgramParameters4dvNV));
-}
-
-static inline void
-SET_ProgramParameters4dvNV(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLuint, GLsizei,
-                                                  const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_ProgramParameters4dvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramParameters4fvNV) (GLenum, GLuint,
-                                                          GLsizei,
-                                                          const GLfloat *);
-#define CALL_ProgramParameters4fvNV(disp, parameters) \
-    (* GET_ProgramParameters4fvNV(disp)) parameters
-static inline _glptr_ProgramParameters4fvNV
-GET_ProgramParameters4fvNV(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramParameters4fvNV) (GET_by_offset
-                                            (disp,
-                                             _gloffset_ProgramParameters4fvNV));
-}
-
-static inline void
-SET_ProgramParameters4fvNV(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLuint, GLsizei,
-                                                  const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_ProgramParameters4fvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RequestResidentProgramsNV) (GLsizei,
-                                                             const GLuint *);
-#define CALL_RequestResidentProgramsNV(disp, parameters) \
-    (* GET_RequestResidentProgramsNV(disp)) parameters
-static inline _glptr_RequestResidentProgramsNV
-GET_RequestResidentProgramsNV(struct _glapi_table *disp)
-{
-    return (_glptr_RequestResidentProgramsNV) (GET_by_offset
-                                               (disp,
-                                                _gloffset_RequestResidentProgramsNV));
-}
-
-static inline void
-SET_RequestResidentProgramsNV(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_RequestResidentProgramsNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TrackMatrixNV) (GLenum, GLuint, GLenum,
-                                                 GLenum);
-#define CALL_TrackMatrixNV(disp, parameters) \
-    (* GET_TrackMatrixNV(disp)) parameters
-static inline _glptr_TrackMatrixNV
-GET_TrackMatrixNV(struct _glapi_table *disp)
-{
-    return (_glptr_TrackMatrixNV) (GET_by_offset
-                                   (disp, _gloffset_TrackMatrixNV));
-}
-
-static inline void
-SET_TrackMatrixNV(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLenum, GLuint, GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_TrackMatrixNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib1dNV) (GLuint, GLdouble);
-
-#define CALL_VertexAttrib1dNV(disp, parameters) \
-    (* GET_VertexAttrib1dNV(disp)) parameters
-static inline _glptr_VertexAttrib1dNV
-GET_VertexAttrib1dNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib1dNV) (GET_by_offset
-                                      (disp, _gloffset_VertexAttrib1dNV));
-}
-
-static inline void
-SET_VertexAttrib1dNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib1dNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib1dvNV) (GLuint, const GLdouble *);
-
-#define CALL_VertexAttrib1dvNV(disp, parameters) \
-    (* GET_VertexAttrib1dvNV(disp)) parameters
-static inline _glptr_VertexAttrib1dvNV
-GET_VertexAttrib1dvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib1dvNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib1dvNV));
-}
-
-static inline void
-SET_VertexAttrib1dvNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib1dvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib1fNV) (GLuint, GLfloat);
-
-#define CALL_VertexAttrib1fNV(disp, parameters) \
-    (* GET_VertexAttrib1fNV(disp)) parameters
-static inline _glptr_VertexAttrib1fNV
-GET_VertexAttrib1fNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib1fNV) (GET_by_offset
-                                      (disp, _gloffset_VertexAttrib1fNV));
-}
-
-static inline void
-SET_VertexAttrib1fNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib1fNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib1fvNV) (GLuint, const GLfloat *);
-
-#define CALL_VertexAttrib1fvNV(disp, parameters) \
-    (* GET_VertexAttrib1fvNV(disp)) parameters
-static inline _glptr_VertexAttrib1fvNV
-GET_VertexAttrib1fvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib1fvNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib1fvNV));
-}
-
-static inline void
-SET_VertexAttrib1fvNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib1fvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib1sNV) (GLuint, GLshort);
-
-#define CALL_VertexAttrib1sNV(disp, parameters) \
-    (* GET_VertexAttrib1sNV(disp)) parameters
-static inline _glptr_VertexAttrib1sNV
-GET_VertexAttrib1sNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib1sNV) (GET_by_offset
-                                      (disp, _gloffset_VertexAttrib1sNV));
-}
-
-static inline void
-SET_VertexAttrib1sNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLshort))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib1sNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib1svNV) (GLuint, const GLshort *);
-
-#define CALL_VertexAttrib1svNV(disp, parameters) \
-    (* GET_VertexAttrib1svNV(disp)) parameters
-static inline _glptr_VertexAttrib1svNV
-GET_VertexAttrib1svNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib1svNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib1svNV));
-}
-
-static inline void
-SET_VertexAttrib1svNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib1svNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib2dNV) (GLuint, GLdouble, GLdouble);
-
-#define CALL_VertexAttrib2dNV(disp, parameters) \
-    (* GET_VertexAttrib2dNV(disp)) parameters
-static inline _glptr_VertexAttrib2dNV
-GET_VertexAttrib2dNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib2dNV) (GET_by_offset
-                                      (disp, _gloffset_VertexAttrib2dNV));
-}
-
-static inline void
-SET_VertexAttrib2dNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib2dNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib2dvNV) (GLuint, const GLdouble *);
-
-#define CALL_VertexAttrib2dvNV(disp, parameters) \
-    (* GET_VertexAttrib2dvNV(disp)) parameters
-static inline _glptr_VertexAttrib2dvNV
-GET_VertexAttrib2dvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib2dvNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib2dvNV));
-}
-
-static inline void
-SET_VertexAttrib2dvNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib2dvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib2fNV) (GLuint, GLfloat, GLfloat);
-
-#define CALL_VertexAttrib2fNV(disp, parameters) \
-    (* GET_VertexAttrib2fNV(disp)) parameters
-static inline _glptr_VertexAttrib2fNV
-GET_VertexAttrib2fNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib2fNV) (GET_by_offset
-                                      (disp, _gloffset_VertexAttrib2fNV));
-}
-
-static inline void
-SET_VertexAttrib2fNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib2fNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib2fvNV) (GLuint, const GLfloat *);
-
-#define CALL_VertexAttrib2fvNV(disp, parameters) \
-    (* GET_VertexAttrib2fvNV(disp)) parameters
-static inline _glptr_VertexAttrib2fvNV
-GET_VertexAttrib2fvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib2fvNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib2fvNV));
-}
-
-static inline void
-SET_VertexAttrib2fvNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib2fvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib2sNV) (GLuint, GLshort, GLshort);
-
-#define CALL_VertexAttrib2sNV(disp, parameters) \
-    (* GET_VertexAttrib2sNV(disp)) parameters
-static inline _glptr_VertexAttrib2sNV
-GET_VertexAttrib2sNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib2sNV) (GET_by_offset
-                                      (disp, _gloffset_VertexAttrib2sNV));
-}
-
-static inline void
-SET_VertexAttrib2sNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib2sNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib2svNV) (GLuint, const GLshort *);
-
-#define CALL_VertexAttrib2svNV(disp, parameters) \
-    (* GET_VertexAttrib2svNV(disp)) parameters
-static inline _glptr_VertexAttrib2svNV
-GET_VertexAttrib2svNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib2svNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib2svNV));
-}
-
-static inline void
-SET_VertexAttrib2svNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib2svNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib3dNV) (GLuint, GLdouble, GLdouble,
-                                                    GLdouble);
-#define CALL_VertexAttrib3dNV(disp, parameters) \
-    (* GET_VertexAttrib3dNV(disp)) parameters
-static inline _glptr_VertexAttrib3dNV
-GET_VertexAttrib3dNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib3dNV) (GET_by_offset
-                                      (disp, _gloffset_VertexAttrib3dNV));
-}
-
-static inline void
-SET_VertexAttrib3dNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLdouble, GLdouble,
-                                            GLdouble))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib3dNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib3dvNV) (GLuint, const GLdouble *);
-
-#define CALL_VertexAttrib3dvNV(disp, parameters) \
-    (* GET_VertexAttrib3dvNV(disp)) parameters
-static inline _glptr_VertexAttrib3dvNV
-GET_VertexAttrib3dvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib3dvNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib3dvNV));
-}
-
-static inline void
-SET_VertexAttrib3dvNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib3dvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib3fNV) (GLuint, GLfloat, GLfloat,
-                                                    GLfloat);
-#define CALL_VertexAttrib3fNV(disp, parameters) \
-    (* GET_VertexAttrib3fNV(disp)) parameters
-static inline _glptr_VertexAttrib3fNV
-GET_VertexAttrib3fNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib3fNV) (GET_by_offset
-                                      (disp, _gloffset_VertexAttrib3fNV));
-}
-
-static inline void
-SET_VertexAttrib3fNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib3fNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib3fvNV) (GLuint, const GLfloat *);
-
-#define CALL_VertexAttrib3fvNV(disp, parameters) \
-    (* GET_VertexAttrib3fvNV(disp)) parameters
-static inline _glptr_VertexAttrib3fvNV
-GET_VertexAttrib3fvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib3fvNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib3fvNV));
-}
-
-static inline void
-SET_VertexAttrib3fvNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib3fvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib3sNV) (GLuint, GLshort, GLshort,
-                                                    GLshort);
-#define CALL_VertexAttrib3sNV(disp, parameters) \
-    (* GET_VertexAttrib3sNV(disp)) parameters
-static inline _glptr_VertexAttrib3sNV
-GET_VertexAttrib3sNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib3sNV) (GET_by_offset
-                                      (disp, _gloffset_VertexAttrib3sNV));
-}
-
-static inline void
-SET_VertexAttrib3sNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLshort, GLshort, GLshort))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib3sNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib3svNV) (GLuint, const GLshort *);
-
-#define CALL_VertexAttrib3svNV(disp, parameters) \
-    (* GET_VertexAttrib3svNV(disp)) parameters
-static inline _glptr_VertexAttrib3svNV
-GET_VertexAttrib3svNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib3svNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib3svNV));
-}
-
-static inline void
-SET_VertexAttrib3svNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib3svNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4dNV) (GLuint, GLdouble, GLdouble,
-                                                    GLdouble, GLdouble);
-#define CALL_VertexAttrib4dNV(disp, parameters) \
-    (* GET_VertexAttrib4dNV(disp)) parameters
-static inline _glptr_VertexAttrib4dNV
-GET_VertexAttrib4dNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4dNV) (GET_by_offset
-                                      (disp, _gloffset_VertexAttrib4dNV));
-}
-
-static inline void
-SET_VertexAttrib4dNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLdouble, GLdouble,
-                                            GLdouble, GLdouble))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4dNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4dvNV) (GLuint, const GLdouble *);
-
-#define CALL_VertexAttrib4dvNV(disp, parameters) \
-    (* GET_VertexAttrib4dvNV(disp)) parameters
-static inline _glptr_VertexAttrib4dvNV
-GET_VertexAttrib4dvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4dvNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib4dvNV));
-}
-
-static inline void
-SET_VertexAttrib4dvNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4dvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4fNV) (GLuint, GLfloat, GLfloat,
-                                                    GLfloat, GLfloat);
-#define CALL_VertexAttrib4fNV(disp, parameters) \
-    (* GET_VertexAttrib4fNV(disp)) parameters
-static inline _glptr_VertexAttrib4fNV
-GET_VertexAttrib4fNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4fNV) (GET_by_offset
-                                      (disp, _gloffset_VertexAttrib4fNV));
-}
-
-static inline void
-SET_VertexAttrib4fNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLfloat, GLfloat, GLfloat,
-                                            GLfloat))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4fNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4fvNV) (GLuint, const GLfloat *);
-
-#define CALL_VertexAttrib4fvNV(disp, parameters) \
-    (* GET_VertexAttrib4fvNV(disp)) parameters
-static inline _glptr_VertexAttrib4fvNV
-GET_VertexAttrib4fvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4fvNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib4fvNV));
-}
-
-static inline void
-SET_VertexAttrib4fvNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4fvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4sNV) (GLuint, GLshort, GLshort,
-                                                    GLshort, GLshort);
-#define CALL_VertexAttrib4sNV(disp, parameters) \
-    (* GET_VertexAttrib4sNV(disp)) parameters
-static inline _glptr_VertexAttrib4sNV
-GET_VertexAttrib4sNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4sNV) (GET_by_offset
-                                      (disp, _gloffset_VertexAttrib4sNV));
-}
-
-static inline void
-SET_VertexAttrib4sNV(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLshort, GLshort, GLshort,
-                                            GLshort))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4sNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4svNV) (GLuint, const GLshort *);
-
-#define CALL_VertexAttrib4svNV(disp, parameters) \
-    (* GET_VertexAttrib4svNV(disp)) parameters
-static inline _glptr_VertexAttrib4svNV
-GET_VertexAttrib4svNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4svNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib4svNV));
-}
-
-static inline void
-SET_VertexAttrib4svNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4svNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4ubNV) (GLuint, GLubyte, GLubyte,
-                                                     GLubyte, GLubyte);
-#define CALL_VertexAttrib4ubNV(disp, parameters) \
-    (* GET_VertexAttrib4ubNV(disp)) parameters
-static inline _glptr_VertexAttrib4ubNV
-GET_VertexAttrib4ubNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4ubNV) (GET_by_offset
-                                       (disp, _gloffset_VertexAttrib4ubNV));
-}
-
-static inline void
-SET_VertexAttrib4ubNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLuint, GLubyte, GLubyte, GLubyte,
-                                             GLubyte))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4ubNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttrib4ubvNV) (GLuint, const GLubyte *);
-
-#define CALL_VertexAttrib4ubvNV(disp, parameters) \
-    (* GET_VertexAttrib4ubvNV(disp)) parameters
-static inline _glptr_VertexAttrib4ubvNV
-GET_VertexAttrib4ubvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttrib4ubvNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttrib4ubvNV));
-}
-
-static inline void
-SET_VertexAttrib4ubvNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, const GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttrib4ubvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribPointerNV) (GLuint, GLint, GLenum,
-                                                         GLsizei,
-                                                         const GLvoid *);
-#define CALL_VertexAttribPointerNV(disp, parameters) \
-    (* GET_VertexAttribPointerNV(disp)) parameters
-static inline _glptr_VertexAttribPointerNV
-GET_VertexAttribPointerNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribPointerNV) (GET_by_offset
-                                           (disp,
-                                            _gloffset_VertexAttribPointerNV));
-}
-
-static inline void
-SET_VertexAttribPointerNV(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLuint, GLint, GLenum, GLsizei,
-                                                 const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribPointerNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs1dvNV) (GLuint, GLsizei,
-                                                      const GLdouble *);
-#define CALL_VertexAttribs1dvNV(disp, parameters) \
-    (* GET_VertexAttribs1dvNV(disp)) parameters
-static inline _glptr_VertexAttribs1dvNV
-GET_VertexAttribs1dvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs1dvNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribs1dvNV));
-}
-
-static inline void
-SET_VertexAttribs1dvNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei,
-                                              const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs1dvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs1fvNV) (GLuint, GLsizei,
-                                                      const GLfloat *);
-#define CALL_VertexAttribs1fvNV(disp, parameters) \
-    (* GET_VertexAttribs1fvNV(disp)) parameters
-static inline _glptr_VertexAttribs1fvNV
-GET_VertexAttribs1fvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs1fvNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribs1fvNV));
-}
-
-static inline void
-SET_VertexAttribs1fvNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs1fvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs1svNV) (GLuint, GLsizei,
-                                                      const GLshort *);
-#define CALL_VertexAttribs1svNV(disp, parameters) \
-    (* GET_VertexAttribs1svNV(disp)) parameters
-static inline _glptr_VertexAttribs1svNV
-GET_VertexAttribs1svNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs1svNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribs1svNV));
-}
-
-static inline void
-SET_VertexAttribs1svNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs1svNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs2dvNV) (GLuint, GLsizei,
-                                                      const GLdouble *);
-#define CALL_VertexAttribs2dvNV(disp, parameters) \
-    (* GET_VertexAttribs2dvNV(disp)) parameters
-static inline _glptr_VertexAttribs2dvNV
-GET_VertexAttribs2dvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs2dvNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribs2dvNV));
-}
-
-static inline void
-SET_VertexAttribs2dvNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei,
-                                              const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs2dvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs2fvNV) (GLuint, GLsizei,
-                                                      const GLfloat *);
-#define CALL_VertexAttribs2fvNV(disp, parameters) \
-    (* GET_VertexAttribs2fvNV(disp)) parameters
-static inline _glptr_VertexAttribs2fvNV
-GET_VertexAttribs2fvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs2fvNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribs2fvNV));
-}
-
-static inline void
-SET_VertexAttribs2fvNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs2fvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs2svNV) (GLuint, GLsizei,
-                                                      const GLshort *);
-#define CALL_VertexAttribs2svNV(disp, parameters) \
-    (* GET_VertexAttribs2svNV(disp)) parameters
-static inline _glptr_VertexAttribs2svNV
-GET_VertexAttribs2svNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs2svNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribs2svNV));
-}
-
-static inline void
-SET_VertexAttribs2svNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs2svNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs3dvNV) (GLuint, GLsizei,
-                                                      const GLdouble *);
-#define CALL_VertexAttribs3dvNV(disp, parameters) \
-    (* GET_VertexAttribs3dvNV(disp)) parameters
-static inline _glptr_VertexAttribs3dvNV
-GET_VertexAttribs3dvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs3dvNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribs3dvNV));
-}
-
-static inline void
-SET_VertexAttribs3dvNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei,
-                                              const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs3dvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs3fvNV) (GLuint, GLsizei,
-                                                      const GLfloat *);
-#define CALL_VertexAttribs3fvNV(disp, parameters) \
-    (* GET_VertexAttribs3fvNV(disp)) parameters
-static inline _glptr_VertexAttribs3fvNV
-GET_VertexAttribs3fvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs3fvNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribs3fvNV));
-}
-
-static inline void
-SET_VertexAttribs3fvNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs3fvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs3svNV) (GLuint, GLsizei,
-                                                      const GLshort *);
-#define CALL_VertexAttribs3svNV(disp, parameters) \
-    (* GET_VertexAttribs3svNV(disp)) parameters
-static inline _glptr_VertexAttribs3svNV
-GET_VertexAttribs3svNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs3svNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribs3svNV));
-}
-
-static inline void
-SET_VertexAttribs3svNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs3svNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs4dvNV) (GLuint, GLsizei,
-                                                      const GLdouble *);
-#define CALL_VertexAttribs4dvNV(disp, parameters) \
-    (* GET_VertexAttribs4dvNV(disp)) parameters
-static inline _glptr_VertexAttribs4dvNV
-GET_VertexAttribs4dvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs4dvNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribs4dvNV));
-}
-
-static inline void
-SET_VertexAttribs4dvNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei,
-                                              const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs4dvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs4fvNV) (GLuint, GLsizei,
-                                                      const GLfloat *);
-#define CALL_VertexAttribs4fvNV(disp, parameters) \
-    (* GET_VertexAttribs4fvNV(disp)) parameters
-static inline _glptr_VertexAttribs4fvNV
-GET_VertexAttribs4fvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs4fvNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribs4fvNV));
-}
-
-static inline void
-SET_VertexAttribs4fvNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs4fvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs4svNV) (GLuint, GLsizei,
-                                                      const GLshort *);
-#define CALL_VertexAttribs4svNV(disp, parameters) \
-    (* GET_VertexAttribs4svNV(disp)) parameters
-static inline _glptr_VertexAttribs4svNV
-GET_VertexAttribs4svNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs4svNV) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribs4svNV));
-}
-
-static inline void
-SET_VertexAttribs4svNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLsizei, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs4svNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribs4ubvNV) (GLuint, GLsizei,
-                                                       const GLubyte *);
-#define CALL_VertexAttribs4ubvNV(disp, parameters) \
-    (* GET_VertexAttribs4ubvNV(disp)) parameters
-static inline _glptr_VertexAttribs4ubvNV
-GET_VertexAttribs4ubvNV(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribs4ubvNV) (GET_by_offset
-                                         (disp, _gloffset_VertexAttribs4ubvNV));
-}
-
-static inline void
-SET_VertexAttribs4ubvNV(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLsizei,
-                                               const GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribs4ubvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexBumpParameterfvATI) (GLenum, GLfloat *);
-
-#define CALL_GetTexBumpParameterfvATI(disp, parameters) \
-    (* GET_GetTexBumpParameterfvATI(disp)) parameters
-static inline _glptr_GetTexBumpParameterfvATI
-GET_GetTexBumpParameterfvATI(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexBumpParameterfvATI) (GET_by_offset
-                                              (disp,
-                                               _gloffset_GetTexBumpParameterfvATI));
-}
-
-static inline void
-SET_GetTexBumpParameterfvATI(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLenum, GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetTexBumpParameterfvATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexBumpParameterivATI) (GLenum, GLint *);
-
-#define CALL_GetTexBumpParameterivATI(disp, parameters) \
-    (* GET_GetTexBumpParameterivATI(disp)) parameters
-static inline _glptr_GetTexBumpParameterivATI
-GET_GetTexBumpParameterivATI(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexBumpParameterivATI) (GET_by_offset
-                                              (disp,
-                                               _gloffset_GetTexBumpParameterivATI));
-}
-
-static inline void
-SET_GetTexBumpParameterivATI(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetTexBumpParameterivATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexBumpParameterfvATI) (GLenum,
-                                                         const GLfloat *);
-#define CALL_TexBumpParameterfvATI(disp, parameters) \
-    (* GET_TexBumpParameterfvATI(disp)) parameters
-static inline _glptr_TexBumpParameterfvATI
-GET_TexBumpParameterfvATI(struct _glapi_table *disp)
-{
-    return (_glptr_TexBumpParameterfvATI) (GET_by_offset
-                                           (disp,
-                                            _gloffset_TexBumpParameterfvATI));
-}
-
-static inline void
-SET_TexBumpParameterfvATI(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_TexBumpParameterfvATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexBumpParameterivATI) (GLenum, const GLint *);
-
-#define CALL_TexBumpParameterivATI(disp, parameters) \
-    (* GET_TexBumpParameterivATI(disp)) parameters
-static inline _glptr_TexBumpParameterivATI
-GET_TexBumpParameterivATI(struct _glapi_table *disp)
-{
-    return (_glptr_TexBumpParameterivATI) (GET_by_offset
-                                           (disp,
-                                            _gloffset_TexBumpParameterivATI));
-}
-
-static inline void
-SET_TexBumpParameterivATI(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_TexBumpParameterivATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_AlphaFragmentOp1ATI) (GLenum, GLuint, GLuint,
-                                                       GLuint, GLuint, GLuint);
-#define CALL_AlphaFragmentOp1ATI(disp, parameters) \
-    (* GET_AlphaFragmentOp1ATI(disp)) parameters
-static inline _glptr_AlphaFragmentOp1ATI
-GET_AlphaFragmentOp1ATI(struct _glapi_table *disp)
-{
-    return (_glptr_AlphaFragmentOp1ATI) (GET_by_offset
-                                         (disp, _gloffset_AlphaFragmentOp1ATI));
-}
-
-static inline void
-SET_AlphaFragmentOp1ATI(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLuint, GLuint, GLuint,
-                                               GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_AlphaFragmentOp1ATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_AlphaFragmentOp2ATI) (GLenum, GLuint, GLuint,
-                                                       GLuint, GLuint, GLuint,
-                                                       GLuint, GLuint, GLuint);
-#define CALL_AlphaFragmentOp2ATI(disp, parameters) \
-    (* GET_AlphaFragmentOp2ATI(disp)) parameters
-static inline _glptr_AlphaFragmentOp2ATI
-GET_AlphaFragmentOp2ATI(struct _glapi_table *disp)
-{
-    return (_glptr_AlphaFragmentOp2ATI) (GET_by_offset
-                                         (disp, _gloffset_AlphaFragmentOp2ATI));
-}
-
-static inline void
-SET_AlphaFragmentOp2ATI(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLuint, GLuint, GLuint,
-                                               GLuint, GLuint, GLuint, GLuint,
-                                               GLuint))
-{
-    SET_by_offset(disp, _gloffset_AlphaFragmentOp2ATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_AlphaFragmentOp3ATI) (GLenum, GLuint, GLuint,
-                                                       GLuint, GLuint, GLuint,
-                                                       GLuint, GLuint, GLuint,
-                                                       GLuint, GLuint, GLuint);
-#define CALL_AlphaFragmentOp3ATI(disp, parameters) \
-    (* GET_AlphaFragmentOp3ATI(disp)) parameters
-static inline _glptr_AlphaFragmentOp3ATI
-GET_AlphaFragmentOp3ATI(struct _glapi_table *disp)
-{
-    return (_glptr_AlphaFragmentOp3ATI) (GET_by_offset
-                                         (disp, _gloffset_AlphaFragmentOp3ATI));
-}
-
-static inline void
-SET_AlphaFragmentOp3ATI(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLuint, GLuint, GLuint,
-                                               GLuint, GLuint, GLuint, GLuint,
-                                               GLuint, GLuint, GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_AlphaFragmentOp3ATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BeginFragmentShaderATI) (void);
-
-#define CALL_BeginFragmentShaderATI(disp, parameters) \
-    (* GET_BeginFragmentShaderATI(disp)) parameters
-static inline _glptr_BeginFragmentShaderATI
-GET_BeginFragmentShaderATI(struct _glapi_table *disp)
-{
-    return (_glptr_BeginFragmentShaderATI) (GET_by_offset
-                                            (disp,
-                                             _gloffset_BeginFragmentShaderATI));
-}
-
-static inline void
-SET_BeginFragmentShaderATI(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_BeginFragmentShaderATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindFragmentShaderATI) (GLuint);
-
-#define CALL_BindFragmentShaderATI(disp, parameters) \
-    (* GET_BindFragmentShaderATI(disp)) parameters
-static inline _glptr_BindFragmentShaderATI
-GET_BindFragmentShaderATI(struct _glapi_table *disp)
-{
-    return (_glptr_BindFragmentShaderATI) (GET_by_offset
-                                           (disp,
-                                            _gloffset_BindFragmentShaderATI));
-}
-
-static inline void
-SET_BindFragmentShaderATI(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_BindFragmentShaderATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorFragmentOp1ATI) (GLenum, GLuint, GLuint,
-                                                       GLuint, GLuint, GLuint,
-                                                       GLuint);
-#define CALL_ColorFragmentOp1ATI(disp, parameters) \
-    (* GET_ColorFragmentOp1ATI(disp)) parameters
-static inline _glptr_ColorFragmentOp1ATI
-GET_ColorFragmentOp1ATI(struct _glapi_table *disp)
-{
-    return (_glptr_ColorFragmentOp1ATI) (GET_by_offset
-                                         (disp, _gloffset_ColorFragmentOp1ATI));
-}
-
-static inline void
-SET_ColorFragmentOp1ATI(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLuint, GLuint, GLuint,
-                                               GLuint, GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_ColorFragmentOp1ATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorFragmentOp2ATI) (GLenum, GLuint, GLuint,
-                                                       GLuint, GLuint, GLuint,
-                                                       GLuint, GLuint, GLuint,
-                                                       GLuint);
-#define CALL_ColorFragmentOp2ATI(disp, parameters) \
-    (* GET_ColorFragmentOp2ATI(disp)) parameters
-static inline _glptr_ColorFragmentOp2ATI
-GET_ColorFragmentOp2ATI(struct _glapi_table *disp)
-{
-    return (_glptr_ColorFragmentOp2ATI) (GET_by_offset
-                                         (disp, _gloffset_ColorFragmentOp2ATI));
-}
-
-static inline void
-SET_ColorFragmentOp2ATI(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLuint, GLuint, GLuint,
-                                               GLuint, GLuint, GLuint, GLuint,
-                                               GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_ColorFragmentOp2ATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorFragmentOp3ATI) (GLenum, GLuint, GLuint,
-                                                       GLuint, GLuint, GLuint,
-                                                       GLuint, GLuint, GLuint,
-                                                       GLuint, GLuint, GLuint,
-                                                       GLuint);
-#define CALL_ColorFragmentOp3ATI(disp, parameters) \
-    (* GET_ColorFragmentOp3ATI(disp)) parameters
-static inline _glptr_ColorFragmentOp3ATI
-GET_ColorFragmentOp3ATI(struct _glapi_table *disp)
-{
-    return (_glptr_ColorFragmentOp3ATI) (GET_by_offset
-                                         (disp, _gloffset_ColorFragmentOp3ATI));
-}
-
-static inline void
-SET_ColorFragmentOp3ATI(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLuint, GLuint, GLuint,
-                                               GLuint, GLuint, GLuint, GLuint,
-                                               GLuint, GLuint, GLuint, GLuint,
-                                               GLuint))
-{
-    SET_by_offset(disp, _gloffset_ColorFragmentOp3ATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteFragmentShaderATI) (GLuint);
-
-#define CALL_DeleteFragmentShaderATI(disp, parameters) \
-    (* GET_DeleteFragmentShaderATI(disp)) parameters
-static inline _glptr_DeleteFragmentShaderATI
-GET_DeleteFragmentShaderATI(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteFragmentShaderATI) (GET_by_offset
-                                             (disp,
-                                              _gloffset_DeleteFragmentShaderATI));
-}
-
-static inline void
-SET_DeleteFragmentShaderATI(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_DeleteFragmentShaderATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EndFragmentShaderATI) (void);
-
-#define CALL_EndFragmentShaderATI(disp, parameters) \
-    (* GET_EndFragmentShaderATI(disp)) parameters
-static inline _glptr_EndFragmentShaderATI
-GET_EndFragmentShaderATI(struct _glapi_table *disp)
-{
-    return (_glptr_EndFragmentShaderATI) (GET_by_offset
-                                          (disp,
-                                           _gloffset_EndFragmentShaderATI));
-}
-
-static inline void
-SET_EndFragmentShaderATI(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_EndFragmentShaderATI, fn);
-}
-
-typedef GLuint(GLAPIENTRYP _glptr_GenFragmentShadersATI) (GLuint);
-
-#define CALL_GenFragmentShadersATI(disp, parameters) \
-    (* GET_GenFragmentShadersATI(disp)) parameters
-static inline _glptr_GenFragmentShadersATI
-GET_GenFragmentShadersATI(struct _glapi_table *disp)
-{
-    return (_glptr_GenFragmentShadersATI) (GET_by_offset
-                                           (disp,
-                                            _gloffset_GenFragmentShadersATI));
-}
-
-static inline void
-SET_GenFragmentShadersATI(struct _glapi_table *disp,
-                          GLuint(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_GenFragmentShadersATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PassTexCoordATI) (GLuint, GLuint, GLenum);
-
-#define CALL_PassTexCoordATI(disp, parameters) \
-    (* GET_PassTexCoordATI(disp)) parameters
-static inline _glptr_PassTexCoordATI
-GET_PassTexCoordATI(struct _glapi_table *disp)
-{
-    return (_glptr_PassTexCoordATI) (GET_by_offset
-                                     (disp, _gloffset_PassTexCoordATI));
-}
-
-static inline void
-SET_PassTexCoordATI(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLuint, GLuint, GLenum))
-{
-    SET_by_offset(disp, _gloffset_PassTexCoordATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SampleMapATI) (GLuint, GLuint, GLenum);
-
-#define CALL_SampleMapATI(disp, parameters) \
-    (* GET_SampleMapATI(disp)) parameters
-static inline _glptr_SampleMapATI
-GET_SampleMapATI(struct _glapi_table *disp)
-{
-    return (_glptr_SampleMapATI) (GET_by_offset(disp, _gloffset_SampleMapATI));
-}
-
-static inline void
-SET_SampleMapATI(struct _glapi_table *disp,
-                 void (GLAPIENTRYP fn) (GLuint, GLuint, GLenum))
-{
-    SET_by_offset(disp, _gloffset_SampleMapATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_SetFragmentShaderConstantATI) (GLuint,
-                                                                const GLfloat
-                                                                *);
-#define CALL_SetFragmentShaderConstantATI(disp, parameters) \
-    (* GET_SetFragmentShaderConstantATI(disp)) parameters
-static inline _glptr_SetFragmentShaderConstantATI
-GET_SetFragmentShaderConstantATI(struct _glapi_table *disp)
-{
-    return (_glptr_SetFragmentShaderConstantATI) (GET_by_offset
-                                                  (disp,
-                                                   _gloffset_SetFragmentShaderConstantATI));
-}
-
-static inline void
-SET_SetFragmentShaderConstantATI(struct _glapi_table *disp,
-                                 void (GLAPIENTRYP fn) (GLuint,
-                                                        const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_SetFragmentShaderConstantATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PointParameteriNV) (GLenum, GLint);
-
-#define CALL_PointParameteriNV(disp, parameters) \
-    (* GET_PointParameteriNV(disp)) parameters
-static inline _glptr_PointParameteriNV
-GET_PointParameteriNV(struct _glapi_table *disp)
-{
-    return (_glptr_PointParameteriNV) (GET_by_offset
-                                       (disp, _gloffset_PointParameteriNV));
-}
-
-static inline void
-SET_PointParameteriNV(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_PointParameteriNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PointParameterivNV) (GLenum, const GLint *);
-
-#define CALL_PointParameterivNV(disp, parameters) \
-    (* GET_PointParameterivNV(disp)) parameters
-static inline _glptr_PointParameterivNV
-GET_PointParameterivNV(struct _glapi_table *disp)
-{
-    return (_glptr_PointParameterivNV) (GET_by_offset
-                                        (disp, _gloffset_PointParameterivNV));
-}
-
-static inline void
-SET_PointParameterivNV(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_PointParameterivNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ActiveStencilFaceEXT) (GLenum);
-
-#define CALL_ActiveStencilFaceEXT(disp, parameters) \
-    (* GET_ActiveStencilFaceEXT(disp)) parameters
-static inline _glptr_ActiveStencilFaceEXT
-GET_ActiveStencilFaceEXT(struct _glapi_table *disp)
-{
-    return (_glptr_ActiveStencilFaceEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_ActiveStencilFaceEXT));
-}
-
-static inline void
-SET_ActiveStencilFaceEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_ActiveStencilFaceEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindVertexArrayAPPLE) (GLuint);
-
-#define CALL_BindVertexArrayAPPLE(disp, parameters) \
-    (* GET_BindVertexArrayAPPLE(disp)) parameters
-static inline _glptr_BindVertexArrayAPPLE
-GET_BindVertexArrayAPPLE(struct _glapi_table *disp)
-{
-    return (_glptr_BindVertexArrayAPPLE) (GET_by_offset
-                                          (disp,
-                                           _gloffset_BindVertexArrayAPPLE));
-}
-
-static inline void
-SET_BindVertexArrayAPPLE(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_BindVertexArrayAPPLE, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteVertexArraysAPPLE) (GLsizei,
-                                                           const GLuint *);
-#define CALL_DeleteVertexArraysAPPLE(disp, parameters) \
-    (* GET_DeleteVertexArraysAPPLE(disp)) parameters
-static inline _glptr_DeleteVertexArraysAPPLE
-GET_DeleteVertexArraysAPPLE(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteVertexArraysAPPLE) (GET_by_offset
-                                             (disp,
-                                              _gloffset_DeleteVertexArraysAPPLE));
-}
-
-static inline void
-SET_DeleteVertexArraysAPPLE(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_DeleteVertexArraysAPPLE, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenVertexArraysAPPLE) (GLsizei, GLuint *);
-
-#define CALL_GenVertexArraysAPPLE(disp, parameters) \
-    (* GET_GenVertexArraysAPPLE(disp)) parameters
-static inline _glptr_GenVertexArraysAPPLE
-GET_GenVertexArraysAPPLE(struct _glapi_table *disp)
-{
-    return (_glptr_GenVertexArraysAPPLE) (GET_by_offset
-                                          (disp,
-                                           _gloffset_GenVertexArraysAPPLE));
-}
-
-static inline void
-SET_GenVertexArraysAPPLE(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GenVertexArraysAPPLE, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsVertexArrayAPPLE) (GLuint);
-
-#define CALL_IsVertexArrayAPPLE(disp, parameters) \
-    (* GET_IsVertexArrayAPPLE(disp)) parameters
-static inline _glptr_IsVertexArrayAPPLE
-GET_IsVertexArrayAPPLE(struct _glapi_table *disp)
-{
-    return (_glptr_IsVertexArrayAPPLE) (GET_by_offset
-                                        (disp, _gloffset_IsVertexArrayAPPLE));
-}
-
-static inline void
-SET_IsVertexArrayAPPLE(struct _glapi_table *disp,
-                       GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsVertexArrayAPPLE, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramNamedParameterdvNV) (GLuint, GLsizei,
-                                                                const GLubyte *,
-                                                                GLdouble *);
-#define CALL_GetProgramNamedParameterdvNV(disp, parameters) \
-    (* GET_GetProgramNamedParameterdvNV(disp)) parameters
-static inline _glptr_GetProgramNamedParameterdvNV
-GET_GetProgramNamedParameterdvNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramNamedParameterdvNV) (GET_by_offset
-                                                  (disp,
-                                                   _gloffset_GetProgramNamedParameterdvNV));
-}
-
-static inline void
-SET_GetProgramNamedParameterdvNV(struct _glapi_table *disp,
-                                 void (GLAPIENTRYP fn) (GLuint, GLsizei,
-                                                        const GLubyte *,
-                                                        GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramNamedParameterdvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetProgramNamedParameterfvNV) (GLuint, GLsizei,
-                                                                const GLubyte *,
-                                                                GLfloat *);
-#define CALL_GetProgramNamedParameterfvNV(disp, parameters) \
-    (* GET_GetProgramNamedParameterfvNV(disp)) parameters
-static inline _glptr_GetProgramNamedParameterfvNV
-GET_GetProgramNamedParameterfvNV(struct _glapi_table *disp)
-{
-    return (_glptr_GetProgramNamedParameterfvNV) (GET_by_offset
-                                                  (disp,
-                                                   _gloffset_GetProgramNamedParameterfvNV));
-}
-
-static inline void
-SET_GetProgramNamedParameterfvNV(struct _glapi_table *disp,
-                                 void (GLAPIENTRYP fn) (GLuint, GLsizei,
-                                                        const GLubyte *,
-                                                        GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_GetProgramNamedParameterfvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramNamedParameter4dNV) (GLuint, GLsizei,
-                                                             const GLubyte *,
-                                                             GLdouble, GLdouble,
-                                                             GLdouble,
-                                                             GLdouble);
-#define CALL_ProgramNamedParameter4dNV(disp, parameters) \
-    (* GET_ProgramNamedParameter4dNV(disp)) parameters
-static inline _glptr_ProgramNamedParameter4dNV
-GET_ProgramNamedParameter4dNV(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramNamedParameter4dNV) (GET_by_offset
-                                               (disp,
-                                                _gloffset_ProgramNamedParameter4dNV));
-}
-
-static inline void
-SET_ProgramNamedParameter4dNV(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLuint, GLsizei,
-                                                     const GLubyte *, GLdouble,
-                                                     GLdouble, GLdouble,
-                                                     GLdouble))
-{
-    SET_by_offset(disp, _gloffset_ProgramNamedParameter4dNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramNamedParameter4dvNV) (GLuint, GLsizei,
-                                                              const GLubyte *,
-                                                              const GLdouble *);
-#define CALL_ProgramNamedParameter4dvNV(disp, parameters) \
-    (* GET_ProgramNamedParameter4dvNV(disp)) parameters
-static inline _glptr_ProgramNamedParameter4dvNV
-GET_ProgramNamedParameter4dvNV(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramNamedParameter4dvNV) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_ProgramNamedParameter4dvNV));
-}
-
-static inline void
-SET_ProgramNamedParameter4dvNV(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLuint, GLsizei,
-                                                      const GLubyte *,
-                                                      const GLdouble *))
-{
-    SET_by_offset(disp, _gloffset_ProgramNamedParameter4dvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramNamedParameter4fNV) (GLuint, GLsizei,
-                                                             const GLubyte *,
-                                                             GLfloat, GLfloat,
-                                                             GLfloat, GLfloat);
-#define CALL_ProgramNamedParameter4fNV(disp, parameters) \
-    (* GET_ProgramNamedParameter4fNV(disp)) parameters
-static inline _glptr_ProgramNamedParameter4fNV
-GET_ProgramNamedParameter4fNV(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramNamedParameter4fNV) (GET_by_offset
-                                               (disp,
-                                                _gloffset_ProgramNamedParameter4fNV));
-}
-
-static inline void
-SET_ProgramNamedParameter4fNV(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLuint, GLsizei,
-                                                     const GLubyte *, GLfloat,
-                                                     GLfloat, GLfloat, GLfloat))
-{
-    SET_by_offset(disp, _gloffset_ProgramNamedParameter4fNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramNamedParameter4fvNV) (GLuint, GLsizei,
-                                                              const GLubyte *,
-                                                              const GLfloat *);
-#define CALL_ProgramNamedParameter4fvNV(disp, parameters) \
-    (* GET_ProgramNamedParameter4fvNV(disp)) parameters
-static inline _glptr_ProgramNamedParameter4fvNV
-GET_ProgramNamedParameter4fvNV(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramNamedParameter4fvNV) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_ProgramNamedParameter4fvNV));
-}
-
-static inline void
-SET_ProgramNamedParameter4fvNV(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLuint, GLsizei,
-                                                      const GLubyte *,
-                                                      const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_ProgramNamedParameter4fvNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PrimitiveRestartIndexNV) (GLuint);
-
-#define CALL_PrimitiveRestartIndexNV(disp, parameters) \
-    (* GET_PrimitiveRestartIndexNV(disp)) parameters
-static inline _glptr_PrimitiveRestartIndexNV
-GET_PrimitiveRestartIndexNV(struct _glapi_table *disp)
-{
-    return (_glptr_PrimitiveRestartIndexNV) (GET_by_offset
-                                             (disp,
-                                              _gloffset_PrimitiveRestartIndexNV));
-}
-
-static inline void
-SET_PrimitiveRestartIndexNV(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_PrimitiveRestartIndexNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_PrimitiveRestartNV) (void);
-
-#define CALL_PrimitiveRestartNV(disp, parameters) \
-    (* GET_PrimitiveRestartNV(disp)) parameters
-static inline _glptr_PrimitiveRestartNV
-GET_PrimitiveRestartNV(struct _glapi_table *disp)
-{
-    return (_glptr_PrimitiveRestartNV) (GET_by_offset
-                                        (disp, _gloffset_PrimitiveRestartNV));
-}
-
-static inline void
-SET_PrimitiveRestartNV(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_PrimitiveRestartNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DepthBoundsEXT) (GLclampd, GLclampd);
-
-#define CALL_DepthBoundsEXT(disp, parameters) \
-    (* GET_DepthBoundsEXT(disp)) parameters
-static inline _glptr_DepthBoundsEXT
-GET_DepthBoundsEXT(struct _glapi_table *disp)
-{
-    return (_glptr_DepthBoundsEXT) (GET_by_offset
-                                    (disp, _gloffset_DepthBoundsEXT));
-}
-
-static inline void
-SET_DepthBoundsEXT(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLclampd, GLclampd))
-{
-    SET_by_offset(disp, _gloffset_DepthBoundsEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BlendEquationSeparateEXT) (GLenum, GLenum);
-
-#define CALL_BlendEquationSeparateEXT(disp, parameters) \
-    (* GET_BlendEquationSeparateEXT(disp)) parameters
-static inline _glptr_BlendEquationSeparateEXT
-GET_BlendEquationSeparateEXT(struct _glapi_table *disp)
-{
-    return (_glptr_BlendEquationSeparateEXT) (GET_by_offset
-                                              (disp,
-                                               _gloffset_BlendEquationSeparateEXT));
-}
-
-static inline void
-SET_BlendEquationSeparateEXT(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLenum, GLenum))
-{
-    SET_by_offset(disp, _gloffset_BlendEquationSeparateEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindFramebufferEXT) (GLenum, GLuint);
-
-#define CALL_BindFramebufferEXT(disp, parameters) \
-    (* GET_BindFramebufferEXT(disp)) parameters
-static inline _glptr_BindFramebufferEXT
-GET_BindFramebufferEXT(struct _glapi_table *disp)
-{
-    return (_glptr_BindFramebufferEXT) (GET_by_offset
-                                        (disp, _gloffset_BindFramebufferEXT));
-}
-
-static inline void
-SET_BindFramebufferEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_BindFramebufferEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindRenderbufferEXT) (GLenum, GLuint);
-
-#define CALL_BindRenderbufferEXT(disp, parameters) \
-    (* GET_BindRenderbufferEXT(disp)) parameters
-static inline _glptr_BindRenderbufferEXT
-GET_BindRenderbufferEXT(struct _glapi_table *disp)
-{
-    return (_glptr_BindRenderbufferEXT) (GET_by_offset
-                                         (disp, _gloffset_BindRenderbufferEXT));
-}
-
-static inline void
-SET_BindRenderbufferEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_BindRenderbufferEXT, fn);
-}
-
-typedef GLenum(GLAPIENTRYP _glptr_CheckFramebufferStatusEXT) (GLenum);
-
-#define CALL_CheckFramebufferStatusEXT(disp, parameters) \
-    (* GET_CheckFramebufferStatusEXT(disp)) parameters
-static inline _glptr_CheckFramebufferStatusEXT
-GET_CheckFramebufferStatusEXT(struct _glapi_table *disp)
-{
-    return (_glptr_CheckFramebufferStatusEXT) (GET_by_offset
-                                               (disp,
-                                                _gloffset_CheckFramebufferStatusEXT));
-}
-
-static inline void
-SET_CheckFramebufferStatusEXT(struct _glapi_table *disp,
-                              GLenum(GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_CheckFramebufferStatusEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteFramebuffersEXT) (GLsizei,
-                                                         const GLuint *);
-#define CALL_DeleteFramebuffersEXT(disp, parameters) \
-    (* GET_DeleteFramebuffersEXT(disp)) parameters
-static inline _glptr_DeleteFramebuffersEXT
-GET_DeleteFramebuffersEXT(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteFramebuffersEXT) (GET_by_offset
-                                           (disp,
-                                            _gloffset_DeleteFramebuffersEXT));
-}
-
-static inline void
-SET_DeleteFramebuffersEXT(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_DeleteFramebuffersEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteRenderbuffersEXT) (GLsizei,
-                                                          const GLuint *);
-#define CALL_DeleteRenderbuffersEXT(disp, parameters) \
-    (* GET_DeleteRenderbuffersEXT(disp)) parameters
-static inline _glptr_DeleteRenderbuffersEXT
-GET_DeleteRenderbuffersEXT(struct _glapi_table *disp)
-{
-    return (_glptr_DeleteRenderbuffersEXT) (GET_by_offset
-                                            (disp,
-                                             _gloffset_DeleteRenderbuffersEXT));
-}
-
-static inline void
-SET_DeleteRenderbuffersEXT(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_DeleteRenderbuffersEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FramebufferRenderbufferEXT) (GLenum, GLenum,
-                                                              GLenum, GLuint);
-#define CALL_FramebufferRenderbufferEXT(disp, parameters) \
-    (* GET_FramebufferRenderbufferEXT(disp)) parameters
-static inline _glptr_FramebufferRenderbufferEXT
-GET_FramebufferRenderbufferEXT(struct _glapi_table *disp)
-{
-    return (_glptr_FramebufferRenderbufferEXT) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_FramebufferRenderbufferEXT));
-}
-
-static inline void
-SET_FramebufferRenderbufferEXT(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum,
-                                                      GLuint))
-{
-    SET_by_offset(disp, _gloffset_FramebufferRenderbufferEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FramebufferTexture1DEXT) (GLenum, GLenum,
-                                                           GLenum, GLuint,
-                                                           GLint);
-#define CALL_FramebufferTexture1DEXT(disp, parameters) \
-    (* GET_FramebufferTexture1DEXT(disp)) parameters
-static inline _glptr_FramebufferTexture1DEXT
-GET_FramebufferTexture1DEXT(struct _glapi_table *disp)
-{
-    return (_glptr_FramebufferTexture1DEXT) (GET_by_offset
-                                             (disp,
-                                              _gloffset_FramebufferTexture1DEXT));
-}
-
-static inline void
-SET_FramebufferTexture1DEXT(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum,
-                                                   GLuint, GLint))
-{
-    SET_by_offset(disp, _gloffset_FramebufferTexture1DEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FramebufferTexture2DEXT) (GLenum, GLenum,
-                                                           GLenum, GLuint,
-                                                           GLint);
-#define CALL_FramebufferTexture2DEXT(disp, parameters) \
-    (* GET_FramebufferTexture2DEXT(disp)) parameters
-static inline _glptr_FramebufferTexture2DEXT
-GET_FramebufferTexture2DEXT(struct _glapi_table *disp)
-{
-    return (_glptr_FramebufferTexture2DEXT) (GET_by_offset
-                                             (disp,
-                                              _gloffset_FramebufferTexture2DEXT));
-}
-
-static inline void
-SET_FramebufferTexture2DEXT(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum,
-                                                   GLuint, GLint))
-{
-    SET_by_offset(disp, _gloffset_FramebufferTexture2DEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FramebufferTexture3DEXT) (GLenum, GLenum,
-                                                           GLenum, GLuint,
-                                                           GLint, GLint);
-#define CALL_FramebufferTexture3DEXT(disp, parameters) \
-    (* GET_FramebufferTexture3DEXT(disp)) parameters
-static inline _glptr_FramebufferTexture3DEXT
-GET_FramebufferTexture3DEXT(struct _glapi_table *disp)
-{
-    return (_glptr_FramebufferTexture3DEXT) (GET_by_offset
-                                             (disp,
-                                              _gloffset_FramebufferTexture3DEXT));
-}
-
-static inline void
-SET_FramebufferTexture3DEXT(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLenum, GLenum, GLenum,
-                                                   GLuint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_FramebufferTexture3DEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenFramebuffersEXT) (GLsizei, GLuint *);
-
-#define CALL_GenFramebuffersEXT(disp, parameters) \
-    (* GET_GenFramebuffersEXT(disp)) parameters
-static inline _glptr_GenFramebuffersEXT
-GET_GenFramebuffersEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GenFramebuffersEXT) (GET_by_offset
-                                        (disp, _gloffset_GenFramebuffersEXT));
-}
-
-static inline void
-SET_GenFramebuffersEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GenFramebuffersEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenRenderbuffersEXT) (GLsizei, GLuint *);
-
-#define CALL_GenRenderbuffersEXT(disp, parameters) \
-    (* GET_GenRenderbuffersEXT(disp)) parameters
-static inline _glptr_GenRenderbuffersEXT
-GET_GenRenderbuffersEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GenRenderbuffersEXT) (GET_by_offset
-                                         (disp, _gloffset_GenRenderbuffersEXT));
-}
-
-static inline void
-SET_GenRenderbuffersEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLsizei, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GenRenderbuffersEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenerateMipmapEXT) (GLenum);
-
-#define CALL_GenerateMipmapEXT(disp, parameters) \
-    (* GET_GenerateMipmapEXT(disp)) parameters
-static inline _glptr_GenerateMipmapEXT
-GET_GenerateMipmapEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GenerateMipmapEXT) (GET_by_offset
-                                       (disp, _gloffset_GenerateMipmapEXT));
-}
-
-static inline void
-SET_GenerateMipmapEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_GenerateMipmapEXT, fn);
-}
-
-typedef void (GLAPIENTRYP
-              _glptr_GetFramebufferAttachmentParameterivEXT) (GLenum, GLenum,
-                                                              GLenum, GLint *);
-#define CALL_GetFramebufferAttachmentParameterivEXT(disp, parameters) \
-    (* GET_GetFramebufferAttachmentParameterivEXT(disp)) parameters
-static inline _glptr_GetFramebufferAttachmentParameterivEXT
-GET_GetFramebufferAttachmentParameterivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetFramebufferAttachmentParameterivEXT) (GET_by_offset
-                                                            (disp,
-                                                             _gloffset_GetFramebufferAttachmentParameterivEXT));
-}
-
-static inline void
-SET_GetFramebufferAttachmentParameterivEXT(struct _glapi_table *disp,
-                                           void (GLAPIENTRYP fn) (GLenum,
-                                                                  GLenum,
-                                                                  GLenum,
-                                                                  GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetFramebufferAttachmentParameterivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetRenderbufferParameterivEXT) (GLenum, GLenum,
-                                                                 GLint *);
-#define CALL_GetRenderbufferParameterivEXT(disp, parameters) \
-    (* GET_GetRenderbufferParameterivEXT(disp)) parameters
-static inline _glptr_GetRenderbufferParameterivEXT
-GET_GetRenderbufferParameterivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetRenderbufferParameterivEXT) (GET_by_offset
-                                                   (disp,
-                                                    _gloffset_GetRenderbufferParameterivEXT));
-}
-
-static inline void
-SET_GetRenderbufferParameterivEXT(struct _glapi_table *disp,
-                                  void (GLAPIENTRYP fn) (GLenum, GLenum,
-                                                         GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetRenderbufferParameterivEXT, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsFramebufferEXT) (GLuint);
-
-#define CALL_IsFramebufferEXT(disp, parameters) \
-    (* GET_IsFramebufferEXT(disp)) parameters
-static inline _glptr_IsFramebufferEXT
-GET_IsFramebufferEXT(struct _glapi_table *disp)
-{
-    return (_glptr_IsFramebufferEXT) (GET_by_offset
-                                      (disp, _gloffset_IsFramebufferEXT));
-}
-
-static inline void
-SET_IsFramebufferEXT(struct _glapi_table *disp,
-                     GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsFramebufferEXT, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsRenderbufferEXT) (GLuint);
-
-#define CALL_IsRenderbufferEXT(disp, parameters) \
-    (* GET_IsRenderbufferEXT(disp)) parameters
-static inline _glptr_IsRenderbufferEXT
-GET_IsRenderbufferEXT(struct _glapi_table *disp)
-{
-    return (_glptr_IsRenderbufferEXT) (GET_by_offset
-                                       (disp, _gloffset_IsRenderbufferEXT));
-}
-
-static inline void
-SET_IsRenderbufferEXT(struct _glapi_table *disp,
-                      GLboolean(GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsRenderbufferEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_RenderbufferStorageEXT) (GLenum, GLenum,
-                                                          GLsizei, GLsizei);
-#define CALL_RenderbufferStorageEXT(disp, parameters) \
-    (* GET_RenderbufferStorageEXT(disp)) parameters
-static inline _glptr_RenderbufferStorageEXT
-GET_RenderbufferStorageEXT(struct _glapi_table *disp)
-{
-    return (_glptr_RenderbufferStorageEXT) (GET_by_offset
-                                            (disp,
-                                             _gloffset_RenderbufferStorageEXT));
-}
-
-static inline void
-SET_RenderbufferStorageEXT(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLenum, GLsizei,
-                                                  GLsizei))
-{
-    SET_by_offset(disp, _gloffset_RenderbufferStorageEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BlitFramebufferEXT) (GLint, GLint, GLint,
-                                                      GLint, GLint, GLint,
-                                                      GLint, GLint, GLbitfield,
-                                                      GLenum);
-#define CALL_BlitFramebufferEXT(disp, parameters) \
-    (* GET_BlitFramebufferEXT(disp)) parameters
-static inline _glptr_BlitFramebufferEXT
-GET_BlitFramebufferEXT(struct _glapi_table *disp)
-{
-    return (_glptr_BlitFramebufferEXT) (GET_by_offset
-                                        (disp, _gloffset_BlitFramebufferEXT));
-}
-
-static inline void
-SET_BlitFramebufferEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLint, GLint, GLint, GLint, GLint,
-                                              GLint, GLint, GLint, GLbitfield,
-                                              GLenum))
-{
-    SET_by_offset(disp, _gloffset_BlitFramebufferEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BufferParameteriAPPLE) (GLenum, GLenum, GLint);
-
-#define CALL_BufferParameteriAPPLE(disp, parameters) \
-    (* GET_BufferParameteriAPPLE(disp)) parameters
-static inline _glptr_BufferParameteriAPPLE
-GET_BufferParameteriAPPLE(struct _glapi_table *disp)
-{
-    return (_glptr_BufferParameteriAPPLE) (GET_by_offset
-                                           (disp,
-                                            _gloffset_BufferParameteriAPPLE));
-}
-
-static inline void
-SET_BufferParameteriAPPLE(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, GLenum, GLint))
-{
-    SET_by_offset(disp, _gloffset_BufferParameteriAPPLE, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FlushMappedBufferRangeAPPLE) (GLenum, GLintptr,
-                                                               GLsizeiptr);
-#define CALL_FlushMappedBufferRangeAPPLE(disp, parameters) \
-    (* GET_FlushMappedBufferRangeAPPLE(disp)) parameters
-static inline _glptr_FlushMappedBufferRangeAPPLE
-GET_FlushMappedBufferRangeAPPLE(struct _glapi_table *disp)
-{
-    return (_glptr_FlushMappedBufferRangeAPPLE) (GET_by_offset
-                                                 (disp,
-                                                  _gloffset_FlushMappedBufferRangeAPPLE));
-}
-
-static inline void
-SET_FlushMappedBufferRangeAPPLE(struct _glapi_table *disp,
-                                void (GLAPIENTRYP fn) (GLenum, GLintptr,
-                                                       GLsizeiptr))
-{
-    SET_by_offset(disp, _gloffset_FlushMappedBufferRangeAPPLE, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindFragDataLocationEXT) (GLuint, GLuint,
-                                                           const GLchar *);
-#define CALL_BindFragDataLocationEXT(disp, parameters) \
-    (* GET_BindFragDataLocationEXT(disp)) parameters
-static inline _glptr_BindFragDataLocationEXT
-GET_BindFragDataLocationEXT(struct _glapi_table *disp)
-{
-    return (_glptr_BindFragDataLocationEXT) (GET_by_offset
-                                             (disp,
-                                              _gloffset_BindFragDataLocationEXT));
-}
-
-static inline void
-SET_BindFragDataLocationEXT(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLuint, GLuint,
-                                                   const GLchar *))
-{
-    SET_by_offset(disp, _gloffset_BindFragDataLocationEXT, fn);
-}
-
-typedef GLint(GLAPIENTRYP _glptr_GetFragDataLocationEXT) (GLuint,
-                                                          const GLchar *);
-#define CALL_GetFragDataLocationEXT(disp, parameters) \
-    (* GET_GetFragDataLocationEXT(disp)) parameters
-static inline _glptr_GetFragDataLocationEXT
-GET_GetFragDataLocationEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetFragDataLocationEXT) (GET_by_offset
-                                            (disp,
-                                             _gloffset_GetFragDataLocationEXT));
-}
-
-static inline void
-SET_GetFragDataLocationEXT(struct _glapi_table *disp,
-                           GLint(GLAPIENTRYP fn) (GLuint, const GLchar *))
-{
-    SET_by_offset(disp, _gloffset_GetFragDataLocationEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetUniformuivEXT) (GLuint, GLint, GLuint *);
-
-#define CALL_GetUniformuivEXT(disp, parameters) \
-    (* GET_GetUniformuivEXT(disp)) parameters
-static inline _glptr_GetUniformuivEXT
-GET_GetUniformuivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetUniformuivEXT) (GET_by_offset
-                                      (disp, _gloffset_GetUniformuivEXT));
-}
-
-static inline void
-SET_GetUniformuivEXT(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLint, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GetUniformuivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetVertexAttribIivEXT) (GLuint, GLenum,
-                                                         GLint *);
-#define CALL_GetVertexAttribIivEXT(disp, parameters) \
-    (* GET_GetVertexAttribIivEXT(disp)) parameters
-static inline _glptr_GetVertexAttribIivEXT
-GET_GetVertexAttribIivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetVertexAttribIivEXT) (GET_by_offset
-                                           (disp,
-                                            _gloffset_GetVertexAttribIivEXT));
-}
-
-static inline void
-SET_GetVertexAttribIivEXT(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLuint, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetVertexAttribIivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetVertexAttribIuivEXT) (GLuint, GLenum,
-                                                          GLuint *);
-#define CALL_GetVertexAttribIuivEXT(disp, parameters) \
-    (* GET_GetVertexAttribIuivEXT(disp)) parameters
-static inline _glptr_GetVertexAttribIuivEXT
-GET_GetVertexAttribIuivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetVertexAttribIuivEXT) (GET_by_offset
-                                            (disp,
-                                             _gloffset_GetVertexAttribIuivEXT));
-}
-
-static inline void
-SET_GetVertexAttribIuivEXT(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLuint, GLenum, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GetVertexAttribIuivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform1uiEXT) (GLint, GLuint);
-
-#define CALL_Uniform1uiEXT(disp, parameters) \
-    (* GET_Uniform1uiEXT(disp)) parameters
-static inline _glptr_Uniform1uiEXT
-GET_Uniform1uiEXT(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform1uiEXT) (GET_by_offset
-                                   (disp, _gloffset_Uniform1uiEXT));
-}
-
-static inline void
-SET_Uniform1uiEXT(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_Uniform1uiEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform1uivEXT) (GLint, GLsizei,
-                                                  const GLuint *);
-#define CALL_Uniform1uivEXT(disp, parameters) \
-    (* GET_Uniform1uivEXT(disp)) parameters
-static inline _glptr_Uniform1uivEXT
-GET_Uniform1uivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform1uivEXT) (GET_by_offset
-                                    (disp, _gloffset_Uniform1uivEXT));
-}
-
-static inline void
-SET_Uniform1uivEXT(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLint, GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_Uniform1uivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform2uiEXT) (GLint, GLuint, GLuint);
-
-#define CALL_Uniform2uiEXT(disp, parameters) \
-    (* GET_Uniform2uiEXT(disp)) parameters
-static inline _glptr_Uniform2uiEXT
-GET_Uniform2uiEXT(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform2uiEXT) (GET_by_offset
-                                   (disp, _gloffset_Uniform2uiEXT));
-}
-
-static inline void
-SET_Uniform2uiEXT(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_Uniform2uiEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform2uivEXT) (GLint, GLsizei,
-                                                  const GLuint *);
-#define CALL_Uniform2uivEXT(disp, parameters) \
-    (* GET_Uniform2uivEXT(disp)) parameters
-static inline _glptr_Uniform2uivEXT
-GET_Uniform2uivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform2uivEXT) (GET_by_offset
-                                    (disp, _gloffset_Uniform2uivEXT));
-}
-
-static inline void
-SET_Uniform2uivEXT(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLint, GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_Uniform2uivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform3uiEXT) (GLint, GLuint, GLuint, GLuint);
-
-#define CALL_Uniform3uiEXT(disp, parameters) \
-    (* GET_Uniform3uiEXT(disp)) parameters
-static inline _glptr_Uniform3uiEXT
-GET_Uniform3uiEXT(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform3uiEXT) (GET_by_offset
-                                   (disp, _gloffset_Uniform3uiEXT));
-}
-
-static inline void
-SET_Uniform3uiEXT(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLuint, GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_Uniform3uiEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform3uivEXT) (GLint, GLsizei,
-                                                  const GLuint *);
-#define CALL_Uniform3uivEXT(disp, parameters) \
-    (* GET_Uniform3uivEXT(disp)) parameters
-static inline _glptr_Uniform3uivEXT
-GET_Uniform3uivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform3uivEXT) (GET_by_offset
-                                    (disp, _gloffset_Uniform3uivEXT));
-}
-
-static inline void
-SET_Uniform3uivEXT(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLint, GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_Uniform3uivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform4uiEXT) (GLint, GLuint, GLuint, GLuint,
-                                                 GLuint);
-#define CALL_Uniform4uiEXT(disp, parameters) \
-    (* GET_Uniform4uiEXT(disp)) parameters
-static inline _glptr_Uniform4uiEXT
-GET_Uniform4uiEXT(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform4uiEXT) (GET_by_offset
-                                   (disp, _gloffset_Uniform4uiEXT));
-}
-
-static inline void
-SET_Uniform4uiEXT(struct _glapi_table *disp,
-                  void (GLAPIENTRYP fn) (GLint, GLuint, GLuint, GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_Uniform4uiEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_Uniform4uivEXT) (GLint, GLsizei,
-                                                  const GLuint *);
-#define CALL_Uniform4uivEXT(disp, parameters) \
-    (* GET_Uniform4uivEXT(disp)) parameters
-static inline _glptr_Uniform4uivEXT
-GET_Uniform4uivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_Uniform4uivEXT) (GET_by_offset
-                                    (disp, _gloffset_Uniform4uivEXT));
-}
-
-static inline void
-SET_Uniform4uivEXT(struct _glapi_table *disp,
-                   void (GLAPIENTRYP fn) (GLint, GLsizei, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_Uniform4uivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI1iEXT) (GLuint, GLint);
-
-#define CALL_VertexAttribI1iEXT(disp, parameters) \
-    (* GET_VertexAttribI1iEXT(disp)) parameters
-static inline _glptr_VertexAttribI1iEXT
-GET_VertexAttribI1iEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI1iEXT) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribI1iEXT));
-}
-
-static inline void
-SET_VertexAttribI1iEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI1iEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI1ivEXT) (GLuint, const GLint *);
-
-#define CALL_VertexAttribI1ivEXT(disp, parameters) \
-    (* GET_VertexAttribI1ivEXT(disp)) parameters
-static inline _glptr_VertexAttribI1ivEXT
-GET_VertexAttribI1ivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI1ivEXT) (GET_by_offset
-                                         (disp, _gloffset_VertexAttribI1ivEXT));
-}
-
-static inline void
-SET_VertexAttribI1ivEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI1ivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI1uiEXT) (GLuint, GLuint);
-
-#define CALL_VertexAttribI1uiEXT(disp, parameters) \
-    (* GET_VertexAttribI1uiEXT(disp)) parameters
-static inline _glptr_VertexAttribI1uiEXT
-GET_VertexAttribI1uiEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI1uiEXT) (GET_by_offset
-                                         (disp, _gloffset_VertexAttribI1uiEXT));
-}
-
-static inline void
-SET_VertexAttribI1uiEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI1uiEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI1uivEXT) (GLuint, const GLuint *);
-
-#define CALL_VertexAttribI1uivEXT(disp, parameters) \
-    (* GET_VertexAttribI1uivEXT(disp)) parameters
-static inline _glptr_VertexAttribI1uivEXT
-GET_VertexAttribI1uivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI1uivEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_VertexAttribI1uivEXT));
-}
-
-static inline void
-SET_VertexAttribI1uivEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI1uivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI2iEXT) (GLuint, GLint, GLint);
-
-#define CALL_VertexAttribI2iEXT(disp, parameters) \
-    (* GET_VertexAttribI2iEXT(disp)) parameters
-static inline _glptr_VertexAttribI2iEXT
-GET_VertexAttribI2iEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI2iEXT) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribI2iEXT));
-}
-
-static inline void
-SET_VertexAttribI2iEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI2iEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI2ivEXT) (GLuint, const GLint *);
-
-#define CALL_VertexAttribI2ivEXT(disp, parameters) \
-    (* GET_VertexAttribI2ivEXT(disp)) parameters
-static inline _glptr_VertexAttribI2ivEXT
-GET_VertexAttribI2ivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI2ivEXT) (GET_by_offset
-                                         (disp, _gloffset_VertexAttribI2ivEXT));
-}
-
-static inline void
-SET_VertexAttribI2ivEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI2ivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI2uiEXT) (GLuint, GLuint, GLuint);
-
-#define CALL_VertexAttribI2uiEXT(disp, parameters) \
-    (* GET_VertexAttribI2uiEXT(disp)) parameters
-static inline _glptr_VertexAttribI2uiEXT
-GET_VertexAttribI2uiEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI2uiEXT) (GET_by_offset
-                                         (disp, _gloffset_VertexAttribI2uiEXT));
-}
-
-static inline void
-SET_VertexAttribI2uiEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI2uiEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI2uivEXT) (GLuint, const GLuint *);
-
-#define CALL_VertexAttribI2uivEXT(disp, parameters) \
-    (* GET_VertexAttribI2uivEXT(disp)) parameters
-static inline _glptr_VertexAttribI2uivEXT
-GET_VertexAttribI2uivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI2uivEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_VertexAttribI2uivEXT));
-}
-
-static inline void
-SET_VertexAttribI2uivEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI2uivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI3iEXT) (GLuint, GLint, GLint,
-                                                      GLint);
-#define CALL_VertexAttribI3iEXT(disp, parameters) \
-    (* GET_VertexAttribI3iEXT(disp)) parameters
-static inline _glptr_VertexAttribI3iEXT
-GET_VertexAttribI3iEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI3iEXT) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribI3iEXT));
-}
-
-static inline void
-SET_VertexAttribI3iEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI3iEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI3ivEXT) (GLuint, const GLint *);
-
-#define CALL_VertexAttribI3ivEXT(disp, parameters) \
-    (* GET_VertexAttribI3ivEXT(disp)) parameters
-static inline _glptr_VertexAttribI3ivEXT
-GET_VertexAttribI3ivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI3ivEXT) (GET_by_offset
-                                         (disp, _gloffset_VertexAttribI3ivEXT));
-}
-
-static inline void
-SET_VertexAttribI3ivEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI3ivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI3uiEXT) (GLuint, GLuint, GLuint,
-                                                       GLuint);
-#define CALL_VertexAttribI3uiEXT(disp, parameters) \
-    (* GET_VertexAttribI3uiEXT(disp)) parameters
-static inline _glptr_VertexAttribI3uiEXT
-GET_VertexAttribI3uiEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI3uiEXT) (GET_by_offset
-                                         (disp, _gloffset_VertexAttribI3uiEXT));
-}
-
-static inline void
-SET_VertexAttribI3uiEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLuint, GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI3uiEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI3uivEXT) (GLuint, const GLuint *);
-
-#define CALL_VertexAttribI3uivEXT(disp, parameters) \
-    (* GET_VertexAttribI3uivEXT(disp)) parameters
-static inline _glptr_VertexAttribI3uivEXT
-GET_VertexAttribI3uivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI3uivEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_VertexAttribI3uivEXT));
-}
-
-static inline void
-SET_VertexAttribI3uivEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI3uivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI4bvEXT) (GLuint, const GLbyte *);
-
-#define CALL_VertexAttribI4bvEXT(disp, parameters) \
-    (* GET_VertexAttribI4bvEXT(disp)) parameters
-static inline _glptr_VertexAttribI4bvEXT
-GET_VertexAttribI4bvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI4bvEXT) (GET_by_offset
-                                         (disp, _gloffset_VertexAttribI4bvEXT));
-}
-
-static inline void
-SET_VertexAttribI4bvEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, const GLbyte *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI4bvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI4iEXT) (GLuint, GLint, GLint,
-                                                      GLint, GLint);
-#define CALL_VertexAttribI4iEXT(disp, parameters) \
-    (* GET_VertexAttribI4iEXT(disp)) parameters
-static inline _glptr_VertexAttribI4iEXT
-GET_VertexAttribI4iEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI4iEXT) (GET_by_offset
-                                        (disp, _gloffset_VertexAttribI4iEXT));
-}
-
-static inline void
-SET_VertexAttribI4iEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLuint, GLint, GLint, GLint,
-                                              GLint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI4iEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI4ivEXT) (GLuint, const GLint *);
-
-#define CALL_VertexAttribI4ivEXT(disp, parameters) \
-    (* GET_VertexAttribI4ivEXT(disp)) parameters
-static inline _glptr_VertexAttribI4ivEXT
-GET_VertexAttribI4ivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI4ivEXT) (GET_by_offset
-                                         (disp, _gloffset_VertexAttribI4ivEXT));
-}
-
-static inline void
-SET_VertexAttribI4ivEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI4ivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI4svEXT) (GLuint, const GLshort *);
-
-#define CALL_VertexAttribI4svEXT(disp, parameters) \
-    (* GET_VertexAttribI4svEXT(disp)) parameters
-static inline _glptr_VertexAttribI4svEXT
-GET_VertexAttribI4svEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI4svEXT) (GET_by_offset
-                                         (disp, _gloffset_VertexAttribI4svEXT));
-}
-
-static inline void
-SET_VertexAttribI4svEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, const GLshort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI4svEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI4ubvEXT) (GLuint,
-                                                        const GLubyte *);
-#define CALL_VertexAttribI4ubvEXT(disp, parameters) \
-    (* GET_VertexAttribI4ubvEXT(disp)) parameters
-static inline _glptr_VertexAttribI4ubvEXT
-GET_VertexAttribI4ubvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI4ubvEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_VertexAttribI4ubvEXT));
-}
-
-static inline void
-SET_VertexAttribI4ubvEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, const GLubyte *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI4ubvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI4uiEXT) (GLuint, GLuint, GLuint,
-                                                       GLuint, GLuint);
-#define CALL_VertexAttribI4uiEXT(disp, parameters) \
-    (* GET_VertexAttribI4uiEXT(disp)) parameters
-static inline _glptr_VertexAttribI4uiEXT
-GET_VertexAttribI4uiEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI4uiEXT) (GET_by_offset
-                                         (disp, _gloffset_VertexAttribI4uiEXT));
-}
-
-static inline void
-SET_VertexAttribI4uiEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLuint, GLuint, GLuint,
-                                               GLuint))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI4uiEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI4uivEXT) (GLuint, const GLuint *);
-
-#define CALL_VertexAttribI4uivEXT(disp, parameters) \
-    (* GET_VertexAttribI4uivEXT(disp)) parameters
-static inline _glptr_VertexAttribI4uivEXT
-GET_VertexAttribI4uivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI4uivEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_VertexAttribI4uivEXT));
-}
-
-static inline void
-SET_VertexAttribI4uivEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI4uivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribI4usvEXT) (GLuint,
-                                                        const GLushort *);
-#define CALL_VertexAttribI4usvEXT(disp, parameters) \
-    (* GET_VertexAttribI4usvEXT(disp)) parameters
-static inline _glptr_VertexAttribI4usvEXT
-GET_VertexAttribI4usvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribI4usvEXT) (GET_by_offset
-                                          (disp,
-                                           _gloffset_VertexAttribI4usvEXT));
-}
-
-static inline void
-SET_VertexAttribI4usvEXT(struct _glapi_table *disp,
-                         void (GLAPIENTRYP fn) (GLuint, const GLushort *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribI4usvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_VertexAttribIPointerEXT) (GLuint, GLint,
-                                                           GLenum, GLsizei,
-                                                           const GLvoid *);
-#define CALL_VertexAttribIPointerEXT(disp, parameters) \
-    (* GET_VertexAttribIPointerEXT(disp)) parameters
-static inline _glptr_VertexAttribIPointerEXT
-GET_VertexAttribIPointerEXT(struct _glapi_table *disp)
-{
-    return (_glptr_VertexAttribIPointerEXT) (GET_by_offset
-                                             (disp,
-                                              _gloffset_VertexAttribIPointerEXT));
-}
-
-static inline void
-SET_VertexAttribIPointerEXT(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (GLuint, GLint, GLenum,
-                                                   GLsizei, const GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_VertexAttribIPointerEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_FramebufferTextureLayerEXT) (GLenum, GLenum,
-                                                              GLuint, GLint,
-                                                              GLint);
-#define CALL_FramebufferTextureLayerEXT(disp, parameters) \
-    (* GET_FramebufferTextureLayerEXT(disp)) parameters
-static inline _glptr_FramebufferTextureLayerEXT
-GET_FramebufferTextureLayerEXT(struct _glapi_table *disp)
-{
-    return (_glptr_FramebufferTextureLayerEXT) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_FramebufferTextureLayerEXT));
-}
-
-static inline void
-SET_FramebufferTextureLayerEXT(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLenum, GLenum, GLuint,
-                                                      GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_FramebufferTextureLayerEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ColorMaskIndexedEXT) (GLuint, GLboolean,
-                                                       GLboolean, GLboolean,
-                                                       GLboolean);
-#define CALL_ColorMaskIndexedEXT(disp, parameters) \
-    (* GET_ColorMaskIndexedEXT(disp)) parameters
-static inline _glptr_ColorMaskIndexedEXT
-GET_ColorMaskIndexedEXT(struct _glapi_table *disp)
-{
-    return (_glptr_ColorMaskIndexedEXT) (GET_by_offset
-                                         (disp, _gloffset_ColorMaskIndexedEXT));
-}
-
-static inline void
-SET_ColorMaskIndexedEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLuint, GLboolean, GLboolean,
-                                               GLboolean, GLboolean))
-{
-    SET_by_offset(disp, _gloffset_ColorMaskIndexedEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DisableIndexedEXT) (GLenum, GLuint);
-
-#define CALL_DisableIndexedEXT(disp, parameters) \
-    (* GET_DisableIndexedEXT(disp)) parameters
-static inline _glptr_DisableIndexedEXT
-GET_DisableIndexedEXT(struct _glapi_table *disp)
-{
-    return (_glptr_DisableIndexedEXT) (GET_by_offset
-                                       (disp, _gloffset_DisableIndexedEXT));
-}
-
-static inline void
-SET_DisableIndexedEXT(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_DisableIndexedEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EnableIndexedEXT) (GLenum, GLuint);
-
-#define CALL_EnableIndexedEXT(disp, parameters) \
-    (* GET_EnableIndexedEXT(disp)) parameters
-static inline _glptr_EnableIndexedEXT
-GET_EnableIndexedEXT(struct _glapi_table *disp)
-{
-    return (_glptr_EnableIndexedEXT) (GET_by_offset
-                                      (disp, _gloffset_EnableIndexedEXT));
-}
-
-static inline void
-SET_EnableIndexedEXT(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_EnableIndexedEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetBooleanIndexedvEXT) (GLenum, GLuint,
-                                                         GLboolean *);
-#define CALL_GetBooleanIndexedvEXT(disp, parameters) \
-    (* GET_GetBooleanIndexedvEXT(disp)) parameters
-static inline _glptr_GetBooleanIndexedvEXT
-GET_GetBooleanIndexedvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetBooleanIndexedvEXT) (GET_by_offset
-                                           (disp,
-                                            _gloffset_GetBooleanIndexedvEXT));
-}
-
-static inline void
-SET_GetBooleanIndexedvEXT(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, GLuint, GLboolean *))
-{
-    SET_by_offset(disp, _gloffset_GetBooleanIndexedvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetIntegerIndexedvEXT) (GLenum, GLuint,
-                                                         GLint *);
-#define CALL_GetIntegerIndexedvEXT(disp, parameters) \
-    (* GET_GetIntegerIndexedvEXT(disp)) parameters
-static inline _glptr_GetIntegerIndexedvEXT
-GET_GetIntegerIndexedvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetIntegerIndexedvEXT) (GET_by_offset
-                                           (disp,
-                                            _gloffset_GetIntegerIndexedvEXT));
-}
-
-static inline void
-SET_GetIntegerIndexedvEXT(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, GLuint, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetIntegerIndexedvEXT, fn);
-}
-
-typedef GLboolean(GLAPIENTRYP _glptr_IsEnabledIndexedEXT) (GLenum, GLuint);
-
-#define CALL_IsEnabledIndexedEXT(disp, parameters) \
-    (* GET_IsEnabledIndexedEXT(disp)) parameters
-static inline _glptr_IsEnabledIndexedEXT
-GET_IsEnabledIndexedEXT(struct _glapi_table *disp)
-{
-    return (_glptr_IsEnabledIndexedEXT) (GET_by_offset
-                                         (disp, _gloffset_IsEnabledIndexedEXT));
-}
-
-static inline void
-SET_IsEnabledIndexedEXT(struct _glapi_table *disp,
-                        GLboolean(GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_IsEnabledIndexedEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClearColorIiEXT) (GLint, GLint, GLint, GLint);
-
-#define CALL_ClearColorIiEXT(disp, parameters) \
-    (* GET_ClearColorIiEXT(disp)) parameters
-static inline _glptr_ClearColorIiEXT
-GET_ClearColorIiEXT(struct _glapi_table *disp)
-{
-    return (_glptr_ClearColorIiEXT) (GET_by_offset
-                                     (disp, _gloffset_ClearColorIiEXT));
-}
-
-static inline void
-SET_ClearColorIiEXT(struct _glapi_table *disp,
-                    void (GLAPIENTRYP fn) (GLint, GLint, GLint, GLint))
-{
-    SET_by_offset(disp, _gloffset_ClearColorIiEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ClearColorIuiEXT) (GLuint, GLuint, GLuint,
-                                                    GLuint);
-#define CALL_ClearColorIuiEXT(disp, parameters) \
-    (* GET_ClearColorIuiEXT(disp)) parameters
-static inline _glptr_ClearColorIuiEXT
-GET_ClearColorIuiEXT(struct _glapi_table *disp)
-{
-    return (_glptr_ClearColorIuiEXT) (GET_by_offset
-                                      (disp, _gloffset_ClearColorIuiEXT));
-}
-
-static inline void
-SET_ClearColorIuiEXT(struct _glapi_table *disp,
-                     void (GLAPIENTRYP fn) (GLuint, GLuint, GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_ClearColorIuiEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexParameterIivEXT) (GLenum, GLenum,
-                                                         GLint *);
-#define CALL_GetTexParameterIivEXT(disp, parameters) \
-    (* GET_GetTexParameterIivEXT(disp)) parameters
-static inline _glptr_GetTexParameterIivEXT
-GET_GetTexParameterIivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexParameterIivEXT) (GET_by_offset
-                                           (disp,
-                                            _gloffset_GetTexParameterIivEXT));
-}
-
-static inline void
-SET_GetTexParameterIivEXT(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLenum, GLenum, GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetTexParameterIivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexParameterIuivEXT) (GLenum, GLenum,
-                                                          GLuint *);
-#define CALL_GetTexParameterIuivEXT(disp, parameters) \
-    (* GET_GetTexParameterIuivEXT(disp)) parameters
-static inline _glptr_GetTexParameterIuivEXT
-GET_GetTexParameterIuivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexParameterIuivEXT) (GET_by_offset
-                                            (disp,
-                                             _gloffset_GetTexParameterIuivEXT));
-}
-
-static inline void
-SET_GetTexParameterIuivEXT(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLenum, GLuint *))
-{
-    SET_by_offset(disp, _gloffset_GetTexParameterIuivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexParameterIivEXT) (GLenum, GLenum,
-                                                      const GLint *);
-#define CALL_TexParameterIivEXT(disp, parameters) \
-    (* GET_TexParameterIivEXT(disp)) parameters
-static inline _glptr_TexParameterIivEXT
-GET_TexParameterIivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_TexParameterIivEXT) (GET_by_offset
-                                        (disp, _gloffset_TexParameterIivEXT));
-}
-
-static inline void
-SET_TexParameterIivEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLenum, const GLint *))
-{
-    SET_by_offset(disp, _gloffset_TexParameterIivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TexParameterIuivEXT) (GLenum, GLenum,
-                                                       const GLuint *);
-#define CALL_TexParameterIuivEXT(disp, parameters) \
-    (* GET_TexParameterIuivEXT(disp)) parameters
-static inline _glptr_TexParameterIuivEXT
-GET_TexParameterIuivEXT(struct _glapi_table *disp)
-{
-    return (_glptr_TexParameterIuivEXT) (GET_by_offset
-                                         (disp, _gloffset_TexParameterIuivEXT));
-}
-
-static inline void
-SET_TexParameterIuivEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLenum, const GLuint *))
-{
-    SET_by_offset(disp, _gloffset_TexParameterIuivEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BeginConditionalRenderNV) (GLuint, GLenum);
-
-#define CALL_BeginConditionalRenderNV(disp, parameters) \
-    (* GET_BeginConditionalRenderNV(disp)) parameters
-static inline _glptr_BeginConditionalRenderNV
-GET_BeginConditionalRenderNV(struct _glapi_table *disp)
-{
-    return (_glptr_BeginConditionalRenderNV) (GET_by_offset
-                                              (disp,
-                                               _gloffset_BeginConditionalRenderNV));
-}
-
-static inline void
-SET_BeginConditionalRenderNV(struct _glapi_table *disp,
-                             void (GLAPIENTRYP fn) (GLuint, GLenum))
-{
-    SET_by_offset(disp, _gloffset_BeginConditionalRenderNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EndConditionalRenderNV) (void);
-
-#define CALL_EndConditionalRenderNV(disp, parameters) \
-    (* GET_EndConditionalRenderNV(disp)) parameters
-static inline _glptr_EndConditionalRenderNV
-GET_EndConditionalRenderNV(struct _glapi_table *disp)
-{
-    return (_glptr_EndConditionalRenderNV) (GET_by_offset
-                                            (disp,
-                                             _gloffset_EndConditionalRenderNV));
-}
-
-static inline void
-SET_EndConditionalRenderNV(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_EndConditionalRenderNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BeginTransformFeedbackEXT) (GLenum);
-
-#define CALL_BeginTransformFeedbackEXT(disp, parameters) \
-    (* GET_BeginTransformFeedbackEXT(disp)) parameters
-static inline _glptr_BeginTransformFeedbackEXT
-GET_BeginTransformFeedbackEXT(struct _glapi_table *disp)
-{
-    return (_glptr_BeginTransformFeedbackEXT) (GET_by_offset
-                                               (disp,
-                                                _gloffset_BeginTransformFeedbackEXT));
-}
-
-static inline void
-SET_BeginTransformFeedbackEXT(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_BeginTransformFeedbackEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindBufferBaseEXT) (GLenum, GLuint, GLuint);
-
-#define CALL_BindBufferBaseEXT(disp, parameters) \
-    (* GET_BindBufferBaseEXT(disp)) parameters
-static inline _glptr_BindBufferBaseEXT
-GET_BindBufferBaseEXT(struct _glapi_table *disp)
-{
-    return (_glptr_BindBufferBaseEXT) (GET_by_offset
-                                       (disp, _gloffset_BindBufferBaseEXT));
-}
-
-static inline void
-SET_BindBufferBaseEXT(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLuint, GLuint))
-{
-    SET_by_offset(disp, _gloffset_BindBufferBaseEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindBufferOffsetEXT) (GLenum, GLuint, GLuint,
-                                                       GLintptr);
-#define CALL_BindBufferOffsetEXT(disp, parameters) \
-    (* GET_BindBufferOffsetEXT(disp)) parameters
-static inline _glptr_BindBufferOffsetEXT
-GET_BindBufferOffsetEXT(struct _glapi_table *disp)
-{
-    return (_glptr_BindBufferOffsetEXT) (GET_by_offset
-                                         (disp, _gloffset_BindBufferOffsetEXT));
-}
-
-static inline void
-SET_BindBufferOffsetEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLuint, GLuint,
-                                               GLintptr))
-{
-    SET_by_offset(disp, _gloffset_BindBufferOffsetEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_BindBufferRangeEXT) (GLenum, GLuint, GLuint,
-                                                      GLintptr, GLsizeiptr);
-#define CALL_BindBufferRangeEXT(disp, parameters) \
-    (* GET_BindBufferRangeEXT(disp)) parameters
-static inline _glptr_BindBufferRangeEXT
-GET_BindBufferRangeEXT(struct _glapi_table *disp)
-{
-    return (_glptr_BindBufferRangeEXT) (GET_by_offset
-                                        (disp, _gloffset_BindBufferRangeEXT));
-}
-
-static inline void
-SET_BindBufferRangeEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum, GLuint, GLuint, GLintptr,
-                                              GLsizeiptr))
-{
-    SET_by_offset(disp, _gloffset_BindBufferRangeEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EndTransformFeedbackEXT) (void);
-
-#define CALL_EndTransformFeedbackEXT(disp, parameters) \
-    (* GET_EndTransformFeedbackEXT(disp)) parameters
-static inline _glptr_EndTransformFeedbackEXT
-GET_EndTransformFeedbackEXT(struct _glapi_table *disp)
-{
-    return (_glptr_EndTransformFeedbackEXT) (GET_by_offset
-                                             (disp,
-                                              _gloffset_EndTransformFeedbackEXT));
-}
-
-static inline void
-SET_EndTransformFeedbackEXT(struct _glapi_table *disp,
-                            void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_EndTransformFeedbackEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTransformFeedbackVaryingEXT) (GLuint,
-                                                                  GLuint,
-                                                                  GLsizei,
-                                                                  GLsizei *,
-                                                                  GLsizei *,
-                                                                  GLenum *,
-                                                                  GLchar *);
-#define CALL_GetTransformFeedbackVaryingEXT(disp, parameters) \
-    (* GET_GetTransformFeedbackVaryingEXT(disp)) parameters
-static inline _glptr_GetTransformFeedbackVaryingEXT
-GET_GetTransformFeedbackVaryingEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetTransformFeedbackVaryingEXT) (GET_by_offset
-                                                    (disp,
-                                                     _gloffset_GetTransformFeedbackVaryingEXT));
-}
-
-static inline void
-SET_GetTransformFeedbackVaryingEXT(struct _glapi_table *disp,
-                                   void (GLAPIENTRYP fn) (GLuint, GLuint,
-                                                          GLsizei, GLsizei *,
-                                                          GLsizei *, GLenum *,
-                                                          GLchar *))
-{
-    SET_by_offset(disp, _gloffset_GetTransformFeedbackVaryingEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TransformFeedbackVaryingsEXT) (GLuint, GLsizei,
-                                                                const char **,
-                                                                GLenum);
-#define CALL_TransformFeedbackVaryingsEXT(disp, parameters) \
-    (* GET_TransformFeedbackVaryingsEXT(disp)) parameters
-static inline _glptr_TransformFeedbackVaryingsEXT
-GET_TransformFeedbackVaryingsEXT(struct _glapi_table *disp)
-{
-    return (_glptr_TransformFeedbackVaryingsEXT) (GET_by_offset
-                                                  (disp,
-                                                   _gloffset_TransformFeedbackVaryingsEXT));
-}
-
-static inline void
-SET_TransformFeedbackVaryingsEXT(struct _glapi_table *disp,
-                                 void (GLAPIENTRYP fn) (GLuint, GLsizei,
-                                                        const char **, GLenum))
-{
-    SET_by_offset(disp, _gloffset_TransformFeedbackVaryingsEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProvokingVertexEXT) (GLenum);
-
-#define CALL_ProvokingVertexEXT(disp, parameters) \
-    (* GET_ProvokingVertexEXT(disp)) parameters
-static inline _glptr_ProvokingVertexEXT
-GET_ProvokingVertexEXT(struct _glapi_table *disp)
-{
-    return (_glptr_ProvokingVertexEXT) (GET_by_offset
-                                        (disp, _gloffset_ProvokingVertexEXT));
-}
-
-static inline void
-SET_ProvokingVertexEXT(struct _glapi_table *disp,
-                       void (GLAPIENTRYP fn) (GLenum))
-{
-    SET_by_offset(disp, _gloffset_ProvokingVertexEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetTexParameterPointervAPPLE) (GLenum, GLenum,
-                                                                GLvoid **);
-#define CALL_GetTexParameterPointervAPPLE(disp, parameters) \
-    (* GET_GetTexParameterPointervAPPLE(disp)) parameters
-static inline _glptr_GetTexParameterPointervAPPLE
-GET_GetTexParameterPointervAPPLE(struct _glapi_table *disp)
-{
-    return (_glptr_GetTexParameterPointervAPPLE) (GET_by_offset
-                                                  (disp,
-                                                   _gloffset_GetTexParameterPointervAPPLE));
-}
-
-static inline void
-SET_GetTexParameterPointervAPPLE(struct _glapi_table *disp,
-                                 void (GLAPIENTRYP fn) (GLenum, GLenum,
-                                                        GLvoid **))
-{
-    SET_by_offset(disp, _gloffset_GetTexParameterPointervAPPLE, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TextureRangeAPPLE) (GLenum, GLsizei, GLvoid *);
-
-#define CALL_TextureRangeAPPLE(disp, parameters) \
-    (* GET_TextureRangeAPPLE(disp)) parameters
-static inline _glptr_TextureRangeAPPLE
-GET_TextureRangeAPPLE(struct _glapi_table *disp)
-{
-    return (_glptr_TextureRangeAPPLE) (GET_by_offset
-                                       (disp, _gloffset_TextureRangeAPPLE));
-}
-
-static inline void
-SET_TextureRangeAPPLE(struct _glapi_table *disp,
-                      void (GLAPIENTRYP fn) (GLenum, GLsizei, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_TextureRangeAPPLE, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetObjectParameterivAPPLE) (GLenum, GLuint,
-                                                             GLenum, GLint *);
-#define CALL_GetObjectParameterivAPPLE(disp, parameters) \
-    (* GET_GetObjectParameterivAPPLE(disp)) parameters
-static inline _glptr_GetObjectParameterivAPPLE
-GET_GetObjectParameterivAPPLE(struct _glapi_table *disp)
-{
-    return (_glptr_GetObjectParameterivAPPLE) (GET_by_offset
-                                               (disp,
-                                                _gloffset_GetObjectParameterivAPPLE));
-}
-
-static inline void
-SET_GetObjectParameterivAPPLE(struct _glapi_table *disp,
-                              void (GLAPIENTRYP fn) (GLenum, GLuint, GLenum,
-                                                     GLint *))
-{
-    SET_by_offset(disp, _gloffset_GetObjectParameterivAPPLE, fn);
-}
-
-typedef GLenum(GLAPIENTRYP _glptr_ObjectPurgeableAPPLE) (GLenum, GLuint,
-                                                         GLenum);
-#define CALL_ObjectPurgeableAPPLE(disp, parameters) \
-    (* GET_ObjectPurgeableAPPLE(disp)) parameters
-static inline _glptr_ObjectPurgeableAPPLE
-GET_ObjectPurgeableAPPLE(struct _glapi_table *disp)
-{
-    return (_glptr_ObjectPurgeableAPPLE) (GET_by_offset
-                                          (disp,
-                                           _gloffset_ObjectPurgeableAPPLE));
-}
-
-static inline void
-SET_ObjectPurgeableAPPLE(struct _glapi_table *disp,
-                         GLenum(GLAPIENTRYP fn) (GLenum, GLuint, GLenum))
-{
-    SET_by_offset(disp, _gloffset_ObjectPurgeableAPPLE, fn);
-}
-
-typedef GLenum(GLAPIENTRYP _glptr_ObjectUnpurgeableAPPLE) (GLenum, GLuint,
-                                                           GLenum);
-#define CALL_ObjectUnpurgeableAPPLE(disp, parameters) \
-    (* GET_ObjectUnpurgeableAPPLE(disp)) parameters
-static inline _glptr_ObjectUnpurgeableAPPLE
-GET_ObjectUnpurgeableAPPLE(struct _glapi_table *disp)
-{
-    return (_glptr_ObjectUnpurgeableAPPLE) (GET_by_offset
-                                            (disp,
-                                             _gloffset_ObjectUnpurgeableAPPLE));
-}
-
-static inline void
-SET_ObjectUnpurgeableAPPLE(struct _glapi_table *disp,
-                           GLenum(GLAPIENTRYP fn) (GLenum, GLuint, GLenum))
-{
-    SET_by_offset(disp, _gloffset_ObjectUnpurgeableAPPLE, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ActiveProgramEXT) (GLuint);
-
-#define CALL_ActiveProgramEXT(disp, parameters) \
-    (* GET_ActiveProgramEXT(disp)) parameters
-static inline _glptr_ActiveProgramEXT
-GET_ActiveProgramEXT(struct _glapi_table *disp)
-{
-    return (_glptr_ActiveProgramEXT) (GET_by_offset
-                                      (disp, _gloffset_ActiveProgramEXT));
-}
-
-static inline void
-SET_ActiveProgramEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn) (GLuint))
-{
-    SET_by_offset(disp, _gloffset_ActiveProgramEXT, fn);
-}
-
-typedef GLuint(GLAPIENTRYP _glptr_CreateShaderProgramEXT) (GLenum,
-                                                           const GLchar *);
-#define CALL_CreateShaderProgramEXT(disp, parameters) \
-    (* GET_CreateShaderProgramEXT(disp)) parameters
-static inline _glptr_CreateShaderProgramEXT
-GET_CreateShaderProgramEXT(struct _glapi_table *disp)
-{
-    return (_glptr_CreateShaderProgramEXT) (GET_by_offset
-                                            (disp,
-                                             _gloffset_CreateShaderProgramEXT));
-}
-
-static inline void
-SET_CreateShaderProgramEXT(struct _glapi_table *disp,
-                           GLuint(GLAPIENTRYP fn) (GLenum, const GLchar *))
-{
-    SET_by_offset(disp, _gloffset_CreateShaderProgramEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_UseShaderProgramEXT) (GLenum, GLuint);
-
-#define CALL_UseShaderProgramEXT(disp, parameters) \
-    (* GET_UseShaderProgramEXT(disp)) parameters
-static inline _glptr_UseShaderProgramEXT
-GET_UseShaderProgramEXT(struct _glapi_table *disp)
-{
-    return (_glptr_UseShaderProgramEXT) (GET_by_offset
-                                         (disp, _gloffset_UseShaderProgramEXT));
-}
-
-static inline void
-SET_UseShaderProgramEXT(struct _glapi_table *disp,
-                        void (GLAPIENTRYP fn) (GLenum, GLuint))
-{
-    SET_by_offset(disp, _gloffset_UseShaderProgramEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_TextureBarrierNV) (void);
-
-#define CALL_TextureBarrierNV(disp, parameters) \
-    (* GET_TextureBarrierNV(disp)) parameters
-static inline _glptr_TextureBarrierNV
-GET_TextureBarrierNV(struct _glapi_table *disp)
-{
-    return (_glptr_TextureBarrierNV) (GET_by_offset
-                                      (disp, _gloffset_TextureBarrierNV));
-}
-
-static inline void
-SET_TextureBarrierNV(struct _glapi_table *disp, void (GLAPIENTRYP fn) (void))
-{
-    SET_by_offset(disp, _gloffset_TextureBarrierNV, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_StencilFuncSeparateATI) (GLenum, GLenum, GLint,
-                                                          GLuint);
-#define CALL_StencilFuncSeparateATI(disp, parameters) \
-    (* GET_StencilFuncSeparateATI(disp)) parameters
-static inline _glptr_StencilFuncSeparateATI
-GET_StencilFuncSeparateATI(struct _glapi_table *disp)
-{
-    return (_glptr_StencilFuncSeparateATI) (GET_by_offset
-                                            (disp,
-                                             _gloffset_StencilFuncSeparateATI));
-}
-
-static inline void
-SET_StencilFuncSeparateATI(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLenum, GLenum, GLint,
-                                                  GLuint))
-{
-    SET_by_offset(disp, _gloffset_StencilFuncSeparateATI, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramEnvParameters4fvEXT) (GLenum, GLuint,
-                                                              GLsizei,
-                                                              const GLfloat *);
-#define CALL_ProgramEnvParameters4fvEXT(disp, parameters) \
-    (* GET_ProgramEnvParameters4fvEXT(disp)) parameters
-static inline _glptr_ProgramEnvParameters4fvEXT
-GET_ProgramEnvParameters4fvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramEnvParameters4fvEXT) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_ProgramEnvParameters4fvEXT));
-}
-
-static inline void
-SET_ProgramEnvParameters4fvEXT(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLenum, GLuint, GLsizei,
-                                                      const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_ProgramEnvParameters4fvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_ProgramLocalParameters4fvEXT) (GLenum, GLuint,
-                                                                GLsizei,
-                                                                const GLfloat
-                                                                *);
-#define CALL_ProgramLocalParameters4fvEXT(disp, parameters) \
-    (* GET_ProgramLocalParameters4fvEXT(disp)) parameters
-static inline _glptr_ProgramLocalParameters4fvEXT
-GET_ProgramLocalParameters4fvEXT(struct _glapi_table *disp)
-{
-    return (_glptr_ProgramLocalParameters4fvEXT) (GET_by_offset
-                                                  (disp,
-                                                   _gloffset_ProgramLocalParameters4fvEXT));
-}
-
-static inline void
-SET_ProgramLocalParameters4fvEXT(struct _glapi_table *disp,
-                                 void (GLAPIENTRYP fn) (GLenum, GLuint, GLsizei,
-                                                        const GLfloat *))
-{
-    SET_by_offset(disp, _gloffset_ProgramLocalParameters4fvEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetQueryObjecti64vEXT) (GLuint, GLenum,
-                                                         GLint64EXT *);
-#define CALL_GetQueryObjecti64vEXT(disp, parameters) \
-    (* GET_GetQueryObjecti64vEXT(disp)) parameters
-static inline _glptr_GetQueryObjecti64vEXT
-GET_GetQueryObjecti64vEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetQueryObjecti64vEXT) (GET_by_offset
-                                           (disp,
-                                            _gloffset_GetQueryObjecti64vEXT));
-}
-
-static inline void
-SET_GetQueryObjecti64vEXT(struct _glapi_table *disp,
-                          void (GLAPIENTRYP fn) (GLuint, GLenum, GLint64EXT *))
-{
-    SET_by_offset(disp, _gloffset_GetQueryObjecti64vEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GetQueryObjectui64vEXT) (GLuint, GLenum,
-                                                          GLuint64EXT *);
-#define CALL_GetQueryObjectui64vEXT(disp, parameters) \
-    (* GET_GetQueryObjectui64vEXT(disp)) parameters
-static inline _glptr_GetQueryObjectui64vEXT
-GET_GetQueryObjectui64vEXT(struct _glapi_table *disp)
-{
-    return (_glptr_GetQueryObjectui64vEXT) (GET_by_offset
-                                            (disp,
-                                             _gloffset_GetQueryObjectui64vEXT));
-}
-
-static inline void
-SET_GetQueryObjectui64vEXT(struct _glapi_table *disp,
-                           void (GLAPIENTRYP fn) (GLuint, GLenum,
-                                                  GLuint64EXT *))
-{
-    SET_by_offset(disp, _gloffset_GetQueryObjectui64vEXT, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EGLImageTargetRenderbufferStorageOES) (GLenum,
-                                                                        GLvoid
-                                                                        *);
-#define CALL_EGLImageTargetRenderbufferStorageOES(disp, parameters) \
-    (* GET_EGLImageTargetRenderbufferStorageOES(disp)) parameters
-static inline _glptr_EGLImageTargetRenderbufferStorageOES
-GET_EGLImageTargetRenderbufferStorageOES(struct _glapi_table *disp)
-{
-    return (_glptr_EGLImageTargetRenderbufferStorageOES) (GET_by_offset
-                                                          (disp,
-                                                           _gloffset_EGLImageTargetRenderbufferStorageOES));
-}
-
-static inline void
-SET_EGLImageTargetRenderbufferStorageOES(struct _glapi_table *disp,
-                                         void (GLAPIENTRYP fn) (GLenum,
-                                                                GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_EGLImageTargetRenderbufferStorageOES, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_EGLImageTargetTexture2DOES) (GLenum, GLvoid *);
-
-#define CALL_EGLImageTargetTexture2DOES(disp, parameters) \
-    (* GET_EGLImageTargetTexture2DOES(disp)) parameters
-static inline _glptr_EGLImageTargetTexture2DOES
-GET_EGLImageTargetTexture2DOES(struct _glapi_table *disp)
-{
-    return (_glptr_EGLImageTargetTexture2DOES) (GET_by_offset
-                                                (disp,
-                                                 _gloffset_EGLImageTargetTexture2DOES));
-}
-
-static inline void
-SET_EGLImageTargetTexture2DOES(struct _glapi_table *disp,
-                               void (GLAPIENTRYP fn) (GLenum, GLvoid *))
-{
-    SET_by_offset(disp, _gloffset_EGLImageTargetTexture2DOES, fn);
-}
-
-#endif                          /* !defined( _DISPATCH_H_ ) */
diff --git a/glx/glapi.c b/glx/glapi.c
deleted file mode 100644
index ad7329e..0000000
--- a/glx/glapi.c
+++ /dev/null
@@ -1,504 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  6.5
- *
- * Copyright (C) 1999-2006  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.
- */
-
-/*
- * This file manages the OpenGL API dispatch layer.  There are functions
- * to set/get the current dispatch table for the current thread and to
- * manage registration/dispatch of dynamically added extension functions.
- *
- * This code was originally general enough to be shared with Mesa, but
- * they diverged long ago, so this is now just enough support to make
- * indirect GLX work.
- */
-
-#include <dix-config.h>
-#include <X11/Xfuncproto.h>
-#include <os.h>
-#define PUBLIC _X_EXPORT
-
-#include <stdlib.h>
-#include <string.h>
-#ifdef DEBUG
-#include <assert.h>
-#endif
-
-#include "glapi.h"
-#include "dispatch.h"
-#include "glapitable.h"
-
-#define FIRST_DYNAMIC_OFFSET (sizeof(struct _glapi_table) / sizeof(void *))
-
-#if defined(PTHREADS) || defined(GLX_USE_TLS)
-static void init_glapi_relocs(void);
-#endif
-
-/**
- * \name Current dispatch and current context control variables
- *
- * Depending on whether or not multithreading is support, and the type of
- * support available, several variables are used to store the current context
- * pointer and the current dispatch table pointer.  In the non-threaded case,
- * the variables \c _glapi_Dispatch and \c _glapi_Context are used for this
- * purpose.
- *
- * In the "normal" threaded case, the variables \c _glapi_Dispatch and
- * \c _glapi_Context will be \c NULL if an application is detected as being
- * multithreaded.  Single-threaded applications will use \c _glapi_Dispatch
- * and \c _glapi_Context just like the case without any threading support.
- * When \c _glapi_Dispatch and \c _glapi_Context are \c NULL, the thread state
- * data \c _gl_DispatchTSD and \c ContextTSD are used.  Drivers and the
- * static dispatch functions access these variables via \c _glapi_get_dispatch
- * and \c _glapi_get_context.
- *
- * In the TLS case, the variables \c _glapi_Dispatch and \c _glapi_Context are
- * hardcoded to \c NULL.  Instead the TLS variables \c _glapi_tls_Dispatch and
- * \c _glapi_tls_Context are used.  Having \c _glapi_Dispatch and
- * \c _glapi_Context be hardcoded to \c NULL maintains binary compatability
- * between TLS enabled loaders and non-TLS DRI drivers.
- */
-/*@{*/
-#if defined(GLX_USE_TLS)
-
-PUBLIC TLS struct _glapi_table *_glapi_tls_Dispatch = NULL;
-
-PUBLIC TLS void *_glapi_tls_Context;
-
-PUBLIC const struct _glapi_table *_glapi_Dispatch = NULL;
-PUBLIC const void *_glapi_Context = NULL;
-
-#else
-
-#if defined(THREADS)
-
-_glthread_TSD _gl_DispatchTSD;           /**< Per-thread dispatch pointer */
-static _glthread_TSD ContextTSD;         /**< Per-thread context pointer */
-
-#if defined(WIN32_THREADS)
-void FreeTSD(_glthread_TSD * p);
-void
-FreeAllTSD(void)
-{
-    FreeTSD(&_gl_DispatchTSD);
-    FreeTSD(&ContextTSD);
-}
-#endif                          /* defined(WIN32_THREADS) */
-
-#endif                          /* defined(THREADS) */
-
-PUBLIC struct _glapi_table *_glapi_Dispatch = NULL;
-PUBLIC void *_glapi_Context = NULL;
-
-#endif                          /* defined(GLX_USE_TLS) */
-/*@}*/
-
-/*
- * xserver's gl is not multithreaded, we promise.
- */
-PUBLIC void
-_glapi_check_multithread(void)
-{
-}
-
-/**
- * Set the current context pointer for this thread.
- * The context pointer is an opaque type which should be cast to
- * void from the real context pointer type.
- */
-PUBLIC void
-_glapi_set_context(void *context)
-{
-#if defined(GLX_USE_TLS)
-    _glapi_tls_Context = context;
-#elif defined(THREADS)
-    _glthread_SetTSD(&ContextTSD, context);
-    _glapi_Context = context;
-#else
-    _glapi_Context = context;
-#endif
-}
-
-/**
- * Get the current context pointer for this thread.
- * The context pointer is an opaque type which should be cast from
- * void to the real context pointer type.
- */
-PUBLIC void *
-_glapi_get_context(void)
-{
-#if defined(GLX_USE_TLS)
-    return _glapi_tls_Context;
-#else
-    return _glapi_Context;
-#endif
-}
-
-/**
- * Set the global or per-thread dispatch table pointer.
- */
-PUBLIC void
-_glapi_set_dispatch(struct _glapi_table *dispatch)
-{
-#if defined(PTHREADS) || defined(GLX_USE_TLS)
-    static pthread_once_t once_control = PTHREAD_ONCE_INIT;
-
-    pthread_once(&once_control, init_glapi_relocs);
-#endif
-
-#if defined(GLX_USE_TLS)
-    _glapi_tls_Dispatch = dispatch;
-#elif defined(THREADS)
-    _glthread_SetTSD(&_gl_DispatchTSD, (void *) dispatch);
-    _glapi_Dispatch = dispatch;
-#else /*THREADS*/
-        _glapi_Dispatch = dispatch;
-#endif /*THREADS*/
-}
-
-/**
- * Return pointer to current dispatch table for calling thread.
- */
-PUBLIC struct _glapi_table *
-_glapi_get_dispatch(void)
-{
-    struct _glapi_table *api;
-
-#if defined(GLX_USE_TLS)
-    api = _glapi_tls_Dispatch;
-#else
-    api = _glapi_Dispatch;
-#endif
-    return api;
-}
-
-/***
- *** The rest of this file is pretty much concerned with GetProcAddress
- *** functionality.
- ***/
-
-#if defined(USE_X64_64_ASM) && defined(GLX_USE_TLS)
-#define DISPATCH_FUNCTION_SIZE  16
-#elif defined(USE_X86_ASM)
-#if defined(THREADS) && !defined(GLX_USE_TLS)
-#define DISPATCH_FUNCTION_SIZE  32
-#else
-#define DISPATCH_FUNCTION_SIZE  16
-#endif
-#endif
-
-/* The code in this file is auto-generated with Python */
-#include "glprocs.h"
-
-/**
- * Search the table of static entrypoint functions for the named function
- * and return the corresponding glprocs_table_t entry.
- */
-static const glprocs_table_t *
-find_entry(const char *n)
-{
-    GLuint i;
-
-    for (i = 0; static_functions[i].Name_offset >= 0; i++) {
-        const char *testName =
-            gl_string_table + static_functions[i].Name_offset;
-        if (strcmp(testName, n) == 0) {
-            return &static_functions[i];
-        }
-    }
-    return NULL;
-}
-
-/**
- * Return dispatch table offset of the named static (built-in) function.
- * Return -1 if function not found.
- */
-static GLint
-get_static_proc_offset(const char *funcName)
-{
-    const glprocs_table_t *const f = find_entry(funcName);
-
-    if (f) {
-        return f->Offset;
-    }
-    return -1;
-}
-
-/**********************************************************************
- * Extension function management.
- */
-
-/*
- * Number of extension functions which we can dynamically add at runtime.
- */
-#define MAX_EXTENSION_FUNCS 300
-
-/*
- * The dispatch table size (number of entries) is the size of the
- * _glapi_table struct plus the number of dynamic entries we can add.
- * The extra slots can be filled in by DRI drivers that register new extension
- * functions.
- */
-#define DISPATCH_TABLE_SIZE (sizeof(struct _glapi_table) / sizeof(void *) + MAX_EXTENSION_FUNCS)
-
-/**
- * Track information about a function added to the GL API.
- */
-struct _glapi_function {
-   /**
-    * Name of the function.
-    */
-    const char *name;
-
-   /**
-    * Text string that describes the types of the parameters passed to the
-    * named function.   Parameter types are converted to characters using the
-    * following rules:
-    *   - 'i' for \c GLint, \c GLuint, and \c GLenum
-    *   - 'p' for any pointer type
-    *   - 'f' for \c GLfloat and \c GLclampf
-    *   - 'd' for \c GLdouble and \c GLclampd
-    */
-    const char *parameter_signature;
-
-   /**
-    * Offset in the dispatch table where the pointer to the real function is
-    * located.  If the driver has not requested that the named function be
-    * added to the dispatch table, this will have the value ~0.
-    */
-    unsigned dispatch_offset;
-};
-
-static struct _glapi_function ExtEntryTable[MAX_EXTENSION_FUNCS];
-static GLuint NumExtEntryPoints = 0;
-
-/**
- * Generate new entrypoint
- *
- * Use a temporary dispatch offset of ~0 (i.e. -1).  Later, when the driver
- * calls \c _glapi_add_dispatch we'll put in the proper offset.  If that
- * never happens, and the user calls this function, he'll segfault.  That's
- * what you get when you try calling a GL function that doesn't really exist.
- * 
- * \param funcName  Name of the function to create an entry-point for.
- * 
- * \sa _glapi_add_entrypoint
- */
-
-static struct _glapi_function *
-add_function_name(const char *funcName)
-{
-    struct _glapi_function *entry = NULL;
-
-    if (NumExtEntryPoints < MAX_EXTENSION_FUNCS) {
-        entry = &ExtEntryTable[NumExtEntryPoints];
-
-        ExtEntryTable[NumExtEntryPoints].name = strdup(funcName);
-        ExtEntryTable[NumExtEntryPoints].parameter_signature = NULL;
-        ExtEntryTable[NumExtEntryPoints].dispatch_offset = ~0;
-        NumExtEntryPoints++;
-    }
-
-    return entry;
-}
-
-/**
- * Fill-in the dispatch stub for the named function.
- * 
- * This function is intended to be called by a hardware driver.  When called,
- * a dispatch stub may be created created for the function.  A pointer to this
- * dispatch function will be returned by glXGetProcAddress.
- *
- * \param function_names       Array of pointers to function names that should
- *                             share a common dispatch offset.
- * \param parameter_signature  String representing the types of the parameters
- *                             passed to the named function.  Parameter types
- *                             are converted to characters using the following
- *                             rules:
- *                               - 'i' for \c GLint, \c GLuint, and \c GLenum
- *                               - 'p' for any pointer type
- *                               - 'f' for \c GLfloat and \c GLclampf
- *                               - 'd' for \c GLdouble and \c GLclampd
- *
- * \returns
- * The offset in the dispatch table of the named function.  A pointer to the
- * driver's implementation of the named function should be stored at
- * \c dispatch_table[\c offset].
- *
- * \sa glXGetProcAddress
- *
- * \warning
- * This function can only handle up to 8 names at a time.  As far as I know,
- * the maximum number of names ever associated with an existing GL function is
- * 4 (\c glPointParameterfSGIS, \c glPointParameterfEXT,
- * \c glPointParameterfARB, and \c glPointParameterf), so this should not be
- * too painful of a limitation.
- *
- * \todo
- * Determine whether or not \c parameter_signature should be allowed to be
- * \c NULL.  It doesn't seem like much of a hardship for drivers to have to
- * pass in an empty string.
- *
- * \todo
- * Determine if code should be added to reject function names that start with
- * 'glX'.
- * 
- * \bug
- * Add code to compare \c parameter_signature with the parameter signature of
- * a static function.  In order to do that, we need to find a way to \b get
- * the parameter signature of a static function.
- */
-
-PUBLIC int
-_glapi_add_dispatch(const char *const *function_names,
-                    const char *parameter_signature)
-{
-    static int next_dynamic_offset = FIRST_DYNAMIC_OFFSET;
-    const char *const real_sig = (parameter_signature != NULL)
-        ? parameter_signature : "";
-    struct _glapi_function *entry[8];
-    GLboolean is_static[8];
-    unsigned i;
-    unsigned j;
-    int offset = ~0;
-    int new_offset;
-
-    (void) memset(is_static, 0, sizeof(is_static));
-    (void) memset(entry, 0, sizeof(entry));
-
-    for (i = 0; function_names[i] != NULL; i++) {
-        /* Do some trivial validation on the name of the function. */
-
-        if (function_names[i][0] != 'g' || function_names[i][1] != 'l')
-            return GL_FALSE;
-
-        /* Determine if the named function already exists.  If the function does
-         * exist, it must have the same parameter signature as the function
-         * being added.
-         */
-
-        new_offset = get_static_proc_offset(function_names[i]);
-        if (new_offset >= 0) {
-            /* FIXME: Make sure the parameter signatures match!  How do we get
-             * FIXME: the parameter signature for static functions?
-             */
-
-            if ((offset != ~0) && (new_offset != offset)) {
-                return -1;
-            }
-
-            is_static[i] = GL_TRUE;
-            offset = new_offset;
-        }
-
-        for (j = 0; j < NumExtEntryPoints; j++) {
-            if (strcmp(ExtEntryTable[j].name, function_names[i]) == 0) {
-                /* The offset may be ~0 if the function name was added by
-                 * glXGetProcAddress but never filled in by the driver.
-                 */
-
-                if (ExtEntryTable[j].dispatch_offset != ~0) {
-                    if (strcmp(real_sig, ExtEntryTable[j].parameter_signature)
-                        != 0)
-                        return -1;
-
-                    if ((offset != ~0) &&
-                        (ExtEntryTable[j].dispatch_offset != offset)) {
-                        return -1;
-                    }
-
-                    offset = ExtEntryTable[j].dispatch_offset;
-                }
-
-                entry[i] = &ExtEntryTable[j];
-                break;
-            }
-        }
-    }
-
-    if (offset == ~0) {
-        offset = next_dynamic_offset;
-        next_dynamic_offset++;
-    }
-
-    for (i = 0; function_names[i] != NULL; i++) {
-        if (!is_static[i]) {
-            if (entry[i] == NULL) {
-                entry[i] = add_function_name(function_names[i]);
-                if (entry[i] == NULL)
-                    return -1;
-            }
-
-            entry[i]->parameter_signature = strdup(real_sig);
-            entry[i]->dispatch_offset = offset;
-        }
-    }
-
-    return offset;
-}
-
-/*
- * glXGetProcAddress doesn't exist in the protocol, the drivers never call
- * this themselves, and neither does the server.  warn if it happens though.
- */
-PUBLIC _glapi_proc
-_glapi_get_proc_address(const char *funcName)
-{
-    ErrorF("_glapi_get_proc_address called!\n");
-    return NULL;
-}
-
-/**
- * Return size of dispatch table struct as number of functions (or
- * slots).
- */
-PUBLIC GLuint
-_glapi_get_dispatch_table_size(void)
-{
-    return DISPATCH_TABLE_SIZE;
-}
-
-#if defined(PTHREADS) || defined(GLX_USE_TLS)
-/**
- * Perform platform-specific GL API entry-point fixups.
- */
-static void
-init_glapi_relocs(void)
-{
-#if defined(USE_X86_ASM) && defined(GLX_USE_TLS) && !defined(GLX_X86_READONLY_TEXT)
-    extern unsigned long _x86_get_dispatch(void);
-
-    char run_time_patch[] = {
-        0x65, 0xa1, 0, 0, 0, 0  /* movl %gs:0,%eax */
-    };
-    GLuint *offset = (GLuint *) &run_time_patch[2];    /* 32-bits for x86/32 */
-    const GLubyte *const get_disp = (const GLubyte *) run_time_patch;
-    GLubyte *curr_func = (GLubyte *) gl_dispatch_functions_start;
-
-    *offset = _x86_get_dispatch();
-    while (curr_func != (GLubyte *) gl_dispatch_functions_end) {
-        (void) memcpy(curr_func, get_disp, sizeof(run_time_patch));
-        curr_func += DISPATCH_FUNCTION_SIZE;
-    }
-#endif
-}
-#endif                          /* defined(PTHREADS) || defined(GLX_USE_TLS) */
diff --git a/glx/glapi.h b/glx/glapi.h
deleted file mode 100644
index bad791e..0000000
--- a/glx/glapi.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  7.1
- *
- * Copyright (C) 1999-2008  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.
- */
-
-/**
- * \mainpage Mesa GL API Module
- *
- * \section GLAPIIntroduction Introduction
- *
- * The Mesa GL API module is responsible for dispatching all the
- * gl*() functions.  All GL functions are dispatched by jumping through
- * the current dispatch table (basically a struct full of function
- * pointers.)
- *
- * A per-thread current dispatch table and per-thread current context
- * pointer are managed by this module too.
- *
- * This module is intended to be non-Mesa-specific so it can be used
- * with the X/DRI libGL also.
- */
-
-#ifndef _GLAPI_H
-#define _GLAPI_H
-
-#define GL_GLEXT_PROTOTYPES
-
-#include "GL/gl.h"
-#include "GL/glext.h"
-#include "glthread.h"
-
-struct _glapi_table;
-
-typedef void (*_glapi_proc) (void);     /* generic function pointer */
-
-typedef void (*_glapi_warning_func) (void *ctx, const char *str, ...);
-
-#if defined(USE_MGL_NAMESPACE)
-#define _glapi_set_dispatch _mglapi_set_dispatch
-#define _glapi_get_dispatch _mglapi_get_dispatch
-#define _glapi_set_context _mglapi_set_context
-#define _glapi_get_context _mglapi_get_context
-#define _glapi_Context _mglapi_Context
-#define _glapi_Dispatch _mglapi_Dispatch
-#endif
-
-/*
- * Number of extension functions which we can dynamically add at runtime.
- */
-#define MAX_EXTENSION_FUNCS 300
-
-/**
- ** Define the GET_CURRENT_CONTEXT() macro.
- ** \param C local variable which will hold the current context.
- **/
-#if defined (GLX_USE_TLS)
-
-const extern void *_glapi_Context;
-const extern struct _glapi_table *_glapi_Dispatch;
-
-extern TLS void *_glapi_tls_Context;
-
-#define GET_CURRENT_CONTEXT(C)  GLcontext *C = (GLcontext *) _glapi_tls_Context
-
-#else
-
-extern void *_glapi_Context;
-extern struct _glapi_table *_glapi_Dispatch;
-
-#ifdef THREADS
-#define GET_CURRENT_CONTEXT(C)  GLcontext *C = (GLcontext *) (_glapi_Context ? _glapi_Context : _glapi_get_context())
-#else
-#define GET_CURRENT_CONTEXT(C)  GLcontext *C = (GLcontext *) _glapi_Context
-#endif
-
-#endif                          /* defined (GLX_USE_TLS) */
-
-/**
- ** GL API public functions
- **/
-
-extern void
- _glapi_check_multithread(void);
-
-extern void
- _glapi_set_context(void *context);
-
-extern void *_glapi_get_context(void);
-
-extern void
- _glapi_set_dispatch(struct _glapi_table *dispatch);
-
-extern struct _glapi_table *_glapi_get_dispatch(void);
-
-extern int
- _glapi_begin_dispatch_override(struct _glapi_table *override);
-
-extern void
- _glapi_end_dispatch_override(int layer);
-
-struct _glapi_table *_glapi_get_override_dispatch(int layer);
-
-extern GLuint _glapi_get_dispatch_table_size(void);
-
-extern int
-
-_glapi_add_dispatch(const char *const *function_names,
-                    const char *parameter_signature);
-
-extern _glapi_proc _glapi_get_proc_address(const char *funcName);
-
-extern struct _glapi_table *_glapi_create_table_from_handle(void *handle,
-                                                            const char
-                                                            *symbol_prefix);
-
-#endif
diff --git a/glx/glapi_gentable.c b/glx/glapi_gentable.c
deleted file mode 100644
index 4b28015..0000000
--- a/glx/glapi_gentable.c
+++ /dev/null
@@ -1,10058 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by gl_gen_table.py (from Mesa) script */
-
-/*
- * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
- * (C) Copyright IBM Corporation 2004, 2005
- * (C) Copyright Apple Inc 2011
- * 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
- * BRIAN PAUL, 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.
- */
-
-/* GLXEXT is the define used in the xserver when the GLX extension is being
- * built.  Hijack this to determine whether this file is being built for the
- * server or the client.
- */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if (defined(GLXEXT) && defined(HAVE_BACKTRACE)) \
-	|| (!defined(GLXEXT) && defined(DEBUG) && !defined(_WIN32_WCE))
-#define USE_BACKTRACE
-#endif
-
-#ifdef USE_BACKTRACE
-#include <execinfo.h>
-#endif
-
-#include <dlfcn.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <GL/gl.h>
-
-#include "glapi.h"
-#include "glapitable.h"
-
-#ifdef GLXEXT
-#include "os.h"
-#endif
-
-static void
-__glapi_gentable_NoOp(void)
-{
-    const char *fstr = "Unknown";
-
-    /* Silence potential GCC warning for some #ifdef paths.
-     */
-    (void) fstr;
-#if defined(USE_BACKTRACE)
-#if !defined(GLXEXT)
-    if (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG"))
-#endif
-    {
-        void *frames[2];
-
-        if (backtrace(frames, 2) == 2) {
-            Dl_info info;
-
-            dladdr(frames[1], &info);
-            if (info.dli_sname)
-                fstr = info.dli_sname;
-        }
-
-#if !defined(GLXEXT)
-        fprintf(stderr, "Call to unimplemented API: %s\n", fstr);
-#endif
-    }
-#endif
-#if defined(GLXEXT)
-    LogMessage(X_ERROR, "GLX: Call to unimplemented API: %s\n", fstr);
-#endif
-}
-
-static void
-__glapi_gentable_set_remaining_noop(struct _glapi_table *disp)
-{
-    GLuint entries = _glapi_get_dispatch_table_size();
-    void **dispatch = (void **) disp;
-    int i;
-
-    /* ISO C is annoying sometimes */
-    union {
-        _glapi_proc p;
-        void *v;
-    } p;
-
-    p.p = __glapi_gentable_NoOp;
-
-    for (i = 0; i < entries; i++)
-        if (dispatch[i] == NULL)
-            dispatch[i] = p.v;
-}
-
-struct _glapi_table *
-_glapi_create_table_from_handle(void *handle, const char *symbol_prefix)
-{
-    struct _glapi_table *disp = calloc(_glapi_get_dispatch_table_size(), sizeof(void*));
-    char symboln[512];
-
-    if (!disp)
-        return NULL;
-
-    if (symbol_prefix == NULL)
-        symbol_prefix = "";
-
-    if (!disp->NewList) {
-        void **procp = (void **) &disp->NewList;
-
-        snprintf(symboln, sizeof(symboln), "%sNewList", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EndList) {
-        void **procp = (void **) &disp->EndList;
-
-        snprintf(symboln, sizeof(symboln), "%sEndList", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CallList) {
-        void **procp = (void **) &disp->CallList;
-
-        snprintf(symboln, sizeof(symboln), "%sCallList", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CallLists) {
-        void **procp = (void **) &disp->CallLists;
-
-        snprintf(symboln, sizeof(symboln), "%sCallLists", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteLists) {
-        void **procp = (void **) &disp->DeleteLists;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteLists", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenLists) {
-        void **procp = (void **) &disp->GenLists;
-
-        snprintf(symboln, sizeof(symboln), "%sGenLists", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ListBase) {
-        void **procp = (void **) &disp->ListBase;
-
-        snprintf(symboln, sizeof(symboln), "%sListBase", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Begin) {
-        void **procp = (void **) &disp->Begin;
-
-        snprintf(symboln, sizeof(symboln), "%sBegin", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Bitmap) {
-        void **procp = (void **) &disp->Bitmap;
-
-        snprintf(symboln, sizeof(symboln), "%sBitmap", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3b) {
-        void **procp = (void **) &disp->Color3b;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3b", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3bv) {
-        void **procp = (void **) &disp->Color3bv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3bv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3d) {
-        void **procp = (void **) &disp->Color3d;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3dv) {
-        void **procp = (void **) &disp->Color3dv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3f) {
-        void **procp = (void **) &disp->Color3f;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3fv) {
-        void **procp = (void **) &disp->Color3fv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3i) {
-        void **procp = (void **) &disp->Color3i;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3iv) {
-        void **procp = (void **) &disp->Color3iv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3s) {
-        void **procp = (void **) &disp->Color3s;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3sv) {
-        void **procp = (void **) &disp->Color3sv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3ub) {
-        void **procp = (void **) &disp->Color3ub;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3ub", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3ubv) {
-        void **procp = (void **) &disp->Color3ubv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3ubv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3ui) {
-        void **procp = (void **) &disp->Color3ui;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3uiv) {
-        void **procp = (void **) &disp->Color3uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3us) {
-        void **procp = (void **) &disp->Color3us;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3us", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color3usv) {
-        void **procp = (void **) &disp->Color3usv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor3usv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4b) {
-        void **procp = (void **) &disp->Color4b;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4b", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4bv) {
-        void **procp = (void **) &disp->Color4bv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4bv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4d) {
-        void **procp = (void **) &disp->Color4d;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4dv) {
-        void **procp = (void **) &disp->Color4dv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4f) {
-        void **procp = (void **) &disp->Color4f;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4fv) {
-        void **procp = (void **) &disp->Color4fv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4i) {
-        void **procp = (void **) &disp->Color4i;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4iv) {
-        void **procp = (void **) &disp->Color4iv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4s) {
-        void **procp = (void **) &disp->Color4s;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4sv) {
-        void **procp = (void **) &disp->Color4sv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4ub) {
-        void **procp = (void **) &disp->Color4ub;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4ub", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4ubv) {
-        void **procp = (void **) &disp->Color4ubv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4ubv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4ui) {
-        void **procp = (void **) &disp->Color4ui;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4uiv) {
-        void **procp = (void **) &disp->Color4uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4us) {
-        void **procp = (void **) &disp->Color4us;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4us", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Color4usv) {
-        void **procp = (void **) &disp->Color4usv;
-
-        snprintf(symboln, sizeof(symboln), "%sColor4usv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EdgeFlag) {
-        void **procp = (void **) &disp->EdgeFlag;
-
-        snprintf(symboln, sizeof(symboln), "%sEdgeFlag", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EdgeFlagv) {
-        void **procp = (void **) &disp->EdgeFlagv;
-
-        snprintf(symboln, sizeof(symboln), "%sEdgeFlagv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->End) {
-        void **procp = (void **) &disp->End;
-
-        snprintf(symboln, sizeof(symboln), "%sEnd", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Indexd) {
-        void **procp = (void **) &disp->Indexd;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexd", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Indexdv) {
-        void **procp = (void **) &disp->Indexdv;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexdv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Indexf) {
-        void **procp = (void **) &disp->Indexf;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Indexfv) {
-        void **procp = (void **) &disp->Indexfv;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Indexi) {
-        void **procp = (void **) &disp->Indexi;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexi", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Indexiv) {
-        void **procp = (void **) &disp->Indexiv;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Indexs) {
-        void **procp = (void **) &disp->Indexs;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexs", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Indexsv) {
-        void **procp = (void **) &disp->Indexsv;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexsv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Normal3b) {
-        void **procp = (void **) &disp->Normal3b;
-
-        snprintf(symboln, sizeof(symboln), "%sNormal3b", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Normal3bv) {
-        void **procp = (void **) &disp->Normal3bv;
-
-        snprintf(symboln, sizeof(symboln), "%sNormal3bv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Normal3d) {
-        void **procp = (void **) &disp->Normal3d;
-
-        snprintf(symboln, sizeof(symboln), "%sNormal3d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Normal3dv) {
-        void **procp = (void **) &disp->Normal3dv;
-
-        snprintf(symboln, sizeof(symboln), "%sNormal3dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Normal3f) {
-        void **procp = (void **) &disp->Normal3f;
-
-        snprintf(symboln, sizeof(symboln), "%sNormal3f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Normal3fv) {
-        void **procp = (void **) &disp->Normal3fv;
-
-        snprintf(symboln, sizeof(symboln), "%sNormal3fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Normal3i) {
-        void **procp = (void **) &disp->Normal3i;
-
-        snprintf(symboln, sizeof(symboln), "%sNormal3i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Normal3iv) {
-        void **procp = (void **) &disp->Normal3iv;
-
-        snprintf(symboln, sizeof(symboln), "%sNormal3iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Normal3s) {
-        void **procp = (void **) &disp->Normal3s;
-
-        snprintf(symboln, sizeof(symboln), "%sNormal3s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Normal3sv) {
-        void **procp = (void **) &disp->Normal3sv;
-
-        snprintf(symboln, sizeof(symboln), "%sNormal3sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos2d) {
-        void **procp = (void **) &disp->RasterPos2d;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos2d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos2dv) {
-        void **procp = (void **) &disp->RasterPos2dv;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos2dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos2f) {
-        void **procp = (void **) &disp->RasterPos2f;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos2f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos2fv) {
-        void **procp = (void **) &disp->RasterPos2fv;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos2fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos2i) {
-        void **procp = (void **) &disp->RasterPos2i;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos2i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos2iv) {
-        void **procp = (void **) &disp->RasterPos2iv;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos2iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos2s) {
-        void **procp = (void **) &disp->RasterPos2s;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos2s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos2sv) {
-        void **procp = (void **) &disp->RasterPos2sv;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos2sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos3d) {
-        void **procp = (void **) &disp->RasterPos3d;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos3d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos3dv) {
-        void **procp = (void **) &disp->RasterPos3dv;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos3dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos3f) {
-        void **procp = (void **) &disp->RasterPos3f;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos3f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos3fv) {
-        void **procp = (void **) &disp->RasterPos3fv;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos3fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos3i) {
-        void **procp = (void **) &disp->RasterPos3i;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos3i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos3iv) {
-        void **procp = (void **) &disp->RasterPos3iv;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos3iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos3s) {
-        void **procp = (void **) &disp->RasterPos3s;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos3s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos3sv) {
-        void **procp = (void **) &disp->RasterPos3sv;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos3sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos4d) {
-        void **procp = (void **) &disp->RasterPos4d;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos4d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos4dv) {
-        void **procp = (void **) &disp->RasterPos4dv;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos4dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos4f) {
-        void **procp = (void **) &disp->RasterPos4f;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos4f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos4fv) {
-        void **procp = (void **) &disp->RasterPos4fv;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos4fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos4i) {
-        void **procp = (void **) &disp->RasterPos4i;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos4i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos4iv) {
-        void **procp = (void **) &disp->RasterPos4iv;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos4iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos4s) {
-        void **procp = (void **) &disp->RasterPos4s;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos4s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RasterPos4sv) {
-        void **procp = (void **) &disp->RasterPos4sv;
-
-        snprintf(symboln, sizeof(symboln), "%sRasterPos4sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Rectd) {
-        void **procp = (void **) &disp->Rectd;
-
-        snprintf(symboln, sizeof(symboln), "%sRectd", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Rectdv) {
-        void **procp = (void **) &disp->Rectdv;
-
-        snprintf(symboln, sizeof(symboln), "%sRectdv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Rectf) {
-        void **procp = (void **) &disp->Rectf;
-
-        snprintf(symboln, sizeof(symboln), "%sRectf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Rectfv) {
-        void **procp = (void **) &disp->Rectfv;
-
-        snprintf(symboln, sizeof(symboln), "%sRectfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Recti) {
-        void **procp = (void **) &disp->Recti;
-
-        snprintf(symboln, sizeof(symboln), "%sRecti", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Rectiv) {
-        void **procp = (void **) &disp->Rectiv;
-
-        snprintf(symboln, sizeof(symboln), "%sRectiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Rects) {
-        void **procp = (void **) &disp->Rects;
-
-        snprintf(symboln, sizeof(symboln), "%sRects", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Rectsv) {
-        void **procp = (void **) &disp->Rectsv;
-
-        snprintf(symboln, sizeof(symboln), "%sRectsv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord1d) {
-        void **procp = (void **) &disp->TexCoord1d;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord1d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord1dv) {
-        void **procp = (void **) &disp->TexCoord1dv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord1dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord1f) {
-        void **procp = (void **) &disp->TexCoord1f;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord1f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord1fv) {
-        void **procp = (void **) &disp->TexCoord1fv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord1fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord1i) {
-        void **procp = (void **) &disp->TexCoord1i;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord1i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord1iv) {
-        void **procp = (void **) &disp->TexCoord1iv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord1iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord1s) {
-        void **procp = (void **) &disp->TexCoord1s;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord1s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord1sv) {
-        void **procp = (void **) &disp->TexCoord1sv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord1sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord2d) {
-        void **procp = (void **) &disp->TexCoord2d;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord2d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord2dv) {
-        void **procp = (void **) &disp->TexCoord2dv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord2dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord2f) {
-        void **procp = (void **) &disp->TexCoord2f;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord2f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord2fv) {
-        void **procp = (void **) &disp->TexCoord2fv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord2fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord2i) {
-        void **procp = (void **) &disp->TexCoord2i;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord2i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord2iv) {
-        void **procp = (void **) &disp->TexCoord2iv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord2iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord2s) {
-        void **procp = (void **) &disp->TexCoord2s;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord2s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord2sv) {
-        void **procp = (void **) &disp->TexCoord2sv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord2sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord3d) {
-        void **procp = (void **) &disp->TexCoord3d;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord3d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord3dv) {
-        void **procp = (void **) &disp->TexCoord3dv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord3dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord3f) {
-        void **procp = (void **) &disp->TexCoord3f;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord3f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord3fv) {
-        void **procp = (void **) &disp->TexCoord3fv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord3fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord3i) {
-        void **procp = (void **) &disp->TexCoord3i;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord3i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord3iv) {
-        void **procp = (void **) &disp->TexCoord3iv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord3iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord3s) {
-        void **procp = (void **) &disp->TexCoord3s;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord3s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord3sv) {
-        void **procp = (void **) &disp->TexCoord3sv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord3sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord4d) {
-        void **procp = (void **) &disp->TexCoord4d;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord4d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord4dv) {
-        void **procp = (void **) &disp->TexCoord4dv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord4dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord4f) {
-        void **procp = (void **) &disp->TexCoord4f;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord4f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord4fv) {
-        void **procp = (void **) &disp->TexCoord4fv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord4fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord4i) {
-        void **procp = (void **) &disp->TexCoord4i;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord4i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord4iv) {
-        void **procp = (void **) &disp->TexCoord4iv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord4iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord4s) {
-        void **procp = (void **) &disp->TexCoord4s;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord4s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoord4sv) {
-        void **procp = (void **) &disp->TexCoord4sv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoord4sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex2d) {
-        void **procp = (void **) &disp->Vertex2d;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex2d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex2dv) {
-        void **procp = (void **) &disp->Vertex2dv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex2dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex2f) {
-        void **procp = (void **) &disp->Vertex2f;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex2f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex2fv) {
-        void **procp = (void **) &disp->Vertex2fv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex2fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex2i) {
-        void **procp = (void **) &disp->Vertex2i;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex2i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex2iv) {
-        void **procp = (void **) &disp->Vertex2iv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex2iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex2s) {
-        void **procp = (void **) &disp->Vertex2s;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex2s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex2sv) {
-        void **procp = (void **) &disp->Vertex2sv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex2sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex3d) {
-        void **procp = (void **) &disp->Vertex3d;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex3d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex3dv) {
-        void **procp = (void **) &disp->Vertex3dv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex3dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex3f) {
-        void **procp = (void **) &disp->Vertex3f;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex3f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex3fv) {
-        void **procp = (void **) &disp->Vertex3fv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex3fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex3i) {
-        void **procp = (void **) &disp->Vertex3i;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex3i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex3iv) {
-        void **procp = (void **) &disp->Vertex3iv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex3iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex3s) {
-        void **procp = (void **) &disp->Vertex3s;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex3s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex3sv) {
-        void **procp = (void **) &disp->Vertex3sv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex3sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex4d) {
-        void **procp = (void **) &disp->Vertex4d;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex4d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex4dv) {
-        void **procp = (void **) &disp->Vertex4dv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex4dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex4f) {
-        void **procp = (void **) &disp->Vertex4f;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex4f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex4fv) {
-        void **procp = (void **) &disp->Vertex4fv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex4fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex4i) {
-        void **procp = (void **) &disp->Vertex4i;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex4i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex4iv) {
-        void **procp = (void **) &disp->Vertex4iv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex4iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex4s) {
-        void **procp = (void **) &disp->Vertex4s;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex4s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Vertex4sv) {
-        void **procp = (void **) &disp->Vertex4sv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertex4sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClipPlane) {
-        void **procp = (void **) &disp->ClipPlane;
-
-        snprintf(symboln, sizeof(symboln), "%sClipPlane", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorMaterial) {
-        void **procp = (void **) &disp->ColorMaterial;
-
-        snprintf(symboln, sizeof(symboln), "%sColorMaterial", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CullFace) {
-        void **procp = (void **) &disp->CullFace;
-
-        snprintf(symboln, sizeof(symboln), "%sCullFace", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Fogf) {
-        void **procp = (void **) &disp->Fogf;
-
-        snprintf(symboln, sizeof(symboln), "%sFogf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Fogfv) {
-        void **procp = (void **) &disp->Fogfv;
-
-        snprintf(symboln, sizeof(symboln), "%sFogfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Fogi) {
-        void **procp = (void **) &disp->Fogi;
-
-        snprintf(symboln, sizeof(symboln), "%sFogi", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Fogiv) {
-        void **procp = (void **) &disp->Fogiv;
-
-        snprintf(symboln, sizeof(symboln), "%sFogiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FrontFace) {
-        void **procp = (void **) &disp->FrontFace;
-
-        snprintf(symboln, sizeof(symboln), "%sFrontFace", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Hint) {
-        void **procp = (void **) &disp->Hint;
-
-        snprintf(symboln, sizeof(symboln), "%sHint", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Lightf) {
-        void **procp = (void **) &disp->Lightf;
-
-        snprintf(symboln, sizeof(symboln), "%sLightf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Lightfv) {
-        void **procp = (void **) &disp->Lightfv;
-
-        snprintf(symboln, sizeof(symboln), "%sLightfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Lighti) {
-        void **procp = (void **) &disp->Lighti;
-
-        snprintf(symboln, sizeof(symboln), "%sLighti", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Lightiv) {
-        void **procp = (void **) &disp->Lightiv;
-
-        snprintf(symboln, sizeof(symboln), "%sLightiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LightModelf) {
-        void **procp = (void **) &disp->LightModelf;
-
-        snprintf(symboln, sizeof(symboln), "%sLightModelf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LightModelfv) {
-        void **procp = (void **) &disp->LightModelfv;
-
-        snprintf(symboln, sizeof(symboln), "%sLightModelfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LightModeli) {
-        void **procp = (void **) &disp->LightModeli;
-
-        snprintf(symboln, sizeof(symboln), "%sLightModeli", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LightModeliv) {
-        void **procp = (void **) &disp->LightModeliv;
-
-        snprintf(symboln, sizeof(symboln), "%sLightModeliv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LineStipple) {
-        void **procp = (void **) &disp->LineStipple;
-
-        snprintf(symboln, sizeof(symboln), "%sLineStipple", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LineWidth) {
-        void **procp = (void **) &disp->LineWidth;
-
-        snprintf(symboln, sizeof(symboln), "%sLineWidth", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Materialf) {
-        void **procp = (void **) &disp->Materialf;
-
-        snprintf(symboln, sizeof(symboln), "%sMaterialf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Materialfv) {
-        void **procp = (void **) &disp->Materialfv;
-
-        snprintf(symboln, sizeof(symboln), "%sMaterialfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Materiali) {
-        void **procp = (void **) &disp->Materiali;
-
-        snprintf(symboln, sizeof(symboln), "%sMateriali", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Materialiv) {
-        void **procp = (void **) &disp->Materialiv;
-
-        snprintf(symboln, sizeof(symboln), "%sMaterialiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointSize) {
-        void **procp = (void **) &disp->PointSize;
-
-        snprintf(symboln, sizeof(symboln), "%sPointSize", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PolygonMode) {
-        void **procp = (void **) &disp->PolygonMode;
-
-        snprintf(symboln, sizeof(symboln), "%sPolygonMode", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PolygonStipple) {
-        void **procp = (void **) &disp->PolygonStipple;
-
-        snprintf(symboln, sizeof(symboln), "%sPolygonStipple", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Scissor) {
-        void **procp = (void **) &disp->Scissor;
-
-        snprintf(symboln, sizeof(symboln), "%sScissor", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ShadeModel) {
-        void **procp = (void **) &disp->ShadeModel;
-
-        snprintf(symboln, sizeof(symboln), "%sShadeModel", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexParameterf) {
-        void **procp = (void **) &disp->TexParameterf;
-
-        snprintf(symboln, sizeof(symboln), "%sTexParameterf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexParameterfv) {
-        void **procp = (void **) &disp->TexParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexParameterfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexParameteri) {
-        void **procp = (void **) &disp->TexParameteri;
-
-        snprintf(symboln, sizeof(symboln), "%sTexParameteri", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexParameteriv) {
-        void **procp = (void **) &disp->TexParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexParameteriv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexImage1D) {
-        void **procp = (void **) &disp->TexImage1D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexImage1D", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexImage2D) {
-        void **procp = (void **) &disp->TexImage2D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexImage2D", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexEnvf) {
-        void **procp = (void **) &disp->TexEnvf;
-
-        snprintf(symboln, sizeof(symboln), "%sTexEnvf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexEnvfv) {
-        void **procp = (void **) &disp->TexEnvfv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexEnvfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexEnvi) {
-        void **procp = (void **) &disp->TexEnvi;
-
-        snprintf(symboln, sizeof(symboln), "%sTexEnvi", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexEnviv) {
-        void **procp = (void **) &disp->TexEnviv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexEnviv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexGend) {
-        void **procp = (void **) &disp->TexGend;
-
-        snprintf(symboln, sizeof(symboln), "%sTexGend", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexGendv) {
-        void **procp = (void **) &disp->TexGendv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexGendv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexGenf) {
-        void **procp = (void **) &disp->TexGenf;
-
-        snprintf(symboln, sizeof(symboln), "%sTexGenf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexGenfv) {
-        void **procp = (void **) &disp->TexGenfv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexGenfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexGeni) {
-        void **procp = (void **) &disp->TexGeni;
-
-        snprintf(symboln, sizeof(symboln), "%sTexGeni", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexGeniv) {
-        void **procp = (void **) &disp->TexGeniv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexGeniv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FeedbackBuffer) {
-        void **procp = (void **) &disp->FeedbackBuffer;
-
-        snprintf(symboln, sizeof(symboln), "%sFeedbackBuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SelectBuffer) {
-        void **procp = (void **) &disp->SelectBuffer;
-
-        snprintf(symboln, sizeof(symboln), "%sSelectBuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RenderMode) {
-        void **procp = (void **) &disp->RenderMode;
-
-        snprintf(symboln, sizeof(symboln), "%sRenderMode", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->InitNames) {
-        void **procp = (void **) &disp->InitNames;
-
-        snprintf(symboln, sizeof(symboln), "%sInitNames", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LoadName) {
-        void **procp = (void **) &disp->LoadName;
-
-        snprintf(symboln, sizeof(symboln), "%sLoadName", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PassThrough) {
-        void **procp = (void **) &disp->PassThrough;
-
-        snprintf(symboln, sizeof(symboln), "%sPassThrough", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PopName) {
-        void **procp = (void **) &disp->PopName;
-
-        snprintf(symboln, sizeof(symboln), "%sPopName", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PushName) {
-        void **procp = (void **) &disp->PushName;
-
-        snprintf(symboln, sizeof(symboln), "%sPushName", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawBuffer) {
-        void **procp = (void **) &disp->DrawBuffer;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawBuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Clear) {
-        void **procp = (void **) &disp->Clear;
-
-        snprintf(symboln, sizeof(symboln), "%sClear", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClearAccum) {
-        void **procp = (void **) &disp->ClearAccum;
-
-        snprintf(symboln, sizeof(symboln), "%sClearAccum", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClearIndex) {
-        void **procp = (void **) &disp->ClearIndex;
-
-        snprintf(symboln, sizeof(symboln), "%sClearIndex", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClearColor) {
-        void **procp = (void **) &disp->ClearColor;
-
-        snprintf(symboln, sizeof(symboln), "%sClearColor", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClearStencil) {
-        void **procp = (void **) &disp->ClearStencil;
-
-        snprintf(symboln, sizeof(symboln), "%sClearStencil", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClearDepth) {
-        void **procp = (void **) &disp->ClearDepth;
-
-        snprintf(symboln, sizeof(symboln), "%sClearDepth", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->StencilMask) {
-        void **procp = (void **) &disp->StencilMask;
-
-        snprintf(symboln, sizeof(symboln), "%sStencilMask", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorMask) {
-        void **procp = (void **) &disp->ColorMask;
-
-        snprintf(symboln, sizeof(symboln), "%sColorMask", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DepthMask) {
-        void **procp = (void **) &disp->DepthMask;
-
-        snprintf(symboln, sizeof(symboln), "%sDepthMask", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IndexMask) {
-        void **procp = (void **) &disp->IndexMask;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexMask", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Accum) {
-        void **procp = (void **) &disp->Accum;
-
-        snprintf(symboln, sizeof(symboln), "%sAccum", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Disable) {
-        void **procp = (void **) &disp->Disable;
-
-        snprintf(symboln, sizeof(symboln), "%sDisable", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Enable) {
-        void **procp = (void **) &disp->Enable;
-
-        snprintf(symboln, sizeof(symboln), "%sEnable", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Finish) {
-        void **procp = (void **) &disp->Finish;
-
-        snprintf(symboln, sizeof(symboln), "%sFinish", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Flush) {
-        void **procp = (void **) &disp->Flush;
-
-        snprintf(symboln, sizeof(symboln), "%sFlush", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PopAttrib) {
-        void **procp = (void **) &disp->PopAttrib;
-
-        snprintf(symboln, sizeof(symboln), "%sPopAttrib", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PushAttrib) {
-        void **procp = (void **) &disp->PushAttrib;
-
-        snprintf(symboln, sizeof(symboln), "%sPushAttrib", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Map1d) {
-        void **procp = (void **) &disp->Map1d;
-
-        snprintf(symboln, sizeof(symboln), "%sMap1d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Map1f) {
-        void **procp = (void **) &disp->Map1f;
-
-        snprintf(symboln, sizeof(symboln), "%sMap1f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Map2d) {
-        void **procp = (void **) &disp->Map2d;
-
-        snprintf(symboln, sizeof(symboln), "%sMap2d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Map2f) {
-        void **procp = (void **) &disp->Map2f;
-
-        snprintf(symboln, sizeof(symboln), "%sMap2f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MapGrid1d) {
-        void **procp = (void **) &disp->MapGrid1d;
-
-        snprintf(symboln, sizeof(symboln), "%sMapGrid1d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MapGrid1f) {
-        void **procp = (void **) &disp->MapGrid1f;
-
-        snprintf(symboln, sizeof(symboln), "%sMapGrid1f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MapGrid2d) {
-        void **procp = (void **) &disp->MapGrid2d;
-
-        snprintf(symboln, sizeof(symboln), "%sMapGrid2d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MapGrid2f) {
-        void **procp = (void **) &disp->MapGrid2f;
-
-        snprintf(symboln, sizeof(symboln), "%sMapGrid2f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EvalCoord1d) {
-        void **procp = (void **) &disp->EvalCoord1d;
-
-        snprintf(symboln, sizeof(symboln), "%sEvalCoord1d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EvalCoord1dv) {
-        void **procp = (void **) &disp->EvalCoord1dv;
-
-        snprintf(symboln, sizeof(symboln), "%sEvalCoord1dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EvalCoord1f) {
-        void **procp = (void **) &disp->EvalCoord1f;
-
-        snprintf(symboln, sizeof(symboln), "%sEvalCoord1f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EvalCoord1fv) {
-        void **procp = (void **) &disp->EvalCoord1fv;
-
-        snprintf(symboln, sizeof(symboln), "%sEvalCoord1fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EvalCoord2d) {
-        void **procp = (void **) &disp->EvalCoord2d;
-
-        snprintf(symboln, sizeof(symboln), "%sEvalCoord2d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EvalCoord2dv) {
-        void **procp = (void **) &disp->EvalCoord2dv;
-
-        snprintf(symboln, sizeof(symboln), "%sEvalCoord2dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EvalCoord2f) {
-        void **procp = (void **) &disp->EvalCoord2f;
-
-        snprintf(symboln, sizeof(symboln), "%sEvalCoord2f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EvalCoord2fv) {
-        void **procp = (void **) &disp->EvalCoord2fv;
-
-        snprintf(symboln, sizeof(symboln), "%sEvalCoord2fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EvalMesh1) {
-        void **procp = (void **) &disp->EvalMesh1;
-
-        snprintf(symboln, sizeof(symboln), "%sEvalMesh1", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EvalPoint1) {
-        void **procp = (void **) &disp->EvalPoint1;
-
-        snprintf(symboln, sizeof(symboln), "%sEvalPoint1", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EvalMesh2) {
-        void **procp = (void **) &disp->EvalMesh2;
-
-        snprintf(symboln, sizeof(symboln), "%sEvalMesh2", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EvalPoint2) {
-        void **procp = (void **) &disp->EvalPoint2;
-
-        snprintf(symboln, sizeof(symboln), "%sEvalPoint2", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->AlphaFunc) {
-        void **procp = (void **) &disp->AlphaFunc;
-
-        snprintf(symboln, sizeof(symboln), "%sAlphaFunc", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendFunc) {
-        void **procp = (void **) &disp->BlendFunc;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendFunc", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LogicOp) {
-        void **procp = (void **) &disp->LogicOp;
-
-        snprintf(symboln, sizeof(symboln), "%sLogicOp", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->StencilFunc) {
-        void **procp = (void **) &disp->StencilFunc;
-
-        snprintf(symboln, sizeof(symboln), "%sStencilFunc", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->StencilOp) {
-        void **procp = (void **) &disp->StencilOp;
-
-        snprintf(symboln, sizeof(symboln), "%sStencilOp", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DepthFunc) {
-        void **procp = (void **) &disp->DepthFunc;
-
-        snprintf(symboln, sizeof(symboln), "%sDepthFunc", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelZoom) {
-        void **procp = (void **) &disp->PixelZoom;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelZoom", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelTransferf) {
-        void **procp = (void **) &disp->PixelTransferf;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelTransferf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelTransferi) {
-        void **procp = (void **) &disp->PixelTransferi;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelTransferi", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelStoref) {
-        void **procp = (void **) &disp->PixelStoref;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelStoref", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelStorei) {
-        void **procp = (void **) &disp->PixelStorei;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelStorei", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelMapfv) {
-        void **procp = (void **) &disp->PixelMapfv;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelMapfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelMapuiv) {
-        void **procp = (void **) &disp->PixelMapuiv;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelMapuiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelMapusv) {
-        void **procp = (void **) &disp->PixelMapusv;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelMapusv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ReadBuffer) {
-        void **procp = (void **) &disp->ReadBuffer;
-
-        snprintf(symboln, sizeof(symboln), "%sReadBuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyPixels) {
-        void **procp = (void **) &disp->CopyPixels;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyPixels", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ReadPixels) {
-        void **procp = (void **) &disp->ReadPixels;
-
-        snprintf(symboln, sizeof(symboln), "%sReadPixels", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawPixels) {
-        void **procp = (void **) &disp->DrawPixels;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawPixels", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetBooleanv) {
-        void **procp = (void **) &disp->GetBooleanv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetBooleanv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetClipPlane) {
-        void **procp = (void **) &disp->GetClipPlane;
-
-        snprintf(symboln, sizeof(symboln), "%sGetClipPlane", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetDoublev) {
-        void **procp = (void **) &disp->GetDoublev;
-
-        snprintf(symboln, sizeof(symboln), "%sGetDoublev", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetError) {
-        void **procp = (void **) &disp->GetError;
-
-        snprintf(symboln, sizeof(symboln), "%sGetError", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetFloatv) {
-        void **procp = (void **) &disp->GetFloatv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetFloatv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetIntegerv) {
-        void **procp = (void **) &disp->GetIntegerv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetIntegerv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetLightfv) {
-        void **procp = (void **) &disp->GetLightfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetLightfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetLightiv) {
-        void **procp = (void **) &disp->GetLightiv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetLightiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetMapdv) {
-        void **procp = (void **) &disp->GetMapdv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetMapdv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetMapfv) {
-        void **procp = (void **) &disp->GetMapfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetMapfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetMapiv) {
-        void **procp = (void **) &disp->GetMapiv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetMapiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetMaterialfv) {
-        void **procp = (void **) &disp->GetMaterialfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetMaterialfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetMaterialiv) {
-        void **procp = (void **) &disp->GetMaterialiv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetMaterialiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetPixelMapfv) {
-        void **procp = (void **) &disp->GetPixelMapfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetPixelMapfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetPixelMapuiv) {
-        void **procp = (void **) &disp->GetPixelMapuiv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetPixelMapuiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetPixelMapusv) {
-        void **procp = (void **) &disp->GetPixelMapusv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetPixelMapusv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetPolygonStipple) {
-        void **procp = (void **) &disp->GetPolygonStipple;
-
-        snprintf(symboln, sizeof(symboln), "%sGetPolygonStipple",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetString) {
-        void **procp = (void **) &disp->GetString;
-
-        snprintf(symboln, sizeof(symboln), "%sGetString", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexEnvfv) {
-        void **procp = (void **) &disp->GetTexEnvfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexEnvfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexEnviv) {
-        void **procp = (void **) &disp->GetTexEnviv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexEnviv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexGendv) {
-        void **procp = (void **) &disp->GetTexGendv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexGendv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexGenfv) {
-        void **procp = (void **) &disp->GetTexGenfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexGenfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexGeniv) {
-        void **procp = (void **) &disp->GetTexGeniv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexGeniv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexImage) {
-        void **procp = (void **) &disp->GetTexImage;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexImage", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexParameterfv) {
-        void **procp = (void **) &disp->GetTexParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexParameterfv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexParameteriv) {
-        void **procp = (void **) &disp->GetTexParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexParameteriv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexLevelParameterfv) {
-        void **procp = (void **) &disp->GetTexLevelParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexLevelParameterfv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexLevelParameteriv) {
-        void **procp = (void **) &disp->GetTexLevelParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexLevelParameteriv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsEnabled) {
-        void **procp = (void **) &disp->IsEnabled;
-
-        snprintf(symboln, sizeof(symboln), "%sIsEnabled", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsList) {
-        void **procp = (void **) &disp->IsList;
-
-        snprintf(symboln, sizeof(symboln), "%sIsList", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DepthRange) {
-        void **procp = (void **) &disp->DepthRange;
-
-        snprintf(symboln, sizeof(symboln), "%sDepthRange", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Frustum) {
-        void **procp = (void **) &disp->Frustum;
-
-        snprintf(symboln, sizeof(symboln), "%sFrustum", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LoadIdentity) {
-        void **procp = (void **) &disp->LoadIdentity;
-
-        snprintf(symboln, sizeof(symboln), "%sLoadIdentity", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LoadMatrixf) {
-        void **procp = (void **) &disp->LoadMatrixf;
-
-        snprintf(symboln, sizeof(symboln), "%sLoadMatrixf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LoadMatrixd) {
-        void **procp = (void **) &disp->LoadMatrixd;
-
-        snprintf(symboln, sizeof(symboln), "%sLoadMatrixd", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MatrixMode) {
-        void **procp = (void **) &disp->MatrixMode;
-
-        snprintf(symboln, sizeof(symboln), "%sMatrixMode", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultMatrixf) {
-        void **procp = (void **) &disp->MultMatrixf;
-
-        snprintf(symboln, sizeof(symboln), "%sMultMatrixf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultMatrixd) {
-        void **procp = (void **) &disp->MultMatrixd;
-
-        snprintf(symboln, sizeof(symboln), "%sMultMatrixd", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Ortho) {
-        void **procp = (void **) &disp->Ortho;
-
-        snprintf(symboln, sizeof(symboln), "%sOrtho", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PopMatrix) {
-        void **procp = (void **) &disp->PopMatrix;
-
-        snprintf(symboln, sizeof(symboln), "%sPopMatrix", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PushMatrix) {
-        void **procp = (void **) &disp->PushMatrix;
-
-        snprintf(symboln, sizeof(symboln), "%sPushMatrix", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Rotated) {
-        void **procp = (void **) &disp->Rotated;
-
-        snprintf(symboln, sizeof(symboln), "%sRotated", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Rotatef) {
-        void **procp = (void **) &disp->Rotatef;
-
-        snprintf(symboln, sizeof(symboln), "%sRotatef", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Scaled) {
-        void **procp = (void **) &disp->Scaled;
-
-        snprintf(symboln, sizeof(symboln), "%sScaled", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Scalef) {
-        void **procp = (void **) &disp->Scalef;
-
-        snprintf(symboln, sizeof(symboln), "%sScalef", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Translated) {
-        void **procp = (void **) &disp->Translated;
-
-        snprintf(symboln, sizeof(symboln), "%sTranslated", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Translatef) {
-        void **procp = (void **) &disp->Translatef;
-
-        snprintf(symboln, sizeof(symboln), "%sTranslatef", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Viewport) {
-        void **procp = (void **) &disp->Viewport;
-
-        snprintf(symboln, sizeof(symboln), "%sViewport", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ArrayElement) {
-        void **procp = (void **) &disp->ArrayElement;
-
-        snprintf(symboln, sizeof(symboln), "%sArrayElement", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ArrayElement) {
-        void **procp = (void **) &disp->ArrayElement;
-
-        snprintf(symboln, sizeof(symboln), "%sArrayElementEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindTexture) {
-        void **procp = (void **) &disp->BindTexture;
-
-        snprintf(symboln, sizeof(symboln), "%sBindTexture", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindTexture) {
-        void **procp = (void **) &disp->BindTexture;
-
-        snprintf(symboln, sizeof(symboln), "%sBindTextureEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorPointer) {
-        void **procp = (void **) &disp->ColorPointer;
-
-        snprintf(symboln, sizeof(symboln), "%sColorPointer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DisableClientState) {
-        void **procp = (void **) &disp->DisableClientState;
-
-        snprintf(symboln, sizeof(symboln), "%sDisableClientState",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawArrays) {
-        void **procp = (void **) &disp->DrawArrays;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawArrays", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawArrays) {
-        void **procp = (void **) &disp->DrawArrays;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawArraysEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawElements) {
-        void **procp = (void **) &disp->DrawElements;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawElements", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EdgeFlagPointer) {
-        void **procp = (void **) &disp->EdgeFlagPointer;
-
-        snprintf(symboln, sizeof(symboln), "%sEdgeFlagPointer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EnableClientState) {
-        void **procp = (void **) &disp->EnableClientState;
-
-        snprintf(symboln, sizeof(symboln), "%sEnableClientState",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IndexPointer) {
-        void **procp = (void **) &disp->IndexPointer;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexPointer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Indexub) {
-        void **procp = (void **) &disp->Indexub;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexub", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Indexubv) {
-        void **procp = (void **) &disp->Indexubv;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexubv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->InterleavedArrays) {
-        void **procp = (void **) &disp->InterleavedArrays;
-
-        snprintf(symboln, sizeof(symboln), "%sInterleavedArrays",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->NormalPointer) {
-        void **procp = (void **) &disp->NormalPointer;
-
-        snprintf(symboln, sizeof(symboln), "%sNormalPointer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PolygonOffset) {
-        void **procp = (void **) &disp->PolygonOffset;
-
-        snprintf(symboln, sizeof(symboln), "%sPolygonOffset", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoordPointer) {
-        void **procp = (void **) &disp->TexCoordPointer;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoordPointer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexPointer) {
-        void **procp = (void **) &disp->VertexPointer;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexPointer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->AreTexturesResident) {
-        void **procp = (void **) &disp->AreTexturesResident;
-
-        snprintf(symboln, sizeof(symboln), "%sAreTexturesResident",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->AreTexturesResident) {
-        void **procp = (void **) &disp->AreTexturesResident;
-
-        snprintf(symboln, sizeof(symboln), "%sAreTexturesResidentEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyTexImage1D) {
-        void **procp = (void **) &disp->CopyTexImage1D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyTexImage1D", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyTexImage1D) {
-        void **procp = (void **) &disp->CopyTexImage1D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyTexImage1DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyTexImage2D) {
-        void **procp = (void **) &disp->CopyTexImage2D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyTexImage2D", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyTexImage2D) {
-        void **procp = (void **) &disp->CopyTexImage2D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyTexImage2DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyTexSubImage1D) {
-        void **procp = (void **) &disp->CopyTexSubImage1D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyTexSubImage1D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyTexSubImage1D) {
-        void **procp = (void **) &disp->CopyTexSubImage1D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyTexSubImage1DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyTexSubImage2D) {
-        void **procp = (void **) &disp->CopyTexSubImage2D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyTexSubImage2D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyTexSubImage2D) {
-        void **procp = (void **) &disp->CopyTexSubImage2D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyTexSubImage2DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteTextures) {
-        void **procp = (void **) &disp->DeleteTextures;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteTextures", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteTextures) {
-        void **procp = (void **) &disp->DeleteTextures;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteTexturesEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenTextures) {
-        void **procp = (void **) &disp->GenTextures;
-
-        snprintf(symboln, sizeof(symboln), "%sGenTextures", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenTextures) {
-        void **procp = (void **) &disp->GenTextures;
-
-        snprintf(symboln, sizeof(symboln), "%sGenTexturesEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetPointerv) {
-        void **procp = (void **) &disp->GetPointerv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetPointerv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetPointerv) {
-        void **procp = (void **) &disp->GetPointerv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetPointervEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsTexture) {
-        void **procp = (void **) &disp->IsTexture;
-
-        snprintf(symboln, sizeof(symboln), "%sIsTexture", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsTexture) {
-        void **procp = (void **) &disp->IsTexture;
-
-        snprintf(symboln, sizeof(symboln), "%sIsTextureEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PrioritizeTextures) {
-        void **procp = (void **) &disp->PrioritizeTextures;
-
-        snprintf(symboln, sizeof(symboln), "%sPrioritizeTextures",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PrioritizeTextures) {
-        void **procp = (void **) &disp->PrioritizeTextures;
-
-        snprintf(symboln, sizeof(symboln), "%sPrioritizeTexturesEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexSubImage1D) {
-        void **procp = (void **) &disp->TexSubImage1D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexSubImage1D", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexSubImage1D) {
-        void **procp = (void **) &disp->TexSubImage1D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexSubImage1DEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexSubImage2D) {
-        void **procp = (void **) &disp->TexSubImage2D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexSubImage2D", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexSubImage2D) {
-        void **procp = (void **) &disp->TexSubImage2D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexSubImage2DEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PopClientAttrib) {
-        void **procp = (void **) &disp->PopClientAttrib;
-
-        snprintf(symboln, sizeof(symboln), "%sPopClientAttrib", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PushClientAttrib) {
-        void **procp = (void **) &disp->PushClientAttrib;
-
-        snprintf(symboln, sizeof(symboln), "%sPushClientAttrib", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendColor) {
-        void **procp = (void **) &disp->BlendColor;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendColor", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendColor) {
-        void **procp = (void **) &disp->BlendColor;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendColorEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendEquation) {
-        void **procp = (void **) &disp->BlendEquation;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendEquation", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendEquation) {
-        void **procp = (void **) &disp->BlendEquation;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendEquationEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawRangeElements) {
-        void **procp = (void **) &disp->DrawRangeElements;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawRangeElements",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawRangeElements) {
-        void **procp = (void **) &disp->DrawRangeElements;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawRangeElementsEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorTable) {
-        void **procp = (void **) &disp->ColorTable;
-
-        snprintf(symboln, sizeof(symboln), "%sColorTable", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorTable) {
-        void **procp = (void **) &disp->ColorTable;
-
-        snprintf(symboln, sizeof(symboln), "%sColorTableSGI", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorTable) {
-        void **procp = (void **) &disp->ColorTable;
-
-        snprintf(symboln, sizeof(symboln), "%sColorTableEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorTableParameterfv) {
-        void **procp = (void **) &disp->ColorTableParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sColorTableParameterfv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorTableParameterfv) {
-        void **procp = (void **) &disp->ColorTableParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sColorTableParameterfvSGI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorTableParameteriv) {
-        void **procp = (void **) &disp->ColorTableParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sColorTableParameteriv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorTableParameteriv) {
-        void **procp = (void **) &disp->ColorTableParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sColorTableParameterivSGI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyColorTable) {
-        void **procp = (void **) &disp->CopyColorTable;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyColorTable", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyColorTable) {
-        void **procp = (void **) &disp->CopyColorTable;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyColorTableSGI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetColorTable) {
-        void **procp = (void **) &disp->GetColorTable;
-
-        snprintf(symboln, sizeof(symboln), "%sGetColorTable", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetColorTable) {
-        void **procp = (void **) &disp->GetColorTable;
-
-        snprintf(symboln, sizeof(symboln), "%sGetColorTableSGI", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetColorTable) {
-        void **procp = (void **) &disp->GetColorTable;
-
-        snprintf(symboln, sizeof(symboln), "%sGetColorTableEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetColorTableParameterfv) {
-        void **procp = (void **) &disp->GetColorTableParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetColorTableParameterfv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetColorTableParameterfv) {
-        void **procp = (void **) &disp->GetColorTableParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetColorTableParameterfvSGI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetColorTableParameterfv) {
-        void **procp = (void **) &disp->GetColorTableParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetColorTableParameterfvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetColorTableParameteriv) {
-        void **procp = (void **) &disp->GetColorTableParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetColorTableParameteriv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetColorTableParameteriv) {
-        void **procp = (void **) &disp->GetColorTableParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetColorTableParameterivSGI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetColorTableParameteriv) {
-        void **procp = (void **) &disp->GetColorTableParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetColorTableParameterivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorSubTable) {
-        void **procp = (void **) &disp->ColorSubTable;
-
-        snprintf(symboln, sizeof(symboln), "%sColorSubTable", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorSubTable) {
-        void **procp = (void **) &disp->ColorSubTable;
-
-        snprintf(symboln, sizeof(symboln), "%sColorSubTableEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyColorSubTable) {
-        void **procp = (void **) &disp->CopyColorSubTable;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyColorSubTable",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyColorSubTable) {
-        void **procp = (void **) &disp->CopyColorSubTable;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyColorSubTableEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ConvolutionFilter1D) {
-        void **procp = (void **) &disp->ConvolutionFilter1D;
-
-        snprintf(symboln, sizeof(symboln), "%sConvolutionFilter1D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ConvolutionFilter1D) {
-        void **procp = (void **) &disp->ConvolutionFilter1D;
-
-        snprintf(symboln, sizeof(symboln), "%sConvolutionFilter1DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ConvolutionFilter2D) {
-        void **procp = (void **) &disp->ConvolutionFilter2D;
-
-        snprintf(symboln, sizeof(symboln), "%sConvolutionFilter2D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ConvolutionFilter2D) {
-        void **procp = (void **) &disp->ConvolutionFilter2D;
-
-        snprintf(symboln, sizeof(symboln), "%sConvolutionFilter2DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ConvolutionParameterf) {
-        void **procp = (void **) &disp->ConvolutionParameterf;
-
-        snprintf(symboln, sizeof(symboln), "%sConvolutionParameterf",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ConvolutionParameterf) {
-        void **procp = (void **) &disp->ConvolutionParameterf;
-
-        snprintf(symboln, sizeof(symboln), "%sConvolutionParameterfEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ConvolutionParameterfv) {
-        void **procp = (void **) &disp->ConvolutionParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sConvolutionParameterfv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ConvolutionParameterfv) {
-        void **procp = (void **) &disp->ConvolutionParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sConvolutionParameterfvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ConvolutionParameteri) {
-        void **procp = (void **) &disp->ConvolutionParameteri;
-
-        snprintf(symboln, sizeof(symboln), "%sConvolutionParameteri",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ConvolutionParameteri) {
-        void **procp = (void **) &disp->ConvolutionParameteri;
-
-        snprintf(symboln, sizeof(symboln), "%sConvolutionParameteriEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ConvolutionParameteriv) {
-        void **procp = (void **) &disp->ConvolutionParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sConvolutionParameteriv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ConvolutionParameteriv) {
-        void **procp = (void **) &disp->ConvolutionParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sConvolutionParameterivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyConvolutionFilter1D) {
-        void **procp = (void **) &disp->CopyConvolutionFilter1D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyConvolutionFilter1D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyConvolutionFilter1D) {
-        void **procp = (void **) &disp->CopyConvolutionFilter1D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyConvolutionFilter1DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyConvolutionFilter2D) {
-        void **procp = (void **) &disp->CopyConvolutionFilter2D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyConvolutionFilter2D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyConvolutionFilter2D) {
-        void **procp = (void **) &disp->CopyConvolutionFilter2D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyConvolutionFilter2DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetConvolutionFilter) {
-        void **procp = (void **) &disp->GetConvolutionFilter;
-
-        snprintf(symboln, sizeof(symboln), "%sGetConvolutionFilter",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetConvolutionFilter) {
-        void **procp = (void **) &disp->GetConvolutionFilter;
-
-        snprintf(symboln, sizeof(symboln), "%sGetConvolutionFilterEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetConvolutionParameterfv) {
-        void **procp = (void **) &disp->GetConvolutionParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetConvolutionParameterfv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetConvolutionParameterfv) {
-        void **procp = (void **) &disp->GetConvolutionParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetConvolutionParameterfvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetConvolutionParameteriv) {
-        void **procp = (void **) &disp->GetConvolutionParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetConvolutionParameteriv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetConvolutionParameteriv) {
-        void **procp = (void **) &disp->GetConvolutionParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetConvolutionParameterivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetSeparableFilter) {
-        void **procp = (void **) &disp->GetSeparableFilter;
-
-        snprintf(symboln, sizeof(symboln), "%sGetSeparableFilter",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetSeparableFilter) {
-        void **procp = (void **) &disp->GetSeparableFilter;
-
-        snprintf(symboln, sizeof(symboln), "%sGetSeparableFilterEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SeparableFilter2D) {
-        void **procp = (void **) &disp->SeparableFilter2D;
-
-        snprintf(symboln, sizeof(symboln), "%sSeparableFilter2D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SeparableFilter2D) {
-        void **procp = (void **) &disp->SeparableFilter2D;
-
-        snprintf(symboln, sizeof(symboln), "%sSeparableFilter2DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetHistogram) {
-        void **procp = (void **) &disp->GetHistogram;
-
-        snprintf(symboln, sizeof(symboln), "%sGetHistogram", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetHistogram) {
-        void **procp = (void **) &disp->GetHistogram;
-
-        snprintf(symboln, sizeof(symboln), "%sGetHistogramEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetHistogramParameterfv) {
-        void **procp = (void **) &disp->GetHistogramParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetHistogramParameterfv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetHistogramParameterfv) {
-        void **procp = (void **) &disp->GetHistogramParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetHistogramParameterfvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetHistogramParameteriv) {
-        void **procp = (void **) &disp->GetHistogramParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetHistogramParameteriv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetHistogramParameteriv) {
-        void **procp = (void **) &disp->GetHistogramParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetHistogramParameterivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetMinmax) {
-        void **procp = (void **) &disp->GetMinmax;
-
-        snprintf(symboln, sizeof(symboln), "%sGetMinmax", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetMinmax) {
-        void **procp = (void **) &disp->GetMinmax;
-
-        snprintf(symboln, sizeof(symboln), "%sGetMinmaxEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetMinmaxParameterfv) {
-        void **procp = (void **) &disp->GetMinmaxParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetMinmaxParameterfv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetMinmaxParameterfv) {
-        void **procp = (void **) &disp->GetMinmaxParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetMinmaxParameterfvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetMinmaxParameteriv) {
-        void **procp = (void **) &disp->GetMinmaxParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetMinmaxParameteriv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetMinmaxParameteriv) {
-        void **procp = (void **) &disp->GetMinmaxParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetMinmaxParameterivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Histogram) {
-        void **procp = (void **) &disp->Histogram;
-
-        snprintf(symboln, sizeof(symboln), "%sHistogram", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Histogram) {
-        void **procp = (void **) &disp->Histogram;
-
-        snprintf(symboln, sizeof(symboln), "%sHistogramEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Minmax) {
-        void **procp = (void **) &disp->Minmax;
-
-        snprintf(symboln, sizeof(symboln), "%sMinmax", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Minmax) {
-        void **procp = (void **) &disp->Minmax;
-
-        snprintf(symboln, sizeof(symboln), "%sMinmaxEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ResetHistogram) {
-        void **procp = (void **) &disp->ResetHistogram;
-
-        snprintf(symboln, sizeof(symboln), "%sResetHistogram", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ResetHistogram) {
-        void **procp = (void **) &disp->ResetHistogram;
-
-        snprintf(symboln, sizeof(symboln), "%sResetHistogramEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ResetMinmax) {
-        void **procp = (void **) &disp->ResetMinmax;
-
-        snprintf(symboln, sizeof(symboln), "%sResetMinmax", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ResetMinmax) {
-        void **procp = (void **) &disp->ResetMinmax;
-
-        snprintf(symboln, sizeof(symboln), "%sResetMinmaxEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexImage3D) {
-        void **procp = (void **) &disp->TexImage3D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexImage3D", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexImage3D) {
-        void **procp = (void **) &disp->TexImage3D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexImage3DEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexSubImage3D) {
-        void **procp = (void **) &disp->TexSubImage3D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexSubImage3D", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexSubImage3D) {
-        void **procp = (void **) &disp->TexSubImage3D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexSubImage3DEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyTexSubImage3D) {
-        void **procp = (void **) &disp->CopyTexSubImage3D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyTexSubImage3D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyTexSubImage3D) {
-        void **procp = (void **) &disp->CopyTexSubImage3D;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyTexSubImage3DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ActiveTextureARB) {
-        void **procp = (void **) &disp->ActiveTextureARB;
-
-        snprintf(symboln, sizeof(symboln), "%sActiveTexture", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ActiveTextureARB) {
-        void **procp = (void **) &disp->ActiveTextureARB;
-
-        snprintf(symboln, sizeof(symboln), "%sActiveTextureARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClientActiveTextureARB) {
-        void **procp = (void **) &disp->ClientActiveTextureARB;
-
-        snprintf(symboln, sizeof(symboln), "%sClientActiveTexture",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClientActiveTextureARB) {
-        void **procp = (void **) &disp->ClientActiveTextureARB;
-
-        snprintf(symboln, sizeof(symboln), "%sClientActiveTextureARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1dARB) {
-        void **procp = (void **) &disp->MultiTexCoord1dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1dARB) {
-        void **procp = (void **) &disp->MultiTexCoord1dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1dARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1dvARB) {
-        void **procp = (void **) &disp->MultiTexCoord1dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1dvARB) {
-        void **procp = (void **) &disp->MultiTexCoord1dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1dvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1fARB) {
-        void **procp = (void **) &disp->MultiTexCoord1fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1fARB) {
-        void **procp = (void **) &disp->MultiTexCoord1fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1fARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1fvARB) {
-        void **procp = (void **) &disp->MultiTexCoord1fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1fvARB) {
-        void **procp = (void **) &disp->MultiTexCoord1fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1iARB) {
-        void **procp = (void **) &disp->MultiTexCoord1iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1iARB) {
-        void **procp = (void **) &disp->MultiTexCoord1iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1iARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1ivARB) {
-        void **procp = (void **) &disp->MultiTexCoord1ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1ivARB) {
-        void **procp = (void **) &disp->MultiTexCoord1ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1ivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1sARB) {
-        void **procp = (void **) &disp->MultiTexCoord1sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1sARB) {
-        void **procp = (void **) &disp->MultiTexCoord1sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1sARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1svARB) {
-        void **procp = (void **) &disp->MultiTexCoord1svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord1svARB) {
-        void **procp = (void **) &disp->MultiTexCoord1svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord1svARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2dARB) {
-        void **procp = (void **) &disp->MultiTexCoord2dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2dARB) {
-        void **procp = (void **) &disp->MultiTexCoord2dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2dARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2dvARB) {
-        void **procp = (void **) &disp->MultiTexCoord2dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2dvARB) {
-        void **procp = (void **) &disp->MultiTexCoord2dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2dvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2fARB) {
-        void **procp = (void **) &disp->MultiTexCoord2fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2fARB) {
-        void **procp = (void **) &disp->MultiTexCoord2fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2fARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2fvARB) {
-        void **procp = (void **) &disp->MultiTexCoord2fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2fvARB) {
-        void **procp = (void **) &disp->MultiTexCoord2fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2iARB) {
-        void **procp = (void **) &disp->MultiTexCoord2iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2iARB) {
-        void **procp = (void **) &disp->MultiTexCoord2iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2iARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2ivARB) {
-        void **procp = (void **) &disp->MultiTexCoord2ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2ivARB) {
-        void **procp = (void **) &disp->MultiTexCoord2ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2ivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2sARB) {
-        void **procp = (void **) &disp->MultiTexCoord2sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2sARB) {
-        void **procp = (void **) &disp->MultiTexCoord2sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2sARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2svARB) {
-        void **procp = (void **) &disp->MultiTexCoord2svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord2svARB) {
-        void **procp = (void **) &disp->MultiTexCoord2svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord2svARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3dARB) {
-        void **procp = (void **) &disp->MultiTexCoord3dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3dARB) {
-        void **procp = (void **) &disp->MultiTexCoord3dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3dARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3dvARB) {
-        void **procp = (void **) &disp->MultiTexCoord3dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3dvARB) {
-        void **procp = (void **) &disp->MultiTexCoord3dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3dvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3fARB) {
-        void **procp = (void **) &disp->MultiTexCoord3fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3fARB) {
-        void **procp = (void **) &disp->MultiTexCoord3fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3fARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3fvARB) {
-        void **procp = (void **) &disp->MultiTexCoord3fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3fvARB) {
-        void **procp = (void **) &disp->MultiTexCoord3fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3iARB) {
-        void **procp = (void **) &disp->MultiTexCoord3iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3iARB) {
-        void **procp = (void **) &disp->MultiTexCoord3iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3iARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3ivARB) {
-        void **procp = (void **) &disp->MultiTexCoord3ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3ivARB) {
-        void **procp = (void **) &disp->MultiTexCoord3ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3ivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3sARB) {
-        void **procp = (void **) &disp->MultiTexCoord3sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3sARB) {
-        void **procp = (void **) &disp->MultiTexCoord3sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3sARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3svARB) {
-        void **procp = (void **) &disp->MultiTexCoord3svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord3svARB) {
-        void **procp = (void **) &disp->MultiTexCoord3svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord3svARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4dARB) {
-        void **procp = (void **) &disp->MultiTexCoord4dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4dARB) {
-        void **procp = (void **) &disp->MultiTexCoord4dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4dARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4dvARB) {
-        void **procp = (void **) &disp->MultiTexCoord4dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4dvARB) {
-        void **procp = (void **) &disp->MultiTexCoord4dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4dvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4fARB) {
-        void **procp = (void **) &disp->MultiTexCoord4fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4fARB) {
-        void **procp = (void **) &disp->MultiTexCoord4fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4fARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4fvARB) {
-        void **procp = (void **) &disp->MultiTexCoord4fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4fvARB) {
-        void **procp = (void **) &disp->MultiTexCoord4fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4iARB) {
-        void **procp = (void **) &disp->MultiTexCoord4iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4iARB) {
-        void **procp = (void **) &disp->MultiTexCoord4iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4iARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4ivARB) {
-        void **procp = (void **) &disp->MultiTexCoord4ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4ivARB) {
-        void **procp = (void **) &disp->MultiTexCoord4ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4ivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4sARB) {
-        void **procp = (void **) &disp->MultiTexCoord4sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4sARB) {
-        void **procp = (void **) &disp->MultiTexCoord4sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4sARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4svARB) {
-        void **procp = (void **) &disp->MultiTexCoord4svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoord4svARB) {
-        void **procp = (void **) &disp->MultiTexCoord4svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoord4svARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->AttachShader) {
-        void **procp = (void **) &disp->AttachShader;
-
-        snprintf(symboln, sizeof(symboln), "%sAttachShader", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CreateProgram) {
-        void **procp = (void **) &disp->CreateProgram;
-
-        snprintf(symboln, sizeof(symboln), "%sCreateProgram", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CreateShader) {
-        void **procp = (void **) &disp->CreateShader;
-
-        snprintf(symboln, sizeof(symboln), "%sCreateShader", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteProgram) {
-        void **procp = (void **) &disp->DeleteProgram;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteProgram", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteShader) {
-        void **procp = (void **) &disp->DeleteShader;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteShader", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DetachShader) {
-        void **procp = (void **) &disp->DetachShader;
-
-        snprintf(symboln, sizeof(symboln), "%sDetachShader", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetAttachedShaders) {
-        void **procp = (void **) &disp->GetAttachedShaders;
-
-        snprintf(symboln, sizeof(symboln), "%sGetAttachedShaders",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramInfoLog) {
-        void **procp = (void **) &disp->GetProgramInfoLog;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramInfoLog",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramiv) {
-        void **procp = (void **) &disp->GetProgramiv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetShaderInfoLog) {
-        void **procp = (void **) &disp->GetShaderInfoLog;
-
-        snprintf(symboln, sizeof(symboln), "%sGetShaderInfoLog", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetShaderiv) {
-        void **procp = (void **) &disp->GetShaderiv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetShaderiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsProgram) {
-        void **procp = (void **) &disp->IsProgram;
-
-        snprintf(symboln, sizeof(symboln), "%sIsProgram", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsShader) {
-        void **procp = (void **) &disp->IsShader;
-
-        snprintf(symboln, sizeof(symboln), "%sIsShader", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->StencilFuncSeparate) {
-        void **procp = (void **) &disp->StencilFuncSeparate;
-
-        snprintf(symboln, sizeof(symboln), "%sStencilFuncSeparate",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->StencilMaskSeparate) {
-        void **procp = (void **) &disp->StencilMaskSeparate;
-
-        snprintf(symboln, sizeof(symboln), "%sStencilMaskSeparate",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->StencilOpSeparate) {
-        void **procp = (void **) &disp->StencilOpSeparate;
-
-        snprintf(symboln, sizeof(symboln), "%sStencilOpSeparate",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->StencilOpSeparate) {
-        void **procp = (void **) &disp->StencilOpSeparate;
-
-        snprintf(symboln, sizeof(symboln), "%sStencilOpSeparateATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UniformMatrix2x3fv) {
-        void **procp = (void **) &disp->UniformMatrix2x3fv;
-
-        snprintf(symboln, sizeof(symboln), "%sUniformMatrix2x3fv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UniformMatrix2x4fv) {
-        void **procp = (void **) &disp->UniformMatrix2x4fv;
-
-        snprintf(symboln, sizeof(symboln), "%sUniformMatrix2x4fv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UniformMatrix3x2fv) {
-        void **procp = (void **) &disp->UniformMatrix3x2fv;
-
-        snprintf(symboln, sizeof(symboln), "%sUniformMatrix3x2fv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UniformMatrix3x4fv) {
-        void **procp = (void **) &disp->UniformMatrix3x4fv;
-
-        snprintf(symboln, sizeof(symboln), "%sUniformMatrix3x4fv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UniformMatrix4x2fv) {
-        void **procp = (void **) &disp->UniformMatrix4x2fv;
-
-        snprintf(symboln, sizeof(symboln), "%sUniformMatrix4x2fv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UniformMatrix4x3fv) {
-        void **procp = (void **) &disp->UniformMatrix4x3fv;
-
-        snprintf(symboln, sizeof(symboln), "%sUniformMatrix4x3fv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClampColor) {
-        void **procp = (void **) &disp->ClampColor;
-
-        snprintf(symboln, sizeof(symboln), "%sClampColor", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClearBufferfi) {
-        void **procp = (void **) &disp->ClearBufferfi;
-
-        snprintf(symboln, sizeof(symboln), "%sClearBufferfi", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClearBufferfv) {
-        void **procp = (void **) &disp->ClearBufferfv;
-
-        snprintf(symboln, sizeof(symboln), "%sClearBufferfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClearBufferiv) {
-        void **procp = (void **) &disp->ClearBufferiv;
-
-        snprintf(symboln, sizeof(symboln), "%sClearBufferiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClearBufferuiv) {
-        void **procp = (void **) &disp->ClearBufferuiv;
-
-        snprintf(symboln, sizeof(symboln), "%sClearBufferuiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetStringi) {
-        void **procp = (void **) &disp->GetStringi;
-
-        snprintf(symboln, sizeof(symboln), "%sGetStringi", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexBuffer) {
-        void **procp = (void **) &disp->TexBuffer;
-
-        snprintf(symboln, sizeof(symboln), "%sTexBuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferTexture) {
-        void **procp = (void **) &disp->FramebufferTexture;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferTexture",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetBufferParameteri64v) {
-        void **procp = (void **) &disp->GetBufferParameteri64v;
-
-        snprintf(symboln, sizeof(symboln), "%sGetBufferParameteri64v",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetInteger64i_v) {
-        void **procp = (void **) &disp->GetInteger64i_v;
-
-        snprintf(symboln, sizeof(symboln), "%sGetInteger64i_v", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribDivisor) {
-        void **procp = (void **) &disp->VertexAttribDivisor;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribDivisor",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LoadTransposeMatrixdARB) {
-        void **procp = (void **) &disp->LoadTransposeMatrixdARB;
-
-        snprintf(symboln, sizeof(symboln), "%sLoadTransposeMatrixd",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LoadTransposeMatrixdARB) {
-        void **procp = (void **) &disp->LoadTransposeMatrixdARB;
-
-        snprintf(symboln, sizeof(symboln), "%sLoadTransposeMatrixdARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LoadTransposeMatrixfARB) {
-        void **procp = (void **) &disp->LoadTransposeMatrixfARB;
-
-        snprintf(symboln, sizeof(symboln), "%sLoadTransposeMatrixf",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LoadTransposeMatrixfARB) {
-        void **procp = (void **) &disp->LoadTransposeMatrixfARB;
-
-        snprintf(symboln, sizeof(symboln), "%sLoadTransposeMatrixfARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultTransposeMatrixdARB) {
-        void **procp = (void **) &disp->MultTransposeMatrixdARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultTransposeMatrixd",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultTransposeMatrixdARB) {
-        void **procp = (void **) &disp->MultTransposeMatrixdARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultTransposeMatrixdARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultTransposeMatrixfARB) {
-        void **procp = (void **) &disp->MultTransposeMatrixfARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultTransposeMatrixf",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultTransposeMatrixfARB) {
-        void **procp = (void **) &disp->MultTransposeMatrixfARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMultTransposeMatrixfARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SampleCoverageARB) {
-        void **procp = (void **) &disp->SampleCoverageARB;
-
-        snprintf(symboln, sizeof(symboln), "%sSampleCoverage", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SampleCoverageARB) {
-        void **procp = (void **) &disp->SampleCoverageARB;
-
-        snprintf(symboln, sizeof(symboln), "%sSampleCoverageARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompressedTexImage1DARB) {
-        void **procp = (void **) &disp->CompressedTexImage1DARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompressedTexImage1D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompressedTexImage1DARB) {
-        void **procp = (void **) &disp->CompressedTexImage1DARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompressedTexImage1DARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompressedTexImage2DARB) {
-        void **procp = (void **) &disp->CompressedTexImage2DARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompressedTexImage2D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompressedTexImage2DARB) {
-        void **procp = (void **) &disp->CompressedTexImage2DARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompressedTexImage2DARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompressedTexImage3DARB) {
-        void **procp = (void **) &disp->CompressedTexImage3DARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompressedTexImage3D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompressedTexImage3DARB) {
-        void **procp = (void **) &disp->CompressedTexImage3DARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompressedTexImage3DARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompressedTexSubImage1DARB) {
-        void **procp = (void **) &disp->CompressedTexSubImage1DARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompressedTexSubImage1D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompressedTexSubImage1DARB) {
-        void **procp = (void **) &disp->CompressedTexSubImage1DARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompressedTexSubImage1DARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompressedTexSubImage2DARB) {
-        void **procp = (void **) &disp->CompressedTexSubImage2DARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompressedTexSubImage2D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompressedTexSubImage2DARB) {
-        void **procp = (void **) &disp->CompressedTexSubImage2DARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompressedTexSubImage2DARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompressedTexSubImage3DARB) {
-        void **procp = (void **) &disp->CompressedTexSubImage3DARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompressedTexSubImage3D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompressedTexSubImage3DARB) {
-        void **procp = (void **) &disp->CompressedTexSubImage3DARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompressedTexSubImage3DARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetCompressedTexImageARB) {
-        void **procp = (void **) &disp->GetCompressedTexImageARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetCompressedTexImage",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetCompressedTexImageARB) {
-        void **procp = (void **) &disp->GetCompressedTexImageARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetCompressedTexImageARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DisableVertexAttribArrayARB) {
-        void **procp = (void **) &disp->DisableVertexAttribArrayARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDisableVertexAttribArray",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DisableVertexAttribArrayARB) {
-        void **procp = (void **) &disp->DisableVertexAttribArrayARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDisableVertexAttribArrayARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EnableVertexAttribArrayARB) {
-        void **procp = (void **) &disp->EnableVertexAttribArrayARB;
-
-        snprintf(symboln, sizeof(symboln), "%sEnableVertexAttribArray",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EnableVertexAttribArrayARB) {
-        void **procp = (void **) &disp->EnableVertexAttribArrayARB;
-
-        snprintf(symboln, sizeof(symboln), "%sEnableVertexAttribArrayARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramEnvParameterdvARB) {
-        void **procp = (void **) &disp->GetProgramEnvParameterdvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramEnvParameterdvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramEnvParameterfvARB) {
-        void **procp = (void **) &disp->GetProgramEnvParameterfvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramEnvParameterfvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramLocalParameterdvARB) {
-        void **procp = (void **) &disp->GetProgramLocalParameterdvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramLocalParameterdvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramLocalParameterfvARB) {
-        void **procp = (void **) &disp->GetProgramLocalParameterfvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramLocalParameterfvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramStringARB) {
-        void **procp = (void **) &disp->GetProgramStringARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramStringARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramivARB) {
-        void **procp = (void **) &disp->GetProgramivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramivARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribdvARB) {
-        void **procp = (void **) &disp->GetVertexAttribdvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribdv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribdvARB) {
-        void **procp = (void **) &disp->GetVertexAttribdvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribdvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribfvARB) {
-        void **procp = (void **) &disp->GetVertexAttribfvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribfv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribfvARB) {
-        void **procp = (void **) &disp->GetVertexAttribfvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribfvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribivARB) {
-        void **procp = (void **) &disp->GetVertexAttribivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribivARB) {
-        void **procp = (void **) &disp->GetVertexAttribivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramEnvParameter4dARB) {
-        void **procp = (void **) &disp->ProgramEnvParameter4dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramEnvParameter4dARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramEnvParameter4dARB) {
-        void **procp = (void **) &disp->ProgramEnvParameter4dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramParameter4dNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramEnvParameter4dvARB) {
-        void **procp = (void **) &disp->ProgramEnvParameter4dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramEnvParameter4dvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramEnvParameter4dvARB) {
-        void **procp = (void **) &disp->ProgramEnvParameter4dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramParameter4dvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramEnvParameter4fARB) {
-        void **procp = (void **) &disp->ProgramEnvParameter4fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramEnvParameter4fARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramEnvParameter4fARB) {
-        void **procp = (void **) &disp->ProgramEnvParameter4fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramParameter4fNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramEnvParameter4fvARB) {
-        void **procp = (void **) &disp->ProgramEnvParameter4fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramEnvParameter4fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramEnvParameter4fvARB) {
-        void **procp = (void **) &disp->ProgramEnvParameter4fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramParameter4fvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramLocalParameter4dARB) {
-        void **procp = (void **) &disp->ProgramLocalParameter4dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramLocalParameter4dARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramLocalParameter4dvARB) {
-        void **procp = (void **) &disp->ProgramLocalParameter4dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramLocalParameter4dvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramLocalParameter4fARB) {
-        void **procp = (void **) &disp->ProgramLocalParameter4fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramLocalParameter4fARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramLocalParameter4fvARB) {
-        void **procp = (void **) &disp->ProgramLocalParameter4fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramLocalParameter4fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramStringARB) {
-        void **procp = (void **) &disp->ProgramStringARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramStringARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1dARB) {
-        void **procp = (void **) &disp->VertexAttrib1dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1dARB) {
-        void **procp = (void **) &disp->VertexAttrib1dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1dARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1dvARB) {
-        void **procp = (void **) &disp->VertexAttrib1dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1dvARB) {
-        void **procp = (void **) &disp->VertexAttrib1dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1dvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1fARB) {
-        void **procp = (void **) &disp->VertexAttrib1fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1fARB) {
-        void **procp = (void **) &disp->VertexAttrib1fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1fARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1fvARB) {
-        void **procp = (void **) &disp->VertexAttrib1fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1fvARB) {
-        void **procp = (void **) &disp->VertexAttrib1fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1sARB) {
-        void **procp = (void **) &disp->VertexAttrib1sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1sARB) {
-        void **procp = (void **) &disp->VertexAttrib1sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1sARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1svARB) {
-        void **procp = (void **) &disp->VertexAttrib1svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1svARB) {
-        void **procp = (void **) &disp->VertexAttrib1svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1svARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2dARB) {
-        void **procp = (void **) &disp->VertexAttrib2dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2dARB) {
-        void **procp = (void **) &disp->VertexAttrib2dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2dARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2dvARB) {
-        void **procp = (void **) &disp->VertexAttrib2dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2dvARB) {
-        void **procp = (void **) &disp->VertexAttrib2dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2dvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2fARB) {
-        void **procp = (void **) &disp->VertexAttrib2fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2fARB) {
-        void **procp = (void **) &disp->VertexAttrib2fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2fARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2fvARB) {
-        void **procp = (void **) &disp->VertexAttrib2fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2fvARB) {
-        void **procp = (void **) &disp->VertexAttrib2fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2sARB) {
-        void **procp = (void **) &disp->VertexAttrib2sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2sARB) {
-        void **procp = (void **) &disp->VertexAttrib2sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2sARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2svARB) {
-        void **procp = (void **) &disp->VertexAttrib2svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2svARB) {
-        void **procp = (void **) &disp->VertexAttrib2svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2svARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3dARB) {
-        void **procp = (void **) &disp->VertexAttrib3dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3dARB) {
-        void **procp = (void **) &disp->VertexAttrib3dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3dARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3dvARB) {
-        void **procp = (void **) &disp->VertexAttrib3dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3dvARB) {
-        void **procp = (void **) &disp->VertexAttrib3dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3dvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3fARB) {
-        void **procp = (void **) &disp->VertexAttrib3fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3fARB) {
-        void **procp = (void **) &disp->VertexAttrib3fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3fARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3fvARB) {
-        void **procp = (void **) &disp->VertexAttrib3fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3fvARB) {
-        void **procp = (void **) &disp->VertexAttrib3fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3sARB) {
-        void **procp = (void **) &disp->VertexAttrib3sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3sARB) {
-        void **procp = (void **) &disp->VertexAttrib3sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3sARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3svARB) {
-        void **procp = (void **) &disp->VertexAttrib3svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3svARB) {
-        void **procp = (void **) &disp->VertexAttrib3svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3svARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NbvARB) {
-        void **procp = (void **) &disp->VertexAttrib4NbvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4Nbv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NbvARB) {
-        void **procp = (void **) &disp->VertexAttrib4NbvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4NbvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NivARB) {
-        void **procp = (void **) &disp->VertexAttrib4NivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4Niv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NivARB) {
-        void **procp = (void **) &disp->VertexAttrib4NivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4NivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NsvARB) {
-        void **procp = (void **) &disp->VertexAttrib4NsvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4Nsv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NsvARB) {
-        void **procp = (void **) &disp->VertexAttrib4NsvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4NsvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NubARB) {
-        void **procp = (void **) &disp->VertexAttrib4NubARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4Nub", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NubARB) {
-        void **procp = (void **) &disp->VertexAttrib4NubARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4NubARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NubvARB) {
-        void **procp = (void **) &disp->VertexAttrib4NubvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4Nubv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NubvARB) {
-        void **procp = (void **) &disp->VertexAttrib4NubvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4NubvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NuivARB) {
-        void **procp = (void **) &disp->VertexAttrib4NuivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4Nuiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NuivARB) {
-        void **procp = (void **) &disp->VertexAttrib4NuivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4NuivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NusvARB) {
-        void **procp = (void **) &disp->VertexAttrib4NusvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4Nusv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4NusvARB) {
-        void **procp = (void **) &disp->VertexAttrib4NusvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4NusvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4bvARB) {
-        void **procp = (void **) &disp->VertexAttrib4bvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4bv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4bvARB) {
-        void **procp = (void **) &disp->VertexAttrib4bvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4bvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4dARB) {
-        void **procp = (void **) &disp->VertexAttrib4dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4dARB) {
-        void **procp = (void **) &disp->VertexAttrib4dARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4dARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4dvARB) {
-        void **procp = (void **) &disp->VertexAttrib4dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4dvARB) {
-        void **procp = (void **) &disp->VertexAttrib4dvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4dvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4fARB) {
-        void **procp = (void **) &disp->VertexAttrib4fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4fARB) {
-        void **procp = (void **) &disp->VertexAttrib4fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4fARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4fvARB) {
-        void **procp = (void **) &disp->VertexAttrib4fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4fvARB) {
-        void **procp = (void **) &disp->VertexAttrib4fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4ivARB) {
-        void **procp = (void **) &disp->VertexAttrib4ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4ivARB) {
-        void **procp = (void **) &disp->VertexAttrib4ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4ivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4sARB) {
-        void **procp = (void **) &disp->VertexAttrib4sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4sARB) {
-        void **procp = (void **) &disp->VertexAttrib4sARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4sARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4svARB) {
-        void **procp = (void **) &disp->VertexAttrib4svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4svARB) {
-        void **procp = (void **) &disp->VertexAttrib4svARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4svARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4ubvARB) {
-        void **procp = (void **) &disp->VertexAttrib4ubvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4ubv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4ubvARB) {
-        void **procp = (void **) &disp->VertexAttrib4ubvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4ubvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4uivARB) {
-        void **procp = (void **) &disp->VertexAttrib4uivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4uivARB) {
-        void **procp = (void **) &disp->VertexAttrib4uivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4uivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4usvARB) {
-        void **procp = (void **) &disp->VertexAttrib4usvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4usv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4usvARB) {
-        void **procp = (void **) &disp->VertexAttrib4usvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4usvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribPointerARB) {
-        void **procp = (void **) &disp->VertexAttribPointerARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribPointer",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribPointerARB) {
-        void **procp = (void **) &disp->VertexAttribPointerARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribPointerARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindBufferARB) {
-        void **procp = (void **) &disp->BindBufferARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBindBuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindBufferARB) {
-        void **procp = (void **) &disp->BindBufferARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBindBufferARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BufferDataARB) {
-        void **procp = (void **) &disp->BufferDataARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBufferData", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BufferDataARB) {
-        void **procp = (void **) &disp->BufferDataARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBufferDataARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BufferSubDataARB) {
-        void **procp = (void **) &disp->BufferSubDataARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBufferSubData", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BufferSubDataARB) {
-        void **procp = (void **) &disp->BufferSubDataARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBufferSubDataARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteBuffersARB) {
-        void **procp = (void **) &disp->DeleteBuffersARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteBuffers", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteBuffersARB) {
-        void **procp = (void **) &disp->DeleteBuffersARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteBuffersARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenBuffersARB) {
-        void **procp = (void **) &disp->GenBuffersARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGenBuffers", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenBuffersARB) {
-        void **procp = (void **) &disp->GenBuffersARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGenBuffersARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetBufferParameterivARB) {
-        void **procp = (void **) &disp->GetBufferParameterivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetBufferParameteriv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetBufferParameterivARB) {
-        void **procp = (void **) &disp->GetBufferParameterivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetBufferParameterivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetBufferPointervARB) {
-        void **procp = (void **) &disp->GetBufferPointervARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetBufferPointerv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetBufferPointervARB) {
-        void **procp = (void **) &disp->GetBufferPointervARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetBufferPointervARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetBufferSubDataARB) {
-        void **procp = (void **) &disp->GetBufferSubDataARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetBufferSubData", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetBufferSubDataARB) {
-        void **procp = (void **) &disp->GetBufferSubDataARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetBufferSubDataARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsBufferARB) {
-        void **procp = (void **) &disp->IsBufferARB;
-
-        snprintf(symboln, sizeof(symboln), "%sIsBuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsBufferARB) {
-        void **procp = (void **) &disp->IsBufferARB;
-
-        snprintf(symboln, sizeof(symboln), "%sIsBufferARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MapBufferARB) {
-        void **procp = (void **) &disp->MapBufferARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMapBuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MapBufferARB) {
-        void **procp = (void **) &disp->MapBufferARB;
-
-        snprintf(symboln, sizeof(symboln), "%sMapBufferARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UnmapBufferARB) {
-        void **procp = (void **) &disp->UnmapBufferARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUnmapBuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UnmapBufferARB) {
-        void **procp = (void **) &disp->UnmapBufferARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUnmapBufferARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BeginQueryARB) {
-        void **procp = (void **) &disp->BeginQueryARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBeginQuery", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BeginQueryARB) {
-        void **procp = (void **) &disp->BeginQueryARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBeginQueryARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteQueriesARB) {
-        void **procp = (void **) &disp->DeleteQueriesARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteQueries", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteQueriesARB) {
-        void **procp = (void **) &disp->DeleteQueriesARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteQueriesARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EndQueryARB) {
-        void **procp = (void **) &disp->EndQueryARB;
-
-        snprintf(symboln, sizeof(symboln), "%sEndQuery", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EndQueryARB) {
-        void **procp = (void **) &disp->EndQueryARB;
-
-        snprintf(symboln, sizeof(symboln), "%sEndQueryARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenQueriesARB) {
-        void **procp = (void **) &disp->GenQueriesARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGenQueries", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenQueriesARB) {
-        void **procp = (void **) &disp->GenQueriesARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGenQueriesARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetQueryObjectivARB) {
-        void **procp = (void **) &disp->GetQueryObjectivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetQueryObjectiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetQueryObjectivARB) {
-        void **procp = (void **) &disp->GetQueryObjectivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetQueryObjectivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetQueryObjectuivARB) {
-        void **procp = (void **) &disp->GetQueryObjectuivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetQueryObjectuiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetQueryObjectuivARB) {
-        void **procp = (void **) &disp->GetQueryObjectuivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetQueryObjectuivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetQueryivARB) {
-        void **procp = (void **) &disp->GetQueryivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetQueryiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetQueryivARB) {
-        void **procp = (void **) &disp->GetQueryivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetQueryivARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsQueryARB) {
-        void **procp = (void **) &disp->IsQueryARB;
-
-        snprintf(symboln, sizeof(symboln), "%sIsQuery", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsQueryARB) {
-        void **procp = (void **) &disp->IsQueryARB;
-
-        snprintf(symboln, sizeof(symboln), "%sIsQueryARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->AttachObjectARB) {
-        void **procp = (void **) &disp->AttachObjectARB;
-
-        snprintf(symboln, sizeof(symboln), "%sAttachObjectARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompileShaderARB) {
-        void **procp = (void **) &disp->CompileShaderARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompileShader", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CompileShaderARB) {
-        void **procp = (void **) &disp->CompileShaderARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCompileShaderARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CreateProgramObjectARB) {
-        void **procp = (void **) &disp->CreateProgramObjectARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCreateProgramObjectARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CreateShaderObjectARB) {
-        void **procp = (void **) &disp->CreateShaderObjectARB;
-
-        snprintf(symboln, sizeof(symboln), "%sCreateShaderObjectARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteObjectARB) {
-        void **procp = (void **) &disp->DeleteObjectARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteObjectARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DetachObjectARB) {
-        void **procp = (void **) &disp->DetachObjectARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDetachObjectARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetActiveUniformARB) {
-        void **procp = (void **) &disp->GetActiveUniformARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetActiveUniform", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetActiveUniformARB) {
-        void **procp = (void **) &disp->GetActiveUniformARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetActiveUniformARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetAttachedObjectsARB) {
-        void **procp = (void **) &disp->GetAttachedObjectsARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetAttachedObjectsARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetHandleARB) {
-        void **procp = (void **) &disp->GetHandleARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetHandleARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetInfoLogARB) {
-        void **procp = (void **) &disp->GetInfoLogARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetInfoLogARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetObjectParameterfvARB) {
-        void **procp = (void **) &disp->GetObjectParameterfvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetObjectParameterfvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetObjectParameterivARB) {
-        void **procp = (void **) &disp->GetObjectParameterivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetObjectParameterivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetShaderSourceARB) {
-        void **procp = (void **) &disp->GetShaderSourceARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetShaderSource", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetShaderSourceARB) {
-        void **procp = (void **) &disp->GetShaderSourceARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetShaderSourceARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetUniformLocationARB) {
-        void **procp = (void **) &disp->GetUniformLocationARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetUniformLocation",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetUniformLocationARB) {
-        void **procp = (void **) &disp->GetUniformLocationARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetUniformLocationARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetUniformfvARB) {
-        void **procp = (void **) &disp->GetUniformfvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetUniformfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetUniformfvARB) {
-        void **procp = (void **) &disp->GetUniformfvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetUniformfvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetUniformivARB) {
-        void **procp = (void **) &disp->GetUniformivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetUniformiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetUniformivARB) {
-        void **procp = (void **) &disp->GetUniformivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetUniformivARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LinkProgramARB) {
-        void **procp = (void **) &disp->LinkProgramARB;
-
-        snprintf(symboln, sizeof(symboln), "%sLinkProgram", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LinkProgramARB) {
-        void **procp = (void **) &disp->LinkProgramARB;
-
-        snprintf(symboln, sizeof(symboln), "%sLinkProgramARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ShaderSourceARB) {
-        void **procp = (void **) &disp->ShaderSourceARB;
-
-        snprintf(symboln, sizeof(symboln), "%sShaderSource", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ShaderSourceARB) {
-        void **procp = (void **) &disp->ShaderSourceARB;
-
-        snprintf(symboln, sizeof(symboln), "%sShaderSourceARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform1fARB) {
-        void **procp = (void **) &disp->Uniform1fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform1f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform1fARB) {
-        void **procp = (void **) &disp->Uniform1fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform1fARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform1fvARB) {
-        void **procp = (void **) &disp->Uniform1fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform1fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform1fvARB) {
-        void **procp = (void **) &disp->Uniform1fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform1fvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform1iARB) {
-        void **procp = (void **) &disp->Uniform1iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform1i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform1iARB) {
-        void **procp = (void **) &disp->Uniform1iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform1iARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform1ivARB) {
-        void **procp = (void **) &disp->Uniform1ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform1iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform1ivARB) {
-        void **procp = (void **) &disp->Uniform1ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform1ivARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform2fARB) {
-        void **procp = (void **) &disp->Uniform2fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform2f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform2fARB) {
-        void **procp = (void **) &disp->Uniform2fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform2fARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform2fvARB) {
-        void **procp = (void **) &disp->Uniform2fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform2fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform2fvARB) {
-        void **procp = (void **) &disp->Uniform2fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform2fvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform2iARB) {
-        void **procp = (void **) &disp->Uniform2iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform2i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform2iARB) {
-        void **procp = (void **) &disp->Uniform2iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform2iARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform2ivARB) {
-        void **procp = (void **) &disp->Uniform2ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform2iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform2ivARB) {
-        void **procp = (void **) &disp->Uniform2ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform2ivARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform3fARB) {
-        void **procp = (void **) &disp->Uniform3fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform3f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform3fARB) {
-        void **procp = (void **) &disp->Uniform3fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform3fARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform3fvARB) {
-        void **procp = (void **) &disp->Uniform3fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform3fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform3fvARB) {
-        void **procp = (void **) &disp->Uniform3fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform3fvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform3iARB) {
-        void **procp = (void **) &disp->Uniform3iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform3i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform3iARB) {
-        void **procp = (void **) &disp->Uniform3iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform3iARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform3ivARB) {
-        void **procp = (void **) &disp->Uniform3ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform3iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform3ivARB) {
-        void **procp = (void **) &disp->Uniform3ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform3ivARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform4fARB) {
-        void **procp = (void **) &disp->Uniform4fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform4f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform4fARB) {
-        void **procp = (void **) &disp->Uniform4fARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform4fARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform4fvARB) {
-        void **procp = (void **) &disp->Uniform4fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform4fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform4fvARB) {
-        void **procp = (void **) &disp->Uniform4fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform4fvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform4iARB) {
-        void **procp = (void **) &disp->Uniform4iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform4i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform4iARB) {
-        void **procp = (void **) &disp->Uniform4iARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform4iARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform4ivARB) {
-        void **procp = (void **) &disp->Uniform4ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform4iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform4ivARB) {
-        void **procp = (void **) &disp->Uniform4ivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform4ivARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UniformMatrix2fvARB) {
-        void **procp = (void **) &disp->UniformMatrix2fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniformMatrix2fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UniformMatrix2fvARB) {
-        void **procp = (void **) &disp->UniformMatrix2fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniformMatrix2fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UniformMatrix3fvARB) {
-        void **procp = (void **) &disp->UniformMatrix3fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniformMatrix3fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UniformMatrix3fvARB) {
-        void **procp = (void **) &disp->UniformMatrix3fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniformMatrix3fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UniformMatrix4fvARB) {
-        void **procp = (void **) &disp->UniformMatrix4fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniformMatrix4fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UniformMatrix4fvARB) {
-        void **procp = (void **) &disp->UniformMatrix4fvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUniformMatrix4fvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UseProgramObjectARB) {
-        void **procp = (void **) &disp->UseProgramObjectARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUseProgram", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UseProgramObjectARB) {
-        void **procp = (void **) &disp->UseProgramObjectARB;
-
-        snprintf(symboln, sizeof(symboln), "%sUseProgramObjectARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ValidateProgramARB) {
-        void **procp = (void **) &disp->ValidateProgramARB;
-
-        snprintf(symboln, sizeof(symboln), "%sValidateProgram", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ValidateProgramARB) {
-        void **procp = (void **) &disp->ValidateProgramARB;
-
-        snprintf(symboln, sizeof(symboln), "%sValidateProgramARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindAttribLocationARB) {
-        void **procp = (void **) &disp->BindAttribLocationARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBindAttribLocation",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindAttribLocationARB) {
-        void **procp = (void **) &disp->BindAttribLocationARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBindAttribLocationARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetActiveAttribARB) {
-        void **procp = (void **) &disp->GetActiveAttribARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetActiveAttrib", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetActiveAttribARB) {
-        void **procp = (void **) &disp->GetActiveAttribARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetActiveAttribARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetAttribLocationARB) {
-        void **procp = (void **) &disp->GetAttribLocationARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetAttribLocation",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetAttribLocationARB) {
-        void **procp = (void **) &disp->GetAttribLocationARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetAttribLocationARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawBuffersARB) {
-        void **procp = (void **) &disp->DrawBuffersARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawBuffers", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawBuffersARB) {
-        void **procp = (void **) &disp->DrawBuffersARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawBuffersARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawBuffersARB) {
-        void **procp = (void **) &disp->DrawBuffersARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawBuffersATI", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawBuffersARB) {
-        void **procp = (void **) &disp->DrawBuffersARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawBuffersNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClampColorARB) {
-        void **procp = (void **) &disp->ClampColorARB;
-
-        snprintf(symboln, sizeof(symboln), "%sClampColorARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawArraysInstancedARB) {
-        void **procp = (void **) &disp->DrawArraysInstancedARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawArraysInstancedARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawArraysInstancedARB) {
-        void **procp = (void **) &disp->DrawArraysInstancedARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawArraysInstancedEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawArraysInstancedARB) {
-        void **procp = (void **) &disp->DrawArraysInstancedARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawArraysInstanced",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawElementsInstancedARB) {
-        void **procp = (void **) &disp->DrawElementsInstancedARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawElementsInstancedARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawElementsInstancedARB) {
-        void **procp = (void **) &disp->DrawElementsInstancedARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawElementsInstancedEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawElementsInstancedARB) {
-        void **procp = (void **) &disp->DrawElementsInstancedARB;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawElementsInstanced",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RenderbufferStorageMultisample) {
-        void **procp = (void **) &disp->RenderbufferStorageMultisample;
-
-        snprintf(symboln, sizeof(symboln), "%sRenderbufferStorageMultisample",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RenderbufferStorageMultisample) {
-        void **procp = (void **) &disp->RenderbufferStorageMultisample;
-
-        snprintf(symboln, sizeof(symboln),
-                 "%sRenderbufferStorageMultisampleEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferTextureARB) {
-        void **procp = (void **) &disp->FramebufferTextureARB;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferTextureARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferTextureFaceARB) {
-        void **procp = (void **) &disp->FramebufferTextureFaceARB;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferTextureFaceARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramParameteriARB) {
-        void **procp = (void **) &disp->ProgramParameteriARB;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramParameteriARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribDivisorARB) {
-        void **procp = (void **) &disp->VertexAttribDivisorARB;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribDivisorARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FlushMappedBufferRange) {
-        void **procp = (void **) &disp->FlushMappedBufferRange;
-
-        snprintf(symboln, sizeof(symboln), "%sFlushMappedBufferRange",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MapBufferRange) {
-        void **procp = (void **) &disp->MapBufferRange;
-
-        snprintf(symboln, sizeof(symboln), "%sMapBufferRange", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexBufferARB) {
-        void **procp = (void **) &disp->TexBufferARB;
-
-        snprintf(symboln, sizeof(symboln), "%sTexBufferARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindVertexArray) {
-        void **procp = (void **) &disp->BindVertexArray;
-
-        snprintf(symboln, sizeof(symboln), "%sBindVertexArray", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenVertexArrays) {
-        void **procp = (void **) &disp->GenVertexArrays;
-
-        snprintf(symboln, sizeof(symboln), "%sGenVertexArrays", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CopyBufferSubData) {
-        void **procp = (void **) &disp->CopyBufferSubData;
-
-        snprintf(symboln, sizeof(symboln), "%sCopyBufferSubData",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClientWaitSync) {
-        void **procp = (void **) &disp->ClientWaitSync;
-
-        snprintf(symboln, sizeof(symboln), "%sClientWaitSync", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteSync) {
-        void **procp = (void **) &disp->DeleteSync;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteSync", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FenceSync) {
-        void **procp = (void **) &disp->FenceSync;
-
-        snprintf(symboln, sizeof(symboln), "%sFenceSync", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetInteger64v) {
-        void **procp = (void **) &disp->GetInteger64v;
-
-        snprintf(symboln, sizeof(symboln), "%sGetInteger64v", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetSynciv) {
-        void **procp = (void **) &disp->GetSynciv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetSynciv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsSync) {
-        void **procp = (void **) &disp->IsSync;
-
-        snprintf(symboln, sizeof(symboln), "%sIsSync", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WaitSync) {
-        void **procp = (void **) &disp->WaitSync;
-
-        snprintf(symboln, sizeof(symboln), "%sWaitSync", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawElementsBaseVertex) {
-        void **procp = (void **) &disp->DrawElementsBaseVertex;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawElementsBaseVertex",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawElementsInstancedBaseVertex) {
-        void **procp = (void **) &disp->DrawElementsInstancedBaseVertex;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawElementsInstancedBaseVertex",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawRangeElementsBaseVertex) {
-        void **procp = (void **) &disp->DrawRangeElementsBaseVertex;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawRangeElementsBaseVertex",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiDrawElementsBaseVertex) {
-        void **procp = (void **) &disp->MultiDrawElementsBaseVertex;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiDrawElementsBaseVertex",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendEquationSeparateiARB) {
-        void **procp = (void **) &disp->BlendEquationSeparateiARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendEquationSeparateiARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendEquationSeparateiARB) {
-        void **procp = (void **) &disp->BlendEquationSeparateiARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendEquationSeparateIndexedAMD",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendEquationiARB) {
-        void **procp = (void **) &disp->BlendEquationiARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendEquationiARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendEquationiARB) {
-        void **procp = (void **) &disp->BlendEquationiARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendEquationIndexedAMD",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendFuncSeparateiARB) {
-        void **procp = (void **) &disp->BlendFuncSeparateiARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendFuncSeparateiARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendFuncSeparateiARB) {
-        void **procp = (void **) &disp->BlendFuncSeparateiARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendFuncSeparateIndexedAMD",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendFunciARB) {
-        void **procp = (void **) &disp->BlendFunciARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendFunciARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendFunciARB) {
-        void **procp = (void **) &disp->BlendFunciARB;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendFuncIndexedAMD",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindSampler) {
-        void **procp = (void **) &disp->BindSampler;
-
-        snprintf(symboln, sizeof(symboln), "%sBindSampler", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteSamplers) {
-        void **procp = (void **) &disp->DeleteSamplers;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteSamplers", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenSamplers) {
-        void **procp = (void **) &disp->GenSamplers;
-
-        snprintf(symboln, sizeof(symboln), "%sGenSamplers", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetSamplerParameterIiv) {
-        void **procp = (void **) &disp->GetSamplerParameterIiv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetSamplerParameterIiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetSamplerParameterIuiv) {
-        void **procp = (void **) &disp->GetSamplerParameterIuiv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetSamplerParameterIuiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetSamplerParameterfv) {
-        void **procp = (void **) &disp->GetSamplerParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetSamplerParameterfv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetSamplerParameteriv) {
-        void **procp = (void **) &disp->GetSamplerParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sGetSamplerParameteriv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsSampler) {
-        void **procp = (void **) &disp->IsSampler;
-
-        snprintf(symboln, sizeof(symboln), "%sIsSampler", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SamplerParameterIiv) {
-        void **procp = (void **) &disp->SamplerParameterIiv;
-
-        snprintf(symboln, sizeof(symboln), "%sSamplerParameterIiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SamplerParameterIuiv) {
-        void **procp = (void **) &disp->SamplerParameterIuiv;
-
-        snprintf(symboln, sizeof(symboln), "%sSamplerParameterIuiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SamplerParameterf) {
-        void **procp = (void **) &disp->SamplerParameterf;
-
-        snprintf(symboln, sizeof(symboln), "%sSamplerParameterf",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SamplerParameterfv) {
-        void **procp = (void **) &disp->SamplerParameterfv;
-
-        snprintf(symboln, sizeof(symboln), "%sSamplerParameterfv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SamplerParameteri) {
-        void **procp = (void **) &disp->SamplerParameteri;
-
-        snprintf(symboln, sizeof(symboln), "%sSamplerParameteri",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SamplerParameteriv) {
-        void **procp = (void **) &disp->SamplerParameteriv;
-
-        snprintf(symboln, sizeof(symboln), "%sSamplerParameteriv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorP3ui) {
-        void **procp = (void **) &disp->ColorP3ui;
-
-        snprintf(symboln, sizeof(symboln), "%sColorP3ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorP3uiv) {
-        void **procp = (void **) &disp->ColorP3uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sColorP3uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorP4ui) {
-        void **procp = (void **) &disp->ColorP4ui;
-
-        snprintf(symboln, sizeof(symboln), "%sColorP4ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorP4uiv) {
-        void **procp = (void **) &disp->ColorP4uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sColorP4uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoordP1ui) {
-        void **procp = (void **) &disp->MultiTexCoordP1ui;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoordP1ui",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoordP1uiv) {
-        void **procp = (void **) &disp->MultiTexCoordP1uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoordP1uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoordP2ui) {
-        void **procp = (void **) &disp->MultiTexCoordP2ui;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoordP2ui",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoordP2uiv) {
-        void **procp = (void **) &disp->MultiTexCoordP2uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoordP2uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoordP3ui) {
-        void **procp = (void **) &disp->MultiTexCoordP3ui;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoordP3ui",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoordP3uiv) {
-        void **procp = (void **) &disp->MultiTexCoordP3uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoordP3uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoordP4ui) {
-        void **procp = (void **) &disp->MultiTexCoordP4ui;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoordP4ui",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiTexCoordP4uiv) {
-        void **procp = (void **) &disp->MultiTexCoordP4uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiTexCoordP4uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->NormalP3ui) {
-        void **procp = (void **) &disp->NormalP3ui;
-
-        snprintf(symboln, sizeof(symboln), "%sNormalP3ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->NormalP3uiv) {
-        void **procp = (void **) &disp->NormalP3uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sNormalP3uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColorP3ui) {
-        void **procp = (void **) &disp->SecondaryColorP3ui;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColorP3ui",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColorP3uiv) {
-        void **procp = (void **) &disp->SecondaryColorP3uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColorP3uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoordP1ui) {
-        void **procp = (void **) &disp->TexCoordP1ui;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoordP1ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoordP1uiv) {
-        void **procp = (void **) &disp->TexCoordP1uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoordP1uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoordP2ui) {
-        void **procp = (void **) &disp->TexCoordP2ui;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoordP2ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoordP2uiv) {
-        void **procp = (void **) &disp->TexCoordP2uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoordP2uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoordP3ui) {
-        void **procp = (void **) &disp->TexCoordP3ui;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoordP3ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoordP3uiv) {
-        void **procp = (void **) &disp->TexCoordP3uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoordP3uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoordP4ui) {
-        void **procp = (void **) &disp->TexCoordP4ui;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoordP4ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoordP4uiv) {
-        void **procp = (void **) &disp->TexCoordP4uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoordP4uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribP1ui) {
-        void **procp = (void **) &disp->VertexAttribP1ui;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribP1ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribP1uiv) {
-        void **procp = (void **) &disp->VertexAttribP1uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribP1uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribP2ui) {
-        void **procp = (void **) &disp->VertexAttribP2ui;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribP2ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribP2uiv) {
-        void **procp = (void **) &disp->VertexAttribP2uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribP2uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribP3ui) {
-        void **procp = (void **) &disp->VertexAttribP3ui;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribP3ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribP3uiv) {
-        void **procp = (void **) &disp->VertexAttribP3uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribP3uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribP4ui) {
-        void **procp = (void **) &disp->VertexAttribP4ui;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribP4ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribP4uiv) {
-        void **procp = (void **) &disp->VertexAttribP4uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribP4uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexP2ui) {
-        void **procp = (void **) &disp->VertexP2ui;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexP2ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexP2uiv) {
-        void **procp = (void **) &disp->VertexP2uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexP2uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexP3ui) {
-        void **procp = (void **) &disp->VertexP3ui;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexP3ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexP3uiv) {
-        void **procp = (void **) &disp->VertexP3uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexP3uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexP4ui) {
-        void **procp = (void **) &disp->VertexP4ui;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexP4ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexP4uiv) {
-        void **procp = (void **) &disp->VertexP4uiv;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexP4uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindTransformFeedback) {
-        void **procp = (void **) &disp->BindTransformFeedback;
-
-        snprintf(symboln, sizeof(symboln), "%sBindTransformFeedback",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteTransformFeedbacks) {
-        void **procp = (void **) &disp->DeleteTransformFeedbacks;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteTransformFeedbacks",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DrawTransformFeedback) {
-        void **procp = (void **) &disp->DrawTransformFeedback;
-
-        snprintf(symboln, sizeof(symboln), "%sDrawTransformFeedback",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenTransformFeedbacks) {
-        void **procp = (void **) &disp->GenTransformFeedbacks;
-
-        snprintf(symboln, sizeof(symboln), "%sGenTransformFeedbacks",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsTransformFeedback) {
-        void **procp = (void **) &disp->IsTransformFeedback;
-
-        snprintf(symboln, sizeof(symboln), "%sIsTransformFeedback",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PauseTransformFeedback) {
-        void **procp = (void **) &disp->PauseTransformFeedback;
-
-        snprintf(symboln, sizeof(symboln), "%sPauseTransformFeedback",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ResumeTransformFeedback) {
-        void **procp = (void **) &disp->ResumeTransformFeedback;
-
-        snprintf(symboln, sizeof(symboln), "%sResumeTransformFeedback",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClearDepthf) {
-        void **procp = (void **) &disp->ClearDepthf;
-
-        snprintf(symboln, sizeof(symboln), "%sClearDepthf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DepthRangef) {
-        void **procp = (void **) &disp->DepthRangef;
-
-        snprintf(symboln, sizeof(symboln), "%sDepthRangef", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetShaderPrecisionFormat) {
-        void **procp = (void **) &disp->GetShaderPrecisionFormat;
-
-        snprintf(symboln, sizeof(symboln), "%sGetShaderPrecisionFormat",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ReleaseShaderCompiler) {
-        void **procp = (void **) &disp->ReleaseShaderCompiler;
-
-        snprintf(symboln, sizeof(symboln), "%sReleaseShaderCompiler",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ShaderBinary) {
-        void **procp = (void **) &disp->ShaderBinary;
-
-        snprintf(symboln, sizeof(symboln), "%sShaderBinary", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetGraphicsResetStatusARB) {
-        void **procp = (void **) &disp->GetGraphicsResetStatusARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetGraphicsResetStatusARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnColorTableARB) {
-        void **procp = (void **) &disp->GetnColorTableARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnColorTableARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnCompressedTexImageARB) {
-        void **procp = (void **) &disp->GetnCompressedTexImageARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnCompressedTexImageARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnConvolutionFilterARB) {
-        void **procp = (void **) &disp->GetnConvolutionFilterARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnConvolutionFilterARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnHistogramARB) {
-        void **procp = (void **) &disp->GetnHistogramARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnHistogramARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnMapdvARB) {
-        void **procp = (void **) &disp->GetnMapdvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnMapdvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnMapfvARB) {
-        void **procp = (void **) &disp->GetnMapfvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnMapfvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnMapivARB) {
-        void **procp = (void **) &disp->GetnMapivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnMapivARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnMinmaxARB) {
-        void **procp = (void **) &disp->GetnMinmaxARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnMinmaxARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnPixelMapfvARB) {
-        void **procp = (void **) &disp->GetnPixelMapfvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnPixelMapfvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnPixelMapuivARB) {
-        void **procp = (void **) &disp->GetnPixelMapuivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnPixelMapuivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnPixelMapusvARB) {
-        void **procp = (void **) &disp->GetnPixelMapusvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnPixelMapusvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnPolygonStippleARB) {
-        void **procp = (void **) &disp->GetnPolygonStippleARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnPolygonStippleARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnSeparableFilterARB) {
-        void **procp = (void **) &disp->GetnSeparableFilterARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnSeparableFilterARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnTexImageARB) {
-        void **procp = (void **) &disp->GetnTexImageARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnTexImageARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnUniformdvARB) {
-        void **procp = (void **) &disp->GetnUniformdvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnUniformdvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnUniformfvARB) {
-        void **procp = (void **) &disp->GetnUniformfvARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnUniformfvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnUniformivARB) {
-        void **procp = (void **) &disp->GetnUniformivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnUniformivARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetnUniformuivARB) {
-        void **procp = (void **) &disp->GetnUniformuivARB;
-
-        snprintf(symboln, sizeof(symboln), "%sGetnUniformuivARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ReadnPixelsARB) {
-        void **procp = (void **) &disp->ReadnPixelsARB;
-
-        snprintf(symboln, sizeof(symboln), "%sReadnPixelsARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexStorage1D) {
-        void **procp = (void **) &disp->TexStorage1D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexStorage1D", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexStorage2D) {
-        void **procp = (void **) &disp->TexStorage2D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexStorage2D", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexStorage3D) {
-        void **procp = (void **) &disp->TexStorage3D;
-
-        snprintf(symboln, sizeof(symboln), "%sTexStorage3D", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TextureStorage1DEXT) {
-        void **procp = (void **) &disp->TextureStorage1DEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sTextureStorage1DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TextureStorage2DEXT) {
-        void **procp = (void **) &disp->TextureStorage2DEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sTextureStorage2DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TextureStorage3DEXT) {
-        void **procp = (void **) &disp->TextureStorage3DEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sTextureStorage3DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PolygonOffsetEXT) {
-        void **procp = (void **) &disp->PolygonOffsetEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sPolygonOffsetEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetPixelTexGenParameterfvSGIS) {
-        void **procp = (void **) &disp->GetPixelTexGenParameterfvSGIS;
-
-        snprintf(symboln, sizeof(symboln), "%sGetPixelTexGenParameterfvSGIS",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetPixelTexGenParameterivSGIS) {
-        void **procp = (void **) &disp->GetPixelTexGenParameterivSGIS;
-
-        snprintf(symboln, sizeof(symboln), "%sGetPixelTexGenParameterivSGIS",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelTexGenParameterfSGIS) {
-        void **procp = (void **) &disp->PixelTexGenParameterfSGIS;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelTexGenParameterfSGIS",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelTexGenParameterfvSGIS) {
-        void **procp = (void **) &disp->PixelTexGenParameterfvSGIS;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelTexGenParameterfvSGIS",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelTexGenParameteriSGIS) {
-        void **procp = (void **) &disp->PixelTexGenParameteriSGIS;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelTexGenParameteriSGIS",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelTexGenParameterivSGIS) {
-        void **procp = (void **) &disp->PixelTexGenParameterivSGIS;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelTexGenParameterivSGIS",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SampleMaskSGIS) {
-        void **procp = (void **) &disp->SampleMaskSGIS;
-
-        snprintf(symboln, sizeof(symboln), "%sSampleMaskSGIS", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SampleMaskSGIS) {
-        void **procp = (void **) &disp->SampleMaskSGIS;
-
-        snprintf(symboln, sizeof(symboln), "%sSampleMaskEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SamplePatternSGIS) {
-        void **procp = (void **) &disp->SamplePatternSGIS;
-
-        snprintf(symboln, sizeof(symboln), "%sSamplePatternSGIS",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SamplePatternSGIS) {
-        void **procp = (void **) &disp->SamplePatternSGIS;
-
-        snprintf(symboln, sizeof(symboln), "%sSamplePatternEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorPointerEXT) {
-        void **procp = (void **) &disp->ColorPointerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sColorPointerEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EdgeFlagPointerEXT) {
-        void **procp = (void **) &disp->EdgeFlagPointerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sEdgeFlagPointerEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IndexPointerEXT) {
-        void **procp = (void **) &disp->IndexPointerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sIndexPointerEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->NormalPointerEXT) {
-        void **procp = (void **) &disp->NormalPointerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sNormalPointerEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexCoordPointerEXT) {
-        void **procp = (void **) &disp->TexCoordPointerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sTexCoordPointerEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexPointerEXT) {
-        void **procp = (void **) &disp->VertexPointerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexPointerEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointParameterfEXT) {
-        void **procp = (void **) &disp->PointParameterfEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sPointParameterf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointParameterfEXT) {
-        void **procp = (void **) &disp->PointParameterfEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sPointParameterfARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointParameterfEXT) {
-        void **procp = (void **) &disp->PointParameterfEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sPointParameterfEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointParameterfEXT) {
-        void **procp = (void **) &disp->PointParameterfEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sPointParameterfSGIS",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointParameterfvEXT) {
-        void **procp = (void **) &disp->PointParameterfvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sPointParameterfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointParameterfvEXT) {
-        void **procp = (void **) &disp->PointParameterfvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sPointParameterfvARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointParameterfvEXT) {
-        void **procp = (void **) &disp->PointParameterfvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sPointParameterfvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointParameterfvEXT) {
-        void **procp = (void **) &disp->PointParameterfvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sPointParameterfvSGIS",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LockArraysEXT) {
-        void **procp = (void **) &disp->LockArraysEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sLockArraysEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UnlockArraysEXT) {
-        void **procp = (void **) &disp->UnlockArraysEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUnlockArraysEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3bEXT) {
-        void **procp = (void **) &disp->SecondaryColor3bEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3b", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3bEXT) {
-        void **procp = (void **) &disp->SecondaryColor3bEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3bEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3bvEXT) {
-        void **procp = (void **) &disp->SecondaryColor3bvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3bv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3bvEXT) {
-        void **procp = (void **) &disp->SecondaryColor3bvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3bvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3dEXT) {
-        void **procp = (void **) &disp->SecondaryColor3dEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3dEXT) {
-        void **procp = (void **) &disp->SecondaryColor3dEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3dEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3dvEXT) {
-        void **procp = (void **) &disp->SecondaryColor3dvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3dv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3dvEXT) {
-        void **procp = (void **) &disp->SecondaryColor3dvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3dvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3fEXT) {
-        void **procp = (void **) &disp->SecondaryColor3fEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3fEXT) {
-        void **procp = (void **) &disp->SecondaryColor3fEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3fEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3fvEXT) {
-        void **procp = (void **) &disp->SecondaryColor3fvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3fv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3fvEXT) {
-        void **procp = (void **) &disp->SecondaryColor3fvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3fvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3iEXT) {
-        void **procp = (void **) &disp->SecondaryColor3iEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3iEXT) {
-        void **procp = (void **) &disp->SecondaryColor3iEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3iEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3ivEXT) {
-        void **procp = (void **) &disp->SecondaryColor3ivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3iv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3ivEXT) {
-        void **procp = (void **) &disp->SecondaryColor3ivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3ivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3sEXT) {
-        void **procp = (void **) &disp->SecondaryColor3sEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3sEXT) {
-        void **procp = (void **) &disp->SecondaryColor3sEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3sEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3svEXT) {
-        void **procp = (void **) &disp->SecondaryColor3svEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3sv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3svEXT) {
-        void **procp = (void **) &disp->SecondaryColor3svEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3svEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3ubEXT) {
-        void **procp = (void **) &disp->SecondaryColor3ubEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3ub",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3ubEXT) {
-        void **procp = (void **) &disp->SecondaryColor3ubEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3ubEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3ubvEXT) {
-        void **procp = (void **) &disp->SecondaryColor3ubvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3ubv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3ubvEXT) {
-        void **procp = (void **) &disp->SecondaryColor3ubvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3ubvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3uiEXT) {
-        void **procp = (void **) &disp->SecondaryColor3uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3ui",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3uiEXT) {
-        void **procp = (void **) &disp->SecondaryColor3uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3uiEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3uivEXT) {
-        void **procp = (void **) &disp->SecondaryColor3uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3uivEXT) {
-        void **procp = (void **) &disp->SecondaryColor3uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3uivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3usEXT) {
-        void **procp = (void **) &disp->SecondaryColor3usEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3us",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3usEXT) {
-        void **procp = (void **) &disp->SecondaryColor3usEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3usEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3usvEXT) {
-        void **procp = (void **) &disp->SecondaryColor3usvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3usv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColor3usvEXT) {
-        void **procp = (void **) &disp->SecondaryColor3usvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColor3usvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColorPointerEXT) {
-        void **procp = (void **) &disp->SecondaryColorPointerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColorPointer",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SecondaryColorPointerEXT) {
-        void **procp = (void **) &disp->SecondaryColorPointerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sSecondaryColorPointerEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiDrawArraysEXT) {
-        void **procp = (void **) &disp->MultiDrawArraysEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiDrawArrays", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiDrawArraysEXT) {
-        void **procp = (void **) &disp->MultiDrawArraysEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiDrawArraysEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiDrawElementsEXT) {
-        void **procp = (void **) &disp->MultiDrawElementsEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiDrawElements",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiDrawElementsEXT) {
-        void **procp = (void **) &disp->MultiDrawElementsEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiDrawElementsEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FogCoordPointerEXT) {
-        void **procp = (void **) &disp->FogCoordPointerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFogCoordPointer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FogCoordPointerEXT) {
-        void **procp = (void **) &disp->FogCoordPointerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFogCoordPointerEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FogCoorddEXT) {
-        void **procp = (void **) &disp->FogCoorddEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFogCoordd", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FogCoorddEXT) {
-        void **procp = (void **) &disp->FogCoorddEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFogCoorddEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FogCoorddvEXT) {
-        void **procp = (void **) &disp->FogCoorddvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFogCoorddv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FogCoorddvEXT) {
-        void **procp = (void **) &disp->FogCoorddvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFogCoorddvEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FogCoordfEXT) {
-        void **procp = (void **) &disp->FogCoordfEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFogCoordf", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FogCoordfEXT) {
-        void **procp = (void **) &disp->FogCoordfEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFogCoordfEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FogCoordfvEXT) {
-        void **procp = (void **) &disp->FogCoordfvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFogCoordfv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FogCoordfvEXT) {
-        void **procp = (void **) &disp->FogCoordfvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFogCoordfvEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PixelTexGenSGIX) {
-        void **procp = (void **) &disp->PixelTexGenSGIX;
-
-        snprintf(symboln, sizeof(symboln), "%sPixelTexGenSGIX", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendFuncSeparateEXT) {
-        void **procp = (void **) &disp->BlendFuncSeparateEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendFuncSeparate",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendFuncSeparateEXT) {
-        void **procp = (void **) &disp->BlendFuncSeparateEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendFuncSeparateEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendFuncSeparateEXT) {
-        void **procp = (void **) &disp->BlendFuncSeparateEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendFuncSeparateINGR",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FlushVertexArrayRangeNV) {
-        void **procp = (void **) &disp->FlushVertexArrayRangeNV;
-
-        snprintf(symboln, sizeof(symboln), "%sFlushVertexArrayRangeNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexArrayRangeNV) {
-        void **procp = (void **) &disp->VertexArrayRangeNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexArrayRangeNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CombinerInputNV) {
-        void **procp = (void **) &disp->CombinerInputNV;
-
-        snprintf(symboln, sizeof(symboln), "%sCombinerInputNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CombinerOutputNV) {
-        void **procp = (void **) &disp->CombinerOutputNV;
-
-        snprintf(symboln, sizeof(symboln), "%sCombinerOutputNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CombinerParameterfNV) {
-        void **procp = (void **) &disp->CombinerParameterfNV;
-
-        snprintf(symboln, sizeof(symboln), "%sCombinerParameterfNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CombinerParameterfvNV) {
-        void **procp = (void **) &disp->CombinerParameterfvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sCombinerParameterfvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CombinerParameteriNV) {
-        void **procp = (void **) &disp->CombinerParameteriNV;
-
-        snprintf(symboln, sizeof(symboln), "%sCombinerParameteriNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CombinerParameterivNV) {
-        void **procp = (void **) &disp->CombinerParameterivNV;
-
-        snprintf(symboln, sizeof(symboln), "%sCombinerParameterivNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FinalCombinerInputNV) {
-        void **procp = (void **) &disp->FinalCombinerInputNV;
-
-        snprintf(symboln, sizeof(symboln), "%sFinalCombinerInputNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetCombinerInputParameterfvNV) {
-        void **procp = (void **) &disp->GetCombinerInputParameterfvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetCombinerInputParameterfvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetCombinerInputParameterivNV) {
-        void **procp = (void **) &disp->GetCombinerInputParameterivNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetCombinerInputParameterivNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetCombinerOutputParameterfvNV) {
-        void **procp = (void **) &disp->GetCombinerOutputParameterfvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetCombinerOutputParameterfvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetCombinerOutputParameterivNV) {
-        void **procp = (void **) &disp->GetCombinerOutputParameterivNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetCombinerOutputParameterivNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetFinalCombinerInputParameterfvNV) {
-        void **procp = (void **) &disp->GetFinalCombinerInputParameterfvNV;
-
-        snprintf(symboln, sizeof(symboln),
-                 "%sGetFinalCombinerInputParameterfvNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetFinalCombinerInputParameterivNV) {
-        void **procp = (void **) &disp->GetFinalCombinerInputParameterivNV;
-
-        snprintf(symboln, sizeof(symboln),
-                 "%sGetFinalCombinerInputParameterivNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ResizeBuffersMESA) {
-        void **procp = (void **) &disp->ResizeBuffersMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sResizeBuffersMESA",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2dMESA) {
-        void **procp = (void **) &disp->WindowPos2dMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2dMESA) {
-        void **procp = (void **) &disp->WindowPos2dMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2dARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2dMESA) {
-        void **procp = (void **) &disp->WindowPos2dMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2dMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2dvMESA) {
-        void **procp = (void **) &disp->WindowPos2dvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2dvMESA) {
-        void **procp = (void **) &disp->WindowPos2dvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2dvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2dvMESA) {
-        void **procp = (void **) &disp->WindowPos2dvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2dvMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2fMESA) {
-        void **procp = (void **) &disp->WindowPos2fMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2fMESA) {
-        void **procp = (void **) &disp->WindowPos2fMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2fARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2fMESA) {
-        void **procp = (void **) &disp->WindowPos2fMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2fMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2fvMESA) {
-        void **procp = (void **) &disp->WindowPos2fvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2fvMESA) {
-        void **procp = (void **) &disp->WindowPos2fvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2fvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2fvMESA) {
-        void **procp = (void **) &disp->WindowPos2fvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2fvMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2iMESA) {
-        void **procp = (void **) &disp->WindowPos2iMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2iMESA) {
-        void **procp = (void **) &disp->WindowPos2iMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2iARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2iMESA) {
-        void **procp = (void **) &disp->WindowPos2iMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2iMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2ivMESA) {
-        void **procp = (void **) &disp->WindowPos2ivMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2ivMESA) {
-        void **procp = (void **) &disp->WindowPos2ivMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2ivARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2ivMESA) {
-        void **procp = (void **) &disp->WindowPos2ivMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2ivMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2sMESA) {
-        void **procp = (void **) &disp->WindowPos2sMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2sMESA) {
-        void **procp = (void **) &disp->WindowPos2sMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2sARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2sMESA) {
-        void **procp = (void **) &disp->WindowPos2sMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2sMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2svMESA) {
-        void **procp = (void **) &disp->WindowPos2svMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2svMESA) {
-        void **procp = (void **) &disp->WindowPos2svMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2svARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos2svMESA) {
-        void **procp = (void **) &disp->WindowPos2svMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos2svMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3dMESA) {
-        void **procp = (void **) &disp->WindowPos3dMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3d", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3dMESA) {
-        void **procp = (void **) &disp->WindowPos3dMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3dARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3dMESA) {
-        void **procp = (void **) &disp->WindowPos3dMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3dMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3dvMESA) {
-        void **procp = (void **) &disp->WindowPos3dvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3dv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3dvMESA) {
-        void **procp = (void **) &disp->WindowPos3dvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3dvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3dvMESA) {
-        void **procp = (void **) &disp->WindowPos3dvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3dvMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3fMESA) {
-        void **procp = (void **) &disp->WindowPos3fMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3f", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3fMESA) {
-        void **procp = (void **) &disp->WindowPos3fMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3fARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3fMESA) {
-        void **procp = (void **) &disp->WindowPos3fMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3fMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3fvMESA) {
-        void **procp = (void **) &disp->WindowPos3fvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3fv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3fvMESA) {
-        void **procp = (void **) &disp->WindowPos3fvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3fvARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3fvMESA) {
-        void **procp = (void **) &disp->WindowPos3fvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3fvMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3iMESA) {
-        void **procp = (void **) &disp->WindowPos3iMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3iMESA) {
-        void **procp = (void **) &disp->WindowPos3iMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3iARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3iMESA) {
-        void **procp = (void **) &disp->WindowPos3iMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3iMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3ivMESA) {
-        void **procp = (void **) &disp->WindowPos3ivMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3ivMESA) {
-        void **procp = (void **) &disp->WindowPos3ivMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3ivARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3ivMESA) {
-        void **procp = (void **) &disp->WindowPos3ivMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3ivMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3sMESA) {
-        void **procp = (void **) &disp->WindowPos3sMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3s", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3sMESA) {
-        void **procp = (void **) &disp->WindowPos3sMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3sARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3sMESA) {
-        void **procp = (void **) &disp->WindowPos3sMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3sMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3svMESA) {
-        void **procp = (void **) &disp->WindowPos3svMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3svMESA) {
-        void **procp = (void **) &disp->WindowPos3svMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3svARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos3svMESA) {
-        void **procp = (void **) &disp->WindowPos3svMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos3svMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos4dMESA) {
-        void **procp = (void **) &disp->WindowPos4dMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos4dMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos4dvMESA) {
-        void **procp = (void **) &disp->WindowPos4dvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos4dvMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos4fMESA) {
-        void **procp = (void **) &disp->WindowPos4fMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos4fMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos4fvMESA) {
-        void **procp = (void **) &disp->WindowPos4fvMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos4fvMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos4iMESA) {
-        void **procp = (void **) &disp->WindowPos4iMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos4iMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos4ivMESA) {
-        void **procp = (void **) &disp->WindowPos4ivMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos4ivMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos4sMESA) {
-        void **procp = (void **) &disp->WindowPos4sMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos4sMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->WindowPos4svMESA) {
-        void **procp = (void **) &disp->WindowPos4svMESA;
-
-        snprintf(symboln, sizeof(symboln), "%sWindowPos4svMESA", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiModeDrawArraysIBM) {
-        void **procp = (void **) &disp->MultiModeDrawArraysIBM;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiModeDrawArraysIBM",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->MultiModeDrawElementsIBM) {
-        void **procp = (void **) &disp->MultiModeDrawElementsIBM;
-
-        snprintf(symboln, sizeof(symboln), "%sMultiModeDrawElementsIBM",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteFencesNV) {
-        void **procp = (void **) &disp->DeleteFencesNV;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteFencesNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FinishFenceNV) {
-        void **procp = (void **) &disp->FinishFenceNV;
-
-        snprintf(symboln, sizeof(symboln), "%sFinishFenceNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenFencesNV) {
-        void **procp = (void **) &disp->GenFencesNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGenFencesNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetFenceivNV) {
-        void **procp = (void **) &disp->GetFenceivNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetFenceivNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsFenceNV) {
-        void **procp = (void **) &disp->IsFenceNV;
-
-        snprintf(symboln, sizeof(symboln), "%sIsFenceNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SetFenceNV) {
-        void **procp = (void **) &disp->SetFenceNV;
-
-        snprintf(symboln, sizeof(symboln), "%sSetFenceNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TestFenceNV) {
-        void **procp = (void **) &disp->TestFenceNV;
-
-        snprintf(symboln, sizeof(symboln), "%sTestFenceNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->AreProgramsResidentNV) {
-        void **procp = (void **) &disp->AreProgramsResidentNV;
-
-        snprintf(symboln, sizeof(symboln), "%sAreProgramsResidentNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindProgramNV) {
-        void **procp = (void **) &disp->BindProgramNV;
-
-        snprintf(symboln, sizeof(symboln), "%sBindProgramARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindProgramNV) {
-        void **procp = (void **) &disp->BindProgramNV;
-
-        snprintf(symboln, sizeof(symboln), "%sBindProgramNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteProgramsNV) {
-        void **procp = (void **) &disp->DeleteProgramsNV;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteProgramsARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteProgramsNV) {
-        void **procp = (void **) &disp->DeleteProgramsNV;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteProgramsNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ExecuteProgramNV) {
-        void **procp = (void **) &disp->ExecuteProgramNV;
-
-        snprintf(symboln, sizeof(symboln), "%sExecuteProgramNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenProgramsNV) {
-        void **procp = (void **) &disp->GenProgramsNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGenProgramsARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenProgramsNV) {
-        void **procp = (void **) &disp->GenProgramsNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGenProgramsNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramParameterdvNV) {
-        void **procp = (void **) &disp->GetProgramParameterdvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramParameterdvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramParameterfvNV) {
-        void **procp = (void **) &disp->GetProgramParameterfvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramParameterfvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramStringNV) {
-        void **procp = (void **) &disp->GetProgramStringNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramStringNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramivNV) {
-        void **procp = (void **) &disp->GetProgramivNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramivNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTrackMatrixivNV) {
-        void **procp = (void **) &disp->GetTrackMatrixivNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTrackMatrixivNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribPointervNV) {
-        void **procp = (void **) &disp->GetVertexAttribPointervNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribPointerv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribPointervNV) {
-        void **procp = (void **) &disp->GetVertexAttribPointervNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribPointervARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribPointervNV) {
-        void **procp = (void **) &disp->GetVertexAttribPointervNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribPointervNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribdvNV) {
-        void **procp = (void **) &disp->GetVertexAttribdvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribdvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribfvNV) {
-        void **procp = (void **) &disp->GetVertexAttribfvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribfvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribivNV) {
-        void **procp = (void **) &disp->GetVertexAttribivNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribivNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsProgramNV) {
-        void **procp = (void **) &disp->IsProgramNV;
-
-        snprintf(symboln, sizeof(symboln), "%sIsProgramARB", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsProgramNV) {
-        void **procp = (void **) &disp->IsProgramNV;
-
-        snprintf(symboln, sizeof(symboln), "%sIsProgramNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->LoadProgramNV) {
-        void **procp = (void **) &disp->LoadProgramNV;
-
-        snprintf(symboln, sizeof(symboln), "%sLoadProgramNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramParameters4dvNV) {
-        void **procp = (void **) &disp->ProgramParameters4dvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramParameters4dvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramParameters4fvNV) {
-        void **procp = (void **) &disp->ProgramParameters4fvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramParameters4fvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RequestResidentProgramsNV) {
-        void **procp = (void **) &disp->RequestResidentProgramsNV;
-
-        snprintf(symboln, sizeof(symboln), "%sRequestResidentProgramsNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TrackMatrixNV) {
-        void **procp = (void **) &disp->TrackMatrixNV;
-
-        snprintf(symboln, sizeof(symboln), "%sTrackMatrixNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1dNV) {
-        void **procp = (void **) &disp->VertexAttrib1dNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1dNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1dvNV) {
-        void **procp = (void **) &disp->VertexAttrib1dvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1dvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1fNV) {
-        void **procp = (void **) &disp->VertexAttrib1fNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1fNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1fvNV) {
-        void **procp = (void **) &disp->VertexAttrib1fvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1fvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1sNV) {
-        void **procp = (void **) &disp->VertexAttrib1sNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1sNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib1svNV) {
-        void **procp = (void **) &disp->VertexAttrib1svNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib1svNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2dNV) {
-        void **procp = (void **) &disp->VertexAttrib2dNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2dNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2dvNV) {
-        void **procp = (void **) &disp->VertexAttrib2dvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2dvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2fNV) {
-        void **procp = (void **) &disp->VertexAttrib2fNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2fNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2fvNV) {
-        void **procp = (void **) &disp->VertexAttrib2fvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2fvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2sNV) {
-        void **procp = (void **) &disp->VertexAttrib2sNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2sNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib2svNV) {
-        void **procp = (void **) &disp->VertexAttrib2svNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib2svNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3dNV) {
-        void **procp = (void **) &disp->VertexAttrib3dNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3dNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3dvNV) {
-        void **procp = (void **) &disp->VertexAttrib3dvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3dvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3fNV) {
-        void **procp = (void **) &disp->VertexAttrib3fNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3fNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3fvNV) {
-        void **procp = (void **) &disp->VertexAttrib3fvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3fvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3sNV) {
-        void **procp = (void **) &disp->VertexAttrib3sNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3sNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib3svNV) {
-        void **procp = (void **) &disp->VertexAttrib3svNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib3svNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4dNV) {
-        void **procp = (void **) &disp->VertexAttrib4dNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4dNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4dvNV) {
-        void **procp = (void **) &disp->VertexAttrib4dvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4dvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4fNV) {
-        void **procp = (void **) &disp->VertexAttrib4fNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4fNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4fvNV) {
-        void **procp = (void **) &disp->VertexAttrib4fvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4fvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4sNV) {
-        void **procp = (void **) &disp->VertexAttrib4sNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4sNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4svNV) {
-        void **procp = (void **) &disp->VertexAttrib4svNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4svNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4ubNV) {
-        void **procp = (void **) &disp->VertexAttrib4ubNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4ubNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttrib4ubvNV) {
-        void **procp = (void **) &disp->VertexAttrib4ubvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttrib4ubvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribPointerNV) {
-        void **procp = (void **) &disp->VertexAttribPointerNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribPointerNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs1dvNV) {
-        void **procp = (void **) &disp->VertexAttribs1dvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs1dvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs1fvNV) {
-        void **procp = (void **) &disp->VertexAttribs1fvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs1fvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs1svNV) {
-        void **procp = (void **) &disp->VertexAttribs1svNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs1svNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs2dvNV) {
-        void **procp = (void **) &disp->VertexAttribs2dvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs2dvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs2fvNV) {
-        void **procp = (void **) &disp->VertexAttribs2fvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs2fvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs2svNV) {
-        void **procp = (void **) &disp->VertexAttribs2svNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs2svNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs3dvNV) {
-        void **procp = (void **) &disp->VertexAttribs3dvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs3dvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs3fvNV) {
-        void **procp = (void **) &disp->VertexAttribs3fvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs3fvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs3svNV) {
-        void **procp = (void **) &disp->VertexAttribs3svNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs3svNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs4dvNV) {
-        void **procp = (void **) &disp->VertexAttribs4dvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs4dvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs4fvNV) {
-        void **procp = (void **) &disp->VertexAttribs4fvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs4fvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs4svNV) {
-        void **procp = (void **) &disp->VertexAttribs4svNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs4svNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribs4ubvNV) {
-        void **procp = (void **) &disp->VertexAttribs4ubvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribs4ubvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexBumpParameterfvATI) {
-        void **procp = (void **) &disp->GetTexBumpParameterfvATI;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexBumpParameterfvATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexBumpParameterivATI) {
-        void **procp = (void **) &disp->GetTexBumpParameterivATI;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexBumpParameterivATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexBumpParameterfvATI) {
-        void **procp = (void **) &disp->TexBumpParameterfvATI;
-
-        snprintf(symboln, sizeof(symboln), "%sTexBumpParameterfvATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexBumpParameterivATI) {
-        void **procp = (void **) &disp->TexBumpParameterivATI;
-
-        snprintf(symboln, sizeof(symboln), "%sTexBumpParameterivATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->AlphaFragmentOp1ATI) {
-        void **procp = (void **) &disp->AlphaFragmentOp1ATI;
-
-        snprintf(symboln, sizeof(symboln), "%sAlphaFragmentOp1ATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->AlphaFragmentOp2ATI) {
-        void **procp = (void **) &disp->AlphaFragmentOp2ATI;
-
-        snprintf(symboln, sizeof(symboln), "%sAlphaFragmentOp2ATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->AlphaFragmentOp3ATI) {
-        void **procp = (void **) &disp->AlphaFragmentOp3ATI;
-
-        snprintf(symboln, sizeof(symboln), "%sAlphaFragmentOp3ATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BeginFragmentShaderATI) {
-        void **procp = (void **) &disp->BeginFragmentShaderATI;
-
-        snprintf(symboln, sizeof(symboln), "%sBeginFragmentShaderATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindFragmentShaderATI) {
-        void **procp = (void **) &disp->BindFragmentShaderATI;
-
-        snprintf(symboln, sizeof(symboln), "%sBindFragmentShaderATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorFragmentOp1ATI) {
-        void **procp = (void **) &disp->ColorFragmentOp1ATI;
-
-        snprintf(symboln, sizeof(symboln), "%sColorFragmentOp1ATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorFragmentOp2ATI) {
-        void **procp = (void **) &disp->ColorFragmentOp2ATI;
-
-        snprintf(symboln, sizeof(symboln), "%sColorFragmentOp2ATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorFragmentOp3ATI) {
-        void **procp = (void **) &disp->ColorFragmentOp3ATI;
-
-        snprintf(symboln, sizeof(symboln), "%sColorFragmentOp3ATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteFragmentShaderATI) {
-        void **procp = (void **) &disp->DeleteFragmentShaderATI;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteFragmentShaderATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EndFragmentShaderATI) {
-        void **procp = (void **) &disp->EndFragmentShaderATI;
-
-        snprintf(symboln, sizeof(symboln), "%sEndFragmentShaderATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenFragmentShadersATI) {
-        void **procp = (void **) &disp->GenFragmentShadersATI;
-
-        snprintf(symboln, sizeof(symboln), "%sGenFragmentShadersATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PassTexCoordATI) {
-        void **procp = (void **) &disp->PassTexCoordATI;
-
-        snprintf(symboln, sizeof(symboln), "%sPassTexCoordATI", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SampleMapATI) {
-        void **procp = (void **) &disp->SampleMapATI;
-
-        snprintf(symboln, sizeof(symboln), "%sSampleMapATI", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->SetFragmentShaderConstantATI) {
-        void **procp = (void **) &disp->SetFragmentShaderConstantATI;
-
-        snprintf(symboln, sizeof(symboln), "%sSetFragmentShaderConstantATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointParameteriNV) {
-        void **procp = (void **) &disp->PointParameteriNV;
-
-        snprintf(symboln, sizeof(symboln), "%sPointParameteri", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointParameteriNV) {
-        void **procp = (void **) &disp->PointParameteriNV;
-
-        snprintf(symboln, sizeof(symboln), "%sPointParameteriNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointParameterivNV) {
-        void **procp = (void **) &disp->PointParameterivNV;
-
-        snprintf(symboln, sizeof(symboln), "%sPointParameteriv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PointParameterivNV) {
-        void **procp = (void **) &disp->PointParameterivNV;
-
-        snprintf(symboln, sizeof(symboln), "%sPointParameterivNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ActiveStencilFaceEXT) {
-        void **procp = (void **) &disp->ActiveStencilFaceEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sActiveStencilFaceEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindVertexArrayAPPLE) {
-        void **procp = (void **) &disp->BindVertexArrayAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sBindVertexArrayAPPLE",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteVertexArraysAPPLE) {
-        void **procp = (void **) &disp->DeleteVertexArraysAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteVertexArrays",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteVertexArraysAPPLE) {
-        void **procp = (void **) &disp->DeleteVertexArraysAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteVertexArraysAPPLE",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenVertexArraysAPPLE) {
-        void **procp = (void **) &disp->GenVertexArraysAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sGenVertexArraysAPPLE",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsVertexArrayAPPLE) {
-        void **procp = (void **) &disp->IsVertexArrayAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sIsVertexArray", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsVertexArrayAPPLE) {
-        void **procp = (void **) &disp->IsVertexArrayAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sIsVertexArrayAPPLE",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramNamedParameterdvNV) {
-        void **procp = (void **) &disp->GetProgramNamedParameterdvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramNamedParameterdvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetProgramNamedParameterfvNV) {
-        void **procp = (void **) &disp->GetProgramNamedParameterfvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sGetProgramNamedParameterfvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramNamedParameter4dNV) {
-        void **procp = (void **) &disp->ProgramNamedParameter4dNV;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramNamedParameter4dNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramNamedParameter4dvNV) {
-        void **procp = (void **) &disp->ProgramNamedParameter4dvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramNamedParameter4dvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramNamedParameter4fNV) {
-        void **procp = (void **) &disp->ProgramNamedParameter4fNV;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramNamedParameter4fNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramNamedParameter4fvNV) {
-        void **procp = (void **) &disp->ProgramNamedParameter4fvNV;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramNamedParameter4fvNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PrimitiveRestartIndexNV) {
-        void **procp = (void **) &disp->PrimitiveRestartIndexNV;
-
-        snprintf(symboln, sizeof(symboln), "%sPrimitiveRestartIndexNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PrimitiveRestartIndexNV) {
-        void **procp = (void **) &disp->PrimitiveRestartIndexNV;
-
-        snprintf(symboln, sizeof(symboln), "%sPrimitiveRestartIndex",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->PrimitiveRestartNV) {
-        void **procp = (void **) &disp->PrimitiveRestartNV;
-
-        snprintf(symboln, sizeof(symboln), "%sPrimitiveRestartNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DepthBoundsEXT) {
-        void **procp = (void **) &disp->DepthBoundsEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sDepthBoundsEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendEquationSeparateEXT) {
-        void **procp = (void **) &disp->BlendEquationSeparateEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendEquationSeparate",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendEquationSeparateEXT) {
-        void **procp = (void **) &disp->BlendEquationSeparateEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendEquationSeparateEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlendEquationSeparateEXT) {
-        void **procp = (void **) &disp->BlendEquationSeparateEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBlendEquationSeparateATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindFramebufferEXT) {
-        void **procp = (void **) &disp->BindFramebufferEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBindFramebuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindFramebufferEXT) {
-        void **procp = (void **) &disp->BindFramebufferEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBindFramebufferEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindRenderbufferEXT) {
-        void **procp = (void **) &disp->BindRenderbufferEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBindRenderbuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindRenderbufferEXT) {
-        void **procp = (void **) &disp->BindRenderbufferEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBindRenderbufferEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CheckFramebufferStatusEXT) {
-        void **procp = (void **) &disp->CheckFramebufferStatusEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sCheckFramebufferStatus",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CheckFramebufferStatusEXT) {
-        void **procp = (void **) &disp->CheckFramebufferStatusEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sCheckFramebufferStatusEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteFramebuffersEXT) {
-        void **procp = (void **) &disp->DeleteFramebuffersEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteFramebuffers",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteFramebuffersEXT) {
-        void **procp = (void **) &disp->DeleteFramebuffersEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteFramebuffersEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteRenderbuffersEXT) {
-        void **procp = (void **) &disp->DeleteRenderbuffersEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteRenderbuffers",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DeleteRenderbuffersEXT) {
-        void **procp = (void **) &disp->DeleteRenderbuffersEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sDeleteRenderbuffersEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferRenderbufferEXT) {
-        void **procp = (void **) &disp->FramebufferRenderbufferEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferRenderbuffer",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferRenderbufferEXT) {
-        void **procp = (void **) &disp->FramebufferRenderbufferEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferRenderbufferEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferTexture1DEXT) {
-        void **procp = (void **) &disp->FramebufferTexture1DEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferTexture1D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferTexture1DEXT) {
-        void **procp = (void **) &disp->FramebufferTexture1DEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferTexture1DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferTexture2DEXT) {
-        void **procp = (void **) &disp->FramebufferTexture2DEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferTexture2D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferTexture2DEXT) {
-        void **procp = (void **) &disp->FramebufferTexture2DEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferTexture2DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferTexture3DEXT) {
-        void **procp = (void **) &disp->FramebufferTexture3DEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferTexture3D",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferTexture3DEXT) {
-        void **procp = (void **) &disp->FramebufferTexture3DEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferTexture3DEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenFramebuffersEXT) {
-        void **procp = (void **) &disp->GenFramebuffersEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGenFramebuffers", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenFramebuffersEXT) {
-        void **procp = (void **) &disp->GenFramebuffersEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGenFramebuffersEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenRenderbuffersEXT) {
-        void **procp = (void **) &disp->GenRenderbuffersEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGenRenderbuffers", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenRenderbuffersEXT) {
-        void **procp = (void **) &disp->GenRenderbuffersEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGenRenderbuffersEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenerateMipmapEXT) {
-        void **procp = (void **) &disp->GenerateMipmapEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGenerateMipmap", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GenerateMipmapEXT) {
-        void **procp = (void **) &disp->GenerateMipmapEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGenerateMipmapEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetFramebufferAttachmentParameterivEXT) {
-        void **procp = (void **) &disp->GetFramebufferAttachmentParameterivEXT;
-
-        snprintf(symboln, sizeof(symboln),
-                 "%sGetFramebufferAttachmentParameteriv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetFramebufferAttachmentParameterivEXT) {
-        void **procp = (void **) &disp->GetFramebufferAttachmentParameterivEXT;
-
-        snprintf(symboln, sizeof(symboln),
-                 "%sGetFramebufferAttachmentParameterivEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetRenderbufferParameterivEXT) {
-        void **procp = (void **) &disp->GetRenderbufferParameterivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetRenderbufferParameteriv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetRenderbufferParameterivEXT) {
-        void **procp = (void **) &disp->GetRenderbufferParameterivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetRenderbufferParameterivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsFramebufferEXT) {
-        void **procp = (void **) &disp->IsFramebufferEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sIsFramebuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsFramebufferEXT) {
-        void **procp = (void **) &disp->IsFramebufferEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sIsFramebufferEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsRenderbufferEXT) {
-        void **procp = (void **) &disp->IsRenderbufferEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sIsRenderbuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsRenderbufferEXT) {
-        void **procp = (void **) &disp->IsRenderbufferEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sIsRenderbufferEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RenderbufferStorageEXT) {
-        void **procp = (void **) &disp->RenderbufferStorageEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sRenderbufferStorage",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->RenderbufferStorageEXT) {
-        void **procp = (void **) &disp->RenderbufferStorageEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sRenderbufferStorageEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlitFramebufferEXT) {
-        void **procp = (void **) &disp->BlitFramebufferEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBlitFramebuffer", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BlitFramebufferEXT) {
-        void **procp = (void **) &disp->BlitFramebufferEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBlitFramebufferEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BufferParameteriAPPLE) {
-        void **procp = (void **) &disp->BufferParameteriAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sBufferParameteriAPPLE",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FlushMappedBufferRangeAPPLE) {
-        void **procp = (void **) &disp->FlushMappedBufferRangeAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sFlushMappedBufferRangeAPPLE",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindFragDataLocationEXT) {
-        void **procp = (void **) &disp->BindFragDataLocationEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBindFragDataLocationEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindFragDataLocationEXT) {
-        void **procp = (void **) &disp->BindFragDataLocationEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBindFragDataLocation",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetFragDataLocationEXT) {
-        void **procp = (void **) &disp->GetFragDataLocationEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetFragDataLocationEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetFragDataLocationEXT) {
-        void **procp = (void **) &disp->GetFragDataLocationEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetFragDataLocation",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetUniformuivEXT) {
-        void **procp = (void **) &disp->GetUniformuivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetUniformuivEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetUniformuivEXT) {
-        void **procp = (void **) &disp->GetUniformuivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetUniformuiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribIivEXT) {
-        void **procp = (void **) &disp->GetVertexAttribIivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribIivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribIivEXT) {
-        void **procp = (void **) &disp->GetVertexAttribIivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribIiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribIuivEXT) {
-        void **procp = (void **) &disp->GetVertexAttribIuivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribIuivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetVertexAttribIuivEXT) {
-        void **procp = (void **) &disp->GetVertexAttribIuivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetVertexAttribIuiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform1uiEXT) {
-        void **procp = (void **) &disp->Uniform1uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform1uiEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform1uiEXT) {
-        void **procp = (void **) &disp->Uniform1uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform1ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform1uivEXT) {
-        void **procp = (void **) &disp->Uniform1uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform1uivEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform1uivEXT) {
-        void **procp = (void **) &disp->Uniform1uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform1uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform2uiEXT) {
-        void **procp = (void **) &disp->Uniform2uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform2uiEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform2uiEXT) {
-        void **procp = (void **) &disp->Uniform2uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform2ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform2uivEXT) {
-        void **procp = (void **) &disp->Uniform2uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform2uivEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform2uivEXT) {
-        void **procp = (void **) &disp->Uniform2uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform2uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform3uiEXT) {
-        void **procp = (void **) &disp->Uniform3uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform3uiEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform3uiEXT) {
-        void **procp = (void **) &disp->Uniform3uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform3ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform3uivEXT) {
-        void **procp = (void **) &disp->Uniform3uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform3uivEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform3uivEXT) {
-        void **procp = (void **) &disp->Uniform3uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform3uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform4uiEXT) {
-        void **procp = (void **) &disp->Uniform4uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform4uiEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform4uiEXT) {
-        void **procp = (void **) &disp->Uniform4uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform4ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform4uivEXT) {
-        void **procp = (void **) &disp->Uniform4uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform4uivEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->Uniform4uivEXT) {
-        void **procp = (void **) &disp->Uniform4uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUniform4uiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI1iEXT) {
-        void **procp = (void **) &disp->VertexAttribI1iEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI1iEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI1iEXT) {
-        void **procp = (void **) &disp->VertexAttribI1iEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI1i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI1ivEXT) {
-        void **procp = (void **) &disp->VertexAttribI1ivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI1ivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI1ivEXT) {
-        void **procp = (void **) &disp->VertexAttribI1ivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI1iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI1uiEXT) {
-        void **procp = (void **) &disp->VertexAttribI1uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI1uiEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI1uiEXT) {
-        void **procp = (void **) &disp->VertexAttribI1uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI1ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI1uivEXT) {
-        void **procp = (void **) &disp->VertexAttribI1uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI1uivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI1uivEXT) {
-        void **procp = (void **) &disp->VertexAttribI1uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI1uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI2iEXT) {
-        void **procp = (void **) &disp->VertexAttribI2iEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI2iEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI2iEXT) {
-        void **procp = (void **) &disp->VertexAttribI2iEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI2i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI2ivEXT) {
-        void **procp = (void **) &disp->VertexAttribI2ivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI2ivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI2ivEXT) {
-        void **procp = (void **) &disp->VertexAttribI2ivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI2iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI2uiEXT) {
-        void **procp = (void **) &disp->VertexAttribI2uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI2uiEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI2uiEXT) {
-        void **procp = (void **) &disp->VertexAttribI2uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI2ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI2uivEXT) {
-        void **procp = (void **) &disp->VertexAttribI2uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI2uivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI2uivEXT) {
-        void **procp = (void **) &disp->VertexAttribI2uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI2uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI3iEXT) {
-        void **procp = (void **) &disp->VertexAttribI3iEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI3iEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI3iEXT) {
-        void **procp = (void **) &disp->VertexAttribI3iEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI3i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI3ivEXT) {
-        void **procp = (void **) &disp->VertexAttribI3ivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI3ivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI3ivEXT) {
-        void **procp = (void **) &disp->VertexAttribI3ivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI3iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI3uiEXT) {
-        void **procp = (void **) &disp->VertexAttribI3uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI3uiEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI3uiEXT) {
-        void **procp = (void **) &disp->VertexAttribI3uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI3ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI3uivEXT) {
-        void **procp = (void **) &disp->VertexAttribI3uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI3uivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI3uivEXT) {
-        void **procp = (void **) &disp->VertexAttribI3uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI3uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4bvEXT) {
-        void **procp = (void **) &disp->VertexAttribI4bvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4bvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4bvEXT) {
-        void **procp = (void **) &disp->VertexAttribI4bvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4bv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4iEXT) {
-        void **procp = (void **) &disp->VertexAttribI4iEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4iEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4iEXT) {
-        void **procp = (void **) &disp->VertexAttribI4iEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4i", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4ivEXT) {
-        void **procp = (void **) &disp->VertexAttribI4ivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4ivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4ivEXT) {
-        void **procp = (void **) &disp->VertexAttribI4ivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4iv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4svEXT) {
-        void **procp = (void **) &disp->VertexAttribI4svEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4svEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4svEXT) {
-        void **procp = (void **) &disp->VertexAttribI4svEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4sv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4ubvEXT) {
-        void **procp = (void **) &disp->VertexAttribI4ubvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4ubvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4ubvEXT) {
-        void **procp = (void **) &disp->VertexAttribI4ubvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4ubv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4uiEXT) {
-        void **procp = (void **) &disp->VertexAttribI4uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4uiEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4uiEXT) {
-        void **procp = (void **) &disp->VertexAttribI4uiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4ui", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4uivEXT) {
-        void **procp = (void **) &disp->VertexAttribI4uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4uivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4uivEXT) {
-        void **procp = (void **) &disp->VertexAttribI4uivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4uiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4usvEXT) {
-        void **procp = (void **) &disp->VertexAttribI4usvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4usvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribI4usvEXT) {
-        void **procp = (void **) &disp->VertexAttribI4usvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribI4usv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribIPointerEXT) {
-        void **procp = (void **) &disp->VertexAttribIPointerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribIPointerEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->VertexAttribIPointerEXT) {
-        void **procp = (void **) &disp->VertexAttribIPointerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sVertexAttribIPointer",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferTextureLayerEXT) {
-        void **procp = (void **) &disp->FramebufferTextureLayerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferTextureLayer",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferTextureLayerEXT) {
-        void **procp = (void **) &disp->FramebufferTextureLayerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferTextureLayerARB",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->FramebufferTextureLayerEXT) {
-        void **procp = (void **) &disp->FramebufferTextureLayerEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sFramebufferTextureLayerEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorMaskIndexedEXT) {
-        void **procp = (void **) &disp->ColorMaskIndexedEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sColorMaskIndexedEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ColorMaskIndexedEXT) {
-        void **procp = (void **) &disp->ColorMaskIndexedEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sColorMaski", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DisableIndexedEXT) {
-        void **procp = (void **) &disp->DisableIndexedEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sDisableIndexedEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->DisableIndexedEXT) {
-        void **procp = (void **) &disp->DisableIndexedEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sDisablei", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EnableIndexedEXT) {
-        void **procp = (void **) &disp->EnableIndexedEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sEnableIndexedEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EnableIndexedEXT) {
-        void **procp = (void **) &disp->EnableIndexedEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sEnablei", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetBooleanIndexedvEXT) {
-        void **procp = (void **) &disp->GetBooleanIndexedvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetBooleanIndexedvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetBooleanIndexedvEXT) {
-        void **procp = (void **) &disp->GetBooleanIndexedvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetBooleani_v", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetIntegerIndexedvEXT) {
-        void **procp = (void **) &disp->GetIntegerIndexedvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetIntegerIndexedvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetIntegerIndexedvEXT) {
-        void **procp = (void **) &disp->GetIntegerIndexedvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetIntegeri_v", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsEnabledIndexedEXT) {
-        void **procp = (void **) &disp->IsEnabledIndexedEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sIsEnabledIndexedEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->IsEnabledIndexedEXT) {
-        void **procp = (void **) &disp->IsEnabledIndexedEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sIsEnabledi", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClearColorIiEXT) {
-        void **procp = (void **) &disp->ClearColorIiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sClearColorIiEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ClearColorIuiEXT) {
-        void **procp = (void **) &disp->ClearColorIuiEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sClearColorIuiEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexParameterIivEXT) {
-        void **procp = (void **) &disp->GetTexParameterIivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexParameterIivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexParameterIivEXT) {
-        void **procp = (void **) &disp->GetTexParameterIivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexParameterIiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexParameterIuivEXT) {
-        void **procp = (void **) &disp->GetTexParameterIuivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexParameterIuivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexParameterIuivEXT) {
-        void **procp = (void **) &disp->GetTexParameterIuivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexParameterIuiv",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexParameterIivEXT) {
-        void **procp = (void **) &disp->TexParameterIivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sTexParameterIivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexParameterIivEXT) {
-        void **procp = (void **) &disp->TexParameterIivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sTexParameterIiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexParameterIuivEXT) {
-        void **procp = (void **) &disp->TexParameterIuivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sTexParameterIuivEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TexParameterIuivEXT) {
-        void **procp = (void **) &disp->TexParameterIuivEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sTexParameterIuiv", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BeginConditionalRenderNV) {
-        void **procp = (void **) &disp->BeginConditionalRenderNV;
-
-        snprintf(symboln, sizeof(symboln), "%sBeginConditionalRenderNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BeginConditionalRenderNV) {
-        void **procp = (void **) &disp->BeginConditionalRenderNV;
-
-        snprintf(symboln, sizeof(symboln), "%sBeginConditionalRender",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EndConditionalRenderNV) {
-        void **procp = (void **) &disp->EndConditionalRenderNV;
-
-        snprintf(symboln, sizeof(symboln), "%sEndConditionalRenderNV",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EndConditionalRenderNV) {
-        void **procp = (void **) &disp->EndConditionalRenderNV;
-
-        snprintf(symboln, sizeof(symboln), "%sEndConditionalRender",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BeginTransformFeedbackEXT) {
-        void **procp = (void **) &disp->BeginTransformFeedbackEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBeginTransformFeedbackEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BeginTransformFeedbackEXT) {
-        void **procp = (void **) &disp->BeginTransformFeedbackEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBeginTransformFeedback",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindBufferBaseEXT) {
-        void **procp = (void **) &disp->BindBufferBaseEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBindBufferBaseEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindBufferBaseEXT) {
-        void **procp = (void **) &disp->BindBufferBaseEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBindBufferBase", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindBufferOffsetEXT) {
-        void **procp = (void **) &disp->BindBufferOffsetEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBindBufferOffsetEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindBufferRangeEXT) {
-        void **procp = (void **) &disp->BindBufferRangeEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBindBufferRangeEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->BindBufferRangeEXT) {
-        void **procp = (void **) &disp->BindBufferRangeEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sBindBufferRange", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EndTransformFeedbackEXT) {
-        void **procp = (void **) &disp->EndTransformFeedbackEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sEndTransformFeedbackEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EndTransformFeedbackEXT) {
-        void **procp = (void **) &disp->EndTransformFeedbackEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sEndTransformFeedback",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTransformFeedbackVaryingEXT) {
-        void **procp = (void **) &disp->GetTransformFeedbackVaryingEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTransformFeedbackVaryingEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTransformFeedbackVaryingEXT) {
-        void **procp = (void **) &disp->GetTransformFeedbackVaryingEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTransformFeedbackVarying",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TransformFeedbackVaryingsEXT) {
-        void **procp = (void **) &disp->TransformFeedbackVaryingsEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sTransformFeedbackVaryingsEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TransformFeedbackVaryingsEXT) {
-        void **procp = (void **) &disp->TransformFeedbackVaryingsEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sTransformFeedbackVaryings",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProvokingVertexEXT) {
-        void **procp = (void **) &disp->ProvokingVertexEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sProvokingVertexEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProvokingVertexEXT) {
-        void **procp = (void **) &disp->ProvokingVertexEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sProvokingVertex", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetTexParameterPointervAPPLE) {
-        void **procp = (void **) &disp->GetTexParameterPointervAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sGetTexParameterPointervAPPLE",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TextureRangeAPPLE) {
-        void **procp = (void **) &disp->TextureRangeAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sTextureRangeAPPLE",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetObjectParameterivAPPLE) {
-        void **procp = (void **) &disp->GetObjectParameterivAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sGetObjectParameterivAPPLE",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ObjectPurgeableAPPLE) {
-        void **procp = (void **) &disp->ObjectPurgeableAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sObjectPurgeableAPPLE",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ObjectUnpurgeableAPPLE) {
-        void **procp = (void **) &disp->ObjectUnpurgeableAPPLE;
-
-        snprintf(symboln, sizeof(symboln), "%sObjectUnpurgeableAPPLE",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ActiveProgramEXT) {
-        void **procp = (void **) &disp->ActiveProgramEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sActiveProgramEXT", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->CreateShaderProgramEXT) {
-        void **procp = (void **) &disp->CreateShaderProgramEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sCreateShaderProgramEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->UseShaderProgramEXT) {
-        void **procp = (void **) &disp->UseShaderProgramEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sUseShaderProgramEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->TextureBarrierNV) {
-        void **procp = (void **) &disp->TextureBarrierNV;
-
-        snprintf(symboln, sizeof(symboln), "%sTextureBarrierNV", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->StencilFuncSeparateATI) {
-        void **procp = (void **) &disp->StencilFuncSeparateATI;
-
-        snprintf(symboln, sizeof(symboln), "%sStencilFuncSeparateATI",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramEnvParameters4fvEXT) {
-        void **procp = (void **) &disp->ProgramEnvParameters4fvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramEnvParameters4fvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->ProgramLocalParameters4fvEXT) {
-        void **procp = (void **) &disp->ProgramLocalParameters4fvEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sProgramLocalParameters4fvEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetQueryObjecti64vEXT) {
-        void **procp = (void **) &disp->GetQueryObjecti64vEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetQueryObjecti64vEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->GetQueryObjectui64vEXT) {
-        void **procp = (void **) &disp->GetQueryObjectui64vEXT;
-
-        snprintf(symboln, sizeof(symboln), "%sGetQueryObjectui64vEXT",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EGLImageTargetRenderbufferStorageOES) {
-        void **procp = (void **) &disp->EGLImageTargetRenderbufferStorageOES;
-
-        snprintf(symboln, sizeof(symboln),
-                 "%sEGLImageTargetRenderbufferStorageOES", symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    if (!disp->EGLImageTargetTexture2DOES) {
-        void **procp = (void **) &disp->EGLImageTargetTexture2DOES;
-
-        snprintf(symboln, sizeof(symboln), "%sEGLImageTargetTexture2DOES",
-                 symbol_prefix);
-        *procp = dlsym(handle, symboln);
-    }
-
-    __glapi_gentable_set_remaining_noop(disp);
-
-    return disp;
-}
diff --git a/glx/glapitable.h b/glx/glapitable.h
deleted file mode 100644
index f7e7c6c..0000000
--- a/glx/glapitable.h
+++ /dev/null
@@ -1,1016 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by gl_table.py (from Mesa) script */
-
-/*
- * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
- * (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
- * BRIAN PAUL, 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( _GLAPI_TABLE_H_ )
-#define _GLAPI_TABLE_H_
-
-#ifndef GLAPIENTRYP
-#ifndef GLAPIENTRY
-#define GLAPIENTRY
-#endif
-
-#define GLAPIENTRYP GLAPIENTRY *
-#endif
-
-struct _glapi_table {
-    void (GLAPIENTRYP NewList) (GLuint list, GLenum mode);      /* 0 */
-    void (GLAPIENTRYP EndList) (void);  /* 1 */
-    void (GLAPIENTRYP CallList) (GLuint list);  /* 2 */
-    void (GLAPIENTRYP CallLists) (GLsizei n, GLenum type, const GLvoid * lists);        /* 3 */
-    void (GLAPIENTRYP DeleteLists) (GLuint list, GLsizei range);        /* 4 */
-     GLuint(GLAPIENTRYP GenLists) (GLsizei range);      /* 5 */
-    void (GLAPIENTRYP ListBase) (GLuint base);  /* 6 */
-    void (GLAPIENTRYP Begin) (GLenum mode);     /* 7 */
-    void (GLAPIENTRYP Bitmap) (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap);      /* 8 */
-    void (GLAPIENTRYP Color3b) (GLbyte red, GLbyte green, GLbyte blue); /* 9 */
-    void (GLAPIENTRYP Color3bv) (const GLbyte * v);     /* 10 */
-    void (GLAPIENTRYP Color3d) (GLdouble red, GLdouble green, GLdouble blue);   /* 11 */
-    void (GLAPIENTRYP Color3dv) (const GLdouble * v);   /* 12 */
-    void (GLAPIENTRYP Color3f) (GLfloat red, GLfloat green, GLfloat blue);      /* 13 */
-    void (GLAPIENTRYP Color3fv) (const GLfloat * v);    /* 14 */
-    void (GLAPIENTRYP Color3i) (GLint red, GLint green, GLint blue);    /* 15 */
-    void (GLAPIENTRYP Color3iv) (const GLint * v);      /* 16 */
-    void (GLAPIENTRYP Color3s) (GLshort red, GLshort green, GLshort blue);      /* 17 */
-    void (GLAPIENTRYP Color3sv) (const GLshort * v);    /* 18 */
-    void (GLAPIENTRYP Color3ub) (GLubyte red, GLubyte green, GLubyte blue);     /* 19 */
-    void (GLAPIENTRYP Color3ubv) (const GLubyte * v);   /* 20 */
-    void (GLAPIENTRYP Color3ui) (GLuint red, GLuint green, GLuint blue);        /* 21 */
-    void (GLAPIENTRYP Color3uiv) (const GLuint * v);    /* 22 */
-    void (GLAPIENTRYP Color3us) (GLushort red, GLushort green, GLushort blue);  /* 23 */
-    void (GLAPIENTRYP Color3usv) (const GLushort * v);  /* 24 */
-    void (GLAPIENTRYP Color4b) (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);   /* 25 */
-    void (GLAPIENTRYP Color4bv) (const GLbyte * v);     /* 26 */
-    void (GLAPIENTRYP Color4d) (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);   /* 27 */
-    void (GLAPIENTRYP Color4dv) (const GLdouble * v);   /* 28 */
-    void (GLAPIENTRYP Color4f) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);       /* 29 */
-    void (GLAPIENTRYP Color4fv) (const GLfloat * v);    /* 30 */
-    void (GLAPIENTRYP Color4i) (GLint red, GLint green, GLint blue, GLint alpha);       /* 31 */
-    void (GLAPIENTRYP Color4iv) (const GLint * v);      /* 32 */
-    void (GLAPIENTRYP Color4s) (GLshort red, GLshort green, GLshort blue, GLshort alpha);       /* 33 */
-    void (GLAPIENTRYP Color4sv) (const GLshort * v);    /* 34 */
-    void (GLAPIENTRYP Color4ub) (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);      /* 35 */
-    void (GLAPIENTRYP Color4ubv) (const GLubyte * v);   /* 36 */
-    void (GLAPIENTRYP Color4ui) (GLuint red, GLuint green, GLuint blue, GLuint alpha);  /* 37 */
-    void (GLAPIENTRYP Color4uiv) (const GLuint * v);    /* 38 */
-    void (GLAPIENTRYP Color4us) (GLushort red, GLushort green, GLushort blue, GLushort alpha);  /* 39 */
-    void (GLAPIENTRYP Color4usv) (const GLushort * v);  /* 40 */
-    void (GLAPIENTRYP EdgeFlag) (GLboolean flag);       /* 41 */
-    void (GLAPIENTRYP EdgeFlagv) (const GLboolean * flag);      /* 42 */
-    void (GLAPIENTRYP End) (void);      /* 43 */
-    void (GLAPIENTRYP Indexd) (GLdouble c);     /* 44 */
-    void (GLAPIENTRYP Indexdv) (const GLdouble * c);    /* 45 */
-    void (GLAPIENTRYP Indexf) (GLfloat c);      /* 46 */
-    void (GLAPIENTRYP Indexfv) (const GLfloat * c);     /* 47 */
-    void (GLAPIENTRYP Indexi) (GLint c);        /* 48 */
-    void (GLAPIENTRYP Indexiv) (const GLint * c);       /* 49 */
-    void (GLAPIENTRYP Indexs) (GLshort c);      /* 50 */
-    void (GLAPIENTRYP Indexsv) (const GLshort * c);     /* 51 */
-    void (GLAPIENTRYP Normal3b) (GLbyte nx, GLbyte ny, GLbyte nz);      /* 52 */
-    void (GLAPIENTRYP Normal3bv) (const GLbyte * v);    /* 53 */
-    void (GLAPIENTRYP Normal3d) (GLdouble nx, GLdouble ny, GLdouble nz);        /* 54 */
-    void (GLAPIENTRYP Normal3dv) (const GLdouble * v);  /* 55 */
-    void (GLAPIENTRYP Normal3f) (GLfloat nx, GLfloat ny, GLfloat nz);   /* 56 */
-    void (GLAPIENTRYP Normal3fv) (const GLfloat * v);   /* 57 */
-    void (GLAPIENTRYP Normal3i) (GLint nx, GLint ny, GLint nz); /* 58 */
-    void (GLAPIENTRYP Normal3iv) (const GLint * v);     /* 59 */
-    void (GLAPIENTRYP Normal3s) (GLshort nx, GLshort ny, GLshort nz);   /* 60 */
-    void (GLAPIENTRYP Normal3sv) (const GLshort * v);   /* 61 */
-    void (GLAPIENTRYP RasterPos2d) (GLdouble x, GLdouble y);    /* 62 */
-    void (GLAPIENTRYP RasterPos2dv) (const GLdouble * v);       /* 63 */
-    void (GLAPIENTRYP RasterPos2f) (GLfloat x, GLfloat y);      /* 64 */
-    void (GLAPIENTRYP RasterPos2fv) (const GLfloat * v);        /* 65 */
-    void (GLAPIENTRYP RasterPos2i) (GLint x, GLint y);  /* 66 */
-    void (GLAPIENTRYP RasterPos2iv) (const GLint * v);  /* 67 */
-    void (GLAPIENTRYP RasterPos2s) (GLshort x, GLshort y);      /* 68 */
-    void (GLAPIENTRYP RasterPos2sv) (const GLshort * v);        /* 69 */
-    void (GLAPIENTRYP RasterPos3d) (GLdouble x, GLdouble y, GLdouble z);        /* 70 */
-    void (GLAPIENTRYP RasterPos3dv) (const GLdouble * v);       /* 71 */
-    void (GLAPIENTRYP RasterPos3f) (GLfloat x, GLfloat y, GLfloat z);   /* 72 */
-    void (GLAPIENTRYP RasterPos3fv) (const GLfloat * v);        /* 73 */
-    void (GLAPIENTRYP RasterPos3i) (GLint x, GLint y, GLint z); /* 74 */
-    void (GLAPIENTRYP RasterPos3iv) (const GLint * v);  /* 75 */
-    void (GLAPIENTRYP RasterPos3s) (GLshort x, GLshort y, GLshort z);   /* 76 */
-    void (GLAPIENTRYP RasterPos3sv) (const GLshort * v);        /* 77 */
-    void (GLAPIENTRYP RasterPos4d) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);    /* 78 */
-    void (GLAPIENTRYP RasterPos4dv) (const GLdouble * v);       /* 79 */
-    void (GLAPIENTRYP RasterPos4f) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);        /* 80 */
-    void (GLAPIENTRYP RasterPos4fv) (const GLfloat * v);        /* 81 */
-    void (GLAPIENTRYP RasterPos4i) (GLint x, GLint y, GLint z, GLint w);        /* 82 */
-    void (GLAPIENTRYP RasterPos4iv) (const GLint * v);  /* 83 */
-    void (GLAPIENTRYP RasterPos4s) (GLshort x, GLshort y, GLshort z, GLshort w);        /* 84 */
-    void (GLAPIENTRYP RasterPos4sv) (const GLshort * v);        /* 85 */
-    void (GLAPIENTRYP Rectd) (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);      /* 86 */
-    void (GLAPIENTRYP Rectdv) (const GLdouble * v1, const GLdouble * v2);       /* 87 */
-    void (GLAPIENTRYP Rectf) (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);  /* 88 */
-    void (GLAPIENTRYP Rectfv) (const GLfloat * v1, const GLfloat * v2); /* 89 */
-    void (GLAPIENTRYP Recti) (GLint x1, GLint y1, GLint x2, GLint y2);  /* 90 */
-    void (GLAPIENTRYP Rectiv) (const GLint * v1, const GLint * v2);     /* 91 */
-    void (GLAPIENTRYP Rects) (GLshort x1, GLshort y1, GLshort x2, GLshort y2);  /* 92 */
-    void (GLAPIENTRYP Rectsv) (const GLshort * v1, const GLshort * v2); /* 93 */
-    void (GLAPIENTRYP TexCoord1d) (GLdouble s); /* 94 */
-    void (GLAPIENTRYP TexCoord1dv) (const GLdouble * v);        /* 95 */
-    void (GLAPIENTRYP TexCoord1f) (GLfloat s);  /* 96 */
-    void (GLAPIENTRYP TexCoord1fv) (const GLfloat * v); /* 97 */
-    void (GLAPIENTRYP TexCoord1i) (GLint s);    /* 98 */
-    void (GLAPIENTRYP TexCoord1iv) (const GLint * v);   /* 99 */
-    void (GLAPIENTRYP TexCoord1s) (GLshort s);  /* 100 */
-    void (GLAPIENTRYP TexCoord1sv) (const GLshort * v); /* 101 */
-    void (GLAPIENTRYP TexCoord2d) (GLdouble s, GLdouble t);     /* 102 */
-    void (GLAPIENTRYP TexCoord2dv) (const GLdouble * v);        /* 103 */
-    void (GLAPIENTRYP TexCoord2f) (GLfloat s, GLfloat t);       /* 104 */
-    void (GLAPIENTRYP TexCoord2fv) (const GLfloat * v); /* 105 */
-    void (GLAPIENTRYP TexCoord2i) (GLint s, GLint t);   /* 106 */
-    void (GLAPIENTRYP TexCoord2iv) (const GLint * v);   /* 107 */
-    void (GLAPIENTRYP TexCoord2s) (GLshort s, GLshort t);       /* 108 */
-    void (GLAPIENTRYP TexCoord2sv) (const GLshort * v); /* 109 */
-    void (GLAPIENTRYP TexCoord3d) (GLdouble s, GLdouble t, GLdouble r); /* 110 */
-    void (GLAPIENTRYP TexCoord3dv) (const GLdouble * v);        /* 111 */
-    void (GLAPIENTRYP TexCoord3f) (GLfloat s, GLfloat t, GLfloat r);    /* 112 */
-    void (GLAPIENTRYP TexCoord3fv) (const GLfloat * v); /* 113 */
-    void (GLAPIENTRYP TexCoord3i) (GLint s, GLint t, GLint r);  /* 114 */
-    void (GLAPIENTRYP TexCoord3iv) (const GLint * v);   /* 115 */
-    void (GLAPIENTRYP TexCoord3s) (GLshort s, GLshort t, GLshort r);    /* 116 */
-    void (GLAPIENTRYP TexCoord3sv) (const GLshort * v); /* 117 */
-    void (GLAPIENTRYP TexCoord4d) (GLdouble s, GLdouble t, GLdouble r, GLdouble q);     /* 118 */
-    void (GLAPIENTRYP TexCoord4dv) (const GLdouble * v);        /* 119 */
-    void (GLAPIENTRYP TexCoord4f) (GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 120 */
-    void (GLAPIENTRYP TexCoord4fv) (const GLfloat * v); /* 121 */
-    void (GLAPIENTRYP TexCoord4i) (GLint s, GLint t, GLint r, GLint q); /* 122 */
-    void (GLAPIENTRYP TexCoord4iv) (const GLint * v);   /* 123 */
-    void (GLAPIENTRYP TexCoord4s) (GLshort s, GLshort t, GLshort r, GLshort q); /* 124 */
-    void (GLAPIENTRYP TexCoord4sv) (const GLshort * v); /* 125 */
-    void (GLAPIENTRYP Vertex2d) (GLdouble x, GLdouble y);       /* 126 */
-    void (GLAPIENTRYP Vertex2dv) (const GLdouble * v);  /* 127 */
-    void (GLAPIENTRYP Vertex2f) (GLfloat x, GLfloat y); /* 128 */
-    void (GLAPIENTRYP Vertex2fv) (const GLfloat * v);   /* 129 */
-    void (GLAPIENTRYP Vertex2i) (GLint x, GLint y);     /* 130 */
-    void (GLAPIENTRYP Vertex2iv) (const GLint * v);     /* 131 */
-    void (GLAPIENTRYP Vertex2s) (GLshort x, GLshort y); /* 132 */
-    void (GLAPIENTRYP Vertex2sv) (const GLshort * v);   /* 133 */
-    void (GLAPIENTRYP Vertex3d) (GLdouble x, GLdouble y, GLdouble z);   /* 134 */
-    void (GLAPIENTRYP Vertex3dv) (const GLdouble * v);  /* 135 */
-    void (GLAPIENTRYP Vertex3f) (GLfloat x, GLfloat y, GLfloat z);      /* 136 */
-    void (GLAPIENTRYP Vertex3fv) (const GLfloat * v);   /* 137 */
-    void (GLAPIENTRYP Vertex3i) (GLint x, GLint y, GLint z);    /* 138 */
-    void (GLAPIENTRYP Vertex3iv) (const GLint * v);     /* 139 */
-    void (GLAPIENTRYP Vertex3s) (GLshort x, GLshort y, GLshort z);      /* 140 */
-    void (GLAPIENTRYP Vertex3sv) (const GLshort * v);   /* 141 */
-    void (GLAPIENTRYP Vertex4d) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);       /* 142 */
-    void (GLAPIENTRYP Vertex4dv) (const GLdouble * v);  /* 143 */
-    void (GLAPIENTRYP Vertex4f) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);   /* 144 */
-    void (GLAPIENTRYP Vertex4fv) (const GLfloat * v);   /* 145 */
-    void (GLAPIENTRYP Vertex4i) (GLint x, GLint y, GLint z, GLint w);   /* 146 */
-    void (GLAPIENTRYP Vertex4iv) (const GLint * v);     /* 147 */
-    void (GLAPIENTRYP Vertex4s) (GLshort x, GLshort y, GLshort z, GLshort w);   /* 148 */
-    void (GLAPIENTRYP Vertex4sv) (const GLshort * v);   /* 149 */
-    void (GLAPIENTRYP ClipPlane) (GLenum plane, const GLdouble * equation);     /* 150 */
-    void (GLAPIENTRYP ColorMaterial) (GLenum face, GLenum mode);        /* 151 */
-    void (GLAPIENTRYP CullFace) (GLenum mode);  /* 152 */
-    void (GLAPIENTRYP Fogf) (GLenum pname, GLfloat param);      /* 153 */
-    void (GLAPIENTRYP Fogfv) (GLenum pname, const GLfloat * params);    /* 154 */
-    void (GLAPIENTRYP Fogi) (GLenum pname, GLint param);        /* 155 */
-    void (GLAPIENTRYP Fogiv) (GLenum pname, const GLint * params);      /* 156 */
-    void (GLAPIENTRYP FrontFace) (GLenum mode); /* 157 */
-    void (GLAPIENTRYP Hint) (GLenum target, GLenum mode);       /* 158 */
-    void (GLAPIENTRYP Lightf) (GLenum light, GLenum pname, GLfloat param);      /* 159 */
-    void (GLAPIENTRYP Lightfv) (GLenum light, GLenum pname, const GLfloat * params);    /* 160 */
-    void (GLAPIENTRYP Lighti) (GLenum light, GLenum pname, GLint param);        /* 161 */
-    void (GLAPIENTRYP Lightiv) (GLenum light, GLenum pname, const GLint * params);      /* 162 */
-    void (GLAPIENTRYP LightModelf) (GLenum pname, GLfloat param);       /* 163 */
-    void (GLAPIENTRYP LightModelfv) (GLenum pname, const GLfloat * params);     /* 164 */
-    void (GLAPIENTRYP LightModeli) (GLenum pname, GLint param); /* 165 */
-    void (GLAPIENTRYP LightModeliv) (GLenum pname, const GLint * params);       /* 166 */
-    void (GLAPIENTRYP LineStipple) (GLint factor, GLushort pattern);    /* 167 */
-    void (GLAPIENTRYP LineWidth) (GLfloat width);       /* 168 */
-    void (GLAPIENTRYP Materialf) (GLenum face, GLenum pname, GLfloat param);    /* 169 */
-    void (GLAPIENTRYP Materialfv) (GLenum face, GLenum pname, const GLfloat * params);  /* 170 */
-    void (GLAPIENTRYP Materiali) (GLenum face, GLenum pname, GLint param);      /* 171 */
-    void (GLAPIENTRYP Materialiv) (GLenum face, GLenum pname, const GLint * params);    /* 172 */
-    void (GLAPIENTRYP PointSize) (GLfloat size);        /* 173 */
-    void (GLAPIENTRYP PolygonMode) (GLenum face, GLenum mode);  /* 174 */
-    void (GLAPIENTRYP PolygonStipple) (const GLubyte * mask);   /* 175 */
-    void (GLAPIENTRYP Scissor) (GLint x, GLint y, GLsizei width, GLsizei height);       /* 176 */
-    void (GLAPIENTRYP ShadeModel) (GLenum mode);        /* 177 */
-    void (GLAPIENTRYP TexParameterf) (GLenum target, GLenum pname, GLfloat param);      /* 178 */
-    void (GLAPIENTRYP TexParameterfv) (GLenum target, GLenum pname, const GLfloat * params);    /* 179 */
-    void (GLAPIENTRYP TexParameteri) (GLenum target, GLenum pname, GLint param);        /* 180 */
-    void (GLAPIENTRYP TexParameteriv) (GLenum target, GLenum pname, const GLint * params);      /* 181 */
-    void (GLAPIENTRYP TexImage1D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels);   /* 182 */
-    void (GLAPIENTRYP TexImage2D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels);   /* 183 */
-    void (GLAPIENTRYP TexEnvf) (GLenum target, GLenum pname, GLfloat param);    /* 184 */
-    void (GLAPIENTRYP TexEnvfv) (GLenum target, GLenum pname, const GLfloat * params);  /* 185 */
-    void (GLAPIENTRYP TexEnvi) (GLenum target, GLenum pname, GLint param);      /* 186 */
-    void (GLAPIENTRYP TexEnviv) (GLenum target, GLenum pname, const GLint * params);    /* 187 */
-    void (GLAPIENTRYP TexGend) (GLenum coord, GLenum pname, GLdouble param);    /* 188 */
-    void (GLAPIENTRYP TexGendv) (GLenum coord, GLenum pname, const GLdouble * params);  /* 189 */
-    void (GLAPIENTRYP TexGenf) (GLenum coord, GLenum pname, GLfloat param);     /* 190 */
-    void (GLAPIENTRYP TexGenfv) (GLenum coord, GLenum pname, const GLfloat * params);   /* 191 */
-    void (GLAPIENTRYP TexGeni) (GLenum coord, GLenum pname, GLint param);       /* 192 */
-    void (GLAPIENTRYP TexGeniv) (GLenum coord, GLenum pname, const GLint * params);     /* 193 */
-    void (GLAPIENTRYP FeedbackBuffer) (GLsizei size, GLenum type, GLfloat * buffer);    /* 194 */
-    void (GLAPIENTRYP SelectBuffer) (GLsizei size, GLuint * buffer);    /* 195 */
-     GLint(GLAPIENTRYP RenderMode) (GLenum mode);       /* 196 */
-    void (GLAPIENTRYP InitNames) (void);        /* 197 */
-    void (GLAPIENTRYP LoadName) (GLuint name);  /* 198 */
-    void (GLAPIENTRYP PassThrough) (GLfloat token);     /* 199 */
-    void (GLAPIENTRYP PopName) (void);  /* 200 */
-    void (GLAPIENTRYP PushName) (GLuint name);  /* 201 */
-    void (GLAPIENTRYP DrawBuffer) (GLenum mode);        /* 202 */
-    void (GLAPIENTRYP Clear) (GLbitfield mask); /* 203 */
-    void (GLAPIENTRYP ClearAccum) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);    /* 204 */
-    void (GLAPIENTRYP ClearIndex) (GLfloat c);  /* 205 */
-    void (GLAPIENTRYP ClearColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);        /* 206 */
-    void (GLAPIENTRYP ClearStencil) (GLint s);  /* 207 */
-    void (GLAPIENTRYP ClearDepth) (GLclampd depth);     /* 208 */
-    void (GLAPIENTRYP StencilMask) (GLuint mask);       /* 209 */
-    void (GLAPIENTRYP ColorMask) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);     /* 210 */
-    void (GLAPIENTRYP DepthMask) (GLboolean flag);      /* 211 */
-    void (GLAPIENTRYP IndexMask) (GLuint mask); /* 212 */
-    void (GLAPIENTRYP Accum) (GLenum op, GLfloat value);        /* 213 */
-    void (GLAPIENTRYP Disable) (GLenum cap);    /* 214 */
-    void (GLAPIENTRYP Enable) (GLenum cap);     /* 215 */
-    void (GLAPIENTRYP Finish) (void);   /* 216 */
-    void (GLAPIENTRYP Flush) (void);    /* 217 */
-    void (GLAPIENTRYP PopAttrib) (void);        /* 218 */
-    void (GLAPIENTRYP PushAttrib) (GLbitfield mask);    /* 219 */
-    void (GLAPIENTRYP Map1d) (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points);     /* 220 */
-    void (GLAPIENTRYP Map1f) (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points);        /* 221 */
-    void (GLAPIENTRYP Map2d) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points);    /* 222 */
-    void (GLAPIENTRYP Map2f) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points); /* 223 */
-    void (GLAPIENTRYP MapGrid1d) (GLint un, GLdouble u1, GLdouble u2);  /* 224 */
-    void (GLAPIENTRYP MapGrid1f) (GLint un, GLfloat u1, GLfloat u2);    /* 225 */
-    void (GLAPIENTRYP MapGrid2d) (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);      /* 226 */
-    void (GLAPIENTRYP MapGrid2f) (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);  /* 227 */
-    void (GLAPIENTRYP EvalCoord1d) (GLdouble u);        /* 228 */
-    void (GLAPIENTRYP EvalCoord1dv) (const GLdouble * u);       /* 229 */
-    void (GLAPIENTRYP EvalCoord1f) (GLfloat u); /* 230 */
-    void (GLAPIENTRYP EvalCoord1fv) (const GLfloat * u);        /* 231 */
-    void (GLAPIENTRYP EvalCoord2d) (GLdouble u, GLdouble v);    /* 232 */
-    void (GLAPIENTRYP EvalCoord2dv) (const GLdouble * u);       /* 233 */
-    void (GLAPIENTRYP EvalCoord2f) (GLfloat u, GLfloat v);      /* 234 */
-    void (GLAPIENTRYP EvalCoord2fv) (const GLfloat * u);        /* 235 */
-    void (GLAPIENTRYP EvalMesh1) (GLenum mode, GLint i1, GLint i2);     /* 236 */
-    void (GLAPIENTRYP EvalPoint1) (GLint i);    /* 237 */
-    void (GLAPIENTRYP EvalMesh2) (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); /* 238 */
-    void (GLAPIENTRYP EvalPoint2) (GLint i, GLint j);   /* 239 */
-    void (GLAPIENTRYP AlphaFunc) (GLenum func, GLclampf ref);   /* 240 */
-    void (GLAPIENTRYP BlendFunc) (GLenum sfactor, GLenum dfactor);      /* 241 */
-    void (GLAPIENTRYP LogicOp) (GLenum opcode); /* 242 */
-    void (GLAPIENTRYP StencilFunc) (GLenum func, GLint ref, GLuint mask);       /* 243 */
-    void (GLAPIENTRYP StencilOp) (GLenum fail, GLenum zfail, GLenum zpass);     /* 244 */
-    void (GLAPIENTRYP DepthFunc) (GLenum func); /* 245 */
-    void (GLAPIENTRYP PixelZoom) (GLfloat xfactor, GLfloat yfactor);    /* 246 */
-    void (GLAPIENTRYP PixelTransferf) (GLenum pname, GLfloat param);    /* 247 */
-    void (GLAPIENTRYP PixelTransferi) (GLenum pname, GLint param);      /* 248 */
-    void (GLAPIENTRYP PixelStoref) (GLenum pname, GLfloat param);       /* 249 */
-    void (GLAPIENTRYP PixelStorei) (GLenum pname, GLint param); /* 250 */
-    void (GLAPIENTRYP PixelMapfv) (GLenum map, GLsizei mapsize, const GLfloat * values);        /* 251 */
-    void (GLAPIENTRYP PixelMapuiv) (GLenum map, GLsizei mapsize, const GLuint * values);        /* 252 */
-    void (GLAPIENTRYP PixelMapusv) (GLenum map, GLsizei mapsize, const GLushort * values);      /* 253 */
-    void (GLAPIENTRYP ReadBuffer) (GLenum mode);        /* 254 */
-    void (GLAPIENTRYP CopyPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);       /* 255 */
-    void (GLAPIENTRYP ReadPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * pixels);       /* 256 */
-    void (GLAPIENTRYP DrawPixels) (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels);   /* 257 */
-    void (GLAPIENTRYP GetBooleanv) (GLenum pname, GLboolean * params);  /* 258 */
-    void (GLAPIENTRYP GetClipPlane) (GLenum plane, GLdouble * equation);        /* 259 */
-    void (GLAPIENTRYP GetDoublev) (GLenum pname, GLdouble * params);    /* 260 */
-     GLenum(GLAPIENTRYP GetError) (void);       /* 261 */
-    void (GLAPIENTRYP GetFloatv) (GLenum pname, GLfloat * params);      /* 262 */
-    void (GLAPIENTRYP GetIntegerv) (GLenum pname, GLint * params);      /* 263 */
-    void (GLAPIENTRYP GetLightfv) (GLenum light, GLenum pname, GLfloat * params);       /* 264 */
-    void (GLAPIENTRYP GetLightiv) (GLenum light, GLenum pname, GLint * params); /* 265 */
-    void (GLAPIENTRYP GetMapdv) (GLenum target, GLenum query, GLdouble * v);    /* 266 */
-    void (GLAPIENTRYP GetMapfv) (GLenum target, GLenum query, GLfloat * v);     /* 267 */
-    void (GLAPIENTRYP GetMapiv) (GLenum target, GLenum query, GLint * v);       /* 268 */
-    void (GLAPIENTRYP GetMaterialfv) (GLenum face, GLenum pname, GLfloat * params);     /* 269 */
-    void (GLAPIENTRYP GetMaterialiv) (GLenum face, GLenum pname, GLint * params);       /* 270 */
-    void (GLAPIENTRYP GetPixelMapfv) (GLenum map, GLfloat * values);    /* 271 */
-    void (GLAPIENTRYP GetPixelMapuiv) (GLenum map, GLuint * values);    /* 272 */
-    void (GLAPIENTRYP GetPixelMapusv) (GLenum map, GLushort * values);  /* 273 */
-    void (GLAPIENTRYP GetPolygonStipple) (GLubyte * mask);      /* 274 */
-    const GLubyte *(GLAPIENTRYP GetString) (GLenum name);       /* 275 */
-    void (GLAPIENTRYP GetTexEnvfv) (GLenum target, GLenum pname, GLfloat * params);     /* 276 */
-    void (GLAPIENTRYP GetTexEnviv) (GLenum target, GLenum pname, GLint * params);       /* 277 */
-    void (GLAPIENTRYP GetTexGendv) (GLenum coord, GLenum pname, GLdouble * params);     /* 278 */
-    void (GLAPIENTRYP GetTexGenfv) (GLenum coord, GLenum pname, GLfloat * params);      /* 279 */
-    void (GLAPIENTRYP GetTexGeniv) (GLenum coord, GLenum pname, GLint * params);        /* 280 */
-    void (GLAPIENTRYP GetTexImage) (GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels);   /* 281 */
-    void (GLAPIENTRYP GetTexParameterfv) (GLenum target, GLenum pname, GLfloat * params);       /* 282 */
-    void (GLAPIENTRYP GetTexParameteriv) (GLenum target, GLenum pname, GLint * params); /* 283 */
-    void (GLAPIENTRYP GetTexLevelParameterfv) (GLenum target, GLint level, GLenum pname, GLfloat * params);     /* 284 */
-    void (GLAPIENTRYP GetTexLevelParameteriv) (GLenum target, GLint level, GLenum pname, GLint * params);       /* 285 */
-     GLboolean(GLAPIENTRYP IsEnabled) (GLenum cap);     /* 286 */
-     GLboolean(GLAPIENTRYP IsList) (GLuint list);       /* 287 */
-    void (GLAPIENTRYP DepthRange) (GLclampd zNear, GLclampd zFar);      /* 288 */
-    void (GLAPIENTRYP Frustum) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);   /* 289 */
-    void (GLAPIENTRYP LoadIdentity) (void);     /* 290 */
-    void (GLAPIENTRYP LoadMatrixf) (const GLfloat * m); /* 291 */
-    void (GLAPIENTRYP LoadMatrixd) (const GLdouble * m);        /* 292 */
-    void (GLAPIENTRYP MatrixMode) (GLenum mode);        /* 293 */
-    void (GLAPIENTRYP MultMatrixf) (const GLfloat * m); /* 294 */
-    void (GLAPIENTRYP MultMatrixd) (const GLdouble * m);        /* 295 */
-    void (GLAPIENTRYP Ortho) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);     /* 296 */
-    void (GLAPIENTRYP PopMatrix) (void);        /* 297 */
-    void (GLAPIENTRYP PushMatrix) (void);       /* 298 */
-    void (GLAPIENTRYP Rotated) (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);    /* 299 */
-    void (GLAPIENTRYP Rotatef) (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);        /* 300 */
-    void (GLAPIENTRYP Scaled) (GLdouble x, GLdouble y, GLdouble z);     /* 301 */
-    void (GLAPIENTRYP Scalef) (GLfloat x, GLfloat y, GLfloat z);        /* 302 */
-    void (GLAPIENTRYP Translated) (GLdouble x, GLdouble y, GLdouble z); /* 303 */
-    void (GLAPIENTRYP Translatef) (GLfloat x, GLfloat y, GLfloat z);    /* 304 */
-    void (GLAPIENTRYP Viewport) (GLint x, GLint y, GLsizei width, GLsizei height);      /* 305 */
-    void (GLAPIENTRYP ArrayElement) (GLint i);  /* 306 */
-    void (GLAPIENTRYP BindTexture) (GLenum target, GLuint texture);     /* 307 */
-    void (GLAPIENTRYP ColorPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);  /* 308 */
-    void (GLAPIENTRYP DisableClientState) (GLenum array);       /* 309 */
-    void (GLAPIENTRYP DrawArrays) (GLenum mode, GLint first, GLsizei count);    /* 310 */
-    void (GLAPIENTRYP DrawElements) (GLenum mode, GLsizei count, GLenum type, const GLvoid * indices);  /* 311 */
-    void (GLAPIENTRYP EdgeFlagPointer) (GLsizei stride, const GLvoid * pointer);        /* 312 */
-    void (GLAPIENTRYP EnableClientState) (GLenum array);        /* 313 */
-    void (GLAPIENTRYP IndexPointer) (GLenum type, GLsizei stride, const GLvoid * pointer);      /* 314 */
-    void (GLAPIENTRYP Indexub) (GLubyte c);     /* 315 */
-    void (GLAPIENTRYP Indexubv) (const GLubyte * c);    /* 316 */
-    void (GLAPIENTRYP InterleavedArrays) (GLenum format, GLsizei stride, const GLvoid * pointer);       /* 317 */
-    void (GLAPIENTRYP NormalPointer) (GLenum type, GLsizei stride, const GLvoid * pointer);     /* 318 */
-    void (GLAPIENTRYP PolygonOffset) (GLfloat factor, GLfloat units);   /* 319 */
-    void (GLAPIENTRYP TexCoordPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);       /* 320 */
-    void (GLAPIENTRYP VertexPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 321 */
-     GLboolean(GLAPIENTRYP AreTexturesResident) (GLsizei n, const GLuint * textures, GLboolean * residences);   /* 322 */
-    void (GLAPIENTRYP CopyTexImage1D) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);       /* 323 */
-    void (GLAPIENTRYP CopyTexImage2D) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);       /* 324 */
-    void (GLAPIENTRYP CopyTexSubImage1D) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);  /* 325 */
-    void (GLAPIENTRYP CopyTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);   /* 326 */
-    void (GLAPIENTRYP DeleteTextures) (GLsizei n, const GLuint * textures);     /* 327 */
-    void (GLAPIENTRYP GenTextures) (GLsizei n, GLuint * textures);      /* 328 */
-    void (GLAPIENTRYP GetPointerv) (GLenum pname, GLvoid ** params);    /* 329 */
-     GLboolean(GLAPIENTRYP IsTexture) (GLuint texture); /* 330 */
-    void (GLAPIENTRYP PrioritizeTextures) (GLsizei n, const GLuint * textures, const GLclampf * priorities);    /* 331 */
-    void (GLAPIENTRYP TexSubImage1D) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels);     /* 332 */
-    void (GLAPIENTRYP TexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels);      /* 333 */
-    void (GLAPIENTRYP PopClientAttrib) (void);  /* 334 */
-    void (GLAPIENTRYP PushClientAttrib) (GLbitfield mask);      /* 335 */
-    void (GLAPIENTRYP BlendColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);        /* 336 */
-    void (GLAPIENTRYP BlendEquation) (GLenum mode);     /* 337 */
-    void (GLAPIENTRYP DrawRangeElements) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices);   /* 338 */
-    void (GLAPIENTRYP ColorTable) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table);      /* 339 */
-    void (GLAPIENTRYP ColorTableParameterfv) (GLenum target, GLenum pname, const GLfloat * params);     /* 340 */
-    void (GLAPIENTRYP ColorTableParameteriv) (GLenum target, GLenum pname, const GLint * params);       /* 341 */
-    void (GLAPIENTRYP CopyColorTable) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);  /* 342 */
-    void (GLAPIENTRYP GetColorTable) (GLenum target, GLenum format, GLenum type, GLvoid * table);       /* 343 */
-    void (GLAPIENTRYP GetColorTableParameterfv) (GLenum target, GLenum pname, GLfloat * params);        /* 344 */
-    void (GLAPIENTRYP GetColorTableParameteriv) (GLenum target, GLenum pname, GLint * params);  /* 345 */
-    void (GLAPIENTRYP ColorSubTable) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data);    /* 346 */
-    void (GLAPIENTRYP CopyColorSubTable) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);       /* 347 */
-    void (GLAPIENTRYP ConvolutionFilter1D) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image);     /* 348 */
-    void (GLAPIENTRYP ConvolutionFilter2D) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image);     /* 349 */
-    void (GLAPIENTRYP ConvolutionParameterf) (GLenum target, GLenum pname, GLfloat params);     /* 350 */
-    void (GLAPIENTRYP ConvolutionParameterfv) (GLenum target, GLenum pname, const GLfloat * params);    /* 351 */
-    void (GLAPIENTRYP ConvolutionParameteri) (GLenum target, GLenum pname, GLint params);       /* 352 */
-    void (GLAPIENTRYP ConvolutionParameteriv) (GLenum target, GLenum pname, const GLint * params);      /* 353 */
-    void (GLAPIENTRYP CopyConvolutionFilter1D) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 354 */
-    void (GLAPIENTRYP CopyConvolutionFilter2D) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); /* 355 */
-    void (GLAPIENTRYP GetConvolutionFilter) (GLenum target, GLenum format, GLenum type, GLvoid * image);        /* 356 */
-    void (GLAPIENTRYP GetConvolutionParameterfv) (GLenum target, GLenum pname, GLfloat * params);       /* 357 */
-    void (GLAPIENTRYP GetConvolutionParameteriv) (GLenum target, GLenum pname, GLint * params); /* 358 */
-    void (GLAPIENTRYP GetSeparableFilter) (GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);    /* 359 */
-    void (GLAPIENTRYP SeparableFilter2D) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column);  /* 360 */
-    void (GLAPIENTRYP GetHistogram) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);      /* 361 */
-    void (GLAPIENTRYP GetHistogramParameterfv) (GLenum target, GLenum pname, GLfloat * params); /* 362 */
-    void (GLAPIENTRYP GetHistogramParameteriv) (GLenum target, GLenum pname, GLint * params);   /* 363 */
-    void (GLAPIENTRYP GetMinmax) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); /* 364 */
-    void (GLAPIENTRYP GetMinmaxParameterfv) (GLenum target, GLenum pname, GLfloat * params);    /* 365 */
-    void (GLAPIENTRYP GetMinmaxParameteriv) (GLenum target, GLenum pname, GLint * params);      /* 366 */
-    void (GLAPIENTRYP Histogram) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); /* 367 */
-    void (GLAPIENTRYP Minmax) (GLenum target, GLenum internalformat, GLboolean sink);   /* 368 */
-    void (GLAPIENTRYP ResetHistogram) (GLenum target);  /* 369 */
-    void (GLAPIENTRYP ResetMinmax) (GLenum target);     /* 370 */
-    void (GLAPIENTRYP TexImage3D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels);    /* 371 */
-    void (GLAPIENTRYP TexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels);        /* 372 */
-    void (GLAPIENTRYP CopyTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);    /* 373 */
-    void (GLAPIENTRYP ActiveTextureARB) (GLenum texture);       /* 374 */
-    void (GLAPIENTRYP ClientActiveTextureARB) (GLenum texture); /* 375 */
-    void (GLAPIENTRYP MultiTexCoord1dARB) (GLenum target, GLdouble s);  /* 376 */
-    void (GLAPIENTRYP MultiTexCoord1dvARB) (GLenum target, const GLdouble * v); /* 377 */
-    void (GLAPIENTRYP MultiTexCoord1fARB) (GLenum target, GLfloat s);   /* 378 */
-    void (GLAPIENTRYP MultiTexCoord1fvARB) (GLenum target, const GLfloat * v);  /* 379 */
-    void (GLAPIENTRYP MultiTexCoord1iARB) (GLenum target, GLint s);     /* 380 */
-    void (GLAPIENTRYP MultiTexCoord1ivARB) (GLenum target, const GLint * v);    /* 381 */
-    void (GLAPIENTRYP MultiTexCoord1sARB) (GLenum target, GLshort s);   /* 382 */
-    void (GLAPIENTRYP MultiTexCoord1svARB) (GLenum target, const GLshort * v);  /* 383 */
-    void (GLAPIENTRYP MultiTexCoord2dARB) (GLenum target, GLdouble s, GLdouble t);      /* 384 */
-    void (GLAPIENTRYP MultiTexCoord2dvARB) (GLenum target, const GLdouble * v); /* 385 */
-    void (GLAPIENTRYP MultiTexCoord2fARB) (GLenum target, GLfloat s, GLfloat t);        /* 386 */
-    void (GLAPIENTRYP MultiTexCoord2fvARB) (GLenum target, const GLfloat * v);  /* 387 */
-    void (GLAPIENTRYP MultiTexCoord2iARB) (GLenum target, GLint s, GLint t);    /* 388 */
-    void (GLAPIENTRYP MultiTexCoord2ivARB) (GLenum target, const GLint * v);    /* 389 */
-    void (GLAPIENTRYP MultiTexCoord2sARB) (GLenum target, GLshort s, GLshort t);        /* 390 */
-    void (GLAPIENTRYP MultiTexCoord2svARB) (GLenum target, const GLshort * v);  /* 391 */
-    void (GLAPIENTRYP MultiTexCoord3dARB) (GLenum target, GLdouble s, GLdouble t, GLdouble r);  /* 392 */
-    void (GLAPIENTRYP MultiTexCoord3dvARB) (GLenum target, const GLdouble * v); /* 393 */
-    void (GLAPIENTRYP MultiTexCoord3fARB) (GLenum target, GLfloat s, GLfloat t, GLfloat r);     /* 394 */
-    void (GLAPIENTRYP MultiTexCoord3fvARB) (GLenum target, const GLfloat * v);  /* 395 */
-    void (GLAPIENTRYP MultiTexCoord3iARB) (GLenum target, GLint s, GLint t, GLint r);   /* 396 */
-    void (GLAPIENTRYP MultiTexCoord3ivARB) (GLenum target, const GLint * v);    /* 397 */
-    void (GLAPIENTRYP MultiTexCoord3sARB) (GLenum target, GLshort s, GLshort t, GLshort r);     /* 398 */
-    void (GLAPIENTRYP MultiTexCoord3svARB) (GLenum target, const GLshort * v);  /* 399 */
-    void (GLAPIENTRYP MultiTexCoord4dARB) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);      /* 400 */
-    void (GLAPIENTRYP MultiTexCoord4dvARB) (GLenum target, const GLdouble * v); /* 401 */
-    void (GLAPIENTRYP MultiTexCoord4fARB) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);  /* 402 */
-    void (GLAPIENTRYP MultiTexCoord4fvARB) (GLenum target, const GLfloat * v);  /* 403 */
-    void (GLAPIENTRYP MultiTexCoord4iARB) (GLenum target, GLint s, GLint t, GLint r, GLint q);  /* 404 */
-    void (GLAPIENTRYP MultiTexCoord4ivARB) (GLenum target, const GLint * v);    /* 405 */
-    void (GLAPIENTRYP MultiTexCoord4sARB) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);  /* 406 */
-    void (GLAPIENTRYP MultiTexCoord4svARB) (GLenum target, const GLshort * v);  /* 407 */
-    void (GLAPIENTRYP AttachShader) (GLuint program, GLuint shader);    /* 408 */
-     GLuint(GLAPIENTRYP CreateProgram) (void);  /* 409 */
-     GLuint(GLAPIENTRYP CreateShader) (GLenum type);    /* 410 */
-    void (GLAPIENTRYP DeleteProgram) (GLuint program);  /* 411 */
-    void (GLAPIENTRYP DeleteShader) (GLuint program);   /* 412 */
-    void (GLAPIENTRYP DetachShader) (GLuint program, GLuint shader);    /* 413 */
-    void (GLAPIENTRYP GetAttachedShaders) (GLuint program, GLsizei maxCount, GLsizei * count, GLuint * obj);    /* 414 */
-    void (GLAPIENTRYP GetProgramInfoLog) (GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog); /* 415 */
-    void (GLAPIENTRYP GetProgramiv) (GLuint program, GLenum pname, GLint * params);     /* 416 */
-    void (GLAPIENTRYP GetShaderInfoLog) (GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog);   /* 417 */
-    void (GLAPIENTRYP GetShaderiv) (GLuint shader, GLenum pname, GLint * params);       /* 418 */
-     GLboolean(GLAPIENTRYP IsProgram) (GLuint program); /* 419 */
-     GLboolean(GLAPIENTRYP IsShader) (GLuint shader);   /* 420 */
-    void (GLAPIENTRYP StencilFuncSeparate) (GLenum face, GLenum func, GLint ref, GLuint mask);  /* 421 */
-    void (GLAPIENTRYP StencilMaskSeparate) (GLenum face, GLuint mask);  /* 422 */
-    void (GLAPIENTRYP StencilOpSeparate) (GLenum face, GLenum sfail, GLenum zfail, GLenum zpass);       /* 423 */
-    void (GLAPIENTRYP UniformMatrix2x3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);  /* 424 */
-    void (GLAPIENTRYP UniformMatrix2x4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);  /* 425 */
-    void (GLAPIENTRYP UniformMatrix3x2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);  /* 426 */
-    void (GLAPIENTRYP UniformMatrix3x4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);  /* 427 */
-    void (GLAPIENTRYP UniformMatrix4x2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);  /* 428 */
-    void (GLAPIENTRYP UniformMatrix4x3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);  /* 429 */
-    void (GLAPIENTRYP ClampColor) (GLenum target, GLenum clamp);        /* 430 */
-    void (GLAPIENTRYP ClearBufferfi) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);   /* 431 */
-    void (GLAPIENTRYP ClearBufferfv) (GLenum buffer, GLint drawbuffer, const GLfloat * value);  /* 432 */
-    void (GLAPIENTRYP ClearBufferiv) (GLenum buffer, GLint drawbuffer, const GLint * value);    /* 433 */
-    void (GLAPIENTRYP ClearBufferuiv) (GLenum buffer, GLint drawbuffer, const GLuint * value);  /* 434 */
-    const GLubyte *(GLAPIENTRYP GetStringi) (GLenum name, GLuint index);        /* 435 */
-    void (GLAPIENTRYP TexBuffer) (GLenum target, GLenum internalFormat, GLuint buffer); /* 436 */
-    void (GLAPIENTRYP FramebufferTexture) (GLenum target, GLenum attachment, GLuint texture, GLint level);      /* 437 */
-    void (GLAPIENTRYP GetBufferParameteri64v) (GLenum target, GLenum pname, GLint64 * params);  /* 438 */
-    void (GLAPIENTRYP GetInteger64i_v) (GLenum cap, GLuint index, GLint64 * data);      /* 439 */
-    void (GLAPIENTRYP VertexAttribDivisor) (GLuint index, GLuint divisor);      /* 440 */
-    void (GLAPIENTRYP LoadTransposeMatrixdARB) (const GLdouble * m);    /* 441 */
-    void (GLAPIENTRYP LoadTransposeMatrixfARB) (const GLfloat * m);     /* 442 */
-    void (GLAPIENTRYP MultTransposeMatrixdARB) (const GLdouble * m);    /* 443 */
-    void (GLAPIENTRYP MultTransposeMatrixfARB) (const GLfloat * m);     /* 444 */
-    void (GLAPIENTRYP SampleCoverageARB) (GLclampf value, GLboolean invert);    /* 445 */
-    void (GLAPIENTRYP CompressedTexImage1DARB) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data);        /* 446 */
-    void (GLAPIENTRYP CompressedTexImage2DARB) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data);        /* 447 */
-    void (GLAPIENTRYP CompressedTexImage3DARB) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data); /* 448 */
-    void (GLAPIENTRYP CompressedTexSubImage1DARB) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data);    /* 449 */
-    void (GLAPIENTRYP CompressedTexSubImage2DARB) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data);     /* 450 */
-    void (GLAPIENTRYP CompressedTexSubImage3DARB) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data);       /* 451 */
-    void (GLAPIENTRYP GetCompressedTexImageARB) (GLenum target, GLint level, GLvoid * img);     /* 452 */
-    void (GLAPIENTRYP DisableVertexAttribArrayARB) (GLuint index);      /* 453 */
-    void (GLAPIENTRYP EnableVertexAttribArrayARB) (GLuint index);       /* 454 */
-    void (GLAPIENTRYP GetProgramEnvParameterdvARB) (GLenum target, GLuint index, GLdouble * params);    /* 455 */
-    void (GLAPIENTRYP GetProgramEnvParameterfvARB) (GLenum target, GLuint index, GLfloat * params);     /* 456 */
-    void (GLAPIENTRYP GetProgramLocalParameterdvARB) (GLenum target, GLuint index, GLdouble * params);  /* 457 */
-    void (GLAPIENTRYP GetProgramLocalParameterfvARB) (GLenum target, GLuint index, GLfloat * params);   /* 458 */
-    void (GLAPIENTRYP GetProgramStringARB) (GLenum target, GLenum pname, GLvoid * string);      /* 459 */
-    void (GLAPIENTRYP GetProgramivARB) (GLenum target, GLenum pname, GLint * params);   /* 460 */
-    void (GLAPIENTRYP GetVertexAttribdvARB) (GLuint index, GLenum pname, GLdouble * params);    /* 461 */
-    void (GLAPIENTRYP GetVertexAttribfvARB) (GLuint index, GLenum pname, GLfloat * params);     /* 462 */
-    void (GLAPIENTRYP GetVertexAttribivARB) (GLuint index, GLenum pname, GLint * params);       /* 463 */
-    void (GLAPIENTRYP ProgramEnvParameter4dARB) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);  /* 464 */
-    void (GLAPIENTRYP ProgramEnvParameter4dvARB) (GLenum target, GLuint index, const GLdouble * params);        /* 465 */
-    void (GLAPIENTRYP ProgramEnvParameter4fARB) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);      /* 466 */
-    void (GLAPIENTRYP ProgramEnvParameter4fvARB) (GLenum target, GLuint index, const GLfloat * params); /* 467 */
-    void (GLAPIENTRYP ProgramLocalParameter4dARB) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);        /* 468 */
-    void (GLAPIENTRYP ProgramLocalParameter4dvARB) (GLenum target, GLuint index, const GLdouble * params);      /* 469 */
-    void (GLAPIENTRYP ProgramLocalParameter4fARB) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);    /* 470 */
-    void (GLAPIENTRYP ProgramLocalParameter4fvARB) (GLenum target, GLuint index, const GLfloat * params);       /* 471 */
-    void (GLAPIENTRYP ProgramStringARB) (GLenum target, GLenum format, GLsizei len, const GLvoid * string);     /* 472 */
-    void (GLAPIENTRYP VertexAttrib1dARB) (GLuint index, GLdouble x);    /* 473 */
-    void (GLAPIENTRYP VertexAttrib1dvARB) (GLuint index, const GLdouble * v);   /* 474 */
-    void (GLAPIENTRYP VertexAttrib1fARB) (GLuint index, GLfloat x);     /* 475 */
-    void (GLAPIENTRYP VertexAttrib1fvARB) (GLuint index, const GLfloat * v);    /* 476 */
-    void (GLAPIENTRYP VertexAttrib1sARB) (GLuint index, GLshort x);     /* 477 */
-    void (GLAPIENTRYP VertexAttrib1svARB) (GLuint index, const GLshort * v);    /* 478 */
-    void (GLAPIENTRYP VertexAttrib2dARB) (GLuint index, GLdouble x, GLdouble y);        /* 479 */
-    void (GLAPIENTRYP VertexAttrib2dvARB) (GLuint index, const GLdouble * v);   /* 480 */
-    void (GLAPIENTRYP VertexAttrib2fARB) (GLuint index, GLfloat x, GLfloat y);  /* 481 */
-    void (GLAPIENTRYP VertexAttrib2fvARB) (GLuint index, const GLfloat * v);    /* 482 */
-    void (GLAPIENTRYP VertexAttrib2sARB) (GLuint index, GLshort x, GLshort y);  /* 483 */
-    void (GLAPIENTRYP VertexAttrib2svARB) (GLuint index, const GLshort * v);    /* 484 */
-    void (GLAPIENTRYP VertexAttrib3dARB) (GLuint index, GLdouble x, GLdouble y, GLdouble z);    /* 485 */
-    void (GLAPIENTRYP VertexAttrib3dvARB) (GLuint index, const GLdouble * v);   /* 486 */
-    void (GLAPIENTRYP VertexAttrib3fARB) (GLuint index, GLfloat x, GLfloat y, GLfloat z);       /* 487 */
-    void (GLAPIENTRYP VertexAttrib3fvARB) (GLuint index, const GLfloat * v);    /* 488 */
-    void (GLAPIENTRYP VertexAttrib3sARB) (GLuint index, GLshort x, GLshort y, GLshort z);       /* 489 */
-    void (GLAPIENTRYP VertexAttrib3svARB) (GLuint index, const GLshort * v);    /* 490 */
-    void (GLAPIENTRYP VertexAttrib4NbvARB) (GLuint index, const GLbyte * v);    /* 491 */
-    void (GLAPIENTRYP VertexAttrib4NivARB) (GLuint index, const GLint * v);     /* 492 */
-    void (GLAPIENTRYP VertexAttrib4NsvARB) (GLuint index, const GLshort * v);   /* 493 */
-    void (GLAPIENTRYP VertexAttrib4NubARB) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);  /* 494 */
-    void (GLAPIENTRYP VertexAttrib4NubvARB) (GLuint index, const GLubyte * v);  /* 495 */
-    void (GLAPIENTRYP VertexAttrib4NuivARB) (GLuint index, const GLuint * v);   /* 496 */
-    void (GLAPIENTRYP VertexAttrib4NusvARB) (GLuint index, const GLushort * v); /* 497 */
-    void (GLAPIENTRYP VertexAttrib4bvARB) (GLuint index, const GLbyte * v);     /* 498 */
-    void (GLAPIENTRYP VertexAttrib4dARB) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);        /* 499 */
-    void (GLAPIENTRYP VertexAttrib4dvARB) (GLuint index, const GLdouble * v);   /* 500 */
-    void (GLAPIENTRYP VertexAttrib4fARB) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);    /* 501 */
-    void (GLAPIENTRYP VertexAttrib4fvARB) (GLuint index, const GLfloat * v);    /* 502 */
-    void (GLAPIENTRYP VertexAttrib4ivARB) (GLuint index, const GLint * v);      /* 503 */
-    void (GLAPIENTRYP VertexAttrib4sARB) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);    /* 504 */
-    void (GLAPIENTRYP VertexAttrib4svARB) (GLuint index, const GLshort * v);    /* 505 */
-    void (GLAPIENTRYP VertexAttrib4ubvARB) (GLuint index, const GLubyte * v);   /* 506 */
-    void (GLAPIENTRYP VertexAttrib4uivARB) (GLuint index, const GLuint * v);    /* 507 */
-    void (GLAPIENTRYP VertexAttrib4usvARB) (GLuint index, const GLushort * v);  /* 508 */
-    void (GLAPIENTRYP VertexAttribPointerARB) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer);    /* 509 */
-    void (GLAPIENTRYP BindBufferARB) (GLenum target, GLuint buffer);    /* 510 */
-    void (GLAPIENTRYP BufferDataARB) (GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage);    /* 511 */
-    void (GLAPIENTRYP BufferSubDataARB) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data);   /* 512 */
-    void (GLAPIENTRYP DeleteBuffersARB) (GLsizei n, const GLuint * buffer);     /* 513 */
-    void (GLAPIENTRYP GenBuffersARB) (GLsizei n, GLuint * buffer);      /* 514 */
-    void (GLAPIENTRYP GetBufferParameterivARB) (GLenum target, GLenum pname, GLint * params);   /* 515 */
-    void (GLAPIENTRYP GetBufferPointervARB) (GLenum target, GLenum pname, GLvoid ** params);    /* 516 */
-    void (GLAPIENTRYP GetBufferSubDataARB) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data);      /* 517 */
-     GLboolean(GLAPIENTRYP IsBufferARB) (GLuint buffer);        /* 518 */
-    GLvoid *(GLAPIENTRYP MapBufferARB) (GLenum target, GLenum access);  /* 519 */
-     GLboolean(GLAPIENTRYP UnmapBufferARB) (GLenum target);     /* 520 */
-    void (GLAPIENTRYP BeginQueryARB) (GLenum target, GLuint id);        /* 521 */
-    void (GLAPIENTRYP DeleteQueriesARB) (GLsizei n, const GLuint * ids);        /* 522 */
-    void (GLAPIENTRYP EndQueryARB) (GLenum target);     /* 523 */
-    void (GLAPIENTRYP GenQueriesARB) (GLsizei n, GLuint * ids); /* 524 */
-    void (GLAPIENTRYP GetQueryObjectivARB) (GLuint id, GLenum pname, GLint * params);   /* 525 */
-    void (GLAPIENTRYP GetQueryObjectuivARB) (GLuint id, GLenum pname, GLuint * params); /* 526 */
-    void (GLAPIENTRYP GetQueryivARB) (GLenum target, GLenum pname, GLint * params);     /* 527 */
-     GLboolean(GLAPIENTRYP IsQueryARB) (GLuint id);     /* 528 */
-    void (GLAPIENTRYP AttachObjectARB) (GLhandleARB containerObj, GLhandleARB obj);     /* 529 */
-    void (GLAPIENTRYP CompileShaderARB) (GLhandleARB shader);   /* 530 */
-     GLhandleARB(GLAPIENTRYP CreateProgramObjectARB) (void);    /* 531 */
-     GLhandleARB(GLAPIENTRYP CreateShaderObjectARB) (GLenum shaderType);        /* 532 */
-    void (GLAPIENTRYP DeleteObjectARB) (GLhandleARB obj);       /* 533 */
-    void (GLAPIENTRYP DetachObjectARB) (GLhandleARB containerObj, GLhandleARB attachedObj);     /* 534 */
-    void (GLAPIENTRYP GetActiveUniformARB) (GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name);       /* 535 */
-    void (GLAPIENTRYP GetAttachedObjectsARB) (GLhandleARB containerObj, GLsizei maxLength, GLsizei * length, GLhandleARB * infoLog);    /* 536 */
-     GLhandleARB(GLAPIENTRYP GetHandleARB) (GLenum pname);      /* 537 */
-    void (GLAPIENTRYP GetInfoLogARB) (GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog);       /* 538 */
-    void (GLAPIENTRYP GetObjectParameterfvARB) (GLhandleARB obj, GLenum pname, GLfloat * params);       /* 539 */
-    void (GLAPIENTRYP GetObjectParameterivARB) (GLhandleARB obj, GLenum pname, GLint * params); /* 540 */
-    void (GLAPIENTRYP GetShaderSourceARB) (GLhandleARB shader, GLsizei bufSize, GLsizei * length, GLcharARB * source);  /* 541 */
-     GLint(GLAPIENTRYP GetUniformLocationARB) (GLhandleARB program, const GLcharARB * name);    /* 542 */
-    void (GLAPIENTRYP GetUniformfvARB) (GLhandleARB program, GLint location, GLfloat * params); /* 543 */
-    void (GLAPIENTRYP GetUniformivARB) (GLhandleARB program, GLint location, GLint * params);   /* 544 */
-    void (GLAPIENTRYP LinkProgramARB) (GLhandleARB program);    /* 545 */
-    void (GLAPIENTRYP ShaderSourceARB) (GLhandleARB shader, GLsizei count, const GLcharARB ** string, const GLint * length);    /* 546 */
-    void (GLAPIENTRYP Uniform1fARB) (GLint location, GLfloat v0);       /* 547 */
-    void (GLAPIENTRYP Uniform1fvARB) (GLint location, GLsizei count, const GLfloat * value);    /* 548 */
-    void (GLAPIENTRYP Uniform1iARB) (GLint location, GLint v0); /* 549 */
-    void (GLAPIENTRYP Uniform1ivARB) (GLint location, GLsizei count, const GLint * value);      /* 550 */
-    void (GLAPIENTRYP Uniform2fARB) (GLint location, GLfloat v0, GLfloat v1);   /* 551 */
-    void (GLAPIENTRYP Uniform2fvARB) (GLint location, GLsizei count, const GLfloat * value);    /* 552 */
-    void (GLAPIENTRYP Uniform2iARB) (GLint location, GLint v0, GLint v1);       /* 553 */
-    void (GLAPIENTRYP Uniform2ivARB) (GLint location, GLsizei count, const GLint * value);      /* 554 */
-    void (GLAPIENTRYP Uniform3fARB) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);       /* 555 */
-    void (GLAPIENTRYP Uniform3fvARB) (GLint location, GLsizei count, const GLfloat * value);    /* 556 */
-    void (GLAPIENTRYP Uniform3iARB) (GLint location, GLint v0, GLint v1, GLint v2);     /* 557 */
-    void (GLAPIENTRYP Uniform3ivARB) (GLint location, GLsizei count, const GLint * value);      /* 558 */
-    void (GLAPIENTRYP Uniform4fARB) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);   /* 559 */
-    void (GLAPIENTRYP Uniform4fvARB) (GLint location, GLsizei count, const GLfloat * value);    /* 560 */
-    void (GLAPIENTRYP Uniform4iARB) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);   /* 561 */
-    void (GLAPIENTRYP Uniform4ivARB) (GLint location, GLsizei count, const GLint * value);      /* 562 */
-    void (GLAPIENTRYP UniformMatrix2fvARB) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 563 */
-    void (GLAPIENTRYP UniformMatrix3fvARB) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 564 */
-    void (GLAPIENTRYP UniformMatrix4fvARB) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 565 */
-    void (GLAPIENTRYP UseProgramObjectARB) (GLhandleARB program);       /* 566 */
-    void (GLAPIENTRYP ValidateProgramARB) (GLhandleARB program);        /* 567 */
-    void (GLAPIENTRYP BindAttribLocationARB) (GLhandleARB program, GLuint index, const GLcharARB * name);       /* 568 */
-    void (GLAPIENTRYP GetActiveAttribARB) (GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name);        /* 569 */
-     GLint(GLAPIENTRYP GetAttribLocationARB) (GLhandleARB program, const GLcharARB * name);     /* 570 */
-    void (GLAPIENTRYP DrawBuffersARB) (GLsizei n, const GLenum * bufs); /* 571 */
-    void (GLAPIENTRYP ClampColorARB) (GLenum target, GLenum clamp);     /* 572 */
-    void (GLAPIENTRYP DrawArraysInstancedARB) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);     /* 573 */
-    void (GLAPIENTRYP DrawElementsInstancedARB) (GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount);   /* 574 */
-    void (GLAPIENTRYP RenderbufferStorageMultisample) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);   /* 575 */
-    void (GLAPIENTRYP FramebufferTextureARB) (GLenum target, GLenum attachment, GLuint texture, GLint level);   /* 576 */
-    void (GLAPIENTRYP FramebufferTextureFaceARB) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);  /* 577 */
-    void (GLAPIENTRYP ProgramParameteriARB) (GLuint program, GLenum pname, GLint value);        /* 578 */
-    void (GLAPIENTRYP VertexAttribDivisorARB) (GLuint index, GLuint divisor);   /* 579 */
-    void (GLAPIENTRYP FlushMappedBufferRange) (GLenum target, GLintptr offset, GLsizeiptr length);      /* 580 */
-    GLvoid *(GLAPIENTRYP MapBufferRange) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);        /* 581 */
-    void (GLAPIENTRYP TexBufferARB) (GLenum target, GLenum internalFormat, GLuint buffer);      /* 582 */
-    void (GLAPIENTRYP BindVertexArray) (GLuint array);  /* 583 */
-    void (GLAPIENTRYP GenVertexArrays) (GLsizei n, GLuint * arrays);    /* 584 */
-    void (GLAPIENTRYP CopyBufferSubData) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);   /* 585 */
-     GLenum(GLAPIENTRYP ClientWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout);      /* 586 */
-    void (GLAPIENTRYP DeleteSync) (GLsync sync);        /* 587 */
-     GLsync(GLAPIENTRYP FenceSync) (GLenum condition, GLbitfield flags);        /* 588 */
-    void (GLAPIENTRYP GetInteger64v) (GLenum pname, GLint64 * params);  /* 589 */
-    void (GLAPIENTRYP GetSynciv) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values);        /* 590 */
-     GLboolean(GLAPIENTRYP IsSync) (GLsync sync);       /* 591 */
-    void (GLAPIENTRYP WaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout);      /* 592 */
-    void (GLAPIENTRYP DrawElementsBaseVertex) (GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex);      /* 593 */
-    void (GLAPIENTRYP DrawElementsInstancedBaseVertex) (GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount, GLint basevertex);  /* 594 */
-    void (GLAPIENTRYP DrawRangeElementsBaseVertex) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex);       /* 595 */
-    void (GLAPIENTRYP MultiDrawElementsBaseVertex) (GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount, const GLint * basevertex);     /* 596 */
-    void (GLAPIENTRYP BlendEquationSeparateiARB) (GLuint buf, GLenum modeRGB, GLenum modeA);    /* 597 */
-    void (GLAPIENTRYP BlendEquationiARB) (GLuint buf, GLenum mode);     /* 598 */
-    void (GLAPIENTRYP BlendFuncSeparateiARB) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA);      /* 599 */
-    void (GLAPIENTRYP BlendFunciARB) (GLuint buf, GLenum src, GLenum dst);      /* 600 */
-    void (GLAPIENTRYP BindSampler) (GLuint unit, GLuint sampler);       /* 601 */
-    void (GLAPIENTRYP DeleteSamplers) (GLsizei count, const GLuint * samplers); /* 602 */
-    void (GLAPIENTRYP GenSamplers) (GLsizei count, GLuint * samplers);  /* 603 */
-    void (GLAPIENTRYP GetSamplerParameterIiv) (GLuint sampler, GLenum pname, GLint * params);   /* 604 */
-    void (GLAPIENTRYP GetSamplerParameterIuiv) (GLuint sampler, GLenum pname, GLuint * params); /* 605 */
-    void (GLAPIENTRYP GetSamplerParameterfv) (GLuint sampler, GLenum pname, GLfloat * params);  /* 606 */
-    void (GLAPIENTRYP GetSamplerParameteriv) (GLuint sampler, GLenum pname, GLint * params);    /* 607 */
-     GLboolean(GLAPIENTRYP IsSampler) (GLuint sampler); /* 608 */
-    void (GLAPIENTRYP SamplerParameterIiv) (GLuint sampler, GLenum pname, const GLint * params);        /* 609 */
-    void (GLAPIENTRYP SamplerParameterIuiv) (GLuint sampler, GLenum pname, const GLuint * params);      /* 610 */
-    void (GLAPIENTRYP SamplerParameterf) (GLuint sampler, GLenum pname, GLfloat param); /* 611 */
-    void (GLAPIENTRYP SamplerParameterfv) (GLuint sampler, GLenum pname, const GLfloat * params);       /* 612 */
-    void (GLAPIENTRYP SamplerParameteri) (GLuint sampler, GLenum pname, GLint param);   /* 613 */
-    void (GLAPIENTRYP SamplerParameteriv) (GLuint sampler, GLenum pname, const GLint * params); /* 614 */
-    void (GLAPIENTRYP ColorP3ui) (GLenum type, GLuint color);   /* 615 */
-    void (GLAPIENTRYP ColorP3uiv) (GLenum type, const GLuint * color);  /* 616 */
-    void (GLAPIENTRYP ColorP4ui) (GLenum type, GLuint color);   /* 617 */
-    void (GLAPIENTRYP ColorP4uiv) (GLenum type, const GLuint * color);  /* 618 */
-    void (GLAPIENTRYP MultiTexCoordP1ui) (GLenum texture, GLenum type, GLuint coords);  /* 619 */
-    void (GLAPIENTRYP MultiTexCoordP1uiv) (GLenum texture, GLenum type, const GLuint * coords); /* 620 */
-    void (GLAPIENTRYP MultiTexCoordP2ui) (GLenum texture, GLenum type, GLuint coords);  /* 621 */
-    void (GLAPIENTRYP MultiTexCoordP2uiv) (GLenum texture, GLenum type, const GLuint * coords); /* 622 */
-    void (GLAPIENTRYP MultiTexCoordP3ui) (GLenum texture, GLenum type, GLuint coords);  /* 623 */
-    void (GLAPIENTRYP MultiTexCoordP3uiv) (GLenum texture, GLenum type, const GLuint * coords); /* 624 */
-    void (GLAPIENTRYP MultiTexCoordP4ui) (GLenum texture, GLenum type, GLuint coords);  /* 625 */
-    void (GLAPIENTRYP MultiTexCoordP4uiv) (GLenum texture, GLenum type, const GLuint * coords); /* 626 */
-    void (GLAPIENTRYP NormalP3ui) (GLenum type, GLuint coords); /* 627 */
-    void (GLAPIENTRYP NormalP3uiv) (GLenum type, const GLuint * coords);        /* 628 */
-    void (GLAPIENTRYP SecondaryColorP3ui) (GLenum type, GLuint color);  /* 629 */
-    void (GLAPIENTRYP SecondaryColorP3uiv) (GLenum type, const GLuint * color); /* 630 */
-    void (GLAPIENTRYP TexCoordP1ui) (GLenum type, GLuint coords);       /* 631 */
-    void (GLAPIENTRYP TexCoordP1uiv) (GLenum type, const GLuint * coords);      /* 632 */
-    void (GLAPIENTRYP TexCoordP2ui) (GLenum type, GLuint coords);       /* 633 */
-    void (GLAPIENTRYP TexCoordP2uiv) (GLenum type, const GLuint * coords);      /* 634 */
-    void (GLAPIENTRYP TexCoordP3ui) (GLenum type, GLuint coords);       /* 635 */
-    void (GLAPIENTRYP TexCoordP3uiv) (GLenum type, const GLuint * coords);      /* 636 */
-    void (GLAPIENTRYP TexCoordP4ui) (GLenum type, GLuint coords);       /* 637 */
-    void (GLAPIENTRYP TexCoordP4uiv) (GLenum type, const GLuint * coords);      /* 638 */
-    void (GLAPIENTRYP VertexAttribP1ui) (GLuint index, GLenum type, GLboolean normalized, GLuint value);        /* 639 */
-    void (GLAPIENTRYP VertexAttribP1uiv) (GLuint index, GLenum type, GLboolean normalized, const GLuint * value);       /* 640 */
-    void (GLAPIENTRYP VertexAttribP2ui) (GLuint index, GLenum type, GLboolean normalized, GLuint value);        /* 641 */
-    void (GLAPIENTRYP VertexAttribP2uiv) (GLuint index, GLenum type, GLboolean normalized, const GLuint * value);       /* 642 */
-    void (GLAPIENTRYP VertexAttribP3ui) (GLuint index, GLenum type, GLboolean normalized, GLuint value);        /* 643 */
-    void (GLAPIENTRYP VertexAttribP3uiv) (GLuint index, GLenum type, GLboolean normalized, const GLuint * value);       /* 644 */
-    void (GLAPIENTRYP VertexAttribP4ui) (GLuint index, GLenum type, GLboolean normalized, GLuint value);        /* 645 */
-    void (GLAPIENTRYP VertexAttribP4uiv) (GLuint index, GLenum type, GLboolean normalized, const GLuint * value);       /* 646 */
-    void (GLAPIENTRYP VertexP2ui) (GLenum type, GLuint value);  /* 647 */
-    void (GLAPIENTRYP VertexP2uiv) (GLenum type, const GLuint * value); /* 648 */
-    void (GLAPIENTRYP VertexP3ui) (GLenum type, GLuint value);  /* 649 */
-    void (GLAPIENTRYP VertexP3uiv) (GLenum type, const GLuint * value); /* 650 */
-    void (GLAPIENTRYP VertexP4ui) (GLenum type, GLuint value);  /* 651 */
-    void (GLAPIENTRYP VertexP4uiv) (GLenum type, const GLuint * value); /* 652 */
-    void (GLAPIENTRYP BindTransformFeedback) (GLenum target, GLuint id);        /* 653 */
-    void (GLAPIENTRYP DeleteTransformFeedbacks) (GLsizei n, const GLuint * ids);        /* 654 */
-    void (GLAPIENTRYP DrawTransformFeedback) (GLenum mode, GLuint id);  /* 655 */
-    void (GLAPIENTRYP GenTransformFeedbacks) (GLsizei n, GLuint * ids); /* 656 */
-     GLboolean(GLAPIENTRYP IsTransformFeedback) (GLuint id);    /* 657 */
-    void (GLAPIENTRYP PauseTransformFeedback) (void);   /* 658 */
-    void (GLAPIENTRYP ResumeTransformFeedback) (void);  /* 659 */
-    void (GLAPIENTRYP ClearDepthf) (GLclampf depth);    /* 660 */
-    void (GLAPIENTRYP DepthRangef) (GLclampf zNear, GLclampf zFar);     /* 661 */
-    void (GLAPIENTRYP GetShaderPrecisionFormat) (GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision);    /* 662 */
-    void (GLAPIENTRYP ReleaseShaderCompiler) (void);    /* 663 */
-    void (GLAPIENTRYP ShaderBinary) (GLsizei n, const GLuint * shaders, GLenum binaryformat, const GLvoid * binary, GLsizei length);    /* 664 */
-     GLenum(GLAPIENTRYP GetGraphicsResetStatusARB) (void);      /* 665 */
-    void (GLAPIENTRYP GetnColorTableARB) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid * table);  /* 666 */
-    void (GLAPIENTRYP GetnCompressedTexImageARB) (GLenum target, GLint lod, GLsizei bufSize, GLvoid * img);     /* 667 */
-    void (GLAPIENTRYP GetnConvolutionFilterARB) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid * image);   /* 668 */
-    void (GLAPIENTRYP GetnHistogramARB) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid * values); /* 669 */
-    void (GLAPIENTRYP GetnMapdvARB) (GLenum target, GLenum query, GLsizei bufSize, GLdouble * v);       /* 670 */
-    void (GLAPIENTRYP GetnMapfvARB) (GLenum target, GLenum query, GLsizei bufSize, GLfloat * v);        /* 671 */
-    void (GLAPIENTRYP GetnMapivARB) (GLenum target, GLenum query, GLsizei bufSize, GLint * v);  /* 672 */
-    void (GLAPIENTRYP GetnMinmaxARB) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid * values);    /* 673 */
-    void (GLAPIENTRYP GetnPixelMapfvARB) (GLenum map, GLsizei bufSize, GLfloat * values);       /* 674 */
-    void (GLAPIENTRYP GetnPixelMapuivARB) (GLenum map, GLsizei bufSize, GLuint * values);       /* 675 */
-    void (GLAPIENTRYP GetnPixelMapusvARB) (GLenum map, GLsizei bufSize, GLushort * values);     /* 676 */
-    void (GLAPIENTRYP GetnPolygonStippleARB) (GLsizei bufSize, GLubyte * pattern);      /* 677 */
-    void (GLAPIENTRYP GetnSeparableFilterARB) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid * row, GLsizei columnBufSize, GLvoid * column, GLvoid * span);     /* 678 */
-    void (GLAPIENTRYP GetnTexImageARB) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid * img); /* 679 */
-    void (GLAPIENTRYP GetnUniformdvARB) (GLhandleARB program, GLint location, GLsizei bufSize, GLdouble * params);      /* 680 */
-    void (GLAPIENTRYP GetnUniformfvARB) (GLhandleARB program, GLint location, GLsizei bufSize, GLfloat * params);       /* 681 */
-    void (GLAPIENTRYP GetnUniformivARB) (GLhandleARB program, GLint location, GLsizei bufSize, GLint * params); /* 682 */
-    void (GLAPIENTRYP GetnUniformuivARB) (GLhandleARB program, GLint location, GLsizei bufSize, GLuint * params);       /* 683 */
-    void (GLAPIENTRYP ReadnPixelsARB) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid * data);    /* 684 */
-    void (GLAPIENTRYP TexStorage1D) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width);      /* 685 */
-    void (GLAPIENTRYP TexStorage2D) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height);      /* 686 */
-    void (GLAPIENTRYP TexStorage3D) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth);       /* 687 */
-    void (GLAPIENTRYP TextureStorage1DEXT) (GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width);       /* 688 */
-    void (GLAPIENTRYP TextureStorage2DEXT) (GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height);       /* 689 */
-    void (GLAPIENTRYP TextureStorage3DEXT) (GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth);        /* 690 */
-    void (GLAPIENTRYP PolygonOffsetEXT) (GLfloat factor, GLfloat bias); /* 691 */
-    void (GLAPIENTRYP GetPixelTexGenParameterfvSGIS) (GLenum pname, GLfloat * params);  /* 692 */
-    void (GLAPIENTRYP GetPixelTexGenParameterivSGIS) (GLenum pname, GLint * params);    /* 693 */
-    void (GLAPIENTRYP PixelTexGenParameterfSGIS) (GLenum pname, GLfloat param); /* 694 */
-    void (GLAPIENTRYP PixelTexGenParameterfvSGIS) (GLenum pname, const GLfloat * params);       /* 695 */
-    void (GLAPIENTRYP PixelTexGenParameteriSGIS) (GLenum pname, GLint param);   /* 696 */
-    void (GLAPIENTRYP PixelTexGenParameterivSGIS) (GLenum pname, const GLint * params); /* 697 */
-    void (GLAPIENTRYP SampleMaskSGIS) (GLclampf value, GLboolean invert);       /* 698 */
-    void (GLAPIENTRYP SamplePatternSGIS) (GLenum pattern);      /* 699 */
-    void (GLAPIENTRYP ColorPointerEXT) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);        /* 700 */
-    void (GLAPIENTRYP EdgeFlagPointerEXT) (GLsizei stride, GLsizei count, const GLboolean * pointer);   /* 701 */
-    void (GLAPIENTRYP IndexPointerEXT) (GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);    /* 702 */
-    void (GLAPIENTRYP NormalPointerEXT) (GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);   /* 703 */
-    void (GLAPIENTRYP TexCoordPointerEXT) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);     /* 704 */
-    void (GLAPIENTRYP VertexPointerEXT) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);       /* 705 */
-    void (GLAPIENTRYP PointParameterfEXT) (GLenum pname, GLfloat param);        /* 706 */
-    void (GLAPIENTRYP PointParameterfvEXT) (GLenum pname, const GLfloat * params);      /* 707 */
-    void (GLAPIENTRYP LockArraysEXT) (GLint first, GLsizei count);      /* 708 */
-    void (GLAPIENTRYP UnlockArraysEXT) (void);  /* 709 */
-    void (GLAPIENTRYP SecondaryColor3bEXT) (GLbyte red, GLbyte green, GLbyte blue);     /* 710 */
-    void (GLAPIENTRYP SecondaryColor3bvEXT) (const GLbyte * v); /* 711 */
-    void (GLAPIENTRYP SecondaryColor3dEXT) (GLdouble red, GLdouble green, GLdouble blue);       /* 712 */
-    void (GLAPIENTRYP SecondaryColor3dvEXT) (const GLdouble * v);       /* 713 */
-    void (GLAPIENTRYP SecondaryColor3fEXT) (GLfloat red, GLfloat green, GLfloat blue);  /* 714 */
-    void (GLAPIENTRYP SecondaryColor3fvEXT) (const GLfloat * v);        /* 715 */
-    void (GLAPIENTRYP SecondaryColor3iEXT) (GLint red, GLint green, GLint blue);        /* 716 */
-    void (GLAPIENTRYP SecondaryColor3ivEXT) (const GLint * v);  /* 717 */
-    void (GLAPIENTRYP SecondaryColor3sEXT) (GLshort red, GLshort green, GLshort blue);  /* 718 */
-    void (GLAPIENTRYP SecondaryColor3svEXT) (const GLshort * v);        /* 719 */
-    void (GLAPIENTRYP SecondaryColor3ubEXT) (GLubyte red, GLubyte green, GLubyte blue); /* 720 */
-    void (GLAPIENTRYP SecondaryColor3ubvEXT) (const GLubyte * v);       /* 721 */
-    void (GLAPIENTRYP SecondaryColor3uiEXT) (GLuint red, GLuint green, GLuint blue);    /* 722 */
-    void (GLAPIENTRYP SecondaryColor3uivEXT) (const GLuint * v);        /* 723 */
-    void (GLAPIENTRYP SecondaryColor3usEXT) (GLushort red, GLushort green, GLushort blue);      /* 724 */
-    void (GLAPIENTRYP SecondaryColor3usvEXT) (const GLushort * v);      /* 725 */
-    void (GLAPIENTRYP SecondaryColorPointerEXT) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);      /* 726 */
-    void (GLAPIENTRYP MultiDrawArraysEXT) (GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount); /* 727 */
-    void (GLAPIENTRYP MultiDrawElementsEXT) (GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount);      /* 728 */
-    void (GLAPIENTRYP FogCoordPointerEXT) (GLenum type, GLsizei stride, const GLvoid * pointer);        /* 729 */
-    void (GLAPIENTRYP FogCoorddEXT) (GLdouble coord);   /* 730 */
-    void (GLAPIENTRYP FogCoorddvEXT) (const GLdouble * coord);  /* 731 */
-    void (GLAPIENTRYP FogCoordfEXT) (GLfloat coord);    /* 732 */
-    void (GLAPIENTRYP FogCoordfvEXT) (const GLfloat * coord);   /* 733 */
-    void (GLAPIENTRYP PixelTexGenSGIX) (GLenum mode);   /* 734 */
-    void (GLAPIENTRYP BlendFuncSeparateEXT) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);   /* 735 */
-    void (GLAPIENTRYP FlushVertexArrayRangeNV) (void);  /* 736 */
-    void (GLAPIENTRYP VertexArrayRangeNV) (GLsizei length, const GLvoid * pointer);     /* 737 */
-    void (GLAPIENTRYP CombinerInputNV) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);    /* 738 */
-    void (GLAPIENTRYP CombinerOutputNV) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);        /* 739 */
-    void (GLAPIENTRYP CombinerParameterfNV) (GLenum pname, GLfloat param);      /* 740 */
-    void (GLAPIENTRYP CombinerParameterfvNV) (GLenum pname, const GLfloat * params);    /* 741 */
-    void (GLAPIENTRYP CombinerParameteriNV) (GLenum pname, GLint param);        /* 742 */
-    void (GLAPIENTRYP CombinerParameterivNV) (GLenum pname, const GLint * params);      /* 743 */
-    void (GLAPIENTRYP FinalCombinerInputNV) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);     /* 744 */
-    void (GLAPIENTRYP GetCombinerInputParameterfvNV) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params);   /* 745 */
-    void (GLAPIENTRYP GetCombinerInputParameterivNV) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params);     /* 746 */
-    void (GLAPIENTRYP GetCombinerOutputParameterfvNV) (GLenum stage, GLenum portion, GLenum pname, GLfloat * params);   /* 747 */
-    void (GLAPIENTRYP GetCombinerOutputParameterivNV) (GLenum stage, GLenum portion, GLenum pname, GLint * params);     /* 748 */
-    void (GLAPIENTRYP GetFinalCombinerInputParameterfvNV) (GLenum variable, GLenum pname, GLfloat * params);    /* 749 */
-    void (GLAPIENTRYP GetFinalCombinerInputParameterivNV) (GLenum variable, GLenum pname, GLint * params);      /* 750 */
-    void (GLAPIENTRYP ResizeBuffersMESA) (void);        /* 751 */
-    void (GLAPIENTRYP WindowPos2dMESA) (GLdouble x, GLdouble y);        /* 752 */
-    void (GLAPIENTRYP WindowPos2dvMESA) (const GLdouble * v);   /* 753 */
-    void (GLAPIENTRYP WindowPos2fMESA) (GLfloat x, GLfloat y);  /* 754 */
-    void (GLAPIENTRYP WindowPos2fvMESA) (const GLfloat * v);    /* 755 */
-    void (GLAPIENTRYP WindowPos2iMESA) (GLint x, GLint y);      /* 756 */
-    void (GLAPIENTRYP WindowPos2ivMESA) (const GLint * v);      /* 757 */
-    void (GLAPIENTRYP WindowPos2sMESA) (GLshort x, GLshort y);  /* 758 */
-    void (GLAPIENTRYP WindowPos2svMESA) (const GLshort * v);    /* 759 */
-    void (GLAPIENTRYP WindowPos3dMESA) (GLdouble x, GLdouble y, GLdouble z);    /* 760 */
-    void (GLAPIENTRYP WindowPos3dvMESA) (const GLdouble * v);   /* 761 */
-    void (GLAPIENTRYP WindowPos3fMESA) (GLfloat x, GLfloat y, GLfloat z);       /* 762 */
-    void (GLAPIENTRYP WindowPos3fvMESA) (const GLfloat * v);    /* 763 */
-    void (GLAPIENTRYP WindowPos3iMESA) (GLint x, GLint y, GLint z);     /* 764 */
-    void (GLAPIENTRYP WindowPos3ivMESA) (const GLint * v);      /* 765 */
-    void (GLAPIENTRYP WindowPos3sMESA) (GLshort x, GLshort y, GLshort z);       /* 766 */
-    void (GLAPIENTRYP WindowPos3svMESA) (const GLshort * v);    /* 767 */
-    void (GLAPIENTRYP WindowPos4dMESA) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);        /* 768 */
-    void (GLAPIENTRYP WindowPos4dvMESA) (const GLdouble * v);   /* 769 */
-    void (GLAPIENTRYP WindowPos4fMESA) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);    /* 770 */
-    void (GLAPIENTRYP WindowPos4fvMESA) (const GLfloat * v);    /* 771 */
-    void (GLAPIENTRYP WindowPos4iMESA) (GLint x, GLint y, GLint z, GLint w);    /* 772 */
-    void (GLAPIENTRYP WindowPos4ivMESA) (const GLint * v);      /* 773 */
-    void (GLAPIENTRYP WindowPos4sMESA) (GLshort x, GLshort y, GLshort z, GLshort w);    /* 774 */
-    void (GLAPIENTRYP WindowPos4svMESA) (const GLshort * v);    /* 775 */
-    void (GLAPIENTRYP MultiModeDrawArraysIBM) (const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);   /* 776 */
-    void (GLAPIENTRYP MultiModeDrawElementsIBM) (const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride);  /* 777 */
-    void (GLAPIENTRYP DeleteFencesNV) (GLsizei n, const GLuint * fences);       /* 778 */
-    void (GLAPIENTRYP FinishFenceNV) (GLuint fence);    /* 779 */
-    void (GLAPIENTRYP GenFencesNV) (GLsizei n, GLuint * fences);        /* 780 */
-    void (GLAPIENTRYP GetFenceivNV) (GLuint fence, GLenum pname, GLint * params);       /* 781 */
-     GLboolean(GLAPIENTRYP IsFenceNV) (GLuint fence);   /* 782 */
-    void (GLAPIENTRYP SetFenceNV) (GLuint fence, GLenum condition);     /* 783 */
-     GLboolean(GLAPIENTRYP TestFenceNV) (GLuint fence); /* 784 */
-     GLboolean(GLAPIENTRYP AreProgramsResidentNV) (GLsizei n, const GLuint * ids, GLboolean * residences);      /* 785 */
-    void (GLAPIENTRYP BindProgramNV) (GLenum target, GLuint program);   /* 786 */
-    void (GLAPIENTRYP DeleteProgramsNV) (GLsizei n, const GLuint * programs);   /* 787 */
-    void (GLAPIENTRYP ExecuteProgramNV) (GLenum target, GLuint id, const GLfloat * params);     /* 788 */
-    void (GLAPIENTRYP GenProgramsNV) (GLsizei n, GLuint * programs);    /* 789 */
-    void (GLAPIENTRYP GetProgramParameterdvNV) (GLenum target, GLuint index, GLenum pname, GLdouble * params);  /* 790 */
-    void (GLAPIENTRYP GetProgramParameterfvNV) (GLenum target, GLuint index, GLenum pname, GLfloat * params);   /* 791 */
-    void (GLAPIENTRYP GetProgramStringNV) (GLuint id, GLenum pname, GLubyte * program); /* 792 */
-    void (GLAPIENTRYP GetProgramivNV) (GLuint id, GLenum pname, GLint * params);        /* 793 */
-    void (GLAPIENTRYP GetTrackMatrixivNV) (GLenum target, GLuint address, GLenum pname, GLint * params);        /* 794 */
-    void (GLAPIENTRYP GetVertexAttribPointervNV) (GLuint index, GLenum pname, GLvoid ** pointer);       /* 795 */
-    void (GLAPIENTRYP GetVertexAttribdvNV) (GLuint index, GLenum pname, GLdouble * params);     /* 796 */
-    void (GLAPIENTRYP GetVertexAttribfvNV) (GLuint index, GLenum pname, GLfloat * params);      /* 797 */
-    void (GLAPIENTRYP GetVertexAttribivNV) (GLuint index, GLenum pname, GLint * params);        /* 798 */
-     GLboolean(GLAPIENTRYP IsProgramNV) (GLuint program);       /* 799 */
-    void (GLAPIENTRYP LoadProgramNV) (GLenum target, GLuint id, GLsizei len, const GLubyte * program);  /* 800 */
-    void (GLAPIENTRYP ProgramParameters4dvNV) (GLenum target, GLuint index, GLsizei num, const GLdouble * params);      /* 801 */
-    void (GLAPIENTRYP ProgramParameters4fvNV) (GLenum target, GLuint index, GLsizei num, const GLfloat * params);       /* 802 */
-    void (GLAPIENTRYP RequestResidentProgramsNV) (GLsizei n, const GLuint * ids);       /* 803 */
-    void (GLAPIENTRYP TrackMatrixNV) (GLenum target, GLuint address, GLenum matrix, GLenum transform);  /* 804 */
-    void (GLAPIENTRYP VertexAttrib1dNV) (GLuint index, GLdouble x);     /* 805 */
-    void (GLAPIENTRYP VertexAttrib1dvNV) (GLuint index, const GLdouble * v);    /* 806 */
-    void (GLAPIENTRYP VertexAttrib1fNV) (GLuint index, GLfloat x);      /* 807 */
-    void (GLAPIENTRYP VertexAttrib1fvNV) (GLuint index, const GLfloat * v);     /* 808 */
-    void (GLAPIENTRYP VertexAttrib1sNV) (GLuint index, GLshort x);      /* 809 */
-    void (GLAPIENTRYP VertexAttrib1svNV) (GLuint index, const GLshort * v);     /* 810 */
-    void (GLAPIENTRYP VertexAttrib2dNV) (GLuint index, GLdouble x, GLdouble y); /* 811 */
-    void (GLAPIENTRYP VertexAttrib2dvNV) (GLuint index, const GLdouble * v);    /* 812 */
-    void (GLAPIENTRYP VertexAttrib2fNV) (GLuint index, GLfloat x, GLfloat y);   /* 813 */
-    void (GLAPIENTRYP VertexAttrib2fvNV) (GLuint index, const GLfloat * v);     /* 814 */
-    void (GLAPIENTRYP VertexAttrib2sNV) (GLuint index, GLshort x, GLshort y);   /* 815 */
-    void (GLAPIENTRYP VertexAttrib2svNV) (GLuint index, const GLshort * v);     /* 816 */
-    void (GLAPIENTRYP VertexAttrib3dNV) (GLuint index, GLdouble x, GLdouble y, GLdouble z);     /* 817 */
-    void (GLAPIENTRYP VertexAttrib3dvNV) (GLuint index, const GLdouble * v);    /* 818 */
-    void (GLAPIENTRYP VertexAttrib3fNV) (GLuint index, GLfloat x, GLfloat y, GLfloat z);        /* 819 */
-    void (GLAPIENTRYP VertexAttrib3fvNV) (GLuint index, const GLfloat * v);     /* 820 */
-    void (GLAPIENTRYP VertexAttrib3sNV) (GLuint index, GLshort x, GLshort y, GLshort z);        /* 821 */
-    void (GLAPIENTRYP VertexAttrib3svNV) (GLuint index, const GLshort * v);     /* 822 */
-    void (GLAPIENTRYP VertexAttrib4dNV) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 823 */
-    void (GLAPIENTRYP VertexAttrib4dvNV) (GLuint index, const GLdouble * v);    /* 824 */
-    void (GLAPIENTRYP VertexAttrib4fNV) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);     /* 825 */
-    void (GLAPIENTRYP VertexAttrib4fvNV) (GLuint index, const GLfloat * v);     /* 826 */
-    void (GLAPIENTRYP VertexAttrib4sNV) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);     /* 827 */
-    void (GLAPIENTRYP VertexAttrib4svNV) (GLuint index, const GLshort * v);     /* 828 */
-    void (GLAPIENTRYP VertexAttrib4ubNV) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);    /* 829 */
-    void (GLAPIENTRYP VertexAttrib4ubvNV) (GLuint index, const GLubyte * v);    /* 830 */
-    void (GLAPIENTRYP VertexAttribPointerNV) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);   /* 831 */
-    void (GLAPIENTRYP VertexAttribs1dvNV) (GLuint index, GLsizei n, const GLdouble * v);        /* 832 */
-    void (GLAPIENTRYP VertexAttribs1fvNV) (GLuint index, GLsizei n, const GLfloat * v); /* 833 */
-    void (GLAPIENTRYP VertexAttribs1svNV) (GLuint index, GLsizei n, const GLshort * v); /* 834 */
-    void (GLAPIENTRYP VertexAttribs2dvNV) (GLuint index, GLsizei n, const GLdouble * v);        /* 835 */
-    void (GLAPIENTRYP VertexAttribs2fvNV) (GLuint index, GLsizei n, const GLfloat * v); /* 836 */
-    void (GLAPIENTRYP VertexAttribs2svNV) (GLuint index, GLsizei n, const GLshort * v); /* 837 */
-    void (GLAPIENTRYP VertexAttribs3dvNV) (GLuint index, GLsizei n, const GLdouble * v);        /* 838 */
-    void (GLAPIENTRYP VertexAttribs3fvNV) (GLuint index, GLsizei n, const GLfloat * v); /* 839 */
-    void (GLAPIENTRYP VertexAttribs3svNV) (GLuint index, GLsizei n, const GLshort * v); /* 840 */
-    void (GLAPIENTRYP VertexAttribs4dvNV) (GLuint index, GLsizei n, const GLdouble * v);        /* 841 */
-    void (GLAPIENTRYP VertexAttribs4fvNV) (GLuint index, GLsizei n, const GLfloat * v); /* 842 */
-    void (GLAPIENTRYP VertexAttribs4svNV) (GLuint index, GLsizei n, const GLshort * v); /* 843 */
-    void (GLAPIENTRYP VertexAttribs4ubvNV) (GLuint index, GLsizei n, const GLubyte * v);        /* 844 */
-    void (GLAPIENTRYP GetTexBumpParameterfvATI) (GLenum pname, GLfloat * param);        /* 845 */
-    void (GLAPIENTRYP GetTexBumpParameterivATI) (GLenum pname, GLint * param);  /* 846 */
-    void (GLAPIENTRYP TexBumpParameterfvATI) (GLenum pname, const GLfloat * param);     /* 847 */
-    void (GLAPIENTRYP TexBumpParameterivATI) (GLenum pname, const GLint * param);       /* 848 */
-    void (GLAPIENTRYP AlphaFragmentOp1ATI) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 849 */
-    void (GLAPIENTRYP AlphaFragmentOp2ATI) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);    /* 850 */
-    void (GLAPIENTRYP AlphaFragmentOp3ATI) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);       /* 851 */
-    void (GLAPIENTRYP BeginFragmentShaderATI) (void);   /* 852 */
-    void (GLAPIENTRYP BindFragmentShaderATI) (GLuint id);       /* 853 */
-    void (GLAPIENTRYP ColorFragmentOp1ATI) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 854 */
-    void (GLAPIENTRYP ColorFragmentOp2ATI) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);    /* 855 */
-    void (GLAPIENTRYP ColorFragmentOp3ATI) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);       /* 856 */
-    void (GLAPIENTRYP DeleteFragmentShaderATI) (GLuint id);     /* 857 */
-    void (GLAPIENTRYP EndFragmentShaderATI) (void);     /* 858 */
-     GLuint(GLAPIENTRYP GenFragmentShadersATI) (GLuint range);  /* 859 */
-    void (GLAPIENTRYP PassTexCoordATI) (GLuint dst, GLuint coord, GLenum swizzle);      /* 860 */
-    void (GLAPIENTRYP SampleMapATI) (GLuint dst, GLuint interp, GLenum swizzle);        /* 861 */
-    void (GLAPIENTRYP SetFragmentShaderConstantATI) (GLuint dst, const GLfloat * value);        /* 862 */
-    void (GLAPIENTRYP PointParameteriNV) (GLenum pname, GLint param);   /* 863 */
-    void (GLAPIENTRYP PointParameterivNV) (GLenum pname, const GLint * params); /* 864 */
-    void (GLAPIENTRYP ActiveStencilFaceEXT) (GLenum face);      /* 865 */
-    void (GLAPIENTRYP BindVertexArrayAPPLE) (GLuint array);     /* 866 */
-    void (GLAPIENTRYP DeleteVertexArraysAPPLE) (GLsizei n, const GLuint * arrays);      /* 867 */
-    void (GLAPIENTRYP GenVertexArraysAPPLE) (GLsizei n, GLuint * arrays);       /* 868 */
-     GLboolean(GLAPIENTRYP IsVertexArrayAPPLE) (GLuint array);  /* 869 */
-    void (GLAPIENTRYP GetProgramNamedParameterdvNV) (GLuint id, GLsizei len, const GLubyte * name, GLdouble * params);  /* 870 */
-    void (GLAPIENTRYP GetProgramNamedParameterfvNV) (GLuint id, GLsizei len, const GLubyte * name, GLfloat * params);   /* 871 */
-    void (GLAPIENTRYP ProgramNamedParameter4dNV) (GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);        /* 872 */
-    void (GLAPIENTRYP ProgramNamedParameter4dvNV) (GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v);   /* 873 */
-    void (GLAPIENTRYP ProgramNamedParameter4fNV) (GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);    /* 874 */
-    void (GLAPIENTRYP ProgramNamedParameter4fvNV) (GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v);    /* 875 */
-    void (GLAPIENTRYP PrimitiveRestartIndexNV) (GLuint index);  /* 876 */
-    void (GLAPIENTRYP PrimitiveRestartNV) (void);       /* 877 */
-    void (GLAPIENTRYP DepthBoundsEXT) (GLclampd zmin, GLclampd zmax);   /* 878 */
-    void (GLAPIENTRYP BlendEquationSeparateEXT) (GLenum modeRGB, GLenum modeA); /* 879 */
-    void (GLAPIENTRYP BindFramebufferEXT) (GLenum target, GLuint framebuffer);  /* 880 */
-    void (GLAPIENTRYP BindRenderbufferEXT) (GLenum target, GLuint renderbuffer);        /* 881 */
-     GLenum(GLAPIENTRYP CheckFramebufferStatusEXT) (GLenum target);     /* 882 */
-    void (GLAPIENTRYP DeleteFramebuffersEXT) (GLsizei n, const GLuint * framebuffers);  /* 883 */
-    void (GLAPIENTRYP DeleteRenderbuffersEXT) (GLsizei n, const GLuint * renderbuffers);        /* 884 */
-    void (GLAPIENTRYP FramebufferRenderbufferEXT) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);   /* 885 */
-    void (GLAPIENTRYP FramebufferTexture1DEXT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);       /* 886 */
-    void (GLAPIENTRYP FramebufferTexture2DEXT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);       /* 887 */
-    void (GLAPIENTRYP FramebufferTexture3DEXT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);        /* 888 */
-    void (GLAPIENTRYP GenFramebuffersEXT) (GLsizei n, GLuint * framebuffers);   /* 889 */
-    void (GLAPIENTRYP GenRenderbuffersEXT) (GLsizei n, GLuint * renderbuffers); /* 890 */
-    void (GLAPIENTRYP GenerateMipmapEXT) (GLenum target);       /* 891 */
-    void (GLAPIENTRYP GetFramebufferAttachmentParameterivEXT) (GLenum target, GLenum attachment, GLenum pname, GLint * params); /* 892 */
-    void (GLAPIENTRYP GetRenderbufferParameterivEXT) (GLenum target, GLenum pname, GLint * params);     /* 893 */
-     GLboolean(GLAPIENTRYP IsFramebufferEXT) (GLuint framebuffer);      /* 894 */
-     GLboolean(GLAPIENTRYP IsRenderbufferEXT) (GLuint renderbuffer);    /* 895 */
-    void (GLAPIENTRYP RenderbufferStorageEXT) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);    /* 896 */
-    void (GLAPIENTRYP BlitFramebufferEXT) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);     /* 897 */
-    void (GLAPIENTRYP BufferParameteriAPPLE) (GLenum target, GLenum pname, GLint param);        /* 898 */
-    void (GLAPIENTRYP FlushMappedBufferRangeAPPLE) (GLenum target, GLintptr offset, GLsizeiptr size);   /* 899 */
-    void (GLAPIENTRYP BindFragDataLocationEXT) (GLuint program, GLuint colorNumber, const GLchar * name);       /* 900 */
-     GLint(GLAPIENTRYP GetFragDataLocationEXT) (GLuint program, const GLchar * name);   /* 901 */
-    void (GLAPIENTRYP GetUniformuivEXT) (GLuint program, GLint location, GLuint * params);      /* 902 */
-    void (GLAPIENTRYP GetVertexAttribIivEXT) (GLuint index, GLenum pname, GLint * params);      /* 903 */
-    void (GLAPIENTRYP GetVertexAttribIuivEXT) (GLuint index, GLenum pname, GLuint * params);    /* 904 */
-    void (GLAPIENTRYP Uniform1uiEXT) (GLint location, GLuint x);        /* 905 */
-    void (GLAPIENTRYP Uniform1uivEXT) (GLint location, GLsizei count, const GLuint * value);    /* 906 */
-    void (GLAPIENTRYP Uniform2uiEXT) (GLint location, GLuint x, GLuint y);      /* 907 */
-    void (GLAPIENTRYP Uniform2uivEXT) (GLint location, GLsizei count, const GLuint * value);    /* 908 */
-    void (GLAPIENTRYP Uniform3uiEXT) (GLint location, GLuint x, GLuint y, GLuint z);    /* 909 */
-    void (GLAPIENTRYP Uniform3uivEXT) (GLint location, GLsizei count, const GLuint * value);    /* 910 */
-    void (GLAPIENTRYP Uniform4uiEXT) (GLint location, GLuint x, GLuint y, GLuint z, GLuint w);  /* 911 */
-    void (GLAPIENTRYP Uniform4uivEXT) (GLint location, GLsizei count, const GLuint * value);    /* 912 */
-    void (GLAPIENTRYP VertexAttribI1iEXT) (GLuint index, GLint x);      /* 913 */
-    void (GLAPIENTRYP VertexAttribI1ivEXT) (GLuint index, const GLint * v);     /* 914 */
-    void (GLAPIENTRYP VertexAttribI1uiEXT) (GLuint index, GLuint x);    /* 915 */
-    void (GLAPIENTRYP VertexAttribI1uivEXT) (GLuint index, const GLuint * v);   /* 916 */
-    void (GLAPIENTRYP VertexAttribI2iEXT) (GLuint index, GLint x, GLint y);     /* 917 */
-    void (GLAPIENTRYP VertexAttribI2ivEXT) (GLuint index, const GLint * v);     /* 918 */
-    void (GLAPIENTRYP VertexAttribI2uiEXT) (GLuint index, GLuint x, GLuint y);  /* 919 */
-    void (GLAPIENTRYP VertexAttribI2uivEXT) (GLuint index, const GLuint * v);   /* 920 */
-    void (GLAPIENTRYP VertexAttribI3iEXT) (GLuint index, GLint x, GLint y, GLint z);    /* 921 */
-    void (GLAPIENTRYP VertexAttribI3ivEXT) (GLuint index, const GLint * v);     /* 922 */
-    void (GLAPIENTRYP VertexAttribI3uiEXT) (GLuint index, GLuint x, GLuint y, GLuint z);        /* 923 */
-    void (GLAPIENTRYP VertexAttribI3uivEXT) (GLuint index, const GLuint * v);   /* 924 */
-    void (GLAPIENTRYP VertexAttribI4bvEXT) (GLuint index, const GLbyte * v);    /* 925 */
-    void (GLAPIENTRYP VertexAttribI4iEXT) (GLuint index, GLint x, GLint y, GLint z, GLint w);   /* 926 */
-    void (GLAPIENTRYP VertexAttribI4ivEXT) (GLuint index, const GLint * v);     /* 927 */
-    void (GLAPIENTRYP VertexAttribI4svEXT) (GLuint index, const GLshort * v);   /* 928 */
-    void (GLAPIENTRYP VertexAttribI4ubvEXT) (GLuint index, const GLubyte * v);  /* 929 */
-    void (GLAPIENTRYP VertexAttribI4uiEXT) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);      /* 930 */
-    void (GLAPIENTRYP VertexAttribI4uivEXT) (GLuint index, const GLuint * v);   /* 931 */
-    void (GLAPIENTRYP VertexAttribI4usvEXT) (GLuint index, const GLushort * v); /* 932 */
-    void (GLAPIENTRYP VertexAttribIPointerEXT) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 933 */
-    void (GLAPIENTRYP FramebufferTextureLayerEXT) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 934 */
-    void (GLAPIENTRYP ColorMaskIndexedEXT) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);    /* 935 */
-    void (GLAPIENTRYP DisableIndexedEXT) (GLenum target, GLuint index); /* 936 */
-    void (GLAPIENTRYP EnableIndexedEXT) (GLenum target, GLuint index);  /* 937 */
-    void (GLAPIENTRYP GetBooleanIndexedvEXT) (GLenum value, GLuint index, GLboolean * data);    /* 938 */
-    void (GLAPIENTRYP GetIntegerIndexedvEXT) (GLenum value, GLuint index, GLint * data);        /* 939 */
-     GLboolean(GLAPIENTRYP IsEnabledIndexedEXT) (GLenum target, GLuint index);  /* 940 */
-    void (GLAPIENTRYP ClearColorIiEXT) (GLint r, GLint g, GLint b, GLint a);    /* 941 */
-    void (GLAPIENTRYP ClearColorIuiEXT) (GLuint r, GLuint g, GLuint b, GLuint a);       /* 942 */
-    void (GLAPIENTRYP GetTexParameterIivEXT) (GLenum target, GLenum pname, GLint * params);     /* 943 */
-    void (GLAPIENTRYP GetTexParameterIuivEXT) (GLenum target, GLenum pname, GLuint * params);   /* 944 */
-    void (GLAPIENTRYP TexParameterIivEXT) (GLenum target, GLenum pname, const GLint * params);  /* 945 */
-    void (GLAPIENTRYP TexParameterIuivEXT) (GLenum target, GLenum pname, const GLuint * params);        /* 946 */
-    void (GLAPIENTRYP BeginConditionalRenderNV) (GLuint query, GLenum mode);    /* 947 */
-    void (GLAPIENTRYP EndConditionalRenderNV) (void);   /* 948 */
-    void (GLAPIENTRYP BeginTransformFeedbackEXT) (GLenum mode); /* 949 */
-    void (GLAPIENTRYP BindBufferBaseEXT) (GLenum target, GLuint index, GLuint buffer);  /* 950 */
-    void (GLAPIENTRYP BindBufferOffsetEXT) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);       /* 951 */
-    void (GLAPIENTRYP BindBufferRangeEXT) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);       /* 952 */
-    void (GLAPIENTRYP EndTransformFeedbackEXT) (void);  /* 953 */
-    void (GLAPIENTRYP GetTransformFeedbackVaryingEXT) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name);  /* 954 */
-    void (GLAPIENTRYP TransformFeedbackVaryingsEXT) (GLuint program, GLsizei count, const char **varyings, GLenum bufferMode);  /* 955 */
-    void (GLAPIENTRYP ProvokingVertexEXT) (GLenum mode);        /* 956 */
-    void (GLAPIENTRYP GetTexParameterPointervAPPLE) (GLenum target, GLenum pname, GLvoid ** params);    /* 957 */
-    void (GLAPIENTRYP TextureRangeAPPLE) (GLenum target, GLsizei length, GLvoid * pointer);     /* 958 */
-    void (GLAPIENTRYP GetObjectParameterivAPPLE) (GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 959 */
-     GLenum(GLAPIENTRYP ObjectPurgeableAPPLE) (GLenum objectType, GLuint name, GLenum option);  /* 960 */
-     GLenum(GLAPIENTRYP ObjectUnpurgeableAPPLE) (GLenum objectType, GLuint name, GLenum option);        /* 961 */
-    void (GLAPIENTRYP ActiveProgramEXT) (GLuint program);       /* 962 */
-     GLuint(GLAPIENTRYP CreateShaderProgramEXT) (GLenum type, const GLchar * string);   /* 963 */
-    void (GLAPIENTRYP UseShaderProgramEXT) (GLenum type, GLuint program);       /* 964 */
-    void (GLAPIENTRYP TextureBarrierNV) (void); /* 965 */
-    void (GLAPIENTRYP StencilFuncSeparateATI) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);      /* 966 */
-    void (GLAPIENTRYP ProgramEnvParameters4fvEXT) (GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 967 */
-    void (GLAPIENTRYP ProgramLocalParameters4fvEXT) (GLenum target, GLuint index, GLsizei count, const GLfloat * params);       /* 968 */
-    void (GLAPIENTRYP GetQueryObjecti64vEXT) (GLuint id, GLenum pname, GLint64EXT * params);    /* 969 */
-    void (GLAPIENTRYP GetQueryObjectui64vEXT) (GLuint id, GLenum pname, GLuint64EXT * params);  /* 970 */
-    void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES) (GLenum target, GLvoid * writeOffset);      /* 971 */
-    void (GLAPIENTRYP EGLImageTargetTexture2DOES) (GLenum target, GLvoid * writeOffset);        /* 972 */
-};
-
-#endif                          /* !defined( _GLAPI_TABLE_H_ ) */
diff --git a/glx/glprocs.h b/glx/glprocs.h
deleted file mode 100644
index 8706364..0000000
--- a/glx/glprocs.h
+++ /dev/null
@@ -1,3534 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by gl_procs.py (from Mesa) script */
-
-/*
- * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
- * (C) Copyright IBM Corporation 2004, 2006
- * 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
- * BRIAN PAUL, 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.
- */
-
-/* This file is only included by glapi.c and is used for
- * the GetProcAddress() function
- */
-
-typedef struct {
-    GLint Name_offset;
-#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)
-    _glapi_proc Address;
-#endif
-    GLuint Offset;
-} glprocs_table_t;
-
-#if   !defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
-#define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , o }
-#elif  defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
-#define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f1 , o }
-#elif  defined(NEED_FUNCTION_POINTER) &&  defined(GLX_INDIRECT_RENDERING)
-#define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f2 , o }
-#elif !defined(NEED_FUNCTION_POINTER) &&  defined(GLX_INDIRECT_RENDERING)
-#define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f3 , o }
-#endif
-
-static const char gl_string_table[] =
-    "glNewList\0"
-    "glEndList\0"
-    "glCallList\0"
-    "glCallLists\0"
-    "glDeleteLists\0"
-    "glGenLists\0"
-    "glListBase\0"
-    "glBegin\0"
-    "glBitmap\0"
-    "glColor3b\0"
-    "glColor3bv\0"
-    "glColor3d\0"
-    "glColor3dv\0"
-    "glColor3f\0"
-    "glColor3fv\0"
-    "glColor3i\0"
-    "glColor3iv\0"
-    "glColor3s\0"
-    "glColor3sv\0"
-    "glColor3ub\0"
-    "glColor3ubv\0"
-    "glColor3ui\0"
-    "glColor3uiv\0"
-    "glColor3us\0"
-    "glColor3usv\0"
-    "glColor4b\0"
-    "glColor4bv\0"
-    "glColor4d\0"
-    "glColor4dv\0"
-    "glColor4f\0"
-    "glColor4fv\0"
-    "glColor4i\0"
-    "glColor4iv\0"
-    "glColor4s\0"
-    "glColor4sv\0"
-    "glColor4ub\0"
-    "glColor4ubv\0"
-    "glColor4ui\0"
-    "glColor4uiv\0"
-    "glColor4us\0"
-    "glColor4usv\0"
-    "glEdgeFlag\0"
-    "glEdgeFlagv\0"
-    "glEnd\0"
-    "glIndexd\0"
-    "glIndexdv\0"
-    "glIndexf\0"
-    "glIndexfv\0"
-    "glIndexi\0"
-    "glIndexiv\0"
-    "glIndexs\0"
-    "glIndexsv\0"
-    "glNormal3b\0"
-    "glNormal3bv\0"
-    "glNormal3d\0"
-    "glNormal3dv\0"
-    "glNormal3f\0"
-    "glNormal3fv\0"
-    "glNormal3i\0"
-    "glNormal3iv\0"
-    "glNormal3s\0"
-    "glNormal3sv\0"
-    "glRasterPos2d\0"
-    "glRasterPos2dv\0"
-    "glRasterPos2f\0"
-    "glRasterPos2fv\0"
-    "glRasterPos2i\0"
-    "glRasterPos2iv\0"
-    "glRasterPos2s\0"
-    "glRasterPos2sv\0"
-    "glRasterPos3d\0"
-    "glRasterPos3dv\0"
-    "glRasterPos3f\0"
-    "glRasterPos3fv\0"
-    "glRasterPos3i\0"
-    "glRasterPos3iv\0"
-    "glRasterPos3s\0"
-    "glRasterPos3sv\0"
-    "glRasterPos4d\0"
-    "glRasterPos4dv\0"
-    "glRasterPos4f\0"
-    "glRasterPos4fv\0"
-    "glRasterPos4i\0"
-    "glRasterPos4iv\0"
-    "glRasterPos4s\0"
-    "glRasterPos4sv\0"
-    "glRectd\0"
-    "glRectdv\0"
-    "glRectf\0"
-    "glRectfv\0"
-    "glRecti\0"
-    "glRectiv\0"
-    "glRects\0"
-    "glRectsv\0"
-    "glTexCoord1d\0"
-    "glTexCoord1dv\0"
-    "glTexCoord1f\0"
-    "glTexCoord1fv\0"
-    "glTexCoord1i\0"
-    "glTexCoord1iv\0"
-    "glTexCoord1s\0"
-    "glTexCoord1sv\0"
-    "glTexCoord2d\0"
-    "glTexCoord2dv\0"
-    "glTexCoord2f\0"
-    "glTexCoord2fv\0"
-    "glTexCoord2i\0"
-    "glTexCoord2iv\0"
-    "glTexCoord2s\0"
-    "glTexCoord2sv\0"
-    "glTexCoord3d\0"
-    "glTexCoord3dv\0"
-    "glTexCoord3f\0"
-    "glTexCoord3fv\0"
-    "glTexCoord3i\0"
-    "glTexCoord3iv\0"
-    "glTexCoord3s\0"
-    "glTexCoord3sv\0"
-    "glTexCoord4d\0"
-    "glTexCoord4dv\0"
-    "glTexCoord4f\0"
-    "glTexCoord4fv\0"
-    "glTexCoord4i\0"
-    "glTexCoord4iv\0"
-    "glTexCoord4s\0"
-    "glTexCoord4sv\0"
-    "glVertex2d\0"
-    "glVertex2dv\0"
-    "glVertex2f\0"
-    "glVertex2fv\0"
-    "glVertex2i\0"
-    "glVertex2iv\0"
-    "glVertex2s\0"
-    "glVertex2sv\0"
-    "glVertex3d\0"
-    "glVertex3dv\0"
-    "glVertex3f\0"
-    "glVertex3fv\0"
-    "glVertex3i\0"
-    "glVertex3iv\0"
-    "glVertex3s\0"
-    "glVertex3sv\0"
-    "glVertex4d\0"
-    "glVertex4dv\0"
-    "glVertex4f\0"
-    "glVertex4fv\0"
-    "glVertex4i\0"
-    "glVertex4iv\0"
-    "glVertex4s\0"
-    "glVertex4sv\0"
-    "glClipPlane\0"
-    "glColorMaterial\0"
-    "glCullFace\0"
-    "glFogf\0"
-    "glFogfv\0"
-    "glFogi\0"
-    "glFogiv\0"
-    "glFrontFace\0"
-    "glHint\0"
-    "glLightf\0"
-    "glLightfv\0"
-    "glLighti\0"
-    "glLightiv\0"
-    "glLightModelf\0"
-    "glLightModelfv\0"
-    "glLightModeli\0"
-    "glLightModeliv\0"
-    "glLineStipple\0"
-    "glLineWidth\0"
-    "glMaterialf\0"
-    "glMaterialfv\0"
-    "glMateriali\0"
-    "glMaterialiv\0"
-    "glPointSize\0"
-    "glPolygonMode\0"
-    "glPolygonStipple\0"
-    "glScissor\0"
-    "glShadeModel\0"
-    "glTexParameterf\0"
-    "glTexParameterfv\0"
-    "glTexParameteri\0"
-    "glTexParameteriv\0"
-    "glTexImage1D\0"
-    "glTexImage2D\0"
-    "glTexEnvf\0"
-    "glTexEnvfv\0"
-    "glTexEnvi\0"
-    "glTexEnviv\0"
-    "glTexGend\0"
-    "glTexGendv\0"
-    "glTexGenf\0"
-    "glTexGenfv\0"
-    "glTexGeni\0"
-    "glTexGeniv\0"
-    "glFeedbackBuffer\0"
-    "glSelectBuffer\0"
-    "glRenderMode\0"
-    "glInitNames\0"
-    "glLoadName\0"
-    "glPassThrough\0"
-    "glPopName\0"
-    "glPushName\0"
-    "glDrawBuffer\0"
-    "glClear\0"
-    "glClearAccum\0"
-    "glClearIndex\0"
-    "glClearColor\0"
-    "glClearStencil\0"
-    "glClearDepth\0"
-    "glStencilMask\0"
-    "glColorMask\0"
-    "glDepthMask\0"
-    "glIndexMask\0"
-    "glAccum\0"
-    "glDisable\0"
-    "glEnable\0"
-    "glFinish\0"
-    "glFlush\0"
-    "glPopAttrib\0"
-    "glPushAttrib\0"
-    "glMap1d\0"
-    "glMap1f\0"
-    "glMap2d\0"
-    "glMap2f\0"
-    "glMapGrid1d\0"
-    "glMapGrid1f\0"
-    "glMapGrid2d\0"
-    "glMapGrid2f\0"
-    "glEvalCoord1d\0"
-    "glEvalCoord1dv\0"
-    "glEvalCoord1f\0"
-    "glEvalCoord1fv\0"
-    "glEvalCoord2d\0"
-    "glEvalCoord2dv\0"
-    "glEvalCoord2f\0"
-    "glEvalCoord2fv\0"
-    "glEvalMesh1\0"
-    "glEvalPoint1\0"
-    "glEvalMesh2\0"
-    "glEvalPoint2\0"
-    "glAlphaFunc\0"
-    "glBlendFunc\0"
-    "glLogicOp\0"
-    "glStencilFunc\0"
-    "glStencilOp\0"
-    "glDepthFunc\0"
-    "glPixelZoom\0"
-    "glPixelTransferf\0"
-    "glPixelTransferi\0"
-    "glPixelStoref\0"
-    "glPixelStorei\0"
-    "glPixelMapfv\0"
-    "glPixelMapuiv\0"
-    "glPixelMapusv\0"
-    "glReadBuffer\0"
-    "glCopyPixels\0"
-    "glReadPixels\0"
-    "glDrawPixels\0"
-    "glGetBooleanv\0"
-    "glGetClipPlane\0"
-    "glGetDoublev\0"
-    "glGetError\0"
-    "glGetFloatv\0"
-    "glGetIntegerv\0"
-    "glGetLightfv\0"
-    "glGetLightiv\0"
-    "glGetMapdv\0"
-    "glGetMapfv\0"
-    "glGetMapiv\0"
-    "glGetMaterialfv\0"
-    "glGetMaterialiv\0"
-    "glGetPixelMapfv\0"
-    "glGetPixelMapuiv\0"
-    "glGetPixelMapusv\0"
-    "glGetPolygonStipple\0"
-    "glGetString\0"
-    "glGetTexEnvfv\0"
-    "glGetTexEnviv\0"
-    "glGetTexGendv\0"
-    "glGetTexGenfv\0"
-    "glGetTexGeniv\0"
-    "glGetTexImage\0"
-    "glGetTexParameterfv\0"
-    "glGetTexParameteriv\0"
-    "glGetTexLevelParameterfv\0"
-    "glGetTexLevelParameteriv\0"
-    "glIsEnabled\0"
-    "glIsList\0"
-    "glDepthRange\0"
-    "glFrustum\0"
-    "glLoadIdentity\0"
-    "glLoadMatrixf\0"
-    "glLoadMatrixd\0"
-    "glMatrixMode\0"
-    "glMultMatrixf\0"
-    "glMultMatrixd\0"
-    "glOrtho\0"
-    "glPopMatrix\0"
-    "glPushMatrix\0"
-    "glRotated\0"
-    "glRotatef\0"
-    "glScaled\0"
-    "glScalef\0"
-    "glTranslated\0"
-    "glTranslatef\0"
-    "glViewport\0"
-    "glArrayElement\0"
-    "glBindTexture\0"
-    "glColorPointer\0"
-    "glDisableClientState\0"
-    "glDrawArrays\0"
-    "glDrawElements\0"
-    "glEdgeFlagPointer\0"
-    "glEnableClientState\0"
-    "glIndexPointer\0"
-    "glIndexub\0"
-    "glIndexubv\0"
-    "glInterleavedArrays\0"
-    "glNormalPointer\0"
-    "glPolygonOffset\0"
-    "glTexCoordPointer\0"
-    "glVertexPointer\0"
-    "glAreTexturesResident\0"
-    "glCopyTexImage1D\0"
-    "glCopyTexImage2D\0"
-    "glCopyTexSubImage1D\0"
-    "glCopyTexSubImage2D\0"
-    "glDeleteTextures\0"
-    "glGenTextures\0"
-    "glGetPointerv\0"
-    "glIsTexture\0"
-    "glPrioritizeTextures\0"
-    "glTexSubImage1D\0"
-    "glTexSubImage2D\0"
-    "glPopClientAttrib\0"
-    "glPushClientAttrib\0"
-    "glBlendColor\0"
-    "glBlendEquation\0"
-    "glDrawRangeElements\0"
-    "glColorTable\0"
-    "glColorTableParameterfv\0"
-    "glColorTableParameteriv\0"
-    "glCopyColorTable\0"
-    "glGetColorTable\0"
-    "glGetColorTableParameterfv\0"
-    "glGetColorTableParameteriv\0"
-    "glColorSubTable\0"
-    "glCopyColorSubTable\0"
-    "glConvolutionFilter1D\0"
-    "glConvolutionFilter2D\0"
-    "glConvolutionParameterf\0"
-    "glConvolutionParameterfv\0"
-    "glConvolutionParameteri\0"
-    "glConvolutionParameteriv\0"
-    "glCopyConvolutionFilter1D\0"
-    "glCopyConvolutionFilter2D\0"
-    "glGetConvolutionFilter\0"
-    "glGetConvolutionParameterfv\0"
-    "glGetConvolutionParameteriv\0"
-    "glGetSeparableFilter\0"
-    "glSeparableFilter2D\0"
-    "glGetHistogram\0"
-    "glGetHistogramParameterfv\0"
-    "glGetHistogramParameteriv\0"
-    "glGetMinmax\0"
-    "glGetMinmaxParameterfv\0"
-    "glGetMinmaxParameteriv\0"
-    "glHistogram\0"
-    "glMinmax\0"
-    "glResetHistogram\0"
-    "glResetMinmax\0"
-    "glTexImage3D\0"
-    "glTexSubImage3D\0"
-    "glCopyTexSubImage3D\0"
-    "glActiveTextureARB\0"
-    "glClientActiveTextureARB\0"
-    "glMultiTexCoord1dARB\0"
-    "glMultiTexCoord1dvARB\0"
-    "glMultiTexCoord1fARB\0"
-    "glMultiTexCoord1fvARB\0"
-    "glMultiTexCoord1iARB\0"
-    "glMultiTexCoord1ivARB\0"
-    "glMultiTexCoord1sARB\0"
-    "glMultiTexCoord1svARB\0"
-    "glMultiTexCoord2dARB\0"
-    "glMultiTexCoord2dvARB\0"
-    "glMultiTexCoord2fARB\0"
-    "glMultiTexCoord2fvARB\0"
-    "glMultiTexCoord2iARB\0"
-    "glMultiTexCoord2ivARB\0"
-    "glMultiTexCoord2sARB\0"
-    "glMultiTexCoord2svARB\0"
-    "glMultiTexCoord3dARB\0"
-    "glMultiTexCoord3dvARB\0"
-    "glMultiTexCoord3fARB\0"
-    "glMultiTexCoord3fvARB\0"
-    "glMultiTexCoord3iARB\0"
-    "glMultiTexCoord3ivARB\0"
-    "glMultiTexCoord3sARB\0"
-    "glMultiTexCoord3svARB\0"
-    "glMultiTexCoord4dARB\0"
-    "glMultiTexCoord4dvARB\0"
-    "glMultiTexCoord4fARB\0"
-    "glMultiTexCoord4fvARB\0"
-    "glMultiTexCoord4iARB\0"
-    "glMultiTexCoord4ivARB\0"
-    "glMultiTexCoord4sARB\0"
-    "glMultiTexCoord4svARB\0"
-    "glAttachShader\0"
-    "glCreateProgram\0"
-    "glCreateShader\0"
-    "glDeleteProgram\0"
-    "glDeleteShader\0"
-    "glDetachShader\0"
-    "glGetAttachedShaders\0"
-    "glGetProgramInfoLog\0"
-    "glGetProgramiv\0"
-    "glGetShaderInfoLog\0"
-    "glGetShaderiv\0"
-    "glIsProgram\0"
-    "glIsShader\0"
-    "glStencilFuncSeparate\0"
-    "glStencilMaskSeparate\0"
-    "glStencilOpSeparate\0"
-    "glUniformMatrix2x3fv\0"
-    "glUniformMatrix2x4fv\0"
-    "glUniformMatrix3x2fv\0"
-    "glUniformMatrix3x4fv\0"
-    "glUniformMatrix4x2fv\0"
-    "glUniformMatrix4x3fv\0"
-    "glClampColor\0"
-    "glClearBufferfi\0"
-    "glClearBufferfv\0"
-    "glClearBufferiv\0"
-    "glClearBufferuiv\0"
-    "glGetStringi\0"
-    "glTexBuffer\0"
-    "glFramebufferTexture\0"
-    "glGetBufferParameteri64v\0"
-    "glGetInteger64i_v\0"
-    "glVertexAttribDivisor\0"
-    "glLoadTransposeMatrixdARB\0"
-    "glLoadTransposeMatrixfARB\0"
-    "glMultTransposeMatrixdARB\0"
-    "glMultTransposeMatrixfARB\0"
-    "glSampleCoverageARB\0"
-    "glCompressedTexImage1DARB\0"
-    "glCompressedTexImage2DARB\0"
-    "glCompressedTexImage3DARB\0"
-    "glCompressedTexSubImage1DARB\0"
-    "glCompressedTexSubImage2DARB\0"
-    "glCompressedTexSubImage3DARB\0"
-    "glGetCompressedTexImageARB\0"
-    "glDisableVertexAttribArrayARB\0"
-    "glEnableVertexAttribArrayARB\0"
-    "glGetProgramEnvParameterdvARB\0"
-    "glGetProgramEnvParameterfvARB\0"
-    "glGetProgramLocalParameterdvARB\0"
-    "glGetProgramLocalParameterfvARB\0"
-    "glGetProgramStringARB\0"
-    "glGetProgramivARB\0"
-    "glGetVertexAttribdvARB\0"
-    "glGetVertexAttribfvARB\0"
-    "glGetVertexAttribivARB\0"
-    "glProgramEnvParameter4dARB\0"
-    "glProgramEnvParameter4dvARB\0"
-    "glProgramEnvParameter4fARB\0"
-    "glProgramEnvParameter4fvARB\0"
-    "glProgramLocalParameter4dARB\0"
-    "glProgramLocalParameter4dvARB\0"
-    "glProgramLocalParameter4fARB\0"
-    "glProgramLocalParameter4fvARB\0"
-    "glProgramStringARB\0"
-    "glVertexAttrib1dARB\0"
-    "glVertexAttrib1dvARB\0"
-    "glVertexAttrib1fARB\0"
-    "glVertexAttrib1fvARB\0"
-    "glVertexAttrib1sARB\0"
-    "glVertexAttrib1svARB\0"
-    "glVertexAttrib2dARB\0"
-    "glVertexAttrib2dvARB\0"
-    "glVertexAttrib2fARB\0"
-    "glVertexAttrib2fvARB\0"
-    "glVertexAttrib2sARB\0"
-    "glVertexAttrib2svARB\0"
-    "glVertexAttrib3dARB\0"
-    "glVertexAttrib3dvARB\0"
-    "glVertexAttrib3fARB\0"
-    "glVertexAttrib3fvARB\0"
-    "glVertexAttrib3sARB\0"
-    "glVertexAttrib3svARB\0"
-    "glVertexAttrib4NbvARB\0"
-    "glVertexAttrib4NivARB\0"
-    "glVertexAttrib4NsvARB\0"
-    "glVertexAttrib4NubARB\0"
-    "glVertexAttrib4NubvARB\0"
-    "glVertexAttrib4NuivARB\0"
-    "glVertexAttrib4NusvARB\0"
-    "glVertexAttrib4bvARB\0"
-    "glVertexAttrib4dARB\0"
-    "glVertexAttrib4dvARB\0"
-    "glVertexAttrib4fARB\0"
-    "glVertexAttrib4fvARB\0"
-    "glVertexAttrib4ivARB\0"
-    "glVertexAttrib4sARB\0"
-    "glVertexAttrib4svARB\0"
-    "glVertexAttrib4ubvARB\0"
-    "glVertexAttrib4uivARB\0"
-    "glVertexAttrib4usvARB\0"
-    "glVertexAttribPointerARB\0"
-    "glBindBufferARB\0"
-    "glBufferDataARB\0"
-    "glBufferSubDataARB\0"
-    "glDeleteBuffersARB\0"
-    "glGenBuffersARB\0"
-    "glGetBufferParameterivARB\0"
-    "glGetBufferPointervARB\0"
-    "glGetBufferSubDataARB\0"
-    "glIsBufferARB\0"
-    "glMapBufferARB\0"
-    "glUnmapBufferARB\0"
-    "glBeginQueryARB\0"
-    "glDeleteQueriesARB\0"
-    "glEndQueryARB\0"
-    "glGenQueriesARB\0"
-    "glGetQueryObjectivARB\0"
-    "glGetQueryObjectuivARB\0"
-    "glGetQueryivARB\0"
-    "glIsQueryARB\0"
-    "glAttachObjectARB\0"
-    "glCompileShaderARB\0"
-    "glCreateProgramObjectARB\0"
-    "glCreateShaderObjectARB\0"
-    "glDeleteObjectARB\0"
-    "glDetachObjectARB\0"
-    "glGetActiveUniformARB\0"
-    "glGetAttachedObjectsARB\0"
-    "glGetHandleARB\0"
-    "glGetInfoLogARB\0"
-    "glGetObjectParameterfvARB\0"
-    "glGetObjectParameterivARB\0"
-    "glGetShaderSourceARB\0"
-    "glGetUniformLocationARB\0"
-    "glGetUniformfvARB\0"
-    "glGetUniformivARB\0"
-    "glLinkProgramARB\0"
-    "glShaderSourceARB\0"
-    "glUniform1fARB\0"
-    "glUniform1fvARB\0"
-    "glUniform1iARB\0"
-    "glUniform1ivARB\0"
-    "glUniform2fARB\0"
-    "glUniform2fvARB\0"
-    "glUniform2iARB\0"
-    "glUniform2ivARB\0"
-    "glUniform3fARB\0"
-    "glUniform3fvARB\0"
-    "glUniform3iARB\0"
-    "glUniform3ivARB\0"
-    "glUniform4fARB\0"
-    "glUniform4fvARB\0"
-    "glUniform4iARB\0"
-    "glUniform4ivARB\0"
-    "glUniformMatrix2fvARB\0"
-    "glUniformMatrix3fvARB\0"
-    "glUniformMatrix4fvARB\0"
-    "glUseProgramObjectARB\0"
-    "glValidateProgramARB\0"
-    "glBindAttribLocationARB\0"
-    "glGetActiveAttribARB\0"
-    "glGetAttribLocationARB\0"
-    "glDrawBuffersARB\0"
-    "glClampColorARB\0"
-    "glDrawArraysInstancedARB\0"
-    "glDrawElementsInstancedARB\0"
-    "glRenderbufferStorageMultisample\0"
-    "glFramebufferTextureARB\0"
-    "glFramebufferTextureFaceARB\0"
-    "glProgramParameteriARB\0"
-    "glVertexAttribDivisorARB\0"
-    "glFlushMappedBufferRange\0"
-    "glMapBufferRange\0"
-    "glTexBufferARB\0"
-    "glBindVertexArray\0"
-    "glGenVertexArrays\0"
-    "glCopyBufferSubData\0"
-    "glClientWaitSync\0"
-    "glDeleteSync\0"
-    "glFenceSync\0"
-    "glGetInteger64v\0"
-    "glGetSynciv\0"
-    "glIsSync\0"
-    "glWaitSync\0"
-    "glDrawElementsBaseVertex\0"
-    "glDrawElementsInstancedBaseVertex\0"
-    "glDrawRangeElementsBaseVertex\0"
-    "glMultiDrawElementsBaseVertex\0"
-    "glBlendEquationSeparateiARB\0"
-    "glBlendEquationiARB\0"
-    "glBlendFuncSeparateiARB\0"
-    "glBlendFunciARB\0"
-    "glBindSampler\0"
-    "glDeleteSamplers\0"
-    "glGenSamplers\0"
-    "glGetSamplerParameterIiv\0"
-    "glGetSamplerParameterIuiv\0"
-    "glGetSamplerParameterfv\0"
-    "glGetSamplerParameteriv\0"
-    "glIsSampler\0"
-    "glSamplerParameterIiv\0"
-    "glSamplerParameterIuiv\0"
-    "glSamplerParameterf\0"
-    "glSamplerParameterfv\0"
-    "glSamplerParameteri\0"
-    "glSamplerParameteriv\0"
-    "glColorP3ui\0"
-    "glColorP3uiv\0"
-    "glColorP4ui\0"
-    "glColorP4uiv\0"
-    "glMultiTexCoordP1ui\0"
-    "glMultiTexCoordP1uiv\0"
-    "glMultiTexCoordP2ui\0"
-    "glMultiTexCoordP2uiv\0"
-    "glMultiTexCoordP3ui\0"
-    "glMultiTexCoordP3uiv\0"
-    "glMultiTexCoordP4ui\0"
-    "glMultiTexCoordP4uiv\0"
-    "glNormalP3ui\0"
-    "glNormalP3uiv\0"
-    "glSecondaryColorP3ui\0"
-    "glSecondaryColorP3uiv\0"
-    "glTexCoordP1ui\0"
-    "glTexCoordP1uiv\0"
-    "glTexCoordP2ui\0"
-    "glTexCoordP2uiv\0"
-    "glTexCoordP3ui\0"
-    "glTexCoordP3uiv\0"
-    "glTexCoordP4ui\0"
-    "glTexCoordP4uiv\0"
-    "glVertexAttribP1ui\0"
-    "glVertexAttribP1uiv\0"
-    "glVertexAttribP2ui\0"
-    "glVertexAttribP2uiv\0"
-    "glVertexAttribP3ui\0"
-    "glVertexAttribP3uiv\0"
-    "glVertexAttribP4ui\0"
-    "glVertexAttribP4uiv\0"
-    "glVertexP2ui\0"
-    "glVertexP2uiv\0"
-    "glVertexP3ui\0"
-    "glVertexP3uiv\0"
-    "glVertexP4ui\0"
-    "glVertexP4uiv\0"
-    "glBindTransformFeedback\0"
-    "glDeleteTransformFeedbacks\0"
-    "glDrawTransformFeedback\0"
-    "glGenTransformFeedbacks\0"
-    "glIsTransformFeedback\0"
-    "glPauseTransformFeedback\0"
-    "glResumeTransformFeedback\0"
-    "glClearDepthf\0"
-    "glDepthRangef\0"
-    "glGetShaderPrecisionFormat\0"
-    "glReleaseShaderCompiler\0"
-    "glShaderBinary\0"
-    "glGetGraphicsResetStatusARB\0"
-    "glGetnColorTableARB\0"
-    "glGetnCompressedTexImageARB\0"
-    "glGetnConvolutionFilterARB\0"
-    "glGetnHistogramARB\0"
-    "glGetnMapdvARB\0"
-    "glGetnMapfvARB\0"
-    "glGetnMapivARB\0"
-    "glGetnMinmaxARB\0"
-    "glGetnPixelMapfvARB\0"
-    "glGetnPixelMapuivARB\0"
-    "glGetnPixelMapusvARB\0"
-    "glGetnPolygonStippleARB\0"
-    "glGetnSeparableFilterARB\0"
-    "glGetnTexImageARB\0"
-    "glGetnUniformdvARB\0"
-    "glGetnUniformfvARB\0"
-    "glGetnUniformivARB\0"
-    "glGetnUniformuivARB\0"
-    "glReadnPixelsARB\0"
-    "glTexStorage1D\0"
-    "glTexStorage2D\0"
-    "glTexStorage3D\0"
-    "glTextureStorage1DEXT\0"
-    "glTextureStorage2DEXT\0"
-    "glTextureStorage3DEXT\0"
-    "glPolygonOffsetEXT\0"
-    "glGetPixelTexGenParameterfvSGIS\0"
-    "glGetPixelTexGenParameterivSGIS\0"
-    "glPixelTexGenParameterfSGIS\0"
-    "glPixelTexGenParameterfvSGIS\0"
-    "glPixelTexGenParameteriSGIS\0"
-    "glPixelTexGenParameterivSGIS\0"
-    "glSampleMaskSGIS\0"
-    "glSamplePatternSGIS\0"
-    "glColorPointerEXT\0"
-    "glEdgeFlagPointerEXT\0"
-    "glIndexPointerEXT\0"
-    "glNormalPointerEXT\0"
-    "glTexCoordPointerEXT\0"
-    "glVertexPointerEXT\0"
-    "glPointParameterfEXT\0"
-    "glPointParameterfvEXT\0"
-    "glLockArraysEXT\0"
-    "glUnlockArraysEXT\0"
-    "glSecondaryColor3bEXT\0"
-    "glSecondaryColor3bvEXT\0"
-    "glSecondaryColor3dEXT\0"
-    "glSecondaryColor3dvEXT\0"
-    "glSecondaryColor3fEXT\0"
-    "glSecondaryColor3fvEXT\0"
-    "glSecondaryColor3iEXT\0"
-    "glSecondaryColor3ivEXT\0"
-    "glSecondaryColor3sEXT\0"
-    "glSecondaryColor3svEXT\0"
-    "glSecondaryColor3ubEXT\0"
-    "glSecondaryColor3ubvEXT\0"
-    "glSecondaryColor3uiEXT\0"
-    "glSecondaryColor3uivEXT\0"
-    "glSecondaryColor3usEXT\0"
-    "glSecondaryColor3usvEXT\0"
-    "glSecondaryColorPointerEXT\0"
-    "glMultiDrawArraysEXT\0"
-    "glMultiDrawElementsEXT\0"
-    "glFogCoordPointerEXT\0"
-    "glFogCoorddEXT\0"
-    "glFogCoorddvEXT\0"
-    "glFogCoordfEXT\0"
-    "glFogCoordfvEXT\0"
-    "glPixelTexGenSGIX\0"
-    "glBlendFuncSeparateEXT\0"
-    "glFlushVertexArrayRangeNV\0"
-    "glVertexArrayRangeNV\0"
-    "glCombinerInputNV\0"
-    "glCombinerOutputNV\0"
-    "glCombinerParameterfNV\0"
-    "glCombinerParameterfvNV\0"
-    "glCombinerParameteriNV\0"
-    "glCombinerParameterivNV\0"
-    "glFinalCombinerInputNV\0"
-    "glGetCombinerInputParameterfvNV\0"
-    "glGetCombinerInputParameterivNV\0"
-    "glGetCombinerOutputParameterfvNV\0"
-    "glGetCombinerOutputParameterivNV\0"
-    "glGetFinalCombinerInputParameterfvNV\0"
-    "glGetFinalCombinerInputParameterivNV\0"
-    "glResizeBuffersMESA\0"
-    "glWindowPos2dMESA\0"
-    "glWindowPos2dvMESA\0"
-    "glWindowPos2fMESA\0"
-    "glWindowPos2fvMESA\0"
-    "glWindowPos2iMESA\0"
-    "glWindowPos2ivMESA\0"
-    "glWindowPos2sMESA\0"
-    "glWindowPos2svMESA\0"
-    "glWindowPos3dMESA\0"
-    "glWindowPos3dvMESA\0"
-    "glWindowPos3fMESA\0"
-    "glWindowPos3fvMESA\0"
-    "glWindowPos3iMESA\0"
-    "glWindowPos3ivMESA\0"
-    "glWindowPos3sMESA\0"
-    "glWindowPos3svMESA\0"
-    "glWindowPos4dMESA\0"
-    "glWindowPos4dvMESA\0"
-    "glWindowPos4fMESA\0"
-    "glWindowPos4fvMESA\0"
-    "glWindowPos4iMESA\0"
-    "glWindowPos4ivMESA\0"
-    "glWindowPos4sMESA\0"
-    "glWindowPos4svMESA\0"
-    "glMultiModeDrawArraysIBM\0"
-    "glMultiModeDrawElementsIBM\0"
-    "glDeleteFencesNV\0"
-    "glFinishFenceNV\0"
-    "glGenFencesNV\0"
-    "glGetFenceivNV\0"
-    "glIsFenceNV\0"
-    "glSetFenceNV\0"
-    "glTestFenceNV\0"
-    "glAreProgramsResidentNV\0"
-    "glBindProgramNV\0"
-    "glDeleteProgramsNV\0"
-    "glExecuteProgramNV\0"
-    "glGenProgramsNV\0"
-    "glGetProgramParameterdvNV\0"
-    "glGetProgramParameterfvNV\0"
-    "glGetProgramStringNV\0"
-    "glGetProgramivNV\0"
-    "glGetTrackMatrixivNV\0"
-    "glGetVertexAttribPointervNV\0"
-    "glGetVertexAttribdvNV\0"
-    "glGetVertexAttribfvNV\0"
-    "glGetVertexAttribivNV\0"
-    "glIsProgramNV\0"
-    "glLoadProgramNV\0"
-    "glProgramParameters4dvNV\0"
-    "glProgramParameters4fvNV\0"
-    "glRequestResidentProgramsNV\0"
-    "glTrackMatrixNV\0"
-    "glVertexAttrib1dNV\0"
-    "glVertexAttrib1dvNV\0"
-    "glVertexAttrib1fNV\0"
-    "glVertexAttrib1fvNV\0"
-    "glVertexAttrib1sNV\0"
-    "glVertexAttrib1svNV\0"
-    "glVertexAttrib2dNV\0"
-    "glVertexAttrib2dvNV\0"
-    "glVertexAttrib2fNV\0"
-    "glVertexAttrib2fvNV\0"
-    "glVertexAttrib2sNV\0"
-    "glVertexAttrib2svNV\0"
-    "glVertexAttrib3dNV\0"
-    "glVertexAttrib3dvNV\0"
-    "glVertexAttrib3fNV\0"
-    "glVertexAttrib3fvNV\0"
-    "glVertexAttrib3sNV\0"
-    "glVertexAttrib3svNV\0"
-    "glVertexAttrib4dNV\0"
-    "glVertexAttrib4dvNV\0"
-    "glVertexAttrib4fNV\0"
-    "glVertexAttrib4fvNV\0"
-    "glVertexAttrib4sNV\0"
-    "glVertexAttrib4svNV\0"
-    "glVertexAttrib4ubNV\0"
-    "glVertexAttrib4ubvNV\0"
-    "glVertexAttribPointerNV\0"
-    "glVertexAttribs1dvNV\0"
-    "glVertexAttribs1fvNV\0"
-    "glVertexAttribs1svNV\0"
-    "glVertexAttribs2dvNV\0"
-    "glVertexAttribs2fvNV\0"
-    "glVertexAttribs2svNV\0"
-    "glVertexAttribs3dvNV\0"
-    "glVertexAttribs3fvNV\0"
-    "glVertexAttribs3svNV\0"
-    "glVertexAttribs4dvNV\0"
-    "glVertexAttribs4fvNV\0"
-    "glVertexAttribs4svNV\0"
-    "glVertexAttribs4ubvNV\0"
-    "glGetTexBumpParameterfvATI\0"
-    "glGetTexBumpParameterivATI\0"
-    "glTexBumpParameterfvATI\0"
-    "glTexBumpParameterivATI\0"
-    "glAlphaFragmentOp1ATI\0"
-    "glAlphaFragmentOp2ATI\0"
-    "glAlphaFragmentOp3ATI\0"
-    "glBeginFragmentShaderATI\0"
-    "glBindFragmentShaderATI\0"
-    "glColorFragmentOp1ATI\0"
-    "glColorFragmentOp2ATI\0"
-    "glColorFragmentOp3ATI\0"
-    "glDeleteFragmentShaderATI\0"
-    "glEndFragmentShaderATI\0"
-    "glGenFragmentShadersATI\0"
-    "glPassTexCoordATI\0"
-    "glSampleMapATI\0"
-    "glSetFragmentShaderConstantATI\0"
-    "glPointParameteriNV\0"
-    "glPointParameterivNV\0"
-    "glActiveStencilFaceEXT\0"
-    "glBindVertexArrayAPPLE\0"
-    "glDeleteVertexArraysAPPLE\0"
-    "glGenVertexArraysAPPLE\0"
-    "glIsVertexArrayAPPLE\0"
-    "glGetProgramNamedParameterdvNV\0"
-    "glGetProgramNamedParameterfvNV\0"
-    "glProgramNamedParameter4dNV\0"
-    "glProgramNamedParameter4dvNV\0"
-    "glProgramNamedParameter4fNV\0"
-    "glProgramNamedParameter4fvNV\0"
-    "glPrimitiveRestartIndexNV\0"
-    "glPrimitiveRestartNV\0"
-    "glDepthBoundsEXT\0"
-    "glBlendEquationSeparateEXT\0"
-    "glBindFramebufferEXT\0"
-    "glBindRenderbufferEXT\0"
-    "glCheckFramebufferStatusEXT\0"
-    "glDeleteFramebuffersEXT\0"
-    "glDeleteRenderbuffersEXT\0"
-    "glFramebufferRenderbufferEXT\0"
-    "glFramebufferTexture1DEXT\0"
-    "glFramebufferTexture2DEXT\0"
-    "glFramebufferTexture3DEXT\0"
-    "glGenFramebuffersEXT\0"
-    "glGenRenderbuffersEXT\0"
-    "glGenerateMipmapEXT\0"
-    "glGetFramebufferAttachmentParameterivEXT\0"
-    "glGetRenderbufferParameterivEXT\0"
-    "glIsFramebufferEXT\0"
-    "glIsRenderbufferEXT\0"
-    "glRenderbufferStorageEXT\0"
-    "glBlitFramebufferEXT\0"
-    "glBufferParameteriAPPLE\0"
-    "glFlushMappedBufferRangeAPPLE\0"
-    "glBindFragDataLocationEXT\0"
-    "glGetFragDataLocationEXT\0"
-    "glGetUniformuivEXT\0"
-    "glGetVertexAttribIivEXT\0"
-    "glGetVertexAttribIuivEXT\0"
-    "glUniform1uiEXT\0"
-    "glUniform1uivEXT\0"
-    "glUniform2uiEXT\0"
-    "glUniform2uivEXT\0"
-    "glUniform3uiEXT\0"
-    "glUniform3uivEXT\0"
-    "glUniform4uiEXT\0"
-    "glUniform4uivEXT\0"
-    "glVertexAttribI1iEXT\0"
-    "glVertexAttribI1ivEXT\0"
-    "glVertexAttribI1uiEXT\0"
-    "glVertexAttribI1uivEXT\0"
-    "glVertexAttribI2iEXT\0"
-    "glVertexAttribI2ivEXT\0"
-    "glVertexAttribI2uiEXT\0"
-    "glVertexAttribI2uivEXT\0"
-    "glVertexAttribI3iEXT\0"
-    "glVertexAttribI3ivEXT\0"
-    "glVertexAttribI3uiEXT\0"
-    "glVertexAttribI3uivEXT\0"
-    "glVertexAttribI4bvEXT\0"
-    "glVertexAttribI4iEXT\0"
-    "glVertexAttribI4ivEXT\0"
-    "glVertexAttribI4svEXT\0"
-    "glVertexAttribI4ubvEXT\0"
-    "glVertexAttribI4uiEXT\0"
-    "glVertexAttribI4uivEXT\0"
-    "glVertexAttribI4usvEXT\0"
-    "glVertexAttribIPointerEXT\0"
-    "glFramebufferTextureLayerEXT\0"
-    "glColorMaskIndexedEXT\0"
-    "glDisableIndexedEXT\0"
-    "glEnableIndexedEXT\0"
-    "glGetBooleanIndexedvEXT\0"
-    "glGetIntegerIndexedvEXT\0"
-    "glIsEnabledIndexedEXT\0"
-    "glClearColorIiEXT\0"
-    "glClearColorIuiEXT\0"
-    "glGetTexParameterIivEXT\0"
-    "glGetTexParameterIuivEXT\0"
-    "glTexParameterIivEXT\0"
-    "glTexParameterIuivEXT\0"
-    "glBeginConditionalRenderNV\0"
-    "glEndConditionalRenderNV\0"
-    "glBeginTransformFeedbackEXT\0"
-    "glBindBufferBaseEXT\0"
-    "glBindBufferOffsetEXT\0"
-    "glBindBufferRangeEXT\0"
-    "glEndTransformFeedbackEXT\0"
-    "glGetTransformFeedbackVaryingEXT\0"
-    "glTransformFeedbackVaryingsEXT\0"
-    "glProvokingVertexEXT\0"
-    "glGetTexParameterPointervAPPLE\0"
-    "glTextureRangeAPPLE\0"
-    "glGetObjectParameterivAPPLE\0"
-    "glObjectPurgeableAPPLE\0"
-    "glObjectUnpurgeableAPPLE\0"
-    "glActiveProgramEXT\0"
-    "glCreateShaderProgramEXT\0"
-    "glUseShaderProgramEXT\0"
-    "glTextureBarrierNV\0"
-    "glStencilFuncSeparateATI\0"
-    "glProgramEnvParameters4fvEXT\0"
-    "glProgramLocalParameters4fvEXT\0"
-    "glGetQueryObjecti64vEXT\0"
-    "glGetQueryObjectui64vEXT\0"
-    "glEGLImageTargetRenderbufferStorageOES\0"
-    "glEGLImageTargetTexture2DOES\0"
-    "glArrayElementEXT\0"
-    "glBindTextureEXT\0"
-    "glDrawArraysEXT\0"
-    "glAreTexturesResidentEXT\0"
-    "glCopyTexImage1DEXT\0"
-    "glCopyTexImage2DEXT\0"
-    "glCopyTexSubImage1DEXT\0"
-    "glCopyTexSubImage2DEXT\0"
-    "glDeleteTexturesEXT\0"
-    "glGenTexturesEXT\0"
-    "glGetPointervEXT\0"
-    "glIsTextureEXT\0"
-    "glPrioritizeTexturesEXT\0"
-    "glTexSubImage1DEXT\0"
-    "glTexSubImage2DEXT\0"
-    "glBlendColorEXT\0"
-    "glBlendEquationEXT\0"
-    "glDrawRangeElementsEXT\0"
-    "glColorTableSGI\0"
-    "glColorTableEXT\0"
-    "glColorTableParameterfvSGI\0"
-    "glColorTableParameterivSGI\0"
-    "glCopyColorTableSGI\0"
-    "glGetColorTableSGI\0"
-    "glGetColorTableEXT\0"
-    "glGetColorTableParameterfvSGI\0"
-    "glGetColorTableParameterfvEXT\0"
-    "glGetColorTableParameterivSGI\0"
-    "glGetColorTableParameterivEXT\0"
-    "glColorSubTableEXT\0"
-    "glCopyColorSubTableEXT\0"
-    "glConvolutionFilter1DEXT\0"
-    "glConvolutionFilter2DEXT\0"
-    "glConvolutionParameterfEXT\0"
-    "glConvolutionParameterfvEXT\0"
-    "glConvolutionParameteriEXT\0"
-    "glConvolutionParameterivEXT\0"
-    "glCopyConvolutionFilter1DEXT\0"
-    "glCopyConvolutionFilter2DEXT\0"
-    "glGetConvolutionFilterEXT\0"
-    "glGetConvolutionParameterfvEXT\0"
-    "glGetConvolutionParameterivEXT\0"
-    "glGetSeparableFilterEXT\0"
-    "glSeparableFilter2DEXT\0"
-    "glGetHistogramEXT\0"
-    "glGetHistogramParameterfvEXT\0"
-    "glGetHistogramParameterivEXT\0"
-    "glGetMinmaxEXT\0"
-    "glGetMinmaxParameterfvEXT\0"
-    "glGetMinmaxParameterivEXT\0"
-    "glHistogramEXT\0"
-    "glMinmaxEXT\0"
-    "glResetHistogramEXT\0"
-    "glResetMinmaxEXT\0"
-    "glTexImage3DEXT\0"
-    "glTexSubImage3DEXT\0"
-    "glCopyTexSubImage3DEXT\0"
-    "glActiveTexture\0"
-    "glClientActiveTexture\0"
-    "glMultiTexCoord1d\0"
-    "glMultiTexCoord1dv\0"
-    "glMultiTexCoord1f\0"
-    "glMultiTexCoord1fv\0"
-    "glMultiTexCoord1i\0"
-    "glMultiTexCoord1iv\0"
-    "glMultiTexCoord1s\0"
-    "glMultiTexCoord1sv\0"
-    "glMultiTexCoord2d\0"
-    "glMultiTexCoord2dv\0"
-    "glMultiTexCoord2f\0"
-    "glMultiTexCoord2fv\0"
-    "glMultiTexCoord2i\0"
-    "glMultiTexCoord2iv\0"
-    "glMultiTexCoord2s\0"
-    "glMultiTexCoord2sv\0"
-    "glMultiTexCoord3d\0"
-    "glMultiTexCoord3dv\0"
-    "glMultiTexCoord3f\0"
-    "glMultiTexCoord3fv\0"
-    "glMultiTexCoord3i\0"
-    "glMultiTexCoord3iv\0"
-    "glMultiTexCoord3s\0"
-    "glMultiTexCoord3sv\0"
-    "glMultiTexCoord4d\0"
-    "glMultiTexCoord4dv\0"
-    "glMultiTexCoord4f\0"
-    "glMultiTexCoord4fv\0"
-    "glMultiTexCoord4i\0"
-    "glMultiTexCoord4iv\0"
-    "glMultiTexCoord4s\0"
-    "glMultiTexCoord4sv\0"
-    "glStencilOpSeparateATI\0"
-    "glLoadTransposeMatrixd\0"
-    "glLoadTransposeMatrixf\0"
-    "glMultTransposeMatrixd\0"
-    "glMultTransposeMatrixf\0"
-    "glSampleCoverage\0"
-    "glCompressedTexImage1D\0"
-    "glCompressedTexImage2D\0"
-    "glCompressedTexImage3D\0"
-    "glCompressedTexSubImage1D\0"
-    "glCompressedTexSubImage2D\0"
-    "glCompressedTexSubImage3D\0"
-    "glGetCompressedTexImage\0"
-    "glDisableVertexAttribArray\0"
-    "glEnableVertexAttribArray\0"
-    "glGetVertexAttribdv\0"
-    "glGetVertexAttribfv\0"
-    "glGetVertexAttribiv\0"
-    "glProgramParameter4dNV\0"
-    "glProgramParameter4dvNV\0"
-    "glProgramParameter4fNV\0"
-    "glProgramParameter4fvNV\0"
-    "glVertexAttrib1d\0"
-    "glVertexAttrib1dv\0"
-    "glVertexAttrib1f\0"
-    "glVertexAttrib1fv\0"
-    "glVertexAttrib1s\0"
-    "glVertexAttrib1sv\0"
-    "glVertexAttrib2d\0"
-    "glVertexAttrib2dv\0"
-    "glVertexAttrib2f\0"
-    "glVertexAttrib2fv\0"
-    "glVertexAttrib2s\0"
-    "glVertexAttrib2sv\0"
-    "glVertexAttrib3d\0"
-    "glVertexAttrib3dv\0"
-    "glVertexAttrib3f\0"
-    "glVertexAttrib3fv\0"
-    "glVertexAttrib3s\0"
-    "glVertexAttrib3sv\0"
-    "glVertexAttrib4Nbv\0"
-    "glVertexAttrib4Niv\0"
-    "glVertexAttrib4Nsv\0"
-    "glVertexAttrib4Nub\0"
-    "glVertexAttrib4Nubv\0"
-    "glVertexAttrib4Nuiv\0"
-    "glVertexAttrib4Nusv\0"
-    "glVertexAttrib4bv\0"
-    "glVertexAttrib4d\0"
-    "glVertexAttrib4dv\0"
-    "glVertexAttrib4f\0"
-    "glVertexAttrib4fv\0"
-    "glVertexAttrib4iv\0"
-    "glVertexAttrib4s\0"
-    "glVertexAttrib4sv\0"
-    "glVertexAttrib4ubv\0"
-    "glVertexAttrib4uiv\0"
-    "glVertexAttrib4usv\0"
-    "glVertexAttribPointer\0"
-    "glBindBuffer\0"
-    "glBufferData\0"
-    "glBufferSubData\0"
-    "glDeleteBuffers\0"
-    "glGenBuffers\0"
-    "glGetBufferParameteriv\0"
-    "glGetBufferPointerv\0"
-    "glGetBufferSubData\0"
-    "glIsBuffer\0"
-    "glMapBuffer\0"
-    "glUnmapBuffer\0"
-    "glBeginQuery\0"
-    "glDeleteQueries\0"
-    "glEndQuery\0"
-    "glGenQueries\0"
-    "glGetQueryObjectiv\0"
-    "glGetQueryObjectuiv\0"
-    "glGetQueryiv\0"
-    "glIsQuery\0"
-    "glCompileShader\0"
-    "glGetActiveUniform\0"
-    "glGetShaderSource\0"
-    "glGetUniformLocation\0"
-    "glGetUniformfv\0"
-    "glGetUniformiv\0"
-    "glLinkProgram\0"
-    "glShaderSource\0"
-    "glUniform1f\0"
-    "glUniform1fv\0"
-    "glUniform1i\0"
-    "glUniform1iv\0"
-    "glUniform2f\0"
-    "glUniform2fv\0"
-    "glUniform2i\0"
-    "glUniform2iv\0"
-    "glUniform3f\0"
-    "glUniform3fv\0"
-    "glUniform3i\0"
-    "glUniform3iv\0"
-    "glUniform4f\0"
-    "glUniform4fv\0"
-    "glUniform4i\0"
-    "glUniform4iv\0"
-    "glUniformMatrix2fv\0"
-    "glUniformMatrix3fv\0"
-    "glUniformMatrix4fv\0"
-    "glUseProgram\0"
-    "glValidateProgram\0"
-    "glBindAttribLocation\0"
-    "glGetActiveAttrib\0"
-    "glGetAttribLocation\0"
-    "glDrawBuffers\0"
-    "glDrawBuffersATI\0"
-    "glDrawBuffersNV\0"
-    "glDrawArraysInstancedEXT\0"
-    "glDrawArraysInstanced\0"
-    "glDrawElementsInstancedEXT\0"
-    "glDrawElementsInstanced\0"
-    "glRenderbufferStorageMultisampleEXT\0"
-    "glBlendEquationSeparateIndexedAMD\0"
-    "glBlendEquationIndexedAMD\0"
-    "glBlendFuncSeparateIndexedAMD\0"
-    "glBlendFuncIndexedAMD\0"
-    "glSampleMaskEXT\0"
-    "glSamplePatternEXT\0"
-    "glPointParameterf\0"
-    "glPointParameterfARB\0"
-    "glPointParameterfSGIS\0"
-    "glPointParameterfv\0"
-    "glPointParameterfvARB\0"
-    "glPointParameterfvSGIS\0"
-    "glSecondaryColor3b\0"
-    "glSecondaryColor3bv\0"
-    "glSecondaryColor3d\0"
-    "glSecondaryColor3dv\0"
-    "glSecondaryColor3f\0"
-    "glSecondaryColor3fv\0"
-    "glSecondaryColor3i\0"
-    "glSecondaryColor3iv\0"
-    "glSecondaryColor3s\0"
-    "glSecondaryColor3sv\0"
-    "glSecondaryColor3ub\0"
-    "glSecondaryColor3ubv\0"
-    "glSecondaryColor3ui\0"
-    "glSecondaryColor3uiv\0"
-    "glSecondaryColor3us\0"
-    "glSecondaryColor3usv\0"
-    "glSecondaryColorPointer\0"
-    "glMultiDrawArrays\0"
-    "glMultiDrawElements\0"
-    "glFogCoordPointer\0"
-    "glFogCoordd\0"
-    "glFogCoorddv\0"
-    "glFogCoordf\0"
-    "glFogCoordfv\0"
-    "glBlendFuncSeparate\0"
-    "glBlendFuncSeparateINGR\0"
-    "glWindowPos2d\0"
-    "glWindowPos2dARB\0"
-    "glWindowPos2dv\0"
-    "glWindowPos2dvARB\0"
-    "glWindowPos2f\0"
-    "glWindowPos2fARB\0"
-    "glWindowPos2fv\0"
-    "glWindowPos2fvARB\0"
-    "glWindowPos2i\0"
-    "glWindowPos2iARB\0"
-    "glWindowPos2iv\0"
-    "glWindowPos2ivARB\0"
-    "glWindowPos2s\0"
-    "glWindowPos2sARB\0"
-    "glWindowPos2sv\0"
-    "glWindowPos2svARB\0"
-    "glWindowPos3d\0"
-    "glWindowPos3dARB\0"
-    "glWindowPos3dv\0"
-    "glWindowPos3dvARB\0"
-    "glWindowPos3f\0"
-    "glWindowPos3fARB\0"
-    "glWindowPos3fv\0"
-    "glWindowPos3fvARB\0"
-    "glWindowPos3i\0"
-    "glWindowPos3iARB\0"
-    "glWindowPos3iv\0"
-    "glWindowPos3ivARB\0"
-    "glWindowPos3s\0"
-    "glWindowPos3sARB\0"
-    "glWindowPos3sv\0"
-    "glWindowPos3svARB\0"
-    "glBindProgramARB\0"
-    "glDeleteProgramsARB\0"
-    "glGenProgramsARB\0"
-    "glGetVertexAttribPointerv\0"
-    "glGetVertexAttribPointervARB\0"
-    "glIsProgramARB\0"
-    "glPointParameteri\0"
-    "glPointParameteriv\0"
-    "glDeleteVertexArrays\0"
-    "glIsVertexArray\0"
-    "glPrimitiveRestartIndex\0"
-    "glBlendEquationSeparate\0"
-    "glBlendEquationSeparateATI\0"
-    "glBindFramebuffer\0"
-    "glBindRenderbuffer\0"
-    "glCheckFramebufferStatus\0"
-    "glDeleteFramebuffers\0"
-    "glDeleteRenderbuffers\0"
-    "glFramebufferRenderbuffer\0"
-    "glFramebufferTexture1D\0"
-    "glFramebufferTexture2D\0"
-    "glFramebufferTexture3D\0"
-    "glGenFramebuffers\0"
-    "glGenRenderbuffers\0"
-    "glGenerateMipmap\0"
-    "glGetFramebufferAttachmentParameteriv\0"
-    "glGetRenderbufferParameteriv\0"
-    "glIsFramebuffer\0"
-    "glIsRenderbuffer\0"
-    "glRenderbufferStorage\0"
-    "glBlitFramebuffer\0"
-    "glBindFragDataLocation\0"
-    "glGetFragDataLocation\0"
-    "glGetUniformuiv\0"
-    "glGetVertexAttribIiv\0"
-    "glGetVertexAttribIuiv\0"
-    "glUniform1ui\0"
-    "glUniform1uiv\0"
-    "glUniform2ui\0"
-    "glUniform2uiv\0"
-    "glUniform3ui\0"
-    "glUniform3uiv\0"
-    "glUniform4ui\0"
-    "glUniform4uiv\0"
-    "glVertexAttribI1i\0"
-    "glVertexAttribI1iv\0"
-    "glVertexAttribI1ui\0"
-    "glVertexAttribI1uiv\0"
-    "glVertexAttribI2i\0"
-    "glVertexAttribI2iv\0"
-    "glVertexAttribI2ui\0"
-    "glVertexAttribI2uiv\0"
-    "glVertexAttribI3i\0"
-    "glVertexAttribI3iv\0"
-    "glVertexAttribI3ui\0"
-    "glVertexAttribI3uiv\0"
-    "glVertexAttribI4bv\0"
-    "glVertexAttribI4i\0"
-    "glVertexAttribI4iv\0"
-    "glVertexAttribI4sv\0"
-    "glVertexAttribI4ubv\0"
-    "glVertexAttribI4ui\0"
-    "glVertexAttribI4uiv\0"
-    "glVertexAttribI4usv\0"
-    "glVertexAttribIPointer\0"
-    "glFramebufferTextureLayer\0"
-    "glFramebufferTextureLayerARB\0"
-    "glColorMaski\0"
-    "glDisablei\0"
-    "glEnablei\0"
-    "glGetBooleani_v\0"
-    "glGetIntegeri_v\0"
-    "glIsEnabledi\0"
-    "glGetTexParameterIiv\0"
-    "glGetTexParameterIuiv\0"
-    "glTexParameterIiv\0"
-    "glTexParameterIuiv\0"
-    "glBeginConditionalRender\0"
-    "glEndConditionalRender\0"
-    "glBeginTransformFeedback\0"
-    "glBindBufferBase\0"
-    "glBindBufferRange\0"
-    "glEndTransformFeedback\0"
-    "glGetTransformFeedbackVarying\0"
-    "glTransformFeedbackVaryings\0" "glProvokingVertex\0";
-
-#ifdef USE_MGL_NAMESPACE
-#define gl_dispatch_stub_343 mgl_dispatch_stub_343
-#define gl_dispatch_stub_344 mgl_dispatch_stub_344
-#define gl_dispatch_stub_345 mgl_dispatch_stub_345
-#define gl_dispatch_stub_356 mgl_dispatch_stub_356
-#define gl_dispatch_stub_357 mgl_dispatch_stub_357
-#define gl_dispatch_stub_358 mgl_dispatch_stub_358
-#define gl_dispatch_stub_359 mgl_dispatch_stub_359
-#define gl_dispatch_stub_361 mgl_dispatch_stub_361
-#define gl_dispatch_stub_362 mgl_dispatch_stub_362
-#define gl_dispatch_stub_363 mgl_dispatch_stub_363
-#define gl_dispatch_stub_364 mgl_dispatch_stub_364
-#define gl_dispatch_stub_365 mgl_dispatch_stub_365
-#define gl_dispatch_stub_366 mgl_dispatch_stub_366
-#define gl_dispatch_stub_692 mgl_dispatch_stub_692
-#define gl_dispatch_stub_693 mgl_dispatch_stub_693
-#define gl_dispatch_stub_694 mgl_dispatch_stub_694
-#define gl_dispatch_stub_695 mgl_dispatch_stub_695
-#define gl_dispatch_stub_696 mgl_dispatch_stub_696
-#define gl_dispatch_stub_697 mgl_dispatch_stub_697
-#define gl_dispatch_stub_698 mgl_dispatch_stub_698
-#define gl_dispatch_stub_699 mgl_dispatch_stub_699
-#define gl_dispatch_stub_734 mgl_dispatch_stub_734
-#define gl_dispatch_stub_776 mgl_dispatch_stub_776
-#define gl_dispatch_stub_777 mgl_dispatch_stub_777
-#define gl_dispatch_stub_778 mgl_dispatch_stub_778
-#define gl_dispatch_stub_779 mgl_dispatch_stub_779
-#define gl_dispatch_stub_780 mgl_dispatch_stub_780
-#define gl_dispatch_stub_781 mgl_dispatch_stub_781
-#define gl_dispatch_stub_782 mgl_dispatch_stub_782
-#define gl_dispatch_stub_783 mgl_dispatch_stub_783
-#define gl_dispatch_stub_784 mgl_dispatch_stub_784
-#define gl_dispatch_stub_865 mgl_dispatch_stub_865
-#define gl_dispatch_stub_866 mgl_dispatch_stub_866
-#define gl_dispatch_stub_867 mgl_dispatch_stub_867
-#define gl_dispatch_stub_868 mgl_dispatch_stub_868
-#define gl_dispatch_stub_869 mgl_dispatch_stub_869
-#define gl_dispatch_stub_878 mgl_dispatch_stub_878
-#define gl_dispatch_stub_879 mgl_dispatch_stub_879
-#define gl_dispatch_stub_897 mgl_dispatch_stub_897
-#define gl_dispatch_stub_898 mgl_dispatch_stub_898
-#define gl_dispatch_stub_899 mgl_dispatch_stub_899
-#define gl_dispatch_stub_957 mgl_dispatch_stub_957
-#define gl_dispatch_stub_958 mgl_dispatch_stub_958
-#define gl_dispatch_stub_966 mgl_dispatch_stub_966
-#define gl_dispatch_stub_967 mgl_dispatch_stub_967
-#define gl_dispatch_stub_968 mgl_dispatch_stub_968
-#define gl_dispatch_stub_969 mgl_dispatch_stub_969
-#define gl_dispatch_stub_970 mgl_dispatch_stub_970
-#endif                          /* USE_MGL_NAMESPACE */
-
-#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)
-void GLAPIENTRY gl_dispatch_stub_343(GLenum target, GLenum format, GLenum type,
-                                     GLvoid * table);
-void GLAPIENTRY gl_dispatch_stub_344(GLenum target, GLenum pname,
-                                     GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_345(GLenum target, GLenum pname,
-                                     GLint * params);
-void GLAPIENTRY gl_dispatch_stub_356(GLenum target, GLenum format, GLenum type,
-                                     GLvoid * image);
-void GLAPIENTRY gl_dispatch_stub_357(GLenum target, GLenum pname,
-                                     GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_358(GLenum target, GLenum pname,
-                                     GLint * params);
-void GLAPIENTRY gl_dispatch_stub_359(GLenum target, GLenum format, GLenum type,
-                                     GLvoid * row, GLvoid * column,
-                                     GLvoid * span);
-void GLAPIENTRY gl_dispatch_stub_361(GLenum target, GLboolean reset,
-                                     GLenum format, GLenum type,
-                                     GLvoid * values);
-void GLAPIENTRY gl_dispatch_stub_362(GLenum target, GLenum pname,
-                                     GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_363(GLenum target, GLenum pname,
-                                     GLint * params);
-void GLAPIENTRY gl_dispatch_stub_364(GLenum target, GLboolean reset,
-                                     GLenum format, GLenum type,
-                                     GLvoid * values);
-void GLAPIENTRY gl_dispatch_stub_365(GLenum target, GLenum pname,
-                                     GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_366(GLenum target, GLenum pname,
-                                     GLint * params);
-void GLAPIENTRY gl_dispatch_stub_692(GLenum pname, GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_693(GLenum pname, GLint * params);
-void GLAPIENTRY gl_dispatch_stub_694(GLenum pname, GLfloat param);
-void GLAPIENTRY gl_dispatch_stub_695(GLenum pname, const GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_696(GLenum pname, GLint param);
-void GLAPIENTRY gl_dispatch_stub_697(GLenum pname, const GLint * params);
-void GLAPIENTRY gl_dispatch_stub_698(GLclampf value, GLboolean invert);
-void GLAPIENTRY gl_dispatch_stub_699(GLenum pattern);
-void GLAPIENTRY gl_dispatch_stub_734(GLenum mode);
-void GLAPIENTRY gl_dispatch_stub_776(const GLenum * mode, const GLint * first,
-                                     const GLsizei * count, GLsizei primcount,
-                                     GLint modestride);
-void GLAPIENTRY gl_dispatch_stub_777(const GLenum * mode, const GLsizei * count,
-                                     GLenum type, const GLvoid * const *indices,
-                                     GLsizei primcount, GLint modestride);
-void GLAPIENTRY gl_dispatch_stub_778(GLsizei n, const GLuint * fences);
-void GLAPIENTRY gl_dispatch_stub_779(GLuint fence);
-void GLAPIENTRY gl_dispatch_stub_780(GLsizei n, GLuint * fences);
-void GLAPIENTRY gl_dispatch_stub_781(GLuint fence, GLenum pname,
-                                     GLint * params);
-GLboolean GLAPIENTRY gl_dispatch_stub_782(GLuint fence);
-void GLAPIENTRY gl_dispatch_stub_783(GLuint fence, GLenum condition);
-GLboolean GLAPIENTRY gl_dispatch_stub_784(GLuint fence);
-void GLAPIENTRY gl_dispatch_stub_865(GLenum face);
-void GLAPIENTRY gl_dispatch_stub_866(GLuint array);
-void GLAPIENTRY gl_dispatch_stub_867(GLsizei n, const GLuint * arrays);
-void GLAPIENTRY gl_dispatch_stub_868(GLsizei n, GLuint * arrays);
-GLboolean GLAPIENTRY gl_dispatch_stub_869(GLuint array);
-void GLAPIENTRY gl_dispatch_stub_878(GLclampd zmin, GLclampd zmax);
-void GLAPIENTRY gl_dispatch_stub_879(GLenum modeRGB, GLenum modeA);
-void GLAPIENTRY gl_dispatch_stub_897(GLint srcX0, GLint srcY0, GLint srcX1,
-                                     GLint srcY1, GLint dstX0, GLint dstY0,
-                                     GLint dstX1, GLint dstY1, GLbitfield mask,
-                                     GLenum filter);
-void GLAPIENTRY gl_dispatch_stub_898(GLenum target, GLenum pname, GLint param);
-void GLAPIENTRY gl_dispatch_stub_899(GLenum target, GLintptr offset,
-                                     GLsizeiptr size);
-void GLAPIENTRY gl_dispatch_stub_957(GLenum target, GLenum pname,
-                                     GLvoid ** params);
-void GLAPIENTRY gl_dispatch_stub_958(GLenum target, GLsizei length,
-                                     GLvoid * pointer);
-void GLAPIENTRY gl_dispatch_stub_966(GLenum frontfunc, GLenum backfunc,
-                                     GLint ref, GLuint mask);
-void GLAPIENTRY gl_dispatch_stub_967(GLenum target, GLuint index, GLsizei count,
-                                     const GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_968(GLenum target, GLuint index, GLsizei count,
-                                     const GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_969(GLuint id, GLenum pname,
-                                     GLint64EXT * params);
-void GLAPIENTRY gl_dispatch_stub_970(GLuint id, GLenum pname,
-                                     GLuint64EXT * params);
-#endif                          /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */
-
-static const glprocs_table_t static_functions[] = {
-    NAME_FUNC_OFFSET(0, glNewList, glNewList, NULL, 0),
-    NAME_FUNC_OFFSET(10, glEndList, glEndList, NULL, 1),
-    NAME_FUNC_OFFSET(20, glCallList, glCallList, NULL, 2),
-    NAME_FUNC_OFFSET(31, glCallLists, glCallLists, NULL, 3),
-    NAME_FUNC_OFFSET(43, glDeleteLists, glDeleteLists, NULL, 4),
-    NAME_FUNC_OFFSET(57, glGenLists, glGenLists, NULL, 5),
-    NAME_FUNC_OFFSET(68, glListBase, glListBase, NULL, 6),
-    NAME_FUNC_OFFSET(79, glBegin, glBegin, NULL, 7),
-    NAME_FUNC_OFFSET(87, glBitmap, glBitmap, NULL, 8),
-    NAME_FUNC_OFFSET(96, glColor3b, glColor3b, NULL, 9),
-    NAME_FUNC_OFFSET(106, glColor3bv, glColor3bv, NULL, 10),
-    NAME_FUNC_OFFSET(117, glColor3d, glColor3d, NULL, 11),
-    NAME_FUNC_OFFSET(127, glColor3dv, glColor3dv, NULL, 12),
-    NAME_FUNC_OFFSET(138, glColor3f, glColor3f, NULL, 13),
-    NAME_FUNC_OFFSET(148, glColor3fv, glColor3fv, NULL, 14),
-    NAME_FUNC_OFFSET(159, glColor3i, glColor3i, NULL, 15),
-    NAME_FUNC_OFFSET(169, glColor3iv, glColor3iv, NULL, 16),
-    NAME_FUNC_OFFSET(180, glColor3s, glColor3s, NULL, 17),
-    NAME_FUNC_OFFSET(190, glColor3sv, glColor3sv, NULL, 18),
-    NAME_FUNC_OFFSET(201, glColor3ub, glColor3ub, NULL, 19),
-    NAME_FUNC_OFFSET(212, glColor3ubv, glColor3ubv, NULL, 20),
-    NAME_FUNC_OFFSET(224, glColor3ui, glColor3ui, NULL, 21),
-    NAME_FUNC_OFFSET(235, glColor3uiv, glColor3uiv, NULL, 22),
-    NAME_FUNC_OFFSET(247, glColor3us, glColor3us, NULL, 23),
-    NAME_FUNC_OFFSET(258, glColor3usv, glColor3usv, NULL, 24),
-    NAME_FUNC_OFFSET(270, glColor4b, glColor4b, NULL, 25),
-    NAME_FUNC_OFFSET(280, glColor4bv, glColor4bv, NULL, 26),
-    NAME_FUNC_OFFSET(291, glColor4d, glColor4d, NULL, 27),
-    NAME_FUNC_OFFSET(301, glColor4dv, glColor4dv, NULL, 28),
-    NAME_FUNC_OFFSET(312, glColor4f, glColor4f, NULL, 29),
-    NAME_FUNC_OFFSET(322, glColor4fv, glColor4fv, NULL, 30),
-    NAME_FUNC_OFFSET(333, glColor4i, glColor4i, NULL, 31),
-    NAME_FUNC_OFFSET(343, glColor4iv, glColor4iv, NULL, 32),
-    NAME_FUNC_OFFSET(354, glColor4s, glColor4s, NULL, 33),
-    NAME_FUNC_OFFSET(364, glColor4sv, glColor4sv, NULL, 34),
-    NAME_FUNC_OFFSET(375, glColor4ub, glColor4ub, NULL, 35),
-    NAME_FUNC_OFFSET(386, glColor4ubv, glColor4ubv, NULL, 36),
-    NAME_FUNC_OFFSET(398, glColor4ui, glColor4ui, NULL, 37),
-    NAME_FUNC_OFFSET(409, glColor4uiv, glColor4uiv, NULL, 38),
-    NAME_FUNC_OFFSET(421, glColor4us, glColor4us, NULL, 39),
-    NAME_FUNC_OFFSET(432, glColor4usv, glColor4usv, NULL, 40),
-    NAME_FUNC_OFFSET(444, glEdgeFlag, glEdgeFlag, NULL, 41),
-    NAME_FUNC_OFFSET(455, glEdgeFlagv, glEdgeFlagv, NULL, 42),
-    NAME_FUNC_OFFSET(467, glEnd, glEnd, NULL, 43),
-    NAME_FUNC_OFFSET(473, glIndexd, glIndexd, NULL, 44),
-    NAME_FUNC_OFFSET(482, glIndexdv, glIndexdv, NULL, 45),
-    NAME_FUNC_OFFSET(492, glIndexf, glIndexf, NULL, 46),
-    NAME_FUNC_OFFSET(501, glIndexfv, glIndexfv, NULL, 47),
-    NAME_FUNC_OFFSET(511, glIndexi, glIndexi, NULL, 48),
-    NAME_FUNC_OFFSET(520, glIndexiv, glIndexiv, NULL, 49),
-    NAME_FUNC_OFFSET(530, glIndexs, glIndexs, NULL, 50),
-    NAME_FUNC_OFFSET(539, glIndexsv, glIndexsv, NULL, 51),
-    NAME_FUNC_OFFSET(549, glNormal3b, glNormal3b, NULL, 52),
-    NAME_FUNC_OFFSET(560, glNormal3bv, glNormal3bv, NULL, 53),
-    NAME_FUNC_OFFSET(572, glNormal3d, glNormal3d, NULL, 54),
-    NAME_FUNC_OFFSET(583, glNormal3dv, glNormal3dv, NULL, 55),
-    NAME_FUNC_OFFSET(595, glNormal3f, glNormal3f, NULL, 56),
-    NAME_FUNC_OFFSET(606, glNormal3fv, glNormal3fv, NULL, 57),
-    NAME_FUNC_OFFSET(618, glNormal3i, glNormal3i, NULL, 58),
-    NAME_FUNC_OFFSET(629, glNormal3iv, glNormal3iv, NULL, 59),
-    NAME_FUNC_OFFSET(641, glNormal3s, glNormal3s, NULL, 60),
-    NAME_FUNC_OFFSET(652, glNormal3sv, glNormal3sv, NULL, 61),
-    NAME_FUNC_OFFSET(664, glRasterPos2d, glRasterPos2d, NULL, 62),
-    NAME_FUNC_OFFSET(678, glRasterPos2dv, glRasterPos2dv, NULL, 63),
-    NAME_FUNC_OFFSET(693, glRasterPos2f, glRasterPos2f, NULL, 64),
-    NAME_FUNC_OFFSET(707, glRasterPos2fv, glRasterPos2fv, NULL, 65),
-    NAME_FUNC_OFFSET(722, glRasterPos2i, glRasterPos2i, NULL, 66),
-    NAME_FUNC_OFFSET(736, glRasterPos2iv, glRasterPos2iv, NULL, 67),
-    NAME_FUNC_OFFSET(751, glRasterPos2s, glRasterPos2s, NULL, 68),
-    NAME_FUNC_OFFSET(765, glRasterPos2sv, glRasterPos2sv, NULL, 69),
-    NAME_FUNC_OFFSET(780, glRasterPos3d, glRasterPos3d, NULL, 70),
-    NAME_FUNC_OFFSET(794, glRasterPos3dv, glRasterPos3dv, NULL, 71),
-    NAME_FUNC_OFFSET(809, glRasterPos3f, glRasterPos3f, NULL, 72),
-    NAME_FUNC_OFFSET(823, glRasterPos3fv, glRasterPos3fv, NULL, 73),
-    NAME_FUNC_OFFSET(838, glRasterPos3i, glRasterPos3i, NULL, 74),
-    NAME_FUNC_OFFSET(852, glRasterPos3iv, glRasterPos3iv, NULL, 75),
-    NAME_FUNC_OFFSET(867, glRasterPos3s, glRasterPos3s, NULL, 76),
-    NAME_FUNC_OFFSET(881, glRasterPos3sv, glRasterPos3sv, NULL, 77),
-    NAME_FUNC_OFFSET(896, glRasterPos4d, glRasterPos4d, NULL, 78),
-    NAME_FUNC_OFFSET(910, glRasterPos4dv, glRasterPos4dv, NULL, 79),
-    NAME_FUNC_OFFSET(925, glRasterPos4f, glRasterPos4f, NULL, 80),
-    NAME_FUNC_OFFSET(939, glRasterPos4fv, glRasterPos4fv, NULL, 81),
-    NAME_FUNC_OFFSET(954, glRasterPos4i, glRasterPos4i, NULL, 82),
-    NAME_FUNC_OFFSET(968, glRasterPos4iv, glRasterPos4iv, NULL, 83),
-    NAME_FUNC_OFFSET(983, glRasterPos4s, glRasterPos4s, NULL, 84),
-    NAME_FUNC_OFFSET(997, glRasterPos4sv, glRasterPos4sv, NULL, 85),
-    NAME_FUNC_OFFSET(1012, glRectd, glRectd, NULL, 86),
-    NAME_FUNC_OFFSET(1020, glRectdv, glRectdv, NULL, 87),
-    NAME_FUNC_OFFSET(1029, glRectf, glRectf, NULL, 88),
-    NAME_FUNC_OFFSET(1037, glRectfv, glRectfv, NULL, 89),
-    NAME_FUNC_OFFSET(1046, glRecti, glRecti, NULL, 90),
-    NAME_FUNC_OFFSET(1054, glRectiv, glRectiv, NULL, 91),
-    NAME_FUNC_OFFSET(1063, glRects, glRects, NULL, 92),
-    NAME_FUNC_OFFSET(1071, glRectsv, glRectsv, NULL, 93),
-    NAME_FUNC_OFFSET(1080, glTexCoord1d, glTexCoord1d, NULL, 94),
-    NAME_FUNC_OFFSET(1093, glTexCoord1dv, glTexCoord1dv, NULL, 95),
-    NAME_FUNC_OFFSET(1107, glTexCoord1f, glTexCoord1f, NULL, 96),
-    NAME_FUNC_OFFSET(1120, glTexCoord1fv, glTexCoord1fv, NULL, 97),
-    NAME_FUNC_OFFSET(1134, glTexCoord1i, glTexCoord1i, NULL, 98),
-    NAME_FUNC_OFFSET(1147, glTexCoord1iv, glTexCoord1iv, NULL, 99),
-    NAME_FUNC_OFFSET(1161, glTexCoord1s, glTexCoord1s, NULL, 100),
-    NAME_FUNC_OFFSET(1174, glTexCoord1sv, glTexCoord1sv, NULL, 101),
-    NAME_FUNC_OFFSET(1188, glTexCoord2d, glTexCoord2d, NULL, 102),
-    NAME_FUNC_OFFSET(1201, glTexCoord2dv, glTexCoord2dv, NULL, 103),
-    NAME_FUNC_OFFSET(1215, glTexCoord2f, glTexCoord2f, NULL, 104),
-    NAME_FUNC_OFFSET(1228, glTexCoord2fv, glTexCoord2fv, NULL, 105),
-    NAME_FUNC_OFFSET(1242, glTexCoord2i, glTexCoord2i, NULL, 106),
-    NAME_FUNC_OFFSET(1255, glTexCoord2iv, glTexCoord2iv, NULL, 107),
-    NAME_FUNC_OFFSET(1269, glTexCoord2s, glTexCoord2s, NULL, 108),
-    NAME_FUNC_OFFSET(1282, glTexCoord2sv, glTexCoord2sv, NULL, 109),
-    NAME_FUNC_OFFSET(1296, glTexCoord3d, glTexCoord3d, NULL, 110),
-    NAME_FUNC_OFFSET(1309, glTexCoord3dv, glTexCoord3dv, NULL, 111),
-    NAME_FUNC_OFFSET(1323, glTexCoord3f, glTexCoord3f, NULL, 112),
-    NAME_FUNC_OFFSET(1336, glTexCoord3fv, glTexCoord3fv, NULL, 113),
-    NAME_FUNC_OFFSET(1350, glTexCoord3i, glTexCoord3i, NULL, 114),
-    NAME_FUNC_OFFSET(1363, glTexCoord3iv, glTexCoord3iv, NULL, 115),
-    NAME_FUNC_OFFSET(1377, glTexCoord3s, glTexCoord3s, NULL, 116),
-    NAME_FUNC_OFFSET(1390, glTexCoord3sv, glTexCoord3sv, NULL, 117),
-    NAME_FUNC_OFFSET(1404, glTexCoord4d, glTexCoord4d, NULL, 118),
-    NAME_FUNC_OFFSET(1417, glTexCoord4dv, glTexCoord4dv, NULL, 119),
-    NAME_FUNC_OFFSET(1431, glTexCoord4f, glTexCoord4f, NULL, 120),
-    NAME_FUNC_OFFSET(1444, glTexCoord4fv, glTexCoord4fv, NULL, 121),
-    NAME_FUNC_OFFSET(1458, glTexCoord4i, glTexCoord4i, NULL, 122),
-    NAME_FUNC_OFFSET(1471, glTexCoord4iv, glTexCoord4iv, NULL, 123),
-    NAME_FUNC_OFFSET(1485, glTexCoord4s, glTexCoord4s, NULL, 124),
-    NAME_FUNC_OFFSET(1498, glTexCoord4sv, glTexCoord4sv, NULL, 125),
-    NAME_FUNC_OFFSET(1512, glVertex2d, glVertex2d, NULL, 126),
-    NAME_FUNC_OFFSET(1523, glVertex2dv, glVertex2dv, NULL, 127),
-    NAME_FUNC_OFFSET(1535, glVertex2f, glVertex2f, NULL, 128),
-    NAME_FUNC_OFFSET(1546, glVertex2fv, glVertex2fv, NULL, 129),
-    NAME_FUNC_OFFSET(1558, glVertex2i, glVertex2i, NULL, 130),
-    NAME_FUNC_OFFSET(1569, glVertex2iv, glVertex2iv, NULL, 131),
-    NAME_FUNC_OFFSET(1581, glVertex2s, glVertex2s, NULL, 132),
-    NAME_FUNC_OFFSET(1592, glVertex2sv, glVertex2sv, NULL, 133),
-    NAME_FUNC_OFFSET(1604, glVertex3d, glVertex3d, NULL, 134),
-    NAME_FUNC_OFFSET(1615, glVertex3dv, glVertex3dv, NULL, 135),
-    NAME_FUNC_OFFSET(1627, glVertex3f, glVertex3f, NULL, 136),
-    NAME_FUNC_OFFSET(1638, glVertex3fv, glVertex3fv, NULL, 137),
-    NAME_FUNC_OFFSET(1650, glVertex3i, glVertex3i, NULL, 138),
-    NAME_FUNC_OFFSET(1661, glVertex3iv, glVertex3iv, NULL, 139),
-    NAME_FUNC_OFFSET(1673, glVertex3s, glVertex3s, NULL, 140),
-    NAME_FUNC_OFFSET(1684, glVertex3sv, glVertex3sv, NULL, 141),
-    NAME_FUNC_OFFSET(1696, glVertex4d, glVertex4d, NULL, 142),
-    NAME_FUNC_OFFSET(1707, glVertex4dv, glVertex4dv, NULL, 143),
-    NAME_FUNC_OFFSET(1719, glVertex4f, glVertex4f, NULL, 144),
-    NAME_FUNC_OFFSET(1730, glVertex4fv, glVertex4fv, NULL, 145),
-    NAME_FUNC_OFFSET(1742, glVertex4i, glVertex4i, NULL, 146),
-    NAME_FUNC_OFFSET(1753, glVertex4iv, glVertex4iv, NULL, 147),
-    NAME_FUNC_OFFSET(1765, glVertex4s, glVertex4s, NULL, 148),
-    NAME_FUNC_OFFSET(1776, glVertex4sv, glVertex4sv, NULL, 149),
-    NAME_FUNC_OFFSET(1788, glClipPlane, glClipPlane, NULL, 150),
-    NAME_FUNC_OFFSET(1800, glColorMaterial, glColorMaterial, NULL, 151),
-    NAME_FUNC_OFFSET(1816, glCullFace, glCullFace, NULL, 152),
-    NAME_FUNC_OFFSET(1827, glFogf, glFogf, NULL, 153),
-    NAME_FUNC_OFFSET(1834, glFogfv, glFogfv, NULL, 154),
-    NAME_FUNC_OFFSET(1842, glFogi, glFogi, NULL, 155),
-    NAME_FUNC_OFFSET(1849, glFogiv, glFogiv, NULL, 156),
-    NAME_FUNC_OFFSET(1857, glFrontFace, glFrontFace, NULL, 157),
-    NAME_FUNC_OFFSET(1869, glHint, glHint, NULL, 158),
-    NAME_FUNC_OFFSET(1876, glLightf, glLightf, NULL, 159),
-    NAME_FUNC_OFFSET(1885, glLightfv, glLightfv, NULL, 160),
-    NAME_FUNC_OFFSET(1895, glLighti, glLighti, NULL, 161),
-    NAME_FUNC_OFFSET(1904, glLightiv, glLightiv, NULL, 162),
-    NAME_FUNC_OFFSET(1914, glLightModelf, glLightModelf, NULL, 163),
-    NAME_FUNC_OFFSET(1928, glLightModelfv, glLightModelfv, NULL, 164),
-    NAME_FUNC_OFFSET(1943, glLightModeli, glLightModeli, NULL, 165),
-    NAME_FUNC_OFFSET(1957, glLightModeliv, glLightModeliv, NULL, 166),
-    NAME_FUNC_OFFSET(1972, glLineStipple, glLineStipple, NULL, 167),
-    NAME_FUNC_OFFSET(1986, glLineWidth, glLineWidth, NULL, 168),
-    NAME_FUNC_OFFSET(1998, glMaterialf, glMaterialf, NULL, 169),
-    NAME_FUNC_OFFSET(2010, glMaterialfv, glMaterialfv, NULL, 170),
-    NAME_FUNC_OFFSET(2023, glMateriali, glMateriali, NULL, 171),
-    NAME_FUNC_OFFSET(2035, glMaterialiv, glMaterialiv, NULL, 172),
-    NAME_FUNC_OFFSET(2048, glPointSize, glPointSize, NULL, 173),
-    NAME_FUNC_OFFSET(2060, glPolygonMode, glPolygonMode, NULL, 174),
-    NAME_FUNC_OFFSET(2074, glPolygonStipple, glPolygonStipple, NULL, 175),
-    NAME_FUNC_OFFSET(2091, glScissor, glScissor, NULL, 176),
-    NAME_FUNC_OFFSET(2101, glShadeModel, glShadeModel, NULL, 177),
-    NAME_FUNC_OFFSET(2114, glTexParameterf, glTexParameterf, NULL, 178),
-    NAME_FUNC_OFFSET(2130, glTexParameterfv, glTexParameterfv, NULL, 179),
-    NAME_FUNC_OFFSET(2147, glTexParameteri, glTexParameteri, NULL, 180),
-    NAME_FUNC_OFFSET(2163, glTexParameteriv, glTexParameteriv, NULL, 181),
-    NAME_FUNC_OFFSET(2180, glTexImage1D, glTexImage1D, NULL, 182),
-    NAME_FUNC_OFFSET(2193, glTexImage2D, glTexImage2D, NULL, 183),
-    NAME_FUNC_OFFSET(2206, glTexEnvf, glTexEnvf, NULL, 184),
-    NAME_FUNC_OFFSET(2216, glTexEnvfv, glTexEnvfv, NULL, 185),
-    NAME_FUNC_OFFSET(2227, glTexEnvi, glTexEnvi, NULL, 186),
-    NAME_FUNC_OFFSET(2237, glTexEnviv, glTexEnviv, NULL, 187),
-    NAME_FUNC_OFFSET(2248, glTexGend, glTexGend, NULL, 188),
-    NAME_FUNC_OFFSET(2258, glTexGendv, glTexGendv, NULL, 189),
-    NAME_FUNC_OFFSET(2269, glTexGenf, glTexGenf, NULL, 190),
-    NAME_FUNC_OFFSET(2279, glTexGenfv, glTexGenfv, NULL, 191),
-    NAME_FUNC_OFFSET(2290, glTexGeni, glTexGeni, NULL, 192),
-    NAME_FUNC_OFFSET(2300, glTexGeniv, glTexGeniv, NULL, 193),
-    NAME_FUNC_OFFSET(2311, glFeedbackBuffer, glFeedbackBuffer, NULL, 194),
-    NAME_FUNC_OFFSET(2328, glSelectBuffer, glSelectBuffer, NULL, 195),
-    NAME_FUNC_OFFSET(2343, glRenderMode, glRenderMode, NULL, 196),
-    NAME_FUNC_OFFSET(2356, glInitNames, glInitNames, NULL, 197),
-    NAME_FUNC_OFFSET(2368, glLoadName, glLoadName, NULL, 198),
-    NAME_FUNC_OFFSET(2379, glPassThrough, glPassThrough, NULL, 199),
-    NAME_FUNC_OFFSET(2393, glPopName, glPopName, NULL, 200),
-    NAME_FUNC_OFFSET(2403, glPushName, glPushName, NULL, 201),
-    NAME_FUNC_OFFSET(2414, glDrawBuffer, glDrawBuffer, NULL, 202),
-    NAME_FUNC_OFFSET(2427, glClear, glClear, NULL, 203),
-    NAME_FUNC_OFFSET(2435, glClearAccum, glClearAccum, NULL, 204),
-    NAME_FUNC_OFFSET(2448, glClearIndex, glClearIndex, NULL, 205),
-    NAME_FUNC_OFFSET(2461, glClearColor, glClearColor, NULL, 206),
-    NAME_FUNC_OFFSET(2474, glClearStencil, glClearStencil, NULL, 207),
-    NAME_FUNC_OFFSET(2489, glClearDepth, glClearDepth, NULL, 208),
-    NAME_FUNC_OFFSET(2502, glStencilMask, glStencilMask, NULL, 209),
-    NAME_FUNC_OFFSET(2516, glColorMask, glColorMask, NULL, 210),
-    NAME_FUNC_OFFSET(2528, glDepthMask, glDepthMask, NULL, 211),
-    NAME_FUNC_OFFSET(2540, glIndexMask, glIndexMask, NULL, 212),
-    NAME_FUNC_OFFSET(2552, glAccum, glAccum, NULL, 213),
-    NAME_FUNC_OFFSET(2560, glDisable, glDisable, NULL, 214),
-    NAME_FUNC_OFFSET(2570, glEnable, glEnable, NULL, 215),
-    NAME_FUNC_OFFSET(2579, glFinish, glFinish, NULL, 216),
-    NAME_FUNC_OFFSET(2588, glFlush, glFlush, NULL, 217),
-    NAME_FUNC_OFFSET(2596, glPopAttrib, glPopAttrib, NULL, 218),
-    NAME_FUNC_OFFSET(2608, glPushAttrib, glPushAttrib, NULL, 219),
-    NAME_FUNC_OFFSET(2621, glMap1d, glMap1d, NULL, 220),
-    NAME_FUNC_OFFSET(2629, glMap1f, glMap1f, NULL, 221),
-    NAME_FUNC_OFFSET(2637, glMap2d, glMap2d, NULL, 222),
-    NAME_FUNC_OFFSET(2645, glMap2f, glMap2f, NULL, 223),
-    NAME_FUNC_OFFSET(2653, glMapGrid1d, glMapGrid1d, NULL, 224),
-    NAME_FUNC_OFFSET(2665, glMapGrid1f, glMapGrid1f, NULL, 225),
-    NAME_FUNC_OFFSET(2677, glMapGrid2d, glMapGrid2d, NULL, 226),
-    NAME_FUNC_OFFSET(2689, glMapGrid2f, glMapGrid2f, NULL, 227),
-    NAME_FUNC_OFFSET(2701, glEvalCoord1d, glEvalCoord1d, NULL, 228),
-    NAME_FUNC_OFFSET(2715, glEvalCoord1dv, glEvalCoord1dv, NULL, 229),
-    NAME_FUNC_OFFSET(2730, glEvalCoord1f, glEvalCoord1f, NULL, 230),
-    NAME_FUNC_OFFSET(2744, glEvalCoord1fv, glEvalCoord1fv, NULL, 231),
-    NAME_FUNC_OFFSET(2759, glEvalCoord2d, glEvalCoord2d, NULL, 232),
-    NAME_FUNC_OFFSET(2773, glEvalCoord2dv, glEvalCoord2dv, NULL, 233),
-    NAME_FUNC_OFFSET(2788, glEvalCoord2f, glEvalCoord2f, NULL, 234),
-    NAME_FUNC_OFFSET(2802, glEvalCoord2fv, glEvalCoord2fv, NULL, 235),
-    NAME_FUNC_OFFSET(2817, glEvalMesh1, glEvalMesh1, NULL, 236),
-    NAME_FUNC_OFFSET(2829, glEvalPoint1, glEvalPoint1, NULL, 237),
-    NAME_FUNC_OFFSET(2842, glEvalMesh2, glEvalMesh2, NULL, 238),
-    NAME_FUNC_OFFSET(2854, glEvalPoint2, glEvalPoint2, NULL, 239),
-    NAME_FUNC_OFFSET(2867, glAlphaFunc, glAlphaFunc, NULL, 240),
-    NAME_FUNC_OFFSET(2879, glBlendFunc, glBlendFunc, NULL, 241),
-    NAME_FUNC_OFFSET(2891, glLogicOp, glLogicOp, NULL, 242),
-    NAME_FUNC_OFFSET(2901, glStencilFunc, glStencilFunc, NULL, 243),
-    NAME_FUNC_OFFSET(2915, glStencilOp, glStencilOp, NULL, 244),
-    NAME_FUNC_OFFSET(2927, glDepthFunc, glDepthFunc, NULL, 245),
-    NAME_FUNC_OFFSET(2939, glPixelZoom, glPixelZoom, NULL, 246),
-    NAME_FUNC_OFFSET(2951, glPixelTransferf, glPixelTransferf, NULL, 247),
-    NAME_FUNC_OFFSET(2968, glPixelTransferi, glPixelTransferi, NULL, 248),
-    NAME_FUNC_OFFSET(2985, glPixelStoref, glPixelStoref, NULL, 249),
-    NAME_FUNC_OFFSET(2999, glPixelStorei, glPixelStorei, NULL, 250),
-    NAME_FUNC_OFFSET(3013, glPixelMapfv, glPixelMapfv, NULL, 251),
-    NAME_FUNC_OFFSET(3026, glPixelMapuiv, glPixelMapuiv, NULL, 252),
-    NAME_FUNC_OFFSET(3040, glPixelMapusv, glPixelMapusv, NULL, 253),
-    NAME_FUNC_OFFSET(3054, glReadBuffer, glReadBuffer, NULL, 254),
-    NAME_FUNC_OFFSET(3067, glCopyPixels, glCopyPixels, NULL, 255),
-    NAME_FUNC_OFFSET(3080, glReadPixels, glReadPixels, NULL, 256),
-    NAME_FUNC_OFFSET(3093, glDrawPixels, glDrawPixels, NULL, 257),
-    NAME_FUNC_OFFSET(3106, glGetBooleanv, glGetBooleanv, NULL, 258),
-    NAME_FUNC_OFFSET(3120, glGetClipPlane, glGetClipPlane, NULL, 259),
-    NAME_FUNC_OFFSET(3135, glGetDoublev, glGetDoublev, NULL, 260),
-    NAME_FUNC_OFFSET(3148, glGetError, glGetError, NULL, 261),
-    NAME_FUNC_OFFSET(3159, glGetFloatv, glGetFloatv, NULL, 262),
-    NAME_FUNC_OFFSET(3171, glGetIntegerv, glGetIntegerv, NULL, 263),
-    NAME_FUNC_OFFSET(3185, glGetLightfv, glGetLightfv, NULL, 264),
-    NAME_FUNC_OFFSET(3198, glGetLightiv, glGetLightiv, NULL, 265),
-    NAME_FUNC_OFFSET(3211, glGetMapdv, glGetMapdv, NULL, 266),
-    NAME_FUNC_OFFSET(3222, glGetMapfv, glGetMapfv, NULL, 267),
-    NAME_FUNC_OFFSET(3233, glGetMapiv, glGetMapiv, NULL, 268),
-    NAME_FUNC_OFFSET(3244, glGetMaterialfv, glGetMaterialfv, NULL, 269),
-    NAME_FUNC_OFFSET(3260, glGetMaterialiv, glGetMaterialiv, NULL, 270),
-    NAME_FUNC_OFFSET(3276, glGetPixelMapfv, glGetPixelMapfv, NULL, 271),
-    NAME_FUNC_OFFSET(3292, glGetPixelMapuiv, glGetPixelMapuiv, NULL, 272),
-    NAME_FUNC_OFFSET(3309, glGetPixelMapusv, glGetPixelMapusv, NULL, 273),
-    NAME_FUNC_OFFSET(3326, glGetPolygonStipple, glGetPolygonStipple, NULL, 274),
-    NAME_FUNC_OFFSET(3346, glGetString, glGetString, NULL, 275),
-    NAME_FUNC_OFFSET(3358, glGetTexEnvfv, glGetTexEnvfv, NULL, 276),
-    NAME_FUNC_OFFSET(3372, glGetTexEnviv, glGetTexEnviv, NULL, 277),
-    NAME_FUNC_OFFSET(3386, glGetTexGendv, glGetTexGendv, NULL, 278),
-    NAME_FUNC_OFFSET(3400, glGetTexGenfv, glGetTexGenfv, NULL, 279),
-    NAME_FUNC_OFFSET(3414, glGetTexGeniv, glGetTexGeniv, NULL, 280),
-    NAME_FUNC_OFFSET(3428, glGetTexImage, glGetTexImage, NULL, 281),
-    NAME_FUNC_OFFSET(3442, glGetTexParameterfv, glGetTexParameterfv, NULL, 282),
-    NAME_FUNC_OFFSET(3462, glGetTexParameteriv, glGetTexParameteriv, NULL, 283),
-    NAME_FUNC_OFFSET(3482, glGetTexLevelParameterfv, glGetTexLevelParameterfv,
-                     NULL, 284),
-    NAME_FUNC_OFFSET(3507, glGetTexLevelParameteriv, glGetTexLevelParameteriv,
-                     NULL, 285),
-    NAME_FUNC_OFFSET(3532, glIsEnabled, glIsEnabled, NULL, 286),
-    NAME_FUNC_OFFSET(3544, glIsList, glIsList, NULL, 287),
-    NAME_FUNC_OFFSET(3553, glDepthRange, glDepthRange, NULL, 288),
-    NAME_FUNC_OFFSET(3566, glFrustum, glFrustum, NULL, 289),
-    NAME_FUNC_OFFSET(3576, glLoadIdentity, glLoadIdentity, NULL, 290),
-    NAME_FUNC_OFFSET(3591, glLoadMatrixf, glLoadMatrixf, NULL, 291),
-    NAME_FUNC_OFFSET(3605, glLoadMatrixd, glLoadMatrixd, NULL, 292),
-    NAME_FUNC_OFFSET(3619, glMatrixMode, glMatrixMode, NULL, 293),
-    NAME_FUNC_OFFSET(3632, glMultMatrixf, glMultMatrixf, NULL, 294),
-    NAME_FUNC_OFFSET(3646, glMultMatrixd, glMultMatrixd, NULL, 295),
-    NAME_FUNC_OFFSET(3660, glOrtho, glOrtho, NULL, 296),
-    NAME_FUNC_OFFSET(3668, glPopMatrix, glPopMatrix, NULL, 297),
-    NAME_FUNC_OFFSET(3680, glPushMatrix, glPushMatrix, NULL, 298),
-    NAME_FUNC_OFFSET(3693, glRotated, glRotated, NULL, 299),
-    NAME_FUNC_OFFSET(3703, glRotatef, glRotatef, NULL, 300),
-    NAME_FUNC_OFFSET(3713, glScaled, glScaled, NULL, 301),
-    NAME_FUNC_OFFSET(3722, glScalef, glScalef, NULL, 302),
-    NAME_FUNC_OFFSET(3731, glTranslated, glTranslated, NULL, 303),
-    NAME_FUNC_OFFSET(3744, glTranslatef, glTranslatef, NULL, 304),
-    NAME_FUNC_OFFSET(3757, glViewport, glViewport, NULL, 305),
-    NAME_FUNC_OFFSET(3768, glArrayElement, glArrayElement, NULL, 306),
-    NAME_FUNC_OFFSET(3783, glBindTexture, glBindTexture, NULL, 307),
-    NAME_FUNC_OFFSET(3797, glColorPointer, glColorPointer, NULL, 308),
-    NAME_FUNC_OFFSET(3812, glDisableClientState, glDisableClientState, NULL,
-                     309),
-    NAME_FUNC_OFFSET(3833, glDrawArrays, glDrawArrays, NULL, 310),
-    NAME_FUNC_OFFSET(3846, glDrawElements, glDrawElements, NULL, 311),
-    NAME_FUNC_OFFSET(3861, glEdgeFlagPointer, glEdgeFlagPointer, NULL, 312),
-    NAME_FUNC_OFFSET(3879, glEnableClientState, glEnableClientState, NULL, 313),
-    NAME_FUNC_OFFSET(3899, glIndexPointer, glIndexPointer, NULL, 314),
-    NAME_FUNC_OFFSET(3914, glIndexub, glIndexub, NULL, 315),
-    NAME_FUNC_OFFSET(3924, glIndexubv, glIndexubv, NULL, 316),
-    NAME_FUNC_OFFSET(3935, glInterleavedArrays, glInterleavedArrays, NULL, 317),
-    NAME_FUNC_OFFSET(3955, glNormalPointer, glNormalPointer, NULL, 318),
-    NAME_FUNC_OFFSET(3971, glPolygonOffset, glPolygonOffset, NULL, 319),
-    NAME_FUNC_OFFSET(3987, glTexCoordPointer, glTexCoordPointer, NULL, 320),
-    NAME_FUNC_OFFSET(4005, glVertexPointer, glVertexPointer, NULL, 321),
-    NAME_FUNC_OFFSET(4021, glAreTexturesResident, glAreTexturesResident, NULL,
-                     322),
-    NAME_FUNC_OFFSET(4043, glCopyTexImage1D, glCopyTexImage1D, NULL, 323),
-    NAME_FUNC_OFFSET(4060, glCopyTexImage2D, glCopyTexImage2D, NULL, 324),
-    NAME_FUNC_OFFSET(4077, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, 325),
-    NAME_FUNC_OFFSET(4097, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, 326),
-    NAME_FUNC_OFFSET(4117, glDeleteTextures, glDeleteTextures, NULL, 327),
-    NAME_FUNC_OFFSET(4134, glGenTextures, glGenTextures, NULL, 328),
-    NAME_FUNC_OFFSET(4148, glGetPointerv, glGetPointerv, NULL, 329),
-    NAME_FUNC_OFFSET(4162, glIsTexture, glIsTexture, NULL, 330),
-    NAME_FUNC_OFFSET(4174, glPrioritizeTextures, glPrioritizeTextures, NULL,
-                     331),
-    NAME_FUNC_OFFSET(4195, glTexSubImage1D, glTexSubImage1D, NULL, 332),
-    NAME_FUNC_OFFSET(4211, glTexSubImage2D, glTexSubImage2D, NULL, 333),
-    NAME_FUNC_OFFSET(4227, glPopClientAttrib, glPopClientAttrib, NULL, 334),
-    NAME_FUNC_OFFSET(4245, glPushClientAttrib, glPushClientAttrib, NULL, 335),
-    NAME_FUNC_OFFSET(4264, glBlendColor, glBlendColor, NULL, 336),
-    NAME_FUNC_OFFSET(4277, glBlendEquation, glBlendEquation, NULL, 337),
-    NAME_FUNC_OFFSET(4293, glDrawRangeElements, glDrawRangeElements, NULL, 338),
-    NAME_FUNC_OFFSET(4313, glColorTable, glColorTable, NULL, 339),
-    NAME_FUNC_OFFSET(4326, glColorTableParameterfv, glColorTableParameterfv,
-                     NULL, 340),
-    NAME_FUNC_OFFSET(4350, glColorTableParameteriv, glColorTableParameteriv,
-                     NULL, 341),
-    NAME_FUNC_OFFSET(4374, glCopyColorTable, glCopyColorTable, NULL, 342),
-    NAME_FUNC_OFFSET(4391, glGetColorTable, glGetColorTable, NULL, 343),
-    NAME_FUNC_OFFSET(4407, glGetColorTableParameterfv,
-                     glGetColorTableParameterfv, NULL, 344),
-    NAME_FUNC_OFFSET(4434, glGetColorTableParameteriv,
-                     glGetColorTableParameteriv, NULL, 345),
-    NAME_FUNC_OFFSET(4461, glColorSubTable, glColorSubTable, NULL, 346),
-    NAME_FUNC_OFFSET(4477, glCopyColorSubTable, glCopyColorSubTable, NULL, 347),
-    NAME_FUNC_OFFSET(4497, glConvolutionFilter1D, glConvolutionFilter1D, NULL,
-                     348),
-    NAME_FUNC_OFFSET(4519, glConvolutionFilter2D, glConvolutionFilter2D, NULL,
-                     349),
-    NAME_FUNC_OFFSET(4541, glConvolutionParameterf, glConvolutionParameterf,
-                     NULL, 350),
-    NAME_FUNC_OFFSET(4565, glConvolutionParameterfv, glConvolutionParameterfv,
-                     NULL, 351),
-    NAME_FUNC_OFFSET(4590, glConvolutionParameteri, glConvolutionParameteri,
-                     NULL, 352),
-    NAME_FUNC_OFFSET(4614, glConvolutionParameteriv, glConvolutionParameteriv,
-                     NULL, 353),
-    NAME_FUNC_OFFSET(4639, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D,
-                     NULL, 354),
-    NAME_FUNC_OFFSET(4665, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D,
-                     NULL, 355),
-    NAME_FUNC_OFFSET(4691, glGetConvolutionFilter, glGetConvolutionFilter, NULL,
-                     356),
-    NAME_FUNC_OFFSET(4714, glGetConvolutionParameterfv,
-                     glGetConvolutionParameterfv, NULL, 357),
-    NAME_FUNC_OFFSET(4742, glGetConvolutionParameteriv,
-                     glGetConvolutionParameteriv, NULL, 358),
-    NAME_FUNC_OFFSET(4770, glGetSeparableFilter, glGetSeparableFilter, NULL,
-                     359),
-    NAME_FUNC_OFFSET(4791, glSeparableFilter2D, glSeparableFilter2D, NULL, 360),
-    NAME_FUNC_OFFSET(4811, glGetHistogram, glGetHistogram, NULL, 361),
-    NAME_FUNC_OFFSET(4826, glGetHistogramParameterfv, glGetHistogramParameterfv,
-                     NULL, 362),
-    NAME_FUNC_OFFSET(4852, glGetHistogramParameteriv, glGetHistogramParameteriv,
-                     NULL, 363),
-    NAME_FUNC_OFFSET(4878, glGetMinmax, glGetMinmax, NULL, 364),
-    NAME_FUNC_OFFSET(4890, glGetMinmaxParameterfv, glGetMinmaxParameterfv, NULL,
-                     365),
-    NAME_FUNC_OFFSET(4913, glGetMinmaxParameteriv, glGetMinmaxParameteriv, NULL,
-                     366),
-    NAME_FUNC_OFFSET(4936, glHistogram, glHistogram, NULL, 367),
-    NAME_FUNC_OFFSET(4948, glMinmax, glMinmax, NULL, 368),
-    NAME_FUNC_OFFSET(4957, glResetHistogram, glResetHistogram, NULL, 369),
-    NAME_FUNC_OFFSET(4974, glResetMinmax, glResetMinmax, NULL, 370),
-    NAME_FUNC_OFFSET(4988, glTexImage3D, glTexImage3D, NULL, 371),
-    NAME_FUNC_OFFSET(5001, glTexSubImage3D, glTexSubImage3D, NULL, 372),
-    NAME_FUNC_OFFSET(5017, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373),
-    NAME_FUNC_OFFSET(5037, glActiveTextureARB, glActiveTextureARB, NULL, 374),
-    NAME_FUNC_OFFSET(5056, glClientActiveTextureARB, glClientActiveTextureARB,
-                     NULL, 375),
-    NAME_FUNC_OFFSET(5081, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL,
-                     376),
-    NAME_FUNC_OFFSET(5102, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL,
-                     377),
-    NAME_FUNC_OFFSET(5124, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL,
-                     378),
-    NAME_FUNC_OFFSET(5145, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL,
-                     379),
-    NAME_FUNC_OFFSET(5167, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL,
-                     380),
-    NAME_FUNC_OFFSET(5188, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL,
-                     381),
-    NAME_FUNC_OFFSET(5210, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL,
-                     382),
-    NAME_FUNC_OFFSET(5231, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL,
-                     383),
-    NAME_FUNC_OFFSET(5253, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL,
-                     384),
-    NAME_FUNC_OFFSET(5274, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL,
-                     385),
-    NAME_FUNC_OFFSET(5296, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL,
-                     386),
-    NAME_FUNC_OFFSET(5317, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL,
-                     387),
-    NAME_FUNC_OFFSET(5339, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL,
-                     388),
-    NAME_FUNC_OFFSET(5360, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL,
-                     389),
-    NAME_FUNC_OFFSET(5382, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL,
-                     390),
-    NAME_FUNC_OFFSET(5403, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL,
-                     391),
-    NAME_FUNC_OFFSET(5425, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL,
-                     392),
-    NAME_FUNC_OFFSET(5446, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL,
-                     393),
-    NAME_FUNC_OFFSET(5468, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL,
-                     394),
-    NAME_FUNC_OFFSET(5489, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL,
-                     395),
-    NAME_FUNC_OFFSET(5511, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL,
-                     396),
-    NAME_FUNC_OFFSET(5532, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL,
-                     397),
-    NAME_FUNC_OFFSET(5554, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL,
-                     398),
-    NAME_FUNC_OFFSET(5575, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL,
-                     399),
-    NAME_FUNC_OFFSET(5597, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL,
-                     400),
-    NAME_FUNC_OFFSET(5618, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL,
-                     401),
-    NAME_FUNC_OFFSET(5640, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL,
-                     402),
-    NAME_FUNC_OFFSET(5661, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL,
-                     403),
-    NAME_FUNC_OFFSET(5683, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL,
-                     404),
-    NAME_FUNC_OFFSET(5704, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL,
-                     405),
-    NAME_FUNC_OFFSET(5726, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL,
-                     406),
-    NAME_FUNC_OFFSET(5747, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL,
-                     407),
-    NAME_FUNC_OFFSET(5769, glAttachShader, glAttachShader, NULL, 408),
-    NAME_FUNC_OFFSET(5784, glCreateProgram, glCreateProgram, NULL, 409),
-    NAME_FUNC_OFFSET(5800, glCreateShader, glCreateShader, NULL, 410),
-    NAME_FUNC_OFFSET(5815, glDeleteProgram, glDeleteProgram, NULL, 411),
-    NAME_FUNC_OFFSET(5831, glDeleteShader, glDeleteShader, NULL, 412),
-    NAME_FUNC_OFFSET(5846, glDetachShader, glDetachShader, NULL, 413),
-    NAME_FUNC_OFFSET(5861, glGetAttachedShaders, glGetAttachedShaders, NULL,
-                     414),
-    NAME_FUNC_OFFSET(5882, glGetProgramInfoLog, glGetProgramInfoLog, NULL, 415),
-    NAME_FUNC_OFFSET(5902, glGetProgramiv, glGetProgramiv, NULL, 416),
-    NAME_FUNC_OFFSET(5917, glGetShaderInfoLog, glGetShaderInfoLog, NULL, 417),
-    NAME_FUNC_OFFSET(5936, glGetShaderiv, glGetShaderiv, NULL, 418),
-    NAME_FUNC_OFFSET(5950, glIsProgram, glIsProgram, NULL, 419),
-    NAME_FUNC_OFFSET(5962, glIsShader, glIsShader, NULL, 420),
-    NAME_FUNC_OFFSET(5973, glStencilFuncSeparate, glStencilFuncSeparate, NULL,
-                     421),
-    NAME_FUNC_OFFSET(5995, glStencilMaskSeparate, glStencilMaskSeparate, NULL,
-                     422),
-    NAME_FUNC_OFFSET(6017, glStencilOpSeparate, glStencilOpSeparate, NULL, 423),
-    NAME_FUNC_OFFSET(6037, glUniformMatrix2x3fv, glUniformMatrix2x3fv, NULL,
-                     424),
-    NAME_FUNC_OFFSET(6058, glUniformMatrix2x4fv, glUniformMatrix2x4fv, NULL,
-                     425),
-    NAME_FUNC_OFFSET(6079, glUniformMatrix3x2fv, glUniformMatrix3x2fv, NULL,
-                     426),
-    NAME_FUNC_OFFSET(6100, glUniformMatrix3x4fv, glUniformMatrix3x4fv, NULL,
-                     427),
-    NAME_FUNC_OFFSET(6121, glUniformMatrix4x2fv, glUniformMatrix4x2fv, NULL,
-                     428),
-    NAME_FUNC_OFFSET(6142, glUniformMatrix4x3fv, glUniformMatrix4x3fv, NULL,
-                     429),
-    NAME_FUNC_OFFSET(6163, glClampColor, glClampColor, NULL, 430),
-    NAME_FUNC_OFFSET(6176, glClearBufferfi, glClearBufferfi, NULL, 431),
-    NAME_FUNC_OFFSET(6192, glClearBufferfv, glClearBufferfv, NULL, 432),
-    NAME_FUNC_OFFSET(6208, glClearBufferiv, glClearBufferiv, NULL, 433),
-    NAME_FUNC_OFFSET(6224, glClearBufferuiv, glClearBufferuiv, NULL, 434),
-    NAME_FUNC_OFFSET(6241, glGetStringi, glGetStringi, NULL, 435),
-    NAME_FUNC_OFFSET(6254, glTexBuffer, glTexBuffer, NULL, 436),
-    NAME_FUNC_OFFSET(6266, glFramebufferTexture, glFramebufferTexture, NULL,
-                     437),
-    NAME_FUNC_OFFSET(6287, glGetBufferParameteri64v, glGetBufferParameteri64v,
-                     NULL, 438),
-    NAME_FUNC_OFFSET(6312, glGetInteger64i_v, glGetInteger64i_v, NULL, 439),
-    NAME_FUNC_OFFSET(6330, glVertexAttribDivisor, glVertexAttribDivisor, NULL,
-                     440),
-    NAME_FUNC_OFFSET(6352, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB,
-                     NULL, 441),
-    NAME_FUNC_OFFSET(6378, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB,
-                     NULL, 442),
-    NAME_FUNC_OFFSET(6404, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB,
-                     NULL, 443),
-    NAME_FUNC_OFFSET(6430, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB,
-                     NULL, 444),
-    NAME_FUNC_OFFSET(6456, glSampleCoverageARB, glSampleCoverageARB, NULL, 445),
-    NAME_FUNC_OFFSET(6476, glCompressedTexImage1DARB, glCompressedTexImage1DARB,
-                     NULL, 446),
-    NAME_FUNC_OFFSET(6502, glCompressedTexImage2DARB, glCompressedTexImage2DARB,
-                     NULL, 447),
-    NAME_FUNC_OFFSET(6528, glCompressedTexImage3DARB, glCompressedTexImage3DARB,
-                     NULL, 448),
-    NAME_FUNC_OFFSET(6554, glCompressedTexSubImage1DARB,
-                     glCompressedTexSubImage1DARB, NULL, 449),
-    NAME_FUNC_OFFSET(6583, glCompressedTexSubImage2DARB,
-                     glCompressedTexSubImage2DARB, NULL, 450),
-    NAME_FUNC_OFFSET(6612, glCompressedTexSubImage3DARB,
-                     glCompressedTexSubImage3DARB, NULL, 451),
-    NAME_FUNC_OFFSET(6641, glGetCompressedTexImageARB,
-                     glGetCompressedTexImageARB, NULL, 452),
-    NAME_FUNC_OFFSET(6668, glDisableVertexAttribArrayARB,
-                     glDisableVertexAttribArrayARB, NULL, 453),
-    NAME_FUNC_OFFSET(6698, glEnableVertexAttribArrayARB,
-                     glEnableVertexAttribArrayARB, NULL, 454),
-    NAME_FUNC_OFFSET(6727, glGetProgramEnvParameterdvARB,
-                     glGetProgramEnvParameterdvARB, NULL, 455),
-    NAME_FUNC_OFFSET(6757, glGetProgramEnvParameterfvARB,
-                     glGetProgramEnvParameterfvARB, NULL, 456),
-    NAME_FUNC_OFFSET(6787, glGetProgramLocalParameterdvARB,
-                     glGetProgramLocalParameterdvARB, NULL, 457),
-    NAME_FUNC_OFFSET(6819, glGetProgramLocalParameterfvARB,
-                     glGetProgramLocalParameterfvARB, NULL, 458),
-    NAME_FUNC_OFFSET(6851, glGetProgramStringARB, glGetProgramStringARB, NULL,
-                     459),
-    NAME_FUNC_OFFSET(6873, glGetProgramivARB, glGetProgramivARB, NULL, 460),
-    NAME_FUNC_OFFSET(6891, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL,
-                     461),
-    NAME_FUNC_OFFSET(6914, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL,
-                     462),
-    NAME_FUNC_OFFSET(6937, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL,
-                     463),
-    NAME_FUNC_OFFSET(6960, glProgramEnvParameter4dARB,
-                     glProgramEnvParameter4dARB, NULL, 464),
-    NAME_FUNC_OFFSET(6987, glProgramEnvParameter4dvARB,
-                     glProgramEnvParameter4dvARB, NULL, 465),
-    NAME_FUNC_OFFSET(7015, glProgramEnvParameter4fARB,
-                     glProgramEnvParameter4fARB, NULL, 466),
-    NAME_FUNC_OFFSET(7042, glProgramEnvParameter4fvARB,
-                     glProgramEnvParameter4fvARB, NULL, 467),
-    NAME_FUNC_OFFSET(7070, glProgramLocalParameter4dARB,
-                     glProgramLocalParameter4dARB, NULL, 468),
-    NAME_FUNC_OFFSET(7099, glProgramLocalParameter4dvARB,
-                     glProgramLocalParameter4dvARB, NULL, 469),
-    NAME_FUNC_OFFSET(7129, glProgramLocalParameter4fARB,
-                     glProgramLocalParameter4fARB, NULL, 470),
-    NAME_FUNC_OFFSET(7158, glProgramLocalParameter4fvARB,
-                     glProgramLocalParameter4fvARB, NULL, 471),
-    NAME_FUNC_OFFSET(7188, glProgramStringARB, glProgramStringARB, NULL, 472),
-    NAME_FUNC_OFFSET(7207, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, 473),
-    NAME_FUNC_OFFSET(7227, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL,
-                     474),
-    NAME_FUNC_OFFSET(7248, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, 475),
-    NAME_FUNC_OFFSET(7268, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL,
-                     476),
-    NAME_FUNC_OFFSET(7289, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, 477),
-    NAME_FUNC_OFFSET(7309, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL,
-                     478),
-    NAME_FUNC_OFFSET(7330, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, 479),
-    NAME_FUNC_OFFSET(7350, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL,
-                     480),
-    NAME_FUNC_OFFSET(7371, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, 481),
-    NAME_FUNC_OFFSET(7391, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL,
-                     482),
-    NAME_FUNC_OFFSET(7412, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, 483),
-    NAME_FUNC_OFFSET(7432, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL,
-                     484),
-    NAME_FUNC_OFFSET(7453, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, 485),
-    NAME_FUNC_OFFSET(7473, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL,
-                     486),
-    NAME_FUNC_OFFSET(7494, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, 487),
-    NAME_FUNC_OFFSET(7514, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL,
-                     488),
-    NAME_FUNC_OFFSET(7535, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, 489),
-    NAME_FUNC_OFFSET(7555, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL,
-                     490),
-    NAME_FUNC_OFFSET(7576, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL,
-                     491),
-    NAME_FUNC_OFFSET(7598, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL,
-                     492),
-    NAME_FUNC_OFFSET(7620, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL,
-                     493),
-    NAME_FUNC_OFFSET(7642, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL,
-                     494),
-    NAME_FUNC_OFFSET(7664, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL,
-                     495),
-    NAME_FUNC_OFFSET(7687, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL,
-                     496),
-    NAME_FUNC_OFFSET(7710, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL,
-                     497),
-    NAME_FUNC_OFFSET(7733, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL,
-                     498),
-    NAME_FUNC_OFFSET(7754, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, 499),
-    NAME_FUNC_OFFSET(7774, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL,
-                     500),
-    NAME_FUNC_OFFSET(7795, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, 501),
-    NAME_FUNC_OFFSET(7815, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL,
-                     502),
-    NAME_FUNC_OFFSET(7836, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL,
-                     503),
-    NAME_FUNC_OFFSET(7857, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, 504),
-    NAME_FUNC_OFFSET(7877, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL,
-                     505),
-    NAME_FUNC_OFFSET(7898, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL,
-                     506),
-    NAME_FUNC_OFFSET(7920, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL,
-                     507),
-    NAME_FUNC_OFFSET(7942, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL,
-                     508),
-    NAME_FUNC_OFFSET(7964, glVertexAttribPointerARB, glVertexAttribPointerARB,
-                     NULL, 509),
-    NAME_FUNC_OFFSET(7989, glBindBufferARB, glBindBufferARB, NULL, 510),
-    NAME_FUNC_OFFSET(8005, glBufferDataARB, glBufferDataARB, NULL, 511),
-    NAME_FUNC_OFFSET(8021, glBufferSubDataARB, glBufferSubDataARB, NULL, 512),
-    NAME_FUNC_OFFSET(8040, glDeleteBuffersARB, glDeleteBuffersARB, NULL, 513),
-    NAME_FUNC_OFFSET(8059, glGenBuffersARB, glGenBuffersARB, NULL, 514),
-    NAME_FUNC_OFFSET(8075, glGetBufferParameterivARB, glGetBufferParameterivARB,
-                     NULL, 515),
-    NAME_FUNC_OFFSET(8101, glGetBufferPointervARB, glGetBufferPointervARB, NULL,
-                     516),
-    NAME_FUNC_OFFSET(8124, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL,
-                     517),
-    NAME_FUNC_OFFSET(8146, glIsBufferARB, glIsBufferARB, NULL, 518),
-    NAME_FUNC_OFFSET(8160, glMapBufferARB, glMapBufferARB, NULL, 519),
-    NAME_FUNC_OFFSET(8175, glUnmapBufferARB, glUnmapBufferARB, NULL, 520),
-    NAME_FUNC_OFFSET(8192, glBeginQueryARB, glBeginQueryARB, NULL, 521),
-    NAME_FUNC_OFFSET(8208, glDeleteQueriesARB, glDeleteQueriesARB, NULL, 522),
-    NAME_FUNC_OFFSET(8227, glEndQueryARB, glEndQueryARB, NULL, 523),
-    NAME_FUNC_OFFSET(8241, glGenQueriesARB, glGenQueriesARB, NULL, 524),
-    NAME_FUNC_OFFSET(8257, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL,
-                     525),
-    NAME_FUNC_OFFSET(8279, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL,
-                     526),
-    NAME_FUNC_OFFSET(8302, glGetQueryivARB, glGetQueryivARB, NULL, 527),
-    NAME_FUNC_OFFSET(8318, glIsQueryARB, glIsQueryARB, NULL, 528),
-    NAME_FUNC_OFFSET(8331, glAttachObjectARB, glAttachObjectARB, NULL, 529),
-    NAME_FUNC_OFFSET(8349, glCompileShaderARB, glCompileShaderARB, NULL, 530),
-    NAME_FUNC_OFFSET(8368, glCreateProgramObjectARB, glCreateProgramObjectARB,
-                     NULL, 531),
-    NAME_FUNC_OFFSET(8393, glCreateShaderObjectARB, glCreateShaderObjectARB,
-                     NULL, 532),
-    NAME_FUNC_OFFSET(8417, glDeleteObjectARB, glDeleteObjectARB, NULL, 533),
-    NAME_FUNC_OFFSET(8435, glDetachObjectARB, glDetachObjectARB, NULL, 534),
-    NAME_FUNC_OFFSET(8453, glGetActiveUniformARB, glGetActiveUniformARB, NULL,
-                     535),
-    NAME_FUNC_OFFSET(8475, glGetAttachedObjectsARB, glGetAttachedObjectsARB,
-                     NULL, 536),
-    NAME_FUNC_OFFSET(8499, glGetHandleARB, glGetHandleARB, NULL, 537),
-    NAME_FUNC_OFFSET(8514, glGetInfoLogARB, glGetInfoLogARB, NULL, 538),
-    NAME_FUNC_OFFSET(8530, glGetObjectParameterfvARB, glGetObjectParameterfvARB,
-                     NULL, 539),
-    NAME_FUNC_OFFSET(8556, glGetObjectParameterivARB, glGetObjectParameterivARB,
-                     NULL, 540),
-    NAME_FUNC_OFFSET(8582, glGetShaderSourceARB, glGetShaderSourceARB, NULL,
-                     541),
-    NAME_FUNC_OFFSET(8603, glGetUniformLocationARB, glGetUniformLocationARB,
-                     NULL, 542),
-    NAME_FUNC_OFFSET(8627, glGetUniformfvARB, glGetUniformfvARB, NULL, 543),
-    NAME_FUNC_OFFSET(8645, glGetUniformivARB, glGetUniformivARB, NULL, 544),
-    NAME_FUNC_OFFSET(8663, glLinkProgramARB, glLinkProgramARB, NULL, 545),
-    NAME_FUNC_OFFSET(8680, glShaderSourceARB, glShaderSourceARB, NULL, 546),
-    NAME_FUNC_OFFSET(8698, glUniform1fARB, glUniform1fARB, NULL, 547),
-    NAME_FUNC_OFFSET(8713, glUniform1fvARB, glUniform1fvARB, NULL, 548),
-    NAME_FUNC_OFFSET(8729, glUniform1iARB, glUniform1iARB, NULL, 549),
-    NAME_FUNC_OFFSET(8744, glUniform1ivARB, glUniform1ivARB, NULL, 550),
-    NAME_FUNC_OFFSET(8760, glUniform2fARB, glUniform2fARB, NULL, 551),
-    NAME_FUNC_OFFSET(8775, glUniform2fvARB, glUniform2fvARB, NULL, 552),
-    NAME_FUNC_OFFSET(8791, glUniform2iARB, glUniform2iARB, NULL, 553),
-    NAME_FUNC_OFFSET(8806, glUniform2ivARB, glUniform2ivARB, NULL, 554),
-    NAME_FUNC_OFFSET(8822, glUniform3fARB, glUniform3fARB, NULL, 555),
-    NAME_FUNC_OFFSET(8837, glUniform3fvARB, glUniform3fvARB, NULL, 556),
-    NAME_FUNC_OFFSET(8853, glUniform3iARB, glUniform3iARB, NULL, 557),
-    NAME_FUNC_OFFSET(8868, glUniform3ivARB, glUniform3ivARB, NULL, 558),
-    NAME_FUNC_OFFSET(8884, glUniform4fARB, glUniform4fARB, NULL, 559),
-    NAME_FUNC_OFFSET(8899, glUniform4fvARB, glUniform4fvARB, NULL, 560),
-    NAME_FUNC_OFFSET(8915, glUniform4iARB, glUniform4iARB, NULL, 561),
-    NAME_FUNC_OFFSET(8930, glUniform4ivARB, glUniform4ivARB, NULL, 562),
-    NAME_FUNC_OFFSET(8946, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL,
-                     563),
-    NAME_FUNC_OFFSET(8968, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL,
-                     564),
-    NAME_FUNC_OFFSET(8990, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL,
-                     565),
-    NAME_FUNC_OFFSET(9012, glUseProgramObjectARB, glUseProgramObjectARB, NULL,
-                     566),
-    NAME_FUNC_OFFSET(9034, glValidateProgramARB, glValidateProgramARB, NULL,
-                     567),
-    NAME_FUNC_OFFSET(9055, glBindAttribLocationARB, glBindAttribLocationARB,
-                     NULL, 568),
-    NAME_FUNC_OFFSET(9079, glGetActiveAttribARB, glGetActiveAttribARB, NULL,
-                     569),
-    NAME_FUNC_OFFSET(9100, glGetAttribLocationARB, glGetAttribLocationARB, NULL,
-                     570),
-    NAME_FUNC_OFFSET(9123, glDrawBuffersARB, glDrawBuffersARB, NULL, 571),
-    NAME_FUNC_OFFSET(9140, glClampColorARB, glClampColorARB, NULL, 572),
-    NAME_FUNC_OFFSET(9156, glDrawArraysInstancedARB, glDrawArraysInstancedARB,
-                     NULL, 573),
-    NAME_FUNC_OFFSET(9181, glDrawElementsInstancedARB,
-                     glDrawElementsInstancedARB, NULL, 574),
-    NAME_FUNC_OFFSET(9208, glRenderbufferStorageMultisample,
-                     glRenderbufferStorageMultisample, NULL, 575),
-    NAME_FUNC_OFFSET(9241, glFramebufferTextureARB, glFramebufferTextureARB,
-                     NULL, 576),
-    NAME_FUNC_OFFSET(9265, glFramebufferTextureFaceARB,
-                     glFramebufferTextureFaceARB, NULL, 577),
-    NAME_FUNC_OFFSET(9293, glProgramParameteriARB, glProgramParameteriARB, NULL,
-                     578),
-    NAME_FUNC_OFFSET(9316, glVertexAttribDivisorARB, glVertexAttribDivisorARB,
-                     NULL, 579),
-    NAME_FUNC_OFFSET(9341, glFlushMappedBufferRange, glFlushMappedBufferRange,
-                     NULL, 580),
-    NAME_FUNC_OFFSET(9366, glMapBufferRange, glMapBufferRange, NULL, 581),
-    NAME_FUNC_OFFSET(9383, glTexBufferARB, glTexBufferARB, NULL, 582),
-    NAME_FUNC_OFFSET(9398, glBindVertexArray, glBindVertexArray, NULL, 583),
-    NAME_FUNC_OFFSET(9416, glGenVertexArrays, glGenVertexArrays, NULL, 584),
-    NAME_FUNC_OFFSET(9434, glCopyBufferSubData, glCopyBufferSubData, NULL, 585),
-    NAME_FUNC_OFFSET(9454, glClientWaitSync, glClientWaitSync, NULL, 586),
-    NAME_FUNC_OFFSET(9471, glDeleteSync, glDeleteSync, NULL, 587),
-    NAME_FUNC_OFFSET(9484, glFenceSync, glFenceSync, NULL, 588),
-    NAME_FUNC_OFFSET(9496, glGetInteger64v, glGetInteger64v, NULL, 589),
-    NAME_FUNC_OFFSET(9512, glGetSynciv, glGetSynciv, NULL, 590),
-    NAME_FUNC_OFFSET(9524, glIsSync, glIsSync, NULL, 591),
-    NAME_FUNC_OFFSET(9533, glWaitSync, glWaitSync, NULL, 592),
-    NAME_FUNC_OFFSET(9544, glDrawElementsBaseVertex, glDrawElementsBaseVertex,
-                     NULL, 593),
-    NAME_FUNC_OFFSET(9569, glDrawElementsInstancedBaseVertex,
-                     glDrawElementsInstancedBaseVertex, NULL, 594),
-    NAME_FUNC_OFFSET(9603, glDrawRangeElementsBaseVertex,
-                     glDrawRangeElementsBaseVertex, NULL, 595),
-    NAME_FUNC_OFFSET(9633, glMultiDrawElementsBaseVertex,
-                     glMultiDrawElementsBaseVertex, NULL, 596),
-    NAME_FUNC_OFFSET(9663, glBlendEquationSeparateiARB,
-                     glBlendEquationSeparateiARB, NULL, 597),
-    NAME_FUNC_OFFSET(9691, glBlendEquationiARB, glBlendEquationiARB, NULL, 598),
-    NAME_FUNC_OFFSET(9711, glBlendFuncSeparateiARB, glBlendFuncSeparateiARB,
-                     NULL, 599),
-    NAME_FUNC_OFFSET(9735, glBlendFunciARB, glBlendFunciARB, NULL, 600),
-    NAME_FUNC_OFFSET(9751, glBindSampler, glBindSampler, NULL, 601),
-    NAME_FUNC_OFFSET(9765, glDeleteSamplers, glDeleteSamplers, NULL, 602),
-    NAME_FUNC_OFFSET(9782, glGenSamplers, glGenSamplers, NULL, 603),
-    NAME_FUNC_OFFSET(9796, glGetSamplerParameterIiv, glGetSamplerParameterIiv,
-                     NULL, 604),
-    NAME_FUNC_OFFSET(9821, glGetSamplerParameterIuiv, glGetSamplerParameterIuiv,
-                     NULL, 605),
-    NAME_FUNC_OFFSET(9847, glGetSamplerParameterfv, glGetSamplerParameterfv,
-                     NULL, 606),
-    NAME_FUNC_OFFSET(9871, glGetSamplerParameteriv, glGetSamplerParameteriv,
-                     NULL, 607),
-    NAME_FUNC_OFFSET(9895, glIsSampler, glIsSampler, NULL, 608),
-    NAME_FUNC_OFFSET(9907, glSamplerParameterIiv, glSamplerParameterIiv, NULL,
-                     609),
-    NAME_FUNC_OFFSET(9929, glSamplerParameterIuiv, glSamplerParameterIuiv, NULL,
-                     610),
-    NAME_FUNC_OFFSET(9952, glSamplerParameterf, glSamplerParameterf, NULL, 611),
-    NAME_FUNC_OFFSET(9972, glSamplerParameterfv, glSamplerParameterfv, NULL,
-                     612),
-    NAME_FUNC_OFFSET(9993, glSamplerParameteri, glSamplerParameteri, NULL, 613),
-    NAME_FUNC_OFFSET(10013, glSamplerParameteriv, glSamplerParameteriv, NULL,
-                     614),
-    NAME_FUNC_OFFSET(10034, glColorP3ui, glColorP3ui, NULL, 615),
-    NAME_FUNC_OFFSET(10046, glColorP3uiv, glColorP3uiv, NULL, 616),
-    NAME_FUNC_OFFSET(10059, glColorP4ui, glColorP4ui, NULL, 617),
-    NAME_FUNC_OFFSET(10071, glColorP4uiv, glColorP4uiv, NULL, 618),
-    NAME_FUNC_OFFSET(10084, glMultiTexCoordP1ui, glMultiTexCoordP1ui, NULL,
-                     619),
-    NAME_FUNC_OFFSET(10104, glMultiTexCoordP1uiv, glMultiTexCoordP1uiv, NULL,
-                     620),
-    NAME_FUNC_OFFSET(10125, glMultiTexCoordP2ui, glMultiTexCoordP2ui, NULL,
-                     621),
-    NAME_FUNC_OFFSET(10145, glMultiTexCoordP2uiv, glMultiTexCoordP2uiv, NULL,
-                     622),
-    NAME_FUNC_OFFSET(10166, glMultiTexCoordP3ui, glMultiTexCoordP3ui, NULL,
-                     623),
-    NAME_FUNC_OFFSET(10186, glMultiTexCoordP3uiv, glMultiTexCoordP3uiv, NULL,
-                     624),
-    NAME_FUNC_OFFSET(10207, glMultiTexCoordP4ui, glMultiTexCoordP4ui, NULL,
-                     625),
-    NAME_FUNC_OFFSET(10227, glMultiTexCoordP4uiv, glMultiTexCoordP4uiv, NULL,
-                     626),
-    NAME_FUNC_OFFSET(10248, glNormalP3ui, glNormalP3ui, NULL, 627),
-    NAME_FUNC_OFFSET(10261, glNormalP3uiv, glNormalP3uiv, NULL, 628),
-    NAME_FUNC_OFFSET(10275, glSecondaryColorP3ui, glSecondaryColorP3ui, NULL,
-                     629),
-    NAME_FUNC_OFFSET(10296, glSecondaryColorP3uiv, glSecondaryColorP3uiv, NULL,
-                     630),
-    NAME_FUNC_OFFSET(10318, glTexCoordP1ui, glTexCoordP1ui, NULL, 631),
-    NAME_FUNC_OFFSET(10333, glTexCoordP1uiv, glTexCoordP1uiv, NULL, 632),
-    NAME_FUNC_OFFSET(10349, glTexCoordP2ui, glTexCoordP2ui, NULL, 633),
-    NAME_FUNC_OFFSET(10364, glTexCoordP2uiv, glTexCoordP2uiv, NULL, 634),
-    NAME_FUNC_OFFSET(10380, glTexCoordP3ui, glTexCoordP3ui, NULL, 635),
-    NAME_FUNC_OFFSET(10395, glTexCoordP3uiv, glTexCoordP3uiv, NULL, 636),
-    NAME_FUNC_OFFSET(10411, glTexCoordP4ui, glTexCoordP4ui, NULL, 637),
-    NAME_FUNC_OFFSET(10426, glTexCoordP4uiv, glTexCoordP4uiv, NULL, 638),
-    NAME_FUNC_OFFSET(10442, glVertexAttribP1ui, glVertexAttribP1ui, NULL, 639),
-    NAME_FUNC_OFFSET(10461, glVertexAttribP1uiv, glVertexAttribP1uiv, NULL,
-                     640),
-    NAME_FUNC_OFFSET(10481, glVertexAttribP2ui, glVertexAttribP2ui, NULL, 641),
-    NAME_FUNC_OFFSET(10500, glVertexAttribP2uiv, glVertexAttribP2uiv, NULL,
-                     642),
-    NAME_FUNC_OFFSET(10520, glVertexAttribP3ui, glVertexAttribP3ui, NULL, 643),
-    NAME_FUNC_OFFSET(10539, glVertexAttribP3uiv, glVertexAttribP3uiv, NULL,
-                     644),
-    NAME_FUNC_OFFSET(10559, glVertexAttribP4ui, glVertexAttribP4ui, NULL, 645),
-    NAME_FUNC_OFFSET(10578, glVertexAttribP4uiv, glVertexAttribP4uiv, NULL,
-                     646),
-    NAME_FUNC_OFFSET(10598, glVertexP2ui, glVertexP2ui, NULL, 647),
-    NAME_FUNC_OFFSET(10611, glVertexP2uiv, glVertexP2uiv, NULL, 648),
-    NAME_FUNC_OFFSET(10625, glVertexP3ui, glVertexP3ui, NULL, 649),
-    NAME_FUNC_OFFSET(10638, glVertexP3uiv, glVertexP3uiv, NULL, 650),
-    NAME_FUNC_OFFSET(10652, glVertexP4ui, glVertexP4ui, NULL, 651),
-    NAME_FUNC_OFFSET(10665, glVertexP4uiv, glVertexP4uiv, NULL, 652),
-    NAME_FUNC_OFFSET(10679, glBindTransformFeedback, glBindTransformFeedback,
-                     NULL, 653),
-    NAME_FUNC_OFFSET(10703, glDeleteTransformFeedbacks,
-                     glDeleteTransformFeedbacks, NULL, 654),
-    NAME_FUNC_OFFSET(10730, glDrawTransformFeedback, glDrawTransformFeedback,
-                     NULL, 655),
-    NAME_FUNC_OFFSET(10754, glGenTransformFeedbacks, glGenTransformFeedbacks,
-                     NULL, 656),
-    NAME_FUNC_OFFSET(10778, glIsTransformFeedback, glIsTransformFeedback, NULL,
-                     657),
-    NAME_FUNC_OFFSET(10800, glPauseTransformFeedback, glPauseTransformFeedback,
-                     NULL, 658),
-    NAME_FUNC_OFFSET(10825, glResumeTransformFeedback,
-                     glResumeTransformFeedback, NULL, 659),
-    NAME_FUNC_OFFSET(10851, glClearDepthf, glClearDepthf, NULL, 660),
-    NAME_FUNC_OFFSET(10865, glDepthRangef, glDepthRangef, NULL, 661),
-    NAME_FUNC_OFFSET(10879, glGetShaderPrecisionFormat,
-                     glGetShaderPrecisionFormat, NULL, 662),
-    NAME_FUNC_OFFSET(10906, glReleaseShaderCompiler, glReleaseShaderCompiler,
-                     NULL, 663),
-    NAME_FUNC_OFFSET(10930, glShaderBinary, glShaderBinary, NULL, 664),
-    NAME_FUNC_OFFSET(10945, glGetGraphicsResetStatusARB,
-                     glGetGraphicsResetStatusARB, NULL, 665),
-    NAME_FUNC_OFFSET(10973, glGetnColorTableARB, glGetnColorTableARB, NULL,
-                     666),
-    NAME_FUNC_OFFSET(10993, glGetnCompressedTexImageARB,
-                     glGetnCompressedTexImageARB, NULL, 667),
-    NAME_FUNC_OFFSET(11021, glGetnConvolutionFilterARB,
-                     glGetnConvolutionFilterARB, NULL, 668),
-    NAME_FUNC_OFFSET(11048, glGetnHistogramARB, glGetnHistogramARB, NULL, 669),
-    NAME_FUNC_OFFSET(11067, glGetnMapdvARB, glGetnMapdvARB, NULL, 670),
-    NAME_FUNC_OFFSET(11082, glGetnMapfvARB, glGetnMapfvARB, NULL, 671),
-    NAME_FUNC_OFFSET(11097, glGetnMapivARB, glGetnMapivARB, NULL, 672),
-    NAME_FUNC_OFFSET(11112, glGetnMinmaxARB, glGetnMinmaxARB, NULL, 673),
-    NAME_FUNC_OFFSET(11128, glGetnPixelMapfvARB, glGetnPixelMapfvARB, NULL,
-                     674),
-    NAME_FUNC_OFFSET(11148, glGetnPixelMapuivARB, glGetnPixelMapuivARB, NULL,
-                     675),
-    NAME_FUNC_OFFSET(11169, glGetnPixelMapusvARB, glGetnPixelMapusvARB, NULL,
-                     676),
-    NAME_FUNC_OFFSET(11190, glGetnPolygonStippleARB, glGetnPolygonStippleARB,
-                     NULL, 677),
-    NAME_FUNC_OFFSET(11214, glGetnSeparableFilterARB, glGetnSeparableFilterARB,
-                     NULL, 678),
-    NAME_FUNC_OFFSET(11239, glGetnTexImageARB, glGetnTexImageARB, NULL, 679),
-    NAME_FUNC_OFFSET(11257, glGetnUniformdvARB, glGetnUniformdvARB, NULL, 680),
-    NAME_FUNC_OFFSET(11276, glGetnUniformfvARB, glGetnUniformfvARB, NULL, 681),
-    NAME_FUNC_OFFSET(11295, glGetnUniformivARB, glGetnUniformivARB, NULL, 682),
-    NAME_FUNC_OFFSET(11314, glGetnUniformuivARB, glGetnUniformuivARB, NULL,
-                     683),
-    NAME_FUNC_OFFSET(11334, glReadnPixelsARB, glReadnPixelsARB, NULL, 684),
-    NAME_FUNC_OFFSET(11351, glTexStorage1D, glTexStorage1D, NULL, 685),
-    NAME_FUNC_OFFSET(11366, glTexStorage2D, glTexStorage2D, NULL, 686),
-    NAME_FUNC_OFFSET(11381, glTexStorage3D, glTexStorage3D, NULL, 687),
-    NAME_FUNC_OFFSET(11396, glTextureStorage1DEXT, glTextureStorage1DEXT, NULL,
-                     688),
-    NAME_FUNC_OFFSET(11418, glTextureStorage2DEXT, glTextureStorage2DEXT, NULL,
-                     689),
-    NAME_FUNC_OFFSET(11440, glTextureStorage3DEXT, glTextureStorage3DEXT, NULL,
-                     690),
-    NAME_FUNC_OFFSET(11462, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, 691),
-    NAME_FUNC_OFFSET(11481, gl_dispatch_stub_692, gl_dispatch_stub_692, NULL,
-                     692),
-    NAME_FUNC_OFFSET(11513, gl_dispatch_stub_693, gl_dispatch_stub_693, NULL,
-                     693),
-    NAME_FUNC_OFFSET(11545, gl_dispatch_stub_694, gl_dispatch_stub_694, NULL,
-                     694),
-    NAME_FUNC_OFFSET(11573, gl_dispatch_stub_695, gl_dispatch_stub_695, NULL,
-                     695),
-    NAME_FUNC_OFFSET(11602, gl_dispatch_stub_696, gl_dispatch_stub_696, NULL,
-                     696),
-    NAME_FUNC_OFFSET(11630, gl_dispatch_stub_697, gl_dispatch_stub_697, NULL,
-                     697),
-    NAME_FUNC_OFFSET(11659, gl_dispatch_stub_698, gl_dispatch_stub_698, NULL,
-                     698),
-    NAME_FUNC_OFFSET(11676, gl_dispatch_stub_699, gl_dispatch_stub_699, NULL,
-                     699),
-    NAME_FUNC_OFFSET(11696, glColorPointerEXT, glColorPointerEXT, NULL, 700),
-    NAME_FUNC_OFFSET(11714, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL,
-                     701),
-    NAME_FUNC_OFFSET(11735, glIndexPointerEXT, glIndexPointerEXT, NULL, 702),
-    NAME_FUNC_OFFSET(11753, glNormalPointerEXT, glNormalPointerEXT, NULL, 703),
-    NAME_FUNC_OFFSET(11772, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL,
-                     704),
-    NAME_FUNC_OFFSET(11793, glVertexPointerEXT, glVertexPointerEXT, NULL, 705),
-    NAME_FUNC_OFFSET(11812, glPointParameterfEXT, glPointParameterfEXT, NULL,
-                     706),
-    NAME_FUNC_OFFSET(11833, glPointParameterfvEXT, glPointParameterfvEXT, NULL,
-                     707),
-    NAME_FUNC_OFFSET(11855, glLockArraysEXT, glLockArraysEXT, NULL, 708),
-    NAME_FUNC_OFFSET(11871, glUnlockArraysEXT, glUnlockArraysEXT, NULL, 709),
-    NAME_FUNC_OFFSET(11889, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL,
-                     710),
-    NAME_FUNC_OFFSET(11911, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT,
-                     NULL, 711),
-    NAME_FUNC_OFFSET(11934, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL,
-                     712),
-    NAME_FUNC_OFFSET(11956, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT,
-                     NULL, 713),
-    NAME_FUNC_OFFSET(11979, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL,
-                     714),
-    NAME_FUNC_OFFSET(12001, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT,
-                     NULL, 715),
-    NAME_FUNC_OFFSET(12024, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL,
-                     716),
-    NAME_FUNC_OFFSET(12046, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT,
-                     NULL, 717),
-    NAME_FUNC_OFFSET(12069, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL,
-                     718),
-    NAME_FUNC_OFFSET(12091, glSecondaryColor3svEXT, glSecondaryColor3svEXT,
-                     NULL, 719),
-    NAME_FUNC_OFFSET(12114, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT,
-                     NULL, 720),
-    NAME_FUNC_OFFSET(12137, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT,
-                     NULL, 721),
-    NAME_FUNC_OFFSET(12161, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT,
-                     NULL, 722),
-    NAME_FUNC_OFFSET(12184, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT,
-                     NULL, 723),
-    NAME_FUNC_OFFSET(12208, glSecondaryColor3usEXT, glSecondaryColor3usEXT,
-                     NULL, 724),
-    NAME_FUNC_OFFSET(12231, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT,
-                     NULL, 725),
-    NAME_FUNC_OFFSET(12255, glSecondaryColorPointerEXT,
-                     glSecondaryColorPointerEXT, NULL, 726),
-    NAME_FUNC_OFFSET(12282, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL,
-                     727),
-    NAME_FUNC_OFFSET(12303, glMultiDrawElementsEXT, glMultiDrawElementsEXT,
-                     NULL, 728),
-    NAME_FUNC_OFFSET(12326, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL,
-                     729),
-    NAME_FUNC_OFFSET(12347, glFogCoorddEXT, glFogCoorddEXT, NULL, 730),
-    NAME_FUNC_OFFSET(12362, glFogCoorddvEXT, glFogCoorddvEXT, NULL, 731),
-    NAME_FUNC_OFFSET(12378, glFogCoordfEXT, glFogCoordfEXT, NULL, 732),
-    NAME_FUNC_OFFSET(12393, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 733),
-    NAME_FUNC_OFFSET(12409, gl_dispatch_stub_734, gl_dispatch_stub_734, NULL,
-                     734),
-    NAME_FUNC_OFFSET(12427, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT,
-                     NULL, 735),
-    NAME_FUNC_OFFSET(12450, glFlushVertexArrayRangeNV,
-                     glFlushVertexArrayRangeNV, NULL, 736),
-    NAME_FUNC_OFFSET(12476, glVertexArrayRangeNV, glVertexArrayRangeNV, NULL,
-                     737),
-    NAME_FUNC_OFFSET(12497, glCombinerInputNV, glCombinerInputNV, NULL, 738),
-    NAME_FUNC_OFFSET(12515, glCombinerOutputNV, glCombinerOutputNV, NULL, 739),
-    NAME_FUNC_OFFSET(12534, glCombinerParameterfNV, glCombinerParameterfNV,
-                     NULL, 740),
-    NAME_FUNC_OFFSET(12557, glCombinerParameterfvNV, glCombinerParameterfvNV,
-                     NULL, 741),
-    NAME_FUNC_OFFSET(12581, glCombinerParameteriNV, glCombinerParameteriNV,
-                     NULL, 742),
-    NAME_FUNC_OFFSET(12604, glCombinerParameterivNV, glCombinerParameterivNV,
-                     NULL, 743),
-    NAME_FUNC_OFFSET(12628, glFinalCombinerInputNV, glFinalCombinerInputNV,
-                     NULL, 744),
-    NAME_FUNC_OFFSET(12651, glGetCombinerInputParameterfvNV,
-                     glGetCombinerInputParameterfvNV, NULL, 745),
-    NAME_FUNC_OFFSET(12683, glGetCombinerInputParameterivNV,
-                     glGetCombinerInputParameterivNV, NULL, 746),
-    NAME_FUNC_OFFSET(12715, glGetCombinerOutputParameterfvNV,
-                     glGetCombinerOutputParameterfvNV, NULL, 747),
-    NAME_FUNC_OFFSET(12748, glGetCombinerOutputParameterivNV,
-                     glGetCombinerOutputParameterivNV, NULL, 748),
-    NAME_FUNC_OFFSET(12781, glGetFinalCombinerInputParameterfvNV,
-                     glGetFinalCombinerInputParameterfvNV, NULL, 749),
-    NAME_FUNC_OFFSET(12818, glGetFinalCombinerInputParameterivNV,
-                     glGetFinalCombinerInputParameterivNV, NULL, 750),
-    NAME_FUNC_OFFSET(12855, glResizeBuffersMESA, glResizeBuffersMESA, NULL,
-                     751),
-    NAME_FUNC_OFFSET(12875, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 752),
-    NAME_FUNC_OFFSET(12893, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 753),
-    NAME_FUNC_OFFSET(12912, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 754),
-    NAME_FUNC_OFFSET(12930, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 755),
-    NAME_FUNC_OFFSET(12949, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 756),
-    NAME_FUNC_OFFSET(12967, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 757),
-    NAME_FUNC_OFFSET(12986, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 758),
-    NAME_FUNC_OFFSET(13004, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 759),
-    NAME_FUNC_OFFSET(13023, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 760),
-    NAME_FUNC_OFFSET(13041, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 761),
-    NAME_FUNC_OFFSET(13060, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 762),
-    NAME_FUNC_OFFSET(13078, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 763),
-    NAME_FUNC_OFFSET(13097, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 764),
-    NAME_FUNC_OFFSET(13115, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 765),
-    NAME_FUNC_OFFSET(13134, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 766),
-    NAME_FUNC_OFFSET(13152, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 767),
-    NAME_FUNC_OFFSET(13171, glWindowPos4dMESA, glWindowPos4dMESA, NULL, 768),
-    NAME_FUNC_OFFSET(13189, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, 769),
-    NAME_FUNC_OFFSET(13208, glWindowPos4fMESA, glWindowPos4fMESA, NULL, 770),
-    NAME_FUNC_OFFSET(13226, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, 771),
-    NAME_FUNC_OFFSET(13245, glWindowPos4iMESA, glWindowPos4iMESA, NULL, 772),
-    NAME_FUNC_OFFSET(13263, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, 773),
-    NAME_FUNC_OFFSET(13282, glWindowPos4sMESA, glWindowPos4sMESA, NULL, 774),
-    NAME_FUNC_OFFSET(13300, glWindowPos4svMESA, glWindowPos4svMESA, NULL, 775),
-    NAME_FUNC_OFFSET(13319, gl_dispatch_stub_776, gl_dispatch_stub_776, NULL,
-                     776),
-    NAME_FUNC_OFFSET(13344, gl_dispatch_stub_777, gl_dispatch_stub_777, NULL,
-                     777),
-    NAME_FUNC_OFFSET(13371, gl_dispatch_stub_778, gl_dispatch_stub_778, NULL,
-                     778),
-    NAME_FUNC_OFFSET(13388, gl_dispatch_stub_779, gl_dispatch_stub_779, NULL,
-                     779),
-    NAME_FUNC_OFFSET(13404, gl_dispatch_stub_780, gl_dispatch_stub_780, NULL,
-                     780),
-    NAME_FUNC_OFFSET(13418, gl_dispatch_stub_781, gl_dispatch_stub_781, NULL,
-                     781),
-    NAME_FUNC_OFFSET(13433, gl_dispatch_stub_782, gl_dispatch_stub_782, NULL,
-                     782),
-    NAME_FUNC_OFFSET(13445, gl_dispatch_stub_783, gl_dispatch_stub_783, NULL,
-                     783),
-    NAME_FUNC_OFFSET(13458, gl_dispatch_stub_784, gl_dispatch_stub_784, NULL,
-                     784),
-    NAME_FUNC_OFFSET(13472, glAreProgramsResidentNV, glAreProgramsResidentNV,
-                     NULL, 785),
-    NAME_FUNC_OFFSET(13496, glBindProgramNV, glBindProgramNV, NULL, 786),
-    NAME_FUNC_OFFSET(13512, glDeleteProgramsNV, glDeleteProgramsNV, NULL, 787),
-    NAME_FUNC_OFFSET(13531, glExecuteProgramNV, glExecuteProgramNV, NULL, 788),
-    NAME_FUNC_OFFSET(13550, glGenProgramsNV, glGenProgramsNV, NULL, 789),
-    NAME_FUNC_OFFSET(13566, glGetProgramParameterdvNV,
-                     glGetProgramParameterdvNV, NULL, 790),
-    NAME_FUNC_OFFSET(13592, glGetProgramParameterfvNV,
-                     glGetProgramParameterfvNV, NULL, 791),
-    NAME_FUNC_OFFSET(13618, glGetProgramStringNV, glGetProgramStringNV, NULL,
-                     792),
-    NAME_FUNC_OFFSET(13639, glGetProgramivNV, glGetProgramivNV, NULL, 793),
-    NAME_FUNC_OFFSET(13656, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL,
-                     794),
-    NAME_FUNC_OFFSET(13677, glGetVertexAttribPointervNV,
-                     glGetVertexAttribPointervNV, NULL, 795),
-    NAME_FUNC_OFFSET(13705, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL,
-                     796),
-    NAME_FUNC_OFFSET(13727, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL,
-                     797),
-    NAME_FUNC_OFFSET(13749, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL,
-                     798),
-    NAME_FUNC_OFFSET(13771, glIsProgramNV, glIsProgramNV, NULL, 799),
-    NAME_FUNC_OFFSET(13785, glLoadProgramNV, glLoadProgramNV, NULL, 800),
-    NAME_FUNC_OFFSET(13801, glProgramParameters4dvNV, glProgramParameters4dvNV,
-                     NULL, 801),
-    NAME_FUNC_OFFSET(13826, glProgramParameters4fvNV, glProgramParameters4fvNV,
-                     NULL, 802),
-    NAME_FUNC_OFFSET(13851, glRequestResidentProgramsNV,
-                     glRequestResidentProgramsNV, NULL, 803),
-    NAME_FUNC_OFFSET(13879, glTrackMatrixNV, glTrackMatrixNV, NULL, 804),
-    NAME_FUNC_OFFSET(13895, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, 805),
-    NAME_FUNC_OFFSET(13914, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL,
-                     806),
-    NAME_FUNC_OFFSET(13934, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, 807),
-    NAME_FUNC_OFFSET(13953, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL,
-                     808),
-    NAME_FUNC_OFFSET(13973, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, 809),
-    NAME_FUNC_OFFSET(13992, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL,
-                     810),
-    NAME_FUNC_OFFSET(14012, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, 811),
-    NAME_FUNC_OFFSET(14031, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL,
-                     812),
-    NAME_FUNC_OFFSET(14051, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, 813),
-    NAME_FUNC_OFFSET(14070, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL,
-                     814),
-    NAME_FUNC_OFFSET(14090, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, 815),
-    NAME_FUNC_OFFSET(14109, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL,
-                     816),
-    NAME_FUNC_OFFSET(14129, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, 817),
-    NAME_FUNC_OFFSET(14148, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL,
-                     818),
-    NAME_FUNC_OFFSET(14168, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, 819),
-    NAME_FUNC_OFFSET(14187, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL,
-                     820),
-    NAME_FUNC_OFFSET(14207, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, 821),
-    NAME_FUNC_OFFSET(14226, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL,
-                     822),
-    NAME_FUNC_OFFSET(14246, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, 823),
-    NAME_FUNC_OFFSET(14265, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL,
-                     824),
-    NAME_FUNC_OFFSET(14285, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, 825),
-    NAME_FUNC_OFFSET(14304, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL,
-                     826),
-    NAME_FUNC_OFFSET(14324, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, 827),
-    NAME_FUNC_OFFSET(14343, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL,
-                     828),
-    NAME_FUNC_OFFSET(14363, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL,
-                     829),
-    NAME_FUNC_OFFSET(14383, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL,
-                     830),
-    NAME_FUNC_OFFSET(14404, glVertexAttribPointerNV, glVertexAttribPointerNV,
-                     NULL, 831),
-    NAME_FUNC_OFFSET(14428, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL,
-                     832),
-    NAME_FUNC_OFFSET(14449, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL,
-                     833),
-    NAME_FUNC_OFFSET(14470, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL,
-                     834),
-    NAME_FUNC_OFFSET(14491, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL,
-                     835),
-    NAME_FUNC_OFFSET(14512, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL,
-                     836),
-    NAME_FUNC_OFFSET(14533, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL,
-                     837),
-    NAME_FUNC_OFFSET(14554, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL,
-                     838),
-    NAME_FUNC_OFFSET(14575, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL,
-                     839),
-    NAME_FUNC_OFFSET(14596, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL,
-                     840),
-    NAME_FUNC_OFFSET(14617, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL,
-                     841),
-    NAME_FUNC_OFFSET(14638, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL,
-                     842),
-    NAME_FUNC_OFFSET(14659, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL,
-                     843),
-    NAME_FUNC_OFFSET(14680, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL,
-                     844),
-    NAME_FUNC_OFFSET(14702, glGetTexBumpParameterfvATI,
-                     glGetTexBumpParameterfvATI, NULL, 845),
-    NAME_FUNC_OFFSET(14729, glGetTexBumpParameterivATI,
-                     glGetTexBumpParameterivATI, NULL, 846),
-    NAME_FUNC_OFFSET(14756, glTexBumpParameterfvATI, glTexBumpParameterfvATI,
-                     NULL, 847),
-    NAME_FUNC_OFFSET(14780, glTexBumpParameterivATI, glTexBumpParameterivATI,
-                     NULL, 848),
-    NAME_FUNC_OFFSET(14804, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL,
-                     849),
-    NAME_FUNC_OFFSET(14826, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL,
-                     850),
-    NAME_FUNC_OFFSET(14848, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL,
-                     851),
-    NAME_FUNC_OFFSET(14870, glBeginFragmentShaderATI, glBeginFragmentShaderATI,
-                     NULL, 852),
-    NAME_FUNC_OFFSET(14895, glBindFragmentShaderATI, glBindFragmentShaderATI,
-                     NULL, 853),
-    NAME_FUNC_OFFSET(14919, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL,
-                     854),
-    NAME_FUNC_OFFSET(14941, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL,
-                     855),
-    NAME_FUNC_OFFSET(14963, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL,
-                     856),
-    NAME_FUNC_OFFSET(14985, glDeleteFragmentShaderATI,
-                     glDeleteFragmentShaderATI, NULL, 857),
-    NAME_FUNC_OFFSET(15011, glEndFragmentShaderATI, glEndFragmentShaderATI,
-                     NULL, 858),
-    NAME_FUNC_OFFSET(15034, glGenFragmentShadersATI, glGenFragmentShadersATI,
-                     NULL, 859),
-    NAME_FUNC_OFFSET(15058, glPassTexCoordATI, glPassTexCoordATI, NULL, 860),
-    NAME_FUNC_OFFSET(15076, glSampleMapATI, glSampleMapATI, NULL, 861),
-    NAME_FUNC_OFFSET(15091, glSetFragmentShaderConstantATI,
-                     glSetFragmentShaderConstantATI, NULL, 862),
-    NAME_FUNC_OFFSET(15122, glPointParameteriNV, glPointParameteriNV, NULL,
-                     863),
-    NAME_FUNC_OFFSET(15142, glPointParameterivNV, glPointParameterivNV, NULL,
-                     864),
-    NAME_FUNC_OFFSET(15163, gl_dispatch_stub_865, gl_dispatch_stub_865, NULL,
-                     865),
-    NAME_FUNC_OFFSET(15186, gl_dispatch_stub_866, gl_dispatch_stub_866, NULL,
-                     866),
-    NAME_FUNC_OFFSET(15209, gl_dispatch_stub_867, gl_dispatch_stub_867, NULL,
-                     867),
-    NAME_FUNC_OFFSET(15235, gl_dispatch_stub_868, gl_dispatch_stub_868, NULL,
-                     868),
-    NAME_FUNC_OFFSET(15258, gl_dispatch_stub_869, gl_dispatch_stub_869, NULL,
-                     869),
-    NAME_FUNC_OFFSET(15279, glGetProgramNamedParameterdvNV,
-                     glGetProgramNamedParameterdvNV, NULL, 870),
-    NAME_FUNC_OFFSET(15310, glGetProgramNamedParameterfvNV,
-                     glGetProgramNamedParameterfvNV, NULL, 871),
-    NAME_FUNC_OFFSET(15341, glProgramNamedParameter4dNV,
-                     glProgramNamedParameter4dNV, NULL, 872),
-    NAME_FUNC_OFFSET(15369, glProgramNamedParameter4dvNV,
-                     glProgramNamedParameter4dvNV, NULL, 873),
-    NAME_FUNC_OFFSET(15398, glProgramNamedParameter4fNV,
-                     glProgramNamedParameter4fNV, NULL, 874),
-    NAME_FUNC_OFFSET(15426, glProgramNamedParameter4fvNV,
-                     glProgramNamedParameter4fvNV, NULL, 875),
-    NAME_FUNC_OFFSET(15455, glPrimitiveRestartIndexNV,
-                     glPrimitiveRestartIndexNV, NULL, 876),
-    NAME_FUNC_OFFSET(15481, glPrimitiveRestartNV, glPrimitiveRestartNV, NULL,
-                     877),
-    NAME_FUNC_OFFSET(15502, gl_dispatch_stub_878, gl_dispatch_stub_878, NULL,
-                     878),
-    NAME_FUNC_OFFSET(15519, gl_dispatch_stub_879, gl_dispatch_stub_879, NULL,
-                     879),
-    NAME_FUNC_OFFSET(15546, glBindFramebufferEXT, glBindFramebufferEXT, NULL,
-                     880),
-    NAME_FUNC_OFFSET(15567, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL,
-                     881),
-    NAME_FUNC_OFFSET(15589, glCheckFramebufferStatusEXT,
-                     glCheckFramebufferStatusEXT, NULL, 882),
-    NAME_FUNC_OFFSET(15617, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT,
-                     NULL, 883),
-    NAME_FUNC_OFFSET(15641, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT,
-                     NULL, 884),
-    NAME_FUNC_OFFSET(15666, glFramebufferRenderbufferEXT,
-                     glFramebufferRenderbufferEXT, NULL, 885),
-    NAME_FUNC_OFFSET(15695, glFramebufferTexture1DEXT,
-                     glFramebufferTexture1DEXT, NULL, 886),
-    NAME_FUNC_OFFSET(15721, glFramebufferTexture2DEXT,
-                     glFramebufferTexture2DEXT, NULL, 887),
-    NAME_FUNC_OFFSET(15747, glFramebufferTexture3DEXT,
-                     glFramebufferTexture3DEXT, NULL, 888),
-    NAME_FUNC_OFFSET(15773, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL,
-                     889),
-    NAME_FUNC_OFFSET(15794, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL,
-                     890),
-    NAME_FUNC_OFFSET(15816, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL,
-                     891),
-    NAME_FUNC_OFFSET(15836, glGetFramebufferAttachmentParameterivEXT,
-                     glGetFramebufferAttachmentParameterivEXT, NULL, 892),
-    NAME_FUNC_OFFSET(15877, glGetRenderbufferParameterivEXT,
-                     glGetRenderbufferParameterivEXT, NULL, 893),
-    NAME_FUNC_OFFSET(15909, glIsFramebufferEXT, glIsFramebufferEXT, NULL, 894),
-    NAME_FUNC_OFFSET(15928, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL,
-                     895),
-    NAME_FUNC_OFFSET(15948, glRenderbufferStorageEXT, glRenderbufferStorageEXT,
-                     NULL, 896),
-    NAME_FUNC_OFFSET(15973, gl_dispatch_stub_897, gl_dispatch_stub_897, NULL,
-                     897),
-    NAME_FUNC_OFFSET(15994, gl_dispatch_stub_898, gl_dispatch_stub_898, NULL,
-                     898),
-    NAME_FUNC_OFFSET(16018, gl_dispatch_stub_899, gl_dispatch_stub_899, NULL,
-                     899),
-    NAME_FUNC_OFFSET(16048, glBindFragDataLocationEXT,
-                     glBindFragDataLocationEXT, NULL, 900),
-    NAME_FUNC_OFFSET(16074, glGetFragDataLocationEXT, glGetFragDataLocationEXT,
-                     NULL, 901),
-    NAME_FUNC_OFFSET(16099, glGetUniformuivEXT, glGetUniformuivEXT, NULL, 902),
-    NAME_FUNC_OFFSET(16118, glGetVertexAttribIivEXT, glGetVertexAttribIivEXT,
-                     NULL, 903),
-    NAME_FUNC_OFFSET(16142, glGetVertexAttribIuivEXT, glGetVertexAttribIuivEXT,
-                     NULL, 904),
-    NAME_FUNC_OFFSET(16167, glUniform1uiEXT, glUniform1uiEXT, NULL, 905),
-    NAME_FUNC_OFFSET(16183, glUniform1uivEXT, glUniform1uivEXT, NULL, 906),
-    NAME_FUNC_OFFSET(16200, glUniform2uiEXT, glUniform2uiEXT, NULL, 907),
-    NAME_FUNC_OFFSET(16216, glUniform2uivEXT, glUniform2uivEXT, NULL, 908),
-    NAME_FUNC_OFFSET(16233, glUniform3uiEXT, glUniform3uiEXT, NULL, 909),
-    NAME_FUNC_OFFSET(16249, glUniform3uivEXT, glUniform3uivEXT, NULL, 910),
-    NAME_FUNC_OFFSET(16266, glUniform4uiEXT, glUniform4uiEXT, NULL, 911),
-    NAME_FUNC_OFFSET(16282, glUniform4uivEXT, glUniform4uivEXT, NULL, 912),
-    NAME_FUNC_OFFSET(16299, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL,
-                     913),
-    NAME_FUNC_OFFSET(16320, glVertexAttribI1ivEXT, glVertexAttribI1ivEXT, NULL,
-                     914),
-    NAME_FUNC_OFFSET(16342, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL,
-                     915),
-    NAME_FUNC_OFFSET(16364, glVertexAttribI1uivEXT, glVertexAttribI1uivEXT,
-                     NULL, 916),
-    NAME_FUNC_OFFSET(16387, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL,
-                     917),
-    NAME_FUNC_OFFSET(16408, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL,
-                     918),
-    NAME_FUNC_OFFSET(16430, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL,
-                     919),
-    NAME_FUNC_OFFSET(16452, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT,
-                     NULL, 920),
-    NAME_FUNC_OFFSET(16475, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL,
-                     921),
-    NAME_FUNC_OFFSET(16496, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL,
-                     922),
-    NAME_FUNC_OFFSET(16518, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL,
-                     923),
-    NAME_FUNC_OFFSET(16540, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT,
-                     NULL, 924),
-    NAME_FUNC_OFFSET(16563, glVertexAttribI4bvEXT, glVertexAttribI4bvEXT, NULL,
-                     925),
-    NAME_FUNC_OFFSET(16585, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL,
-                     926),
-    NAME_FUNC_OFFSET(16606, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL,
-                     927),
-    NAME_FUNC_OFFSET(16628, glVertexAttribI4svEXT, glVertexAttribI4svEXT, NULL,
-                     928),
-    NAME_FUNC_OFFSET(16650, glVertexAttribI4ubvEXT, glVertexAttribI4ubvEXT,
-                     NULL, 929),
-    NAME_FUNC_OFFSET(16673, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL,
-                     930),
-    NAME_FUNC_OFFSET(16695, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT,
-                     NULL, 931),
-    NAME_FUNC_OFFSET(16718, glVertexAttribI4usvEXT, glVertexAttribI4usvEXT,
-                     NULL, 932),
-    NAME_FUNC_OFFSET(16741, glVertexAttribIPointerEXT,
-                     glVertexAttribIPointerEXT, NULL, 933),
-    NAME_FUNC_OFFSET(16767, glFramebufferTextureLayerEXT,
-                     glFramebufferTextureLayerEXT, NULL, 934),
-    NAME_FUNC_OFFSET(16796, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL,
-                     935),
-    NAME_FUNC_OFFSET(16818, glDisableIndexedEXT, glDisableIndexedEXT, NULL,
-                     936),
-    NAME_FUNC_OFFSET(16838, glEnableIndexedEXT, glEnableIndexedEXT, NULL, 937),
-    NAME_FUNC_OFFSET(16857, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT,
-                     NULL, 938),
-    NAME_FUNC_OFFSET(16881, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT,
-                     NULL, 939),
-    NAME_FUNC_OFFSET(16905, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL,
-                     940),
-    NAME_FUNC_OFFSET(16927, glClearColorIiEXT, glClearColorIiEXT, NULL, 941),
-    NAME_FUNC_OFFSET(16945, glClearColorIuiEXT, glClearColorIuiEXT, NULL, 942),
-    NAME_FUNC_OFFSET(16964, glGetTexParameterIivEXT, glGetTexParameterIivEXT,
-                     NULL, 943),
-    NAME_FUNC_OFFSET(16988, glGetTexParameterIuivEXT, glGetTexParameterIuivEXT,
-                     NULL, 944),
-    NAME_FUNC_OFFSET(17013, glTexParameterIivEXT, glTexParameterIivEXT, NULL,
-                     945),
-    NAME_FUNC_OFFSET(17034, glTexParameterIuivEXT, glTexParameterIuivEXT, NULL,
-                     946),
-    NAME_FUNC_OFFSET(17056, glBeginConditionalRenderNV,
-                     glBeginConditionalRenderNV, NULL, 947),
-    NAME_FUNC_OFFSET(17083, glEndConditionalRenderNV, glEndConditionalRenderNV,
-                     NULL, 948),
-    NAME_FUNC_OFFSET(17108, glBeginTransformFeedbackEXT,
-                     glBeginTransformFeedbackEXT, NULL, 949),
-    NAME_FUNC_OFFSET(17136, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL,
-                     950),
-    NAME_FUNC_OFFSET(17156, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL,
-                     951),
-    NAME_FUNC_OFFSET(17178, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL,
-                     952),
-    NAME_FUNC_OFFSET(17199, glEndTransformFeedbackEXT,
-                     glEndTransformFeedbackEXT, NULL, 953),
-    NAME_FUNC_OFFSET(17225, glGetTransformFeedbackVaryingEXT,
-                     glGetTransformFeedbackVaryingEXT, NULL, 954),
-    NAME_FUNC_OFFSET(17258, glTransformFeedbackVaryingsEXT,
-                     glTransformFeedbackVaryingsEXT, NULL, 955),
-    NAME_FUNC_OFFSET(17289, glProvokingVertexEXT, glProvokingVertexEXT, NULL,
-                     956),
-    NAME_FUNC_OFFSET(17310, gl_dispatch_stub_957, gl_dispatch_stub_957, NULL,
-                     957),
-    NAME_FUNC_OFFSET(17341, gl_dispatch_stub_958, gl_dispatch_stub_958, NULL,
-                     958),
-    NAME_FUNC_OFFSET(17361, glGetObjectParameterivAPPLE,
-                     glGetObjectParameterivAPPLE, NULL, 959),
-    NAME_FUNC_OFFSET(17389, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE,
-                     NULL, 960),
-    NAME_FUNC_OFFSET(17412, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE,
-                     NULL, 961),
-    NAME_FUNC_OFFSET(17437, glActiveProgramEXT, glActiveProgramEXT, NULL, 962),
-    NAME_FUNC_OFFSET(17456, glCreateShaderProgramEXT, glCreateShaderProgramEXT,
-                     NULL, 963),
-    NAME_FUNC_OFFSET(17481, glUseShaderProgramEXT, glUseShaderProgramEXT, NULL,
-                     964),
-    NAME_FUNC_OFFSET(17503, glTextureBarrierNV, glTextureBarrierNV, NULL, 965),
-    NAME_FUNC_OFFSET(17522, gl_dispatch_stub_966, gl_dispatch_stub_966, NULL,
-                     966),
-    NAME_FUNC_OFFSET(17547, gl_dispatch_stub_967, gl_dispatch_stub_967, NULL,
-                     967),
-    NAME_FUNC_OFFSET(17576, gl_dispatch_stub_968, gl_dispatch_stub_968, NULL,
-                     968),
-    NAME_FUNC_OFFSET(17607, gl_dispatch_stub_969, gl_dispatch_stub_969, NULL,
-                     969),
-    NAME_FUNC_OFFSET(17631, gl_dispatch_stub_970, gl_dispatch_stub_970, NULL,
-                     970),
-    NAME_FUNC_OFFSET(17656, glEGLImageTargetRenderbufferStorageOES,
-                     glEGLImageTargetRenderbufferStorageOES, NULL, 971),
-    NAME_FUNC_OFFSET(17695, glEGLImageTargetTexture2DOES,
-                     glEGLImageTargetTexture2DOES, NULL, 972),
-    NAME_FUNC_OFFSET(17724, glArrayElement, glArrayElement, NULL, 306),
-    NAME_FUNC_OFFSET(17742, glBindTexture, glBindTexture, NULL, 307),
-    NAME_FUNC_OFFSET(17759, glDrawArrays, glDrawArrays, NULL, 310),
-    NAME_FUNC_OFFSET(17775, glAreTexturesResident, glAreTexturesResidentEXT,
-                     glAreTexturesResidentEXT, 322),
-    NAME_FUNC_OFFSET(17800, glCopyTexImage1D, glCopyTexImage1D, NULL, 323),
-    NAME_FUNC_OFFSET(17820, glCopyTexImage2D, glCopyTexImage2D, NULL, 324),
-    NAME_FUNC_OFFSET(17840, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL,
-                     325),
-    NAME_FUNC_OFFSET(17863, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL,
-                     326),
-    NAME_FUNC_OFFSET(17886, glDeleteTextures, glDeleteTexturesEXT,
-                     glDeleteTexturesEXT, 327),
-    NAME_FUNC_OFFSET(17906, glGenTextures, glGenTexturesEXT, glGenTexturesEXT,
-                     328),
-    NAME_FUNC_OFFSET(17923, glGetPointerv, glGetPointerv, NULL, 329),
-    NAME_FUNC_OFFSET(17940, glIsTexture, glIsTextureEXT, glIsTextureEXT, 330),
-    NAME_FUNC_OFFSET(17955, glPrioritizeTextures, glPrioritizeTextures, NULL,
-                     331),
-    NAME_FUNC_OFFSET(17979, glTexSubImage1D, glTexSubImage1D, NULL, 332),
-    NAME_FUNC_OFFSET(17998, glTexSubImage2D, glTexSubImage2D, NULL, 333),
-    NAME_FUNC_OFFSET(18017, glBlendColor, glBlendColor, NULL, 336),
-    NAME_FUNC_OFFSET(18033, glBlendEquation, glBlendEquation, NULL, 337),
-    NAME_FUNC_OFFSET(18052, glDrawRangeElements, glDrawRangeElements, NULL,
-                     338),
-    NAME_FUNC_OFFSET(18075, glColorTable, glColorTable, NULL, 339),
-    NAME_FUNC_OFFSET(18091, glColorTable, glColorTable, NULL, 339),
-    NAME_FUNC_OFFSET(18107, glColorTableParameterfv, glColorTableParameterfv,
-                     NULL, 340),
-    NAME_FUNC_OFFSET(18134, glColorTableParameteriv, glColorTableParameteriv,
-                     NULL, 341),
-    NAME_FUNC_OFFSET(18161, glCopyColorTable, glCopyColorTable, NULL, 342),
-    NAME_FUNC_OFFSET(18181, glGetColorTable, glGetColorTableEXT,
-                     glGetColorTableEXT, 343),
-    NAME_FUNC_OFFSET(18200, glGetColorTable, glGetColorTableEXT,
-                     glGetColorTableEXT, 343),
-    NAME_FUNC_OFFSET(18219, glGetColorTableParameterfv,
-                     glGetColorTableParameterfvEXT,
-                     glGetColorTableParameterfvEXT, 344),
-    NAME_FUNC_OFFSET(18249, glGetColorTableParameterfv,
-                     glGetColorTableParameterfvEXT,
-                     glGetColorTableParameterfvEXT, 344),
-    NAME_FUNC_OFFSET(18279, glGetColorTableParameteriv,
-                     glGetColorTableParameterivEXT,
-                     glGetColorTableParameterivEXT, 345),
-    NAME_FUNC_OFFSET(18309, glGetColorTableParameteriv,
-                     glGetColorTableParameterivEXT,
-                     glGetColorTableParameterivEXT, 345),
-    NAME_FUNC_OFFSET(18339, glColorSubTable, glColorSubTable, NULL, 346),
-    NAME_FUNC_OFFSET(18358, glCopyColorSubTable, glCopyColorSubTable, NULL,
-                     347),
-    NAME_FUNC_OFFSET(18381, glConvolutionFilter1D, glConvolutionFilter1D, NULL,
-                     348),
-    NAME_FUNC_OFFSET(18406, glConvolutionFilter2D, glConvolutionFilter2D, NULL,
-                     349),
-    NAME_FUNC_OFFSET(18431, glConvolutionParameterf, glConvolutionParameterf,
-                     NULL, 350),
-    NAME_FUNC_OFFSET(18458, glConvolutionParameterfv, glConvolutionParameterfv,
-                     NULL, 351),
-    NAME_FUNC_OFFSET(18486, glConvolutionParameteri, glConvolutionParameteri,
-                     NULL, 352),
-    NAME_FUNC_OFFSET(18513, glConvolutionParameteriv, glConvolutionParameteriv,
-                     NULL, 353),
-    NAME_FUNC_OFFSET(18541, glCopyConvolutionFilter1D,
-                     glCopyConvolutionFilter1D, NULL, 354),
-    NAME_FUNC_OFFSET(18570, glCopyConvolutionFilter2D,
-                     glCopyConvolutionFilter2D, NULL, 355),
-    NAME_FUNC_OFFSET(18599, glGetConvolutionFilter, gl_dispatch_stub_356,
-                     gl_dispatch_stub_356, 356),
-    NAME_FUNC_OFFSET(18625, glGetConvolutionParameterfv, gl_dispatch_stub_357,
-                     gl_dispatch_stub_357, 357),
-    NAME_FUNC_OFFSET(18656, glGetConvolutionParameteriv, gl_dispatch_stub_358,
-                     gl_dispatch_stub_358, 358),
-    NAME_FUNC_OFFSET(18687, glGetSeparableFilter, gl_dispatch_stub_359,
-                     gl_dispatch_stub_359, 359),
-    NAME_FUNC_OFFSET(18711, glSeparableFilter2D, glSeparableFilter2D, NULL,
-                     360),
-    NAME_FUNC_OFFSET(18734, glGetHistogram, gl_dispatch_stub_361,
-                     gl_dispatch_stub_361, 361),
-    NAME_FUNC_OFFSET(18752, glGetHistogramParameterfv, gl_dispatch_stub_362,
-                     gl_dispatch_stub_362, 362),
-    NAME_FUNC_OFFSET(18781, glGetHistogramParameteriv, gl_dispatch_stub_363,
-                     gl_dispatch_stub_363, 363),
-    NAME_FUNC_OFFSET(18810, glGetMinmax, gl_dispatch_stub_364,
-                     gl_dispatch_stub_364, 364),
-    NAME_FUNC_OFFSET(18825, glGetMinmaxParameterfv, gl_dispatch_stub_365,
-                     gl_dispatch_stub_365, 365),
-    NAME_FUNC_OFFSET(18851, glGetMinmaxParameteriv, gl_dispatch_stub_366,
-                     gl_dispatch_stub_366, 366),
-    NAME_FUNC_OFFSET(18877, glHistogram, glHistogram, NULL, 367),
-    NAME_FUNC_OFFSET(18892, glMinmax, glMinmax, NULL, 368),
-    NAME_FUNC_OFFSET(18904, glResetHistogram, glResetHistogram, NULL, 369),
-    NAME_FUNC_OFFSET(18924, glResetMinmax, glResetMinmax, NULL, 370),
-    NAME_FUNC_OFFSET(18941, glTexImage3D, glTexImage3D, NULL, 371),
-    NAME_FUNC_OFFSET(18957, glTexSubImage3D, glTexSubImage3D, NULL, 372),
-    NAME_FUNC_OFFSET(18976, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL,
-                     373),
-    NAME_FUNC_OFFSET(18999, glActiveTextureARB, glActiveTextureARB, NULL, 374),
-    NAME_FUNC_OFFSET(19015, glClientActiveTextureARB, glClientActiveTextureARB,
-                     NULL, 375),
-    NAME_FUNC_OFFSET(19037, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL,
-                     376),
-    NAME_FUNC_OFFSET(19055, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL,
-                     377),
-    NAME_FUNC_OFFSET(19074, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL,
-                     378),
-    NAME_FUNC_OFFSET(19092, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL,
-                     379),
-    NAME_FUNC_OFFSET(19111, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL,
-                     380),
-    NAME_FUNC_OFFSET(19129, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL,
-                     381),
-    NAME_FUNC_OFFSET(19148, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL,
-                     382),
-    NAME_FUNC_OFFSET(19166, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL,
-                     383),
-    NAME_FUNC_OFFSET(19185, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL,
-                     384),
-    NAME_FUNC_OFFSET(19203, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL,
-                     385),
-    NAME_FUNC_OFFSET(19222, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL,
-                     386),
-    NAME_FUNC_OFFSET(19240, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL,
-                     387),
-    NAME_FUNC_OFFSET(19259, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL,
-                     388),
-    NAME_FUNC_OFFSET(19277, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL,
-                     389),
-    NAME_FUNC_OFFSET(19296, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL,
-                     390),
-    NAME_FUNC_OFFSET(19314, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL,
-                     391),
-    NAME_FUNC_OFFSET(19333, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL,
-                     392),
-    NAME_FUNC_OFFSET(19351, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL,
-                     393),
-    NAME_FUNC_OFFSET(19370, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL,
-                     394),
-    NAME_FUNC_OFFSET(19388, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL,
-                     395),
-    NAME_FUNC_OFFSET(19407, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL,
-                     396),
-    NAME_FUNC_OFFSET(19425, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL,
-                     397),
-    NAME_FUNC_OFFSET(19444, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL,
-                     398),
-    NAME_FUNC_OFFSET(19462, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL,
-                     399),
-    NAME_FUNC_OFFSET(19481, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL,
-                     400),
-    NAME_FUNC_OFFSET(19499, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL,
-                     401),
-    NAME_FUNC_OFFSET(19518, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL,
-                     402),
-    NAME_FUNC_OFFSET(19536, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL,
-                     403),
-    NAME_FUNC_OFFSET(19555, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL,
-                     404),
-    NAME_FUNC_OFFSET(19573, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL,
-                     405),
-    NAME_FUNC_OFFSET(19592, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL,
-                     406),
-    NAME_FUNC_OFFSET(19610, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL,
-                     407),
-    NAME_FUNC_OFFSET(19629, glStencilOpSeparate, glStencilOpSeparate, NULL,
-                     423),
-    NAME_FUNC_OFFSET(19652, glLoadTransposeMatrixdARB,
-                     glLoadTransposeMatrixdARB, NULL, 441),
-    NAME_FUNC_OFFSET(19675, glLoadTransposeMatrixfARB,
-                     glLoadTransposeMatrixfARB, NULL, 442),
-    NAME_FUNC_OFFSET(19698, glMultTransposeMatrixdARB,
-                     glMultTransposeMatrixdARB, NULL, 443),
-    NAME_FUNC_OFFSET(19721, glMultTransposeMatrixfARB,
-                     glMultTransposeMatrixfARB, NULL, 444),
-    NAME_FUNC_OFFSET(19744, glSampleCoverageARB, glSampleCoverageARB, NULL,
-                     445),
-    NAME_FUNC_OFFSET(19761, glCompressedTexImage1DARB,
-                     glCompressedTexImage1DARB, NULL, 446),
-    NAME_FUNC_OFFSET(19784, glCompressedTexImage2DARB,
-                     glCompressedTexImage2DARB, NULL, 447),
-    NAME_FUNC_OFFSET(19807, glCompressedTexImage3DARB,
-                     glCompressedTexImage3DARB, NULL, 448),
-    NAME_FUNC_OFFSET(19830, glCompressedTexSubImage1DARB,
-                     glCompressedTexSubImage1DARB, NULL, 449),
-    NAME_FUNC_OFFSET(19856, glCompressedTexSubImage2DARB,
-                     glCompressedTexSubImage2DARB, NULL, 450),
-    NAME_FUNC_OFFSET(19882, glCompressedTexSubImage3DARB,
-                     glCompressedTexSubImage3DARB, NULL, 451),
-    NAME_FUNC_OFFSET(19908, glGetCompressedTexImageARB,
-                     glGetCompressedTexImageARB, NULL, 452),
-    NAME_FUNC_OFFSET(19932, glDisableVertexAttribArrayARB,
-                     glDisableVertexAttribArrayARB, NULL, 453),
-    NAME_FUNC_OFFSET(19959, glEnableVertexAttribArrayARB,
-                     glEnableVertexAttribArrayARB, NULL, 454),
-    NAME_FUNC_OFFSET(19985, glGetVertexAttribdvARB, glGetVertexAttribdvARB,
-                     NULL, 461),
-    NAME_FUNC_OFFSET(20005, glGetVertexAttribfvARB, glGetVertexAttribfvARB,
-                     NULL, 462),
-    NAME_FUNC_OFFSET(20025, glGetVertexAttribivARB, glGetVertexAttribivARB,
-                     NULL, 463),
-    NAME_FUNC_OFFSET(20045, glProgramEnvParameter4dARB,
-                     glProgramEnvParameter4dARB, NULL, 464),
-    NAME_FUNC_OFFSET(20068, glProgramEnvParameter4dvARB,
-                     glProgramEnvParameter4dvARB, NULL, 465),
-    NAME_FUNC_OFFSET(20092, glProgramEnvParameter4fARB,
-                     glProgramEnvParameter4fARB, NULL, 466),
-    NAME_FUNC_OFFSET(20115, glProgramEnvParameter4fvARB,
-                     glProgramEnvParameter4fvARB, NULL, 467),
-    NAME_FUNC_OFFSET(20139, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL,
-                     473),
-    NAME_FUNC_OFFSET(20156, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL,
-                     474),
-    NAME_FUNC_OFFSET(20174, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL,
-                     475),
-    NAME_FUNC_OFFSET(20191, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL,
-                     476),
-    NAME_FUNC_OFFSET(20209, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL,
-                     477),
-    NAME_FUNC_OFFSET(20226, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL,
-                     478),
-    NAME_FUNC_OFFSET(20244, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL,
-                     479),
-    NAME_FUNC_OFFSET(20261, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL,
-                     480),
-    NAME_FUNC_OFFSET(20279, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL,
-                     481),
-    NAME_FUNC_OFFSET(20296, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL,
-                     482),
-    NAME_FUNC_OFFSET(20314, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL,
-                     483),
-    NAME_FUNC_OFFSET(20331, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL,
-                     484),
-    NAME_FUNC_OFFSET(20349, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL,
-                     485),
-    NAME_FUNC_OFFSET(20366, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL,
-                     486),
-    NAME_FUNC_OFFSET(20384, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL,
-                     487),
-    NAME_FUNC_OFFSET(20401, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL,
-                     488),
-    NAME_FUNC_OFFSET(20419, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL,
-                     489),
-    NAME_FUNC_OFFSET(20436, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL,
-                     490),
-    NAME_FUNC_OFFSET(20454, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL,
-                     491),
-    NAME_FUNC_OFFSET(20473, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL,
-                     492),
-    NAME_FUNC_OFFSET(20492, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL,
-                     493),
-    NAME_FUNC_OFFSET(20511, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL,
-                     494),
-    NAME_FUNC_OFFSET(20530, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB,
-                     NULL, 495),
-    NAME_FUNC_OFFSET(20550, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB,
-                     NULL, 496),
-    NAME_FUNC_OFFSET(20570, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB,
-                     NULL, 497),
-    NAME_FUNC_OFFSET(20590, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL,
-                     498),
-    NAME_FUNC_OFFSET(20608, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL,
-                     499),
-    NAME_FUNC_OFFSET(20625, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL,
-                     500),
-    NAME_FUNC_OFFSET(20643, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL,
-                     501),
-    NAME_FUNC_OFFSET(20660, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL,
-                     502),
-    NAME_FUNC_OFFSET(20678, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL,
-                     503),
-    NAME_FUNC_OFFSET(20696, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL,
-                     504),
-    NAME_FUNC_OFFSET(20713, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL,
-                     505),
-    NAME_FUNC_OFFSET(20731, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL,
-                     506),
-    NAME_FUNC_OFFSET(20750, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL,
-                     507),
-    NAME_FUNC_OFFSET(20769, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL,
-                     508),
-    NAME_FUNC_OFFSET(20788, glVertexAttribPointerARB, glVertexAttribPointerARB,
-                     NULL, 509),
-    NAME_FUNC_OFFSET(20810, glBindBufferARB, glBindBufferARB, NULL, 510),
-    NAME_FUNC_OFFSET(20823, glBufferDataARB, glBufferDataARB, NULL, 511),
-    NAME_FUNC_OFFSET(20836, glBufferSubDataARB, glBufferSubDataARB, NULL, 512),
-    NAME_FUNC_OFFSET(20852, glDeleteBuffersARB, glDeleteBuffersARB, NULL, 513),
-    NAME_FUNC_OFFSET(20868, glGenBuffersARB, glGenBuffersARB, NULL, 514),
-    NAME_FUNC_OFFSET(20881, glGetBufferParameterivARB,
-                     glGetBufferParameterivARB, NULL, 515),
-    NAME_FUNC_OFFSET(20904, glGetBufferPointervARB, glGetBufferPointervARB,
-                     NULL, 516),
-    NAME_FUNC_OFFSET(20924, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL,
-                     517),
-    NAME_FUNC_OFFSET(20943, glIsBufferARB, glIsBufferARB, NULL, 518),
-    NAME_FUNC_OFFSET(20954, glMapBufferARB, glMapBufferARB, NULL, 519),
-    NAME_FUNC_OFFSET(20966, glUnmapBufferARB, glUnmapBufferARB, NULL, 520),
-    NAME_FUNC_OFFSET(20980, glBeginQueryARB, glBeginQueryARB, NULL, 521),
-    NAME_FUNC_OFFSET(20993, glDeleteQueriesARB, glDeleteQueriesARB, NULL, 522),
-    NAME_FUNC_OFFSET(21009, glEndQueryARB, glEndQueryARB, NULL, 523),
-    NAME_FUNC_OFFSET(21020, glGenQueriesARB, glGenQueriesARB, NULL, 524),
-    NAME_FUNC_OFFSET(21033, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL,
-                     525),
-    NAME_FUNC_OFFSET(21052, glGetQueryObjectuivARB, glGetQueryObjectuivARB,
-                     NULL, 526),
-    NAME_FUNC_OFFSET(21072, glGetQueryivARB, glGetQueryivARB, NULL, 527),
-    NAME_FUNC_OFFSET(21085, glIsQueryARB, glIsQueryARB, NULL, 528),
-    NAME_FUNC_OFFSET(21095, glCompileShaderARB, glCompileShaderARB, NULL, 530),
-    NAME_FUNC_OFFSET(21111, glGetActiveUniformARB, glGetActiveUniformARB, NULL,
-                     535),
-    NAME_FUNC_OFFSET(21130, glGetShaderSourceARB, glGetShaderSourceARB, NULL,
-                     541),
-    NAME_FUNC_OFFSET(21148, glGetUniformLocationARB, glGetUniformLocationARB,
-                     NULL, 542),
-    NAME_FUNC_OFFSET(21169, glGetUniformfvARB, glGetUniformfvARB, NULL, 543),
-    NAME_FUNC_OFFSET(21184, glGetUniformivARB, glGetUniformivARB, NULL, 544),
-    NAME_FUNC_OFFSET(21199, glLinkProgramARB, glLinkProgramARB, NULL, 545),
-    NAME_FUNC_OFFSET(21213, glShaderSourceARB, glShaderSourceARB, NULL, 546),
-    NAME_FUNC_OFFSET(21228, glUniform1fARB, glUniform1fARB, NULL, 547),
-    NAME_FUNC_OFFSET(21240, glUniform1fvARB, glUniform1fvARB, NULL, 548),
-    NAME_FUNC_OFFSET(21253, glUniform1iARB, glUniform1iARB, NULL, 549),
-    NAME_FUNC_OFFSET(21265, glUniform1ivARB, glUniform1ivARB, NULL, 550),
-    NAME_FUNC_OFFSET(21278, glUniform2fARB, glUniform2fARB, NULL, 551),
-    NAME_FUNC_OFFSET(21290, glUniform2fvARB, glUniform2fvARB, NULL, 552),
-    NAME_FUNC_OFFSET(21303, glUniform2iARB, glUniform2iARB, NULL, 553),
-    NAME_FUNC_OFFSET(21315, glUniform2ivARB, glUniform2ivARB, NULL, 554),
-    NAME_FUNC_OFFSET(21328, glUniform3fARB, glUniform3fARB, NULL, 555),
-    NAME_FUNC_OFFSET(21340, glUniform3fvARB, glUniform3fvARB, NULL, 556),
-    NAME_FUNC_OFFSET(21353, glUniform3iARB, glUniform3iARB, NULL, 557),
-    NAME_FUNC_OFFSET(21365, glUniform3ivARB, glUniform3ivARB, NULL, 558),
-    NAME_FUNC_OFFSET(21378, glUniform4fARB, glUniform4fARB, NULL, 559),
-    NAME_FUNC_OFFSET(21390, glUniform4fvARB, glUniform4fvARB, NULL, 560),
-    NAME_FUNC_OFFSET(21403, glUniform4iARB, glUniform4iARB, NULL, 561),
-    NAME_FUNC_OFFSET(21415, glUniform4ivARB, glUniform4ivARB, NULL, 562),
-    NAME_FUNC_OFFSET(21428, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL,
-                     563),
-    NAME_FUNC_OFFSET(21447, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL,
-                     564),
-    NAME_FUNC_OFFSET(21466, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL,
-                     565),
-    NAME_FUNC_OFFSET(21485, glUseProgramObjectARB, glUseProgramObjectARB, NULL,
-                     566),
-    NAME_FUNC_OFFSET(21498, glValidateProgramARB, glValidateProgramARB, NULL,
-                     567),
-    NAME_FUNC_OFFSET(21516, glBindAttribLocationARB, glBindAttribLocationARB,
-                     NULL, 568),
-    NAME_FUNC_OFFSET(21537, glGetActiveAttribARB, glGetActiveAttribARB, NULL,
-                     569),
-    NAME_FUNC_OFFSET(21555, glGetAttribLocationARB, glGetAttribLocationARB,
-                     NULL, 570),
-    NAME_FUNC_OFFSET(21575, glDrawBuffersARB, glDrawBuffersARB, NULL, 571),
-    NAME_FUNC_OFFSET(21589, glDrawBuffersARB, glDrawBuffersARB, NULL, 571),
-    NAME_FUNC_OFFSET(21606, glDrawBuffersARB, glDrawBuffersARB, NULL, 571),
-    NAME_FUNC_OFFSET(21622, glDrawArraysInstancedARB, glDrawArraysInstancedARB,
-                     NULL, 573),
-    NAME_FUNC_OFFSET(21647, glDrawArraysInstancedARB, glDrawArraysInstancedARB,
-                     NULL, 573),
-    NAME_FUNC_OFFSET(21669, glDrawElementsInstancedARB,
-                     glDrawElementsInstancedARB, NULL, 574),
-    NAME_FUNC_OFFSET(21696, glDrawElementsInstancedARB,
-                     glDrawElementsInstancedARB, NULL, 574),
-    NAME_FUNC_OFFSET(21720, glRenderbufferStorageMultisample,
-                     glRenderbufferStorageMultisample, NULL, 575),
-    NAME_FUNC_OFFSET(21756, glBlendEquationSeparateiARB,
-                     glBlendEquationSeparateiARB, NULL, 597),
-    NAME_FUNC_OFFSET(21790, glBlendEquationiARB, glBlendEquationiARB, NULL,
-                     598),
-    NAME_FUNC_OFFSET(21816, glBlendFuncSeparateiARB, glBlendFuncSeparateiARB,
-                     NULL, 599),
-    NAME_FUNC_OFFSET(21846, glBlendFunciARB, glBlendFunciARB, NULL, 600),
-    NAME_FUNC_OFFSET(21868, gl_dispatch_stub_698, gl_dispatch_stub_698, NULL,
-                     698),
-    NAME_FUNC_OFFSET(21884, gl_dispatch_stub_699, gl_dispatch_stub_699, NULL,
-                     699),
-    NAME_FUNC_OFFSET(21903, glPointParameterfEXT, glPointParameterfEXT, NULL,
-                     706),
-    NAME_FUNC_OFFSET(21921, glPointParameterfEXT, glPointParameterfEXT, NULL,
-                     706),
-    NAME_FUNC_OFFSET(21942, glPointParameterfEXT, glPointParameterfEXT, NULL,
-                     706),
-    NAME_FUNC_OFFSET(21964, glPointParameterfvEXT, glPointParameterfvEXT, NULL,
-                     707),
-    NAME_FUNC_OFFSET(21983, glPointParameterfvEXT, glPointParameterfvEXT, NULL,
-                     707),
-    NAME_FUNC_OFFSET(22005, glPointParameterfvEXT, glPointParameterfvEXT, NULL,
-                     707),
-    NAME_FUNC_OFFSET(22028, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL,
-                     710),
-    NAME_FUNC_OFFSET(22047, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT,
-                     NULL, 711),
-    NAME_FUNC_OFFSET(22067, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL,
-                     712),
-    NAME_FUNC_OFFSET(22086, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT,
-                     NULL, 713),
-    NAME_FUNC_OFFSET(22106, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL,
-                     714),
-    NAME_FUNC_OFFSET(22125, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT,
-                     NULL, 715),
-    NAME_FUNC_OFFSET(22145, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL,
-                     716),
-    NAME_FUNC_OFFSET(22164, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT,
-                     NULL, 717),
-    NAME_FUNC_OFFSET(22184, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL,
-                     718),
-    NAME_FUNC_OFFSET(22203, glSecondaryColor3svEXT, glSecondaryColor3svEXT,
-                     NULL, 719),
-    NAME_FUNC_OFFSET(22223, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT,
-                     NULL, 720),
-    NAME_FUNC_OFFSET(22243, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT,
-                     NULL, 721),
-    NAME_FUNC_OFFSET(22264, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT,
-                     NULL, 722),
-    NAME_FUNC_OFFSET(22284, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT,
-                     NULL, 723),
-    NAME_FUNC_OFFSET(22305, glSecondaryColor3usEXT, glSecondaryColor3usEXT,
-                     NULL, 724),
-    NAME_FUNC_OFFSET(22325, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT,
-                     NULL, 725),
-    NAME_FUNC_OFFSET(22346, glSecondaryColorPointerEXT,
-                     glSecondaryColorPointerEXT, NULL, 726),
-    NAME_FUNC_OFFSET(22370, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL,
-                     727),
-    NAME_FUNC_OFFSET(22388, glMultiDrawElementsEXT, glMultiDrawElementsEXT,
-                     NULL, 728),
-    NAME_FUNC_OFFSET(22408, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL,
-                     729),
-    NAME_FUNC_OFFSET(22426, glFogCoorddEXT, glFogCoorddEXT, NULL, 730),
-    NAME_FUNC_OFFSET(22438, glFogCoorddvEXT, glFogCoorddvEXT, NULL, 731),
-    NAME_FUNC_OFFSET(22451, glFogCoordfEXT, glFogCoordfEXT, NULL, 732),
-    NAME_FUNC_OFFSET(22463, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 733),
-    NAME_FUNC_OFFSET(22476, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT,
-                     NULL, 735),
-    NAME_FUNC_OFFSET(22496, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT,
-                     NULL, 735),
-    NAME_FUNC_OFFSET(22520, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 752),
-    NAME_FUNC_OFFSET(22534, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 752),
-    NAME_FUNC_OFFSET(22551, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 753),
-    NAME_FUNC_OFFSET(22566, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 753),
-    NAME_FUNC_OFFSET(22584, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 754),
-    NAME_FUNC_OFFSET(22598, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 754),
-    NAME_FUNC_OFFSET(22615, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 755),
-    NAME_FUNC_OFFSET(22630, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 755),
-    NAME_FUNC_OFFSET(22648, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 756),
-    NAME_FUNC_OFFSET(22662, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 756),
-    NAME_FUNC_OFFSET(22679, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 757),
-    NAME_FUNC_OFFSET(22694, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 757),
-    NAME_FUNC_OFFSET(22712, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 758),
-    NAME_FUNC_OFFSET(22726, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 758),
-    NAME_FUNC_OFFSET(22743, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 759),
-    NAME_FUNC_OFFSET(22758, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 759),
-    NAME_FUNC_OFFSET(22776, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 760),
-    NAME_FUNC_OFFSET(22790, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 760),
-    NAME_FUNC_OFFSET(22807, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 761),
-    NAME_FUNC_OFFSET(22822, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 761),
-    NAME_FUNC_OFFSET(22840, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 762),
-    NAME_FUNC_OFFSET(22854, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 762),
-    NAME_FUNC_OFFSET(22871, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 763),
-    NAME_FUNC_OFFSET(22886, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 763),
-    NAME_FUNC_OFFSET(22904, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 764),
-    NAME_FUNC_OFFSET(22918, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 764),
-    NAME_FUNC_OFFSET(22935, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 765),
-    NAME_FUNC_OFFSET(22950, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 765),
-    NAME_FUNC_OFFSET(22968, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 766),
-    NAME_FUNC_OFFSET(22982, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 766),
-    NAME_FUNC_OFFSET(22999, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 767),
-    NAME_FUNC_OFFSET(23014, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 767),
-    NAME_FUNC_OFFSET(23032, glBindProgramNV, glBindProgramNV, NULL, 786),
-    NAME_FUNC_OFFSET(23049, glDeleteProgramsNV, glDeleteProgramsNV, NULL, 787),
-    NAME_FUNC_OFFSET(23069, glGenProgramsNV, glGenProgramsNV, NULL, 789),
-    NAME_FUNC_OFFSET(23086, glGetVertexAttribPointervNV,
-                     glGetVertexAttribPointervNV, NULL, 795),
-    NAME_FUNC_OFFSET(23112, glGetVertexAttribPointervNV,
-                     glGetVertexAttribPointervNV, NULL, 795),
-    NAME_FUNC_OFFSET(23141, glIsProgramNV, glIsProgramNV, NULL, 799),
-    NAME_FUNC_OFFSET(23156, glPointParameteriNV, glPointParameteriNV, NULL,
-                     863),
-    NAME_FUNC_OFFSET(23174, glPointParameterivNV, glPointParameterivNV, NULL,
-                     864),
-    NAME_FUNC_OFFSET(23193, gl_dispatch_stub_867, gl_dispatch_stub_867, NULL,
-                     867),
-    NAME_FUNC_OFFSET(23214, gl_dispatch_stub_869, gl_dispatch_stub_869, NULL,
-                     869),
-    NAME_FUNC_OFFSET(23230, glPrimitiveRestartIndexNV,
-                     glPrimitiveRestartIndexNV, NULL, 876),
-    NAME_FUNC_OFFSET(23254, gl_dispatch_stub_879, gl_dispatch_stub_879, NULL,
-                     879),
-    NAME_FUNC_OFFSET(23278, gl_dispatch_stub_879, gl_dispatch_stub_879, NULL,
-                     879),
-    NAME_FUNC_OFFSET(23305, glBindFramebufferEXT, glBindFramebufferEXT, NULL,
-                     880),
-    NAME_FUNC_OFFSET(23323, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL,
-                     881),
-    NAME_FUNC_OFFSET(23342, glCheckFramebufferStatusEXT,
-                     glCheckFramebufferStatusEXT, NULL, 882),
-    NAME_FUNC_OFFSET(23367, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT,
-                     NULL, 883),
-    NAME_FUNC_OFFSET(23388, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT,
-                     NULL, 884),
-    NAME_FUNC_OFFSET(23410, glFramebufferRenderbufferEXT,
-                     glFramebufferRenderbufferEXT, NULL, 885),
-    NAME_FUNC_OFFSET(23436, glFramebufferTexture1DEXT,
-                     glFramebufferTexture1DEXT, NULL, 886),
-    NAME_FUNC_OFFSET(23459, glFramebufferTexture2DEXT,
-                     glFramebufferTexture2DEXT, NULL, 887),
-    NAME_FUNC_OFFSET(23482, glFramebufferTexture3DEXT,
-                     glFramebufferTexture3DEXT, NULL, 888),
-    NAME_FUNC_OFFSET(23505, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL,
-                     889),
-    NAME_FUNC_OFFSET(23523, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL,
-                     890),
-    NAME_FUNC_OFFSET(23542, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL,
-                     891),
-    NAME_FUNC_OFFSET(23559, glGetFramebufferAttachmentParameterivEXT,
-                     glGetFramebufferAttachmentParameterivEXT, NULL, 892),
-    NAME_FUNC_OFFSET(23597, glGetRenderbufferParameterivEXT,
-                     glGetRenderbufferParameterivEXT, NULL, 893),
-    NAME_FUNC_OFFSET(23626, glIsFramebufferEXT, glIsFramebufferEXT, NULL, 894),
-    NAME_FUNC_OFFSET(23642, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL,
-                     895),
-    NAME_FUNC_OFFSET(23659, glRenderbufferStorageEXT, glRenderbufferStorageEXT,
-                     NULL, 896),
-    NAME_FUNC_OFFSET(23681, gl_dispatch_stub_897, gl_dispatch_stub_897, NULL,
-                     897),
-    NAME_FUNC_OFFSET(23699, glBindFragDataLocationEXT,
-                     glBindFragDataLocationEXT, NULL, 900),
-    NAME_FUNC_OFFSET(23722, glGetFragDataLocationEXT, glGetFragDataLocationEXT,
-                     NULL, 901),
-    NAME_FUNC_OFFSET(23744, glGetUniformuivEXT, glGetUniformuivEXT, NULL, 902),
-    NAME_FUNC_OFFSET(23760, glGetVertexAttribIivEXT, glGetVertexAttribIivEXT,
-                     NULL, 903),
-    NAME_FUNC_OFFSET(23781, glGetVertexAttribIuivEXT, glGetVertexAttribIuivEXT,
-                     NULL, 904),
-    NAME_FUNC_OFFSET(23803, glUniform1uiEXT, glUniform1uiEXT, NULL, 905),
-    NAME_FUNC_OFFSET(23816, glUniform1uivEXT, glUniform1uivEXT, NULL, 906),
-    NAME_FUNC_OFFSET(23830, glUniform2uiEXT, glUniform2uiEXT, NULL, 907),
-    NAME_FUNC_OFFSET(23843, glUniform2uivEXT, glUniform2uivEXT, NULL, 908),
-    NAME_FUNC_OFFSET(23857, glUniform3uiEXT, glUniform3uiEXT, NULL, 909),
-    NAME_FUNC_OFFSET(23870, glUniform3uivEXT, glUniform3uivEXT, NULL, 910),
-    NAME_FUNC_OFFSET(23884, glUniform4uiEXT, glUniform4uiEXT, NULL, 911),
-    NAME_FUNC_OFFSET(23897, glUniform4uivEXT, glUniform4uivEXT, NULL, 912),
-    NAME_FUNC_OFFSET(23911, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL,
-                     913),
-    NAME_FUNC_OFFSET(23929, glVertexAttribI1ivEXT, glVertexAttribI1ivEXT, NULL,
-                     914),
-    NAME_FUNC_OFFSET(23948, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL,
-                     915),
-    NAME_FUNC_OFFSET(23967, glVertexAttribI1uivEXT, glVertexAttribI1uivEXT,
-                     NULL, 916),
-    NAME_FUNC_OFFSET(23987, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL,
-                     917),
-    NAME_FUNC_OFFSET(24005, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL,
-                     918),
-    NAME_FUNC_OFFSET(24024, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL,
-                     919),
-    NAME_FUNC_OFFSET(24043, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT,
-                     NULL, 920),
-    NAME_FUNC_OFFSET(24063, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL,
-                     921),
-    NAME_FUNC_OFFSET(24081, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL,
-                     922),
-    NAME_FUNC_OFFSET(24100, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL,
-                     923),
-    NAME_FUNC_OFFSET(24119, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT,
-                     NULL, 924),
-    NAME_FUNC_OFFSET(24139, glVertexAttribI4bvEXT, glVertexAttribI4bvEXT, NULL,
-                     925),
-    NAME_FUNC_OFFSET(24158, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL,
-                     926),
-    NAME_FUNC_OFFSET(24176, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL,
-                     927),
-    NAME_FUNC_OFFSET(24195, glVertexAttribI4svEXT, glVertexAttribI4svEXT, NULL,
-                     928),
-    NAME_FUNC_OFFSET(24214, glVertexAttribI4ubvEXT, glVertexAttribI4ubvEXT,
-                     NULL, 929),
-    NAME_FUNC_OFFSET(24234, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL,
-                     930),
-    NAME_FUNC_OFFSET(24253, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT,
-                     NULL, 931),
-    NAME_FUNC_OFFSET(24273, glVertexAttribI4usvEXT, glVertexAttribI4usvEXT,
-                     NULL, 932),
-    NAME_FUNC_OFFSET(24293, glVertexAttribIPointerEXT,
-                     glVertexAttribIPointerEXT, NULL, 933),
-    NAME_FUNC_OFFSET(24316, glFramebufferTextureLayerEXT,
-                     glFramebufferTextureLayerEXT, NULL, 934),
-    NAME_FUNC_OFFSET(24342, glFramebufferTextureLayerEXT,
-                     glFramebufferTextureLayerEXT, NULL, 934),
-    NAME_FUNC_OFFSET(24371, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL,
-                     935),
-    NAME_FUNC_OFFSET(24384, glDisableIndexedEXT, glDisableIndexedEXT, NULL,
-                     936),
-    NAME_FUNC_OFFSET(24395, glEnableIndexedEXT, glEnableIndexedEXT, NULL, 937),
-    NAME_FUNC_OFFSET(24405, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT,
-                     NULL, 938),
-    NAME_FUNC_OFFSET(24421, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT,
-                     NULL, 939),
-    NAME_FUNC_OFFSET(24437, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL,
-                     940),
-    NAME_FUNC_OFFSET(24450, glGetTexParameterIivEXT, glGetTexParameterIivEXT,
-                     NULL, 943),
-    NAME_FUNC_OFFSET(24471, glGetTexParameterIuivEXT, glGetTexParameterIuivEXT,
-                     NULL, 944),
-    NAME_FUNC_OFFSET(24493, glTexParameterIivEXT, glTexParameterIivEXT, NULL,
-                     945),
-    NAME_FUNC_OFFSET(24511, glTexParameterIuivEXT, glTexParameterIuivEXT, NULL,
-                     946),
-    NAME_FUNC_OFFSET(24530, glBeginConditionalRenderNV,
-                     glBeginConditionalRenderNV, NULL, 947),
-    NAME_FUNC_OFFSET(24555, glEndConditionalRenderNV, glEndConditionalRenderNV,
-                     NULL, 948),
-    NAME_FUNC_OFFSET(24578, glBeginTransformFeedbackEXT,
-                     glBeginTransformFeedbackEXT, NULL, 949),
-    NAME_FUNC_OFFSET(24603, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL,
-                     950),
-    NAME_FUNC_OFFSET(24620, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL,
-                     952),
-    NAME_FUNC_OFFSET(24638, glEndTransformFeedbackEXT,
-                     glEndTransformFeedbackEXT, NULL, 953),
-    NAME_FUNC_OFFSET(24661, glGetTransformFeedbackVaryingEXT,
-                     glGetTransformFeedbackVaryingEXT, NULL, 954),
-    NAME_FUNC_OFFSET(24691, glTransformFeedbackVaryingsEXT,
-                     glTransformFeedbackVaryingsEXT, NULL, 955),
-    NAME_FUNC_OFFSET(24719, glProvokingVertexEXT, glProvokingVertexEXT, NULL,
-                     956),
-    NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)
-};
-
-#undef NAME_FUNC_OFFSET
diff --git a/glx/glthread.h b/glx/glthread.h
deleted file mode 100644
index 62c9bd4..0000000
--- a/glx/glthread.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  6.5.2
- *
- * Copyright (C) 1999-2006  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.
- */
-
-/*
- * Thread support for gl dispatch.
- *
- * Initial version by John Stone (j.stone at acm.org) (johns at cs.umr.edu)
- *                and Christoph Poliwoda (poliwoda at volumegraphics.com)
- * Revised by Keith Whitwell
- * Adapted for new gl dispatcher by Brian Paul
- *
- *
- *
- * DOCUMENTATION
- *
- * This thread module exports the following types:
- *   _glthread_TSD     Thread-specific data area
- *   _glthread_Thread  Thread datatype
- *   _glthread_Mutex   Mutual exclusion lock
- *
- * Macros:
- *   _glthread_DECLARE_STATIC_MUTEX(name)   Declare a non-local mutex
- *   _glthread_INIT_MUTEX(name)             Initialize a mutex
- *   _glthread_LOCK_MUTEX(name)             Lock a mutex
- *   _glthread_UNLOCK_MUTEX(name)           Unlock a mutex
- *
- * Functions:
- *   _glthread_GetID(v)      Get integer thread ID
- *   _glthread_InitTSD()     Initialize thread-specific data
- *   _glthread_GetTSD()      Get thread-specific data
- *   _glthread_SetTSD()      Set thread-specific data
- *
- */
-
-/*
- * If this file is accidentally included by a non-threaded build,
- * it should not cause the build to fail, or otherwise cause problems.
- * In general, it should only be included when needed however.
- */
-
-#ifndef GLTHREAD_H
-#define GLTHREAD_H
-
-#if defined(USE_MGL_NAMESPACE)
-#define _glapi_Dispatch _mglapi_Dispatch
-#endif
-
-#if (defined(PTHREADS) || defined(WIN32_THREADS)) \
-    && !defined(THREADS)
-#define THREADS
-#endif
-
-#ifdef VMS
-#include <GL/vms_x_fix.h>
-#endif
-
-/*
- * POSIX threads. This should be your choice in the Unix world
- * whenever possible.  When building with POSIX threads, be sure
- * to enable any compiler flags which will cause the MT-safe
- * libc (if one exists) to be used when linking, as well as any
- * header macros for MT-safe errno, etc.  For Solaris, this is the -mt
- * compiler flag.  On Solaris with gcc, use -D_REENTRANT to enable
- * proper compiling for MT-safe libc etc.
- */
-#if defined(PTHREADS)
-#include <pthread.h>            /* POSIX threads headers */
-
-typedef struct {
-    pthread_key_t key;
-    int initMagic;
-} _glthread_TSD;
-
-typedef pthread_t _glthread_Thread;
-
-typedef pthread_mutex_t _glthread_Mutex;
-
-#define _glthread_DECLARE_STATIC_MUTEX(name) \
-   static _glthread_Mutex name = PTHREAD_MUTEX_INITIALIZER
-
-#define _glthread_INIT_MUTEX(name) \
-   pthread_mutex_init(&(name), NULL)
-
-#define _glthread_DESTROY_MUTEX(name) \
-   pthread_mutex_destroy(&(name))
-
-#define _glthread_LOCK_MUTEX(name) \
-   (void) pthread_mutex_lock(&(name))
-
-#define _glthread_UNLOCK_MUTEX(name) \
-   (void) pthread_mutex_unlock(&(name))
-
-#endif                          /* PTHREADS */
-
-/*
- * Solaris threads. Use only up to Solaris 2.4.
- * Solaris 2.5 and higher provide POSIX threads.
- * Be sure to compile with -mt on the Solaris compilers, or
- * use -D_REENTRANT if using gcc.
- */
-
-/*
- * Windows threads. Should work with Windows NT and 95.
- * IMPORTANT: Link with multithreaded runtime library when THREADS are
- * used!
- */
-#ifdef WIN32_THREADS
-#include <windows.h>
-
-typedef struct {
-    DWORD key;
-    int initMagic;
-} _glthread_TSD;
-
-typedef HANDLE _glthread_Thread;
-
-typedef CRITICAL_SECTION _glthread_Mutex;
-
-#define _glthread_DECLARE_STATIC_MUTEX(name)  /*static*/ _glthread_Mutex name = {0,0,0,0,0,0}
-#define _glthread_INIT_MUTEX(name)  InitializeCriticalSection(&name)
-#define _glthread_DESTROY_MUTEX(name)  DeleteCriticalSection(&name)
-#define _glthread_LOCK_MUTEX(name)  EnterCriticalSection(&name)
-#define _glthread_UNLOCK_MUTEX(name)  LeaveCriticalSection(&name)
-
-#endif                          /* WIN32_THREADS */
-
-/*
- * BeOS threads. R5.x required.
- */
-#ifdef BEOS_THREADS
-
-#include <kernel/OS.h>
-#include <support/TLS.h>
-
-typedef struct {
-    int32 key;
-    int initMagic;
-} _glthread_TSD;
-
-typedef thread_id _glthread_Thread;
-
-/* Use Benaphore, aka speeder semaphore */
-typedef struct {
-    int32 lock;
-    sem_id sem;
-} benaphore;
-typedef benaphore _glthread_Mutex;
-
-#define _glthread_DECLARE_STATIC_MUTEX(name)  static _glthread_Mutex name = { 0, 0 }
-#define _glthread_INIT_MUTEX(name)    	name.sem = create_sem(0, #name"_benaphore"), name.lock = 0
-#define _glthread_DESTROY_MUTEX(name) 	delete_sem(name.sem), name.lock = 0
-#define _glthread_LOCK_MUTEX(name)    	if (name.sem == 0) _glthread_INIT_MUTEX(name); \
-									  	if (atomic_add(&(name.lock), 1) >= 1) acquire_sem(name.sem)
-#define _glthread_UNLOCK_MUTEX(name)  	if (atomic_add(&(name.lock), -1) > 1) release_sem(name.sem)
-
-#endif                          /* BEOS_THREADS */
-
-#ifndef THREADS
-
-/*
- * THREADS not defined
- */
-
-typedef int _glthread_TSD;
-
-typedef int _glthread_Thread;
-
-typedef int _glthread_Mutex;
-
-#define _glthread_DECLARE_STATIC_MUTEX(name)  static _glthread_Mutex name = 0
-
-#define _glthread_INIT_MUTEX(name)  (void) name
-
-#define _glthread_DESTROY_MUTEX(name)  (void) name
-
-#define _glthread_LOCK_MUTEX(name)  (void) name
-
-#define _glthread_UNLOCK_MUTEX(name)  (void) name
-
-#endif                          /* THREADS */
-
-/*
- * Platform independent thread specific data API.
- */
-
-extern unsigned long
- _glthread_GetID(void);
-
-extern void
- _glthread_InitTSD(_glthread_TSD *);
-
-extern void *_glthread_GetTSD(_glthread_TSD *);
-
-extern void
- _glthread_SetTSD(_glthread_TSD *, void *);
-
-#if defined(GLX_USE_TLS)
-
-extern TLS struct _glapi_table *_glapi_tls_Dispatch;
-
-#define GET_DISPATCH() _glapi_tls_Dispatch
-
-#elif !defined(GL_CALL)
-#if defined(THREADS)
-#define GET_DISPATCH() \
-   ((__builtin_expect( _glapi_Dispatch != NULL, 1 )) \
-       ? _glapi_Dispatch : _glapi_get_dispatch())
-#else
-#define GET_DISPATCH() _glapi_Dispatch
-#endif                          /* defined(THREADS) */
-#endif                          /* ndef GL_CALL */
-
-#endif                          /* THREADS_H */
diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 0fc7362..64ebf9e 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -42,10 +42,6 @@
 #include <windowstr.h>
 #include "glxutil.h"
 #include "glxext.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 #include "indirect_dispatch.h"
 #include "indirect_table.h"
 #include "indirect_util.h"
@@ -617,7 +613,7 @@ DoMakeCurrent(__GLXclientState * cl,
          */
         if (prevglxc->hasUnflushedCommands) {
             if (__glXForceCurrent(cl, tag, (int *) &error)) {
-                CALL_Flush(GET_DISPATCH(), ());
+                glFlush();
                 prevglxc->hasUnflushedCommands = GL_FALSE;
             }
             else {
@@ -800,7 +796,7 @@ __glXDisp_WaitGL(__GLXclientState * cl, GLbyte * pc)
         if (!__glXForceCurrent(cl, req->contextTag, &error))
             return error;
 
-        CALL_Finish(GET_DISPATCH(), ());
+        glFinish();
     }
 
     if (glxc && glxc->drawPriv->waitGL)
@@ -898,7 +894,7 @@ __glXDisp_CopyContext(__GLXclientState * cl, GLbyte * pc)
              ** Do whatever is needed to make sure that all preceding requests
              ** in both streams are completed before the copy is executed.
              */
-            CALL_Finish(GET_DISPATCH(), ());
+            glFinish();
             tagcx->hasUnflushedCommands = GL_FALSE;
         }
         else {
@@ -1675,7 +1671,7 @@ __glXDisp_SwapBuffers(__GLXclientState * cl, GLbyte * pc)
              ** Do whatever is needed to make sure that all preceding requests
              ** in both streams are completed before the swap is executed.
              */
-            CALL_Finish(GET_DISPATCH(), ());
+            glFinish();
             glxc->hasUnflushedCommands = GL_FALSE;
         }
         else {
@@ -1872,7 +1868,7 @@ __glXDisp_CopySubBufferMESA(__GLXclientState * cl, GLbyte * pc)
              ** Do whatever is needed to make sure that all preceding requests
              ** in both streams are completed before the swap is executed.
              */
-            CALL_Finish(GET_DISPATCH(), ());
+            glFinish();
             glxc->hasUnflushedCommands = GL_FALSE;
         }
         else {
diff --git a/glx/glxcmdsswap.c b/glx/glxcmdsswap.c
index 43f88d3..5d179f3 100644
--- a/glx/glxcmdsswap.c
+++ b/glx/glxcmdsswap.c
@@ -40,10 +40,6 @@
 #include <pixmapstr.h>
 #include <windowstr.h>
 #include "glxext.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 #include "indirect_dispatch.h"
 #include "indirect_table.h"
 #include "indirect_util.h"
diff --git a/glx/glxdri2.c b/glx/glxdri2.c
index f662b21..f6a7c06 100644
--- a/glx/glxdri2.c
+++ b/glx/glxdri2.c
@@ -49,10 +49,6 @@
 #include "glxdricommon.h"
 #include <GL/glxtokens.h>
 
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 #include "extension_string.h"
 
 typedef struct __GLXDRIscreen __GLXDRIscreen;
diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c
index b478398..c9962dc 100644
--- a/glx/glxdriswrast.c
+++ b/glx/glxdriswrast.c
@@ -48,10 +48,6 @@
 #include "glxutil.h"
 #include "glxdricommon.h"
 
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 #include "extension_string.h"
 
 /* RTLD_LOCAL is not defined on Cygwin */
diff --git a/glx/glxext.c b/glx/glxext.c
index c2c90d2..3a7de28 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -541,6 +541,19 @@ __glXleaveServer(GLboolean rendering)
     glxServerLeaveCount++;
 }
 
+static void (*(*_get_proc_address)(const char *))(void);
+
+void
+__glXsetGetProcAddress(void (*(*get_proc_address) (const char *))(void))
+{
+    _get_proc_address = get_proc_address;
+}
+
+void *__glGetProcAddress(const char *proc)
+{
+    return _get_proc_address(proc);
+}
+
 /*
 ** Top level dispatcher; all commands are executed from here down.
 */
diff --git a/glx/glxserver.h b/glx/glxserver.h
index 1021aec..5e29abb 100644
--- a/glx/glxserver.h
+++ b/glx/glxserver.h
@@ -46,7 +46,9 @@
 #include <resource.h>
 #include <scrnintstr.h>
 
+#define GL_GLEXT_PROTOTYPES     /* we want prototypes */
 #include <GL/gl.h>
+#include <GL/glext.h>
 #include <GL/glxproto.h>
 
 /*
@@ -115,6 +117,9 @@ void __glXleaveServer(GLboolean rendering);
 void glxSuspendClients(void);
 void glxResumeClients(void);
 
+void __glXsetGetProcAddress(void (*(*get_proc_address) (const char *)) (void));
+void *__glGetProcAddress(const char *);
+
 /*
 ** State kept per client.
 */
diff --git a/glx/glxstubs.c b/glx/glxstubs.c
new file mode 100644
index 0000000..69bc004
--- /dev/null
+++ b/glx/glxstubs.c
@@ -0,0 +1,50 @@
+/*
+ * Copyright © 2013 Red Hat, Inc.
+ *
+ * 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.
+ *
+ * Authors:
+ *	Adam Jackson <ajax at redhat.com>
+ */
+
+/*
+ * Redirection stubs for things that we call by name but that aren't exported
+ * from libGL by name.  Strictly speaking this list should be a lot longer,
+ * but this is enough to get us linking against contemporary Mesa.
+ */
+
+#include <inttypes.h>
+#include "glxserver.h"
+
+#define thunk(name, type, call_args, ...) \
+    _X_HIDDEN void name(__VA_ARGS__) { \
+	static type proc; \
+	if (!proc) proc = __glGetProcAddress(#name); \
+	proc call_args; \
+    }
+
+thunk(glSampleMaskSGIS, PFNGLSAMPLEMASKSGISPROC,
+      (value, invert), GLclampf value, GLboolean invert)
+
+thunk(glSamplePatternSGIS, PFNGLSAMPLEPATTERNSGISPROC,
+      (pattern), GLenum pattern)
+
+thunk(glActiveStencilFaceEXT, PFNGLACTIVESTENCILFACEEXTPROC,
+      (face), GLenum face)
diff --git a/glx/indirect_dispatch.c b/glx/indirect_dispatch.c
index 0a7623c..1eee79a 100644
--- a/glx/indirect_dispatch.c
+++ b/glx/indirect_dispatch.c
@@ -25,21 +25,14 @@
  * SOFTWARE.
  */
 
-#include <X11/Xmd.h>
-#include <GL/gl.h>
-#include <GL/glxproto.h>
 #include <inttypes.h>
+#include "glxserver.h"
 #include "indirect_size.h"
 #include "indirect_size_get.h"
 #include "indirect_dispatch.h"
-#include "glxserver.h"
 #include "glxbyteorder.h"
 #include "indirect_util.h"
 #include "singlesize.h"
-#include "glapi.h"
-#include "glapitable.h"
-#include "glthread.h"
-#include "dispatch.h"
 
 #define __GLX_PAD(x)  (((x) + 3) & ~3)
 
@@ -61,8 +54,7 @@ __glXDisp_NewList(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        CALL_NewList(GET_DISPATCH(), (*(GLuint *) (pc + 0), *(GLenum *) (pc + 4)
-                     ));
+        glNewList(*(GLuint *) (pc + 0), *(GLenum *) (pc + 4));
         error = Success;
     }
 
@@ -78,7 +70,7 @@ __glXDisp_EndList(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        CALL_EndList(GET_DISPATCH(), ());
+        glEndList();
         error = Success;
     }
 
@@ -88,8 +80,7 @@ __glXDisp_EndList(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDisp_CallList(GLbyte * pc)
 {
-    CALL_CallList(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                  ));
+    glCallList(*(GLuint *) (pc + 0));
 }
 
 void
@@ -101,7 +92,7 @@ __glXDisp_CallLists(GLbyte * pc)
 
     lists = (const GLvoid *) (pc + 8);
 
-    CALL_CallLists(GET_DISPATCH(), (n, type, lists));
+    glCallLists(n, type, lists);
 }
 
 int
@@ -113,9 +104,7 @@ __glXDisp_DeleteLists(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        CALL_DeleteLists(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                          *(GLsizei *) (pc + 4)
-                         ));
+        glDeleteLists(*(GLuint *) (pc + 0), *(GLsizei *) (pc + 4));
         error = Success;
     }
 
@@ -133,8 +122,7 @@ __glXDisp_GenLists(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLuint retval;
 
-        retval = CALL_GenLists(GET_DISPATCH(), (*(GLsizei *) (pc + 0)
-                               ));
+        retval = glGenLists(*(GLsizei *) (pc + 0));
         __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -145,15 +133,13 @@ __glXDisp_GenLists(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDisp_ListBase(GLbyte * pc)
 {
-    CALL_ListBase(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                  ));
+    glListBase(*(GLuint *) (pc + 0));
 }
 
 void
 __glXDisp_Begin(GLbyte * pc)
 {
-    CALL_Begin(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-               ));
+    glBegin(*(GLenum *) (pc + 0));
 }
 
 void
@@ -162,29 +148,23 @@ __glXDisp_Bitmap(GLbyte * pc)
     const GLubyte *const bitmap = (const GLubyte *) ((pc + 44));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
 
-    CALL_Bitmap(GET_DISPATCH(), (*(GLsizei *) (pc + 20),
-                                 *(GLsizei *) (pc + 24),
-                                 *(GLfloat *) (pc + 28),
-                                 *(GLfloat *) (pc + 32),
-                                 *(GLfloat *) (pc + 36),
-                                 *(GLfloat *) (pc + 40), bitmap));
+    glBitmap(*(GLsizei *) (pc + 20),
+             *(GLsizei *) (pc + 24),
+             *(GLfloat *) (pc + 28),
+             *(GLfloat *) (pc + 32),
+             *(GLfloat *) (pc + 36), *(GLfloat *) (pc + 40), bitmap);
 }
 
 void
 __glXDisp_Color3bv(GLbyte * pc)
 {
-    CALL_Color3bv(GET_DISPATCH(), ((const GLbyte *) (pc + 0)
-                  ));
+    glColor3bv((const GLbyte *) (pc + 0));
 }
 
 void
@@ -197,57 +177,49 @@ __glXDisp_Color3dv(GLbyte * pc)
     }
 #endif
 
-    CALL_Color3dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                  ));
+    glColor3dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_Color3fv(GLbyte * pc)
 {
-    CALL_Color3fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                  ));
+    glColor3fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_Color3iv(GLbyte * pc)
 {
-    CALL_Color3iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                  ));
+    glColor3iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_Color3sv(GLbyte * pc)
 {
-    CALL_Color3sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                  ));
+    glColor3sv((const GLshort *) (pc + 0));
 }
 
 void
 __glXDisp_Color3ubv(GLbyte * pc)
 {
-    CALL_Color3ubv(GET_DISPATCH(), ((const GLubyte *) (pc + 0)
-                   ));
+    glColor3ubv((const GLubyte *) (pc + 0));
 }
 
 void
 __glXDisp_Color3uiv(GLbyte * pc)
 {
-    CALL_Color3uiv(GET_DISPATCH(), ((const GLuint *) (pc + 0)
-                   ));
+    glColor3uiv((const GLuint *) (pc + 0));
 }
 
 void
 __glXDisp_Color3usv(GLbyte * pc)
 {
-    CALL_Color3usv(GET_DISPATCH(), ((const GLushort *) (pc + 0)
-                   ));
+    glColor3usv((const GLushort *) (pc + 0));
 }
 
 void
 __glXDisp_Color4bv(GLbyte * pc)
 {
-    CALL_Color4bv(GET_DISPATCH(), ((const GLbyte *) (pc + 0)
-                  ));
+    glColor4bv((const GLbyte *) (pc + 0));
 }
 
 void
@@ -260,63 +232,55 @@ __glXDisp_Color4dv(GLbyte * pc)
     }
 #endif
 
-    CALL_Color4dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                  ));
+    glColor4dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_Color4fv(GLbyte * pc)
 {
-    CALL_Color4fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                  ));
+    glColor4fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_Color4iv(GLbyte * pc)
 {
-    CALL_Color4iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                  ));
+    glColor4iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_Color4sv(GLbyte * pc)
 {
-    CALL_Color4sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                  ));
+    glColor4sv((const GLshort *) (pc + 0));
 }
 
 void
 __glXDisp_Color4ubv(GLbyte * pc)
 {
-    CALL_Color4ubv(GET_DISPATCH(), ((const GLubyte *) (pc + 0)
-                   ));
+    glColor4ubv((const GLubyte *) (pc + 0));
 }
 
 void
 __glXDisp_Color4uiv(GLbyte * pc)
 {
-    CALL_Color4uiv(GET_DISPATCH(), ((const GLuint *) (pc + 0)
-                   ));
+    glColor4uiv((const GLuint *) (pc + 0));
 }
 
 void
 __glXDisp_Color4usv(GLbyte * pc)
 {
-    CALL_Color4usv(GET_DISPATCH(), ((const GLushort *) (pc + 0)
-                   ));
+    glColor4usv((const GLushort *) (pc + 0));
 }
 
 void
 __glXDisp_EdgeFlagv(GLbyte * pc)
 {
-    CALL_EdgeFlagv(GET_DISPATCH(), ((const GLboolean *) (pc + 0)
-                   ));
+    glEdgeFlagv((const GLboolean *) (pc + 0));
 }
 
 void
 __glXDisp_End(GLbyte * pc)
 {
-    CALL_End(GET_DISPATCH(), ());
+    glEnd();
 }
 
 void
@@ -329,36 +293,31 @@ __glXDisp_Indexdv(GLbyte * pc)
     }
 #endif
 
-    CALL_Indexdv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                 ));
+    glIndexdv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_Indexfv(GLbyte * pc)
 {
-    CALL_Indexfv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                 ));
+    glIndexfv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_Indexiv(GLbyte * pc)
 {
-    CALL_Indexiv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                 ));
+    glIndexiv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_Indexsv(GLbyte * pc)
 {
-    CALL_Indexsv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                 ));
+    glIndexsv((const GLshort *) (pc + 0));
 }
 
 void
 __glXDisp_Normal3bv(GLbyte * pc)
 {
-    CALL_Normal3bv(GET_DISPATCH(), ((const GLbyte *) (pc + 0)
-                   ));
+    glNormal3bv((const GLbyte *) (pc + 0));
 }
 
 void
@@ -371,29 +330,25 @@ __glXDisp_Normal3dv(GLbyte * pc)
     }
 #endif
 
-    CALL_Normal3dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                   ));
+    glNormal3dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_Normal3fv(GLbyte * pc)
 {
-    CALL_Normal3fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                   ));
+    glNormal3fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_Normal3iv(GLbyte * pc)
 {
-    CALL_Normal3iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                   ));
+    glNormal3iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_Normal3sv(GLbyte * pc)
 {
-    CALL_Normal3sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                   ));
+    glNormal3sv((const GLshort *) (pc + 0));
 }
 
 void
@@ -406,29 +361,25 @@ __glXDisp_RasterPos2dv(GLbyte * pc)
     }
 #endif
 
-    CALL_RasterPos2dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                      ));
+    glRasterPos2dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_RasterPos2fv(GLbyte * pc)
 {
-    CALL_RasterPos2fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                      ));
+    glRasterPos2fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_RasterPos2iv(GLbyte * pc)
 {
-    CALL_RasterPos2iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                      ));
+    glRasterPos2iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_RasterPos2sv(GLbyte * pc)
 {
-    CALL_RasterPos2sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                      ));
+    glRasterPos2sv((const GLshort *) (pc + 0));
 }
 
 void
@@ -441,29 +392,25 @@ __glXDisp_RasterPos3dv(GLbyte * pc)
     }
 #endif
 
-    CALL_RasterPos3dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                      ));
+    glRasterPos3dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_RasterPos3fv(GLbyte * pc)
 {
-    CALL_RasterPos3fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                      ));
+    glRasterPos3fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_RasterPos3iv(GLbyte * pc)
 {
-    CALL_RasterPos3iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                      ));
+    glRasterPos3iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_RasterPos3sv(GLbyte * pc)
 {
-    CALL_RasterPos3sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                      ));
+    glRasterPos3sv((const GLshort *) (pc + 0));
 }
 
 void
@@ -476,29 +423,25 @@ __glXDisp_RasterPos4dv(GLbyte * pc)
     }
 #endif
 
-    CALL_RasterPos4dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                      ));
+    glRasterPos4dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_RasterPos4fv(GLbyte * pc)
 {
-    CALL_RasterPos4fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                      ));
+    glRasterPos4fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_RasterPos4iv(GLbyte * pc)
 {
-    CALL_RasterPos4iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                      ));
+    glRasterPos4iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_RasterPos4sv(GLbyte * pc)
 {
-    CALL_RasterPos4sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                      ));
+    glRasterPos4sv((const GLshort *) (pc + 0));
 }
 
 void
@@ -511,33 +454,25 @@ __glXDisp_Rectdv(GLbyte * pc)
     }
 #endif
 
-    CALL_Rectdv(GET_DISPATCH(), ((const GLdouble *) (pc + 0),
-                                 (const GLdouble *) (pc + 16)
-                ));
+    glRectdv((const GLdouble *) (pc + 0), (const GLdouble *) (pc + 16));
 }
 
 void
 __glXDisp_Rectfv(GLbyte * pc)
 {
-    CALL_Rectfv(GET_DISPATCH(), ((const GLfloat *) (pc + 0),
-                                 (const GLfloat *) (pc + 8)
-                ));
+    glRectfv((const GLfloat *) (pc + 0), (const GLfloat *) (pc + 8));
 }
 
 void
 __glXDisp_Rectiv(GLbyte * pc)
 {
-    CALL_Rectiv(GET_DISPATCH(), ((const GLint *) (pc + 0),
-                                 (const GLint *) (pc + 8)
-                ));
+    glRectiv((const GLint *) (pc + 0), (const GLint *) (pc + 8));
 }
 
 void
 __glXDisp_Rectsv(GLbyte * pc)
 {
-    CALL_Rectsv(GET_DISPATCH(), ((const GLshort *) (pc + 0),
-                                 (const GLshort *) (pc + 4)
-                ));
+    glRectsv((const GLshort *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
@@ -550,29 +485,25 @@ __glXDisp_TexCoord1dv(GLbyte * pc)
     }
 #endif
 
-    CALL_TexCoord1dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                     ));
+    glTexCoord1dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_TexCoord1fv(GLbyte * pc)
 {
-    CALL_TexCoord1fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                     ));
+    glTexCoord1fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_TexCoord1iv(GLbyte * pc)
 {
-    CALL_TexCoord1iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                     ));
+    glTexCoord1iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_TexCoord1sv(GLbyte * pc)
 {
-    CALL_TexCoord1sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                     ));
+    glTexCoord1sv((const GLshort *) (pc + 0));
 }
 
 void
@@ -585,29 +516,25 @@ __glXDisp_TexCoord2dv(GLbyte * pc)
     }
 #endif
 
-    CALL_TexCoord2dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                     ));
+    glTexCoord2dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_TexCoord2fv(GLbyte * pc)
 {
-    CALL_TexCoord2fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                     ));
+    glTexCoord2fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_TexCoord2iv(GLbyte * pc)
 {
-    CALL_TexCoord2iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                     ));
+    glTexCoord2iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_TexCoord2sv(GLbyte * pc)
 {
-    CALL_TexCoord2sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                     ));
+    glTexCoord2sv((const GLshort *) (pc + 0));
 }
 
 void
@@ -620,29 +547,25 @@ __glXDisp_TexCoord3dv(GLbyte * pc)
     }
 #endif
 
-    CALL_TexCoord3dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                     ));
+    glTexCoord3dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_TexCoord3fv(GLbyte * pc)
 {
-    CALL_TexCoord3fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                     ));
+    glTexCoord3fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_TexCoord3iv(GLbyte * pc)
 {
-    CALL_TexCoord3iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                     ));
+    glTexCoord3iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_TexCoord3sv(GLbyte * pc)
 {
-    CALL_TexCoord3sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                     ));
+    glTexCoord3sv((const GLshort *) (pc + 0));
 }
 
 void
@@ -655,29 +578,25 @@ __glXDisp_TexCoord4dv(GLbyte * pc)
     }
 #endif
 
-    CALL_TexCoord4dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                     ));
+    glTexCoord4dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_TexCoord4fv(GLbyte * pc)
 {
-    CALL_TexCoord4fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                     ));
+    glTexCoord4fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_TexCoord4iv(GLbyte * pc)
 {
-    CALL_TexCoord4iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                     ));
+    glTexCoord4iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_TexCoord4sv(GLbyte * pc)
 {
-    CALL_TexCoord4sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                     ));
+    glTexCoord4sv((const GLshort *) (pc + 0));
 }
 
 void
@@ -690,29 +609,25 @@ __glXDisp_Vertex2dv(GLbyte * pc)
     }
 #endif
 
-    CALL_Vertex2dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                   ));
+    glVertex2dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_Vertex2fv(GLbyte * pc)
 {
-    CALL_Vertex2fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                   ));
+    glVertex2fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_Vertex2iv(GLbyte * pc)
 {
-    CALL_Vertex2iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                   ));
+    glVertex2iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_Vertex2sv(GLbyte * pc)
 {
-    CALL_Vertex2sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                   ));
+    glVertex2sv((const GLshort *) (pc + 0));
 }
 
 void
@@ -725,29 +640,25 @@ __glXDisp_Vertex3dv(GLbyte * pc)
     }
 #endif
 
-    CALL_Vertex3dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                   ));
+    glVertex3dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_Vertex3fv(GLbyte * pc)
 {
-    CALL_Vertex3fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                   ));
+    glVertex3fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_Vertex3iv(GLbyte * pc)
 {
-    CALL_Vertex3iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                   ));
+    glVertex3iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_Vertex3sv(GLbyte * pc)
 {
-    CALL_Vertex3sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                   ));
+    glVertex3sv((const GLshort *) (pc + 0));
 }
 
 void
@@ -760,29 +671,25 @@ __glXDisp_Vertex4dv(GLbyte * pc)
     }
 #endif
 
-    CALL_Vertex4dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                   ));
+    glVertex4dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_Vertex4fv(GLbyte * pc)
 {
-    CALL_Vertex4fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                   ));
+    glVertex4fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_Vertex4iv(GLbyte * pc)
 {
-    CALL_Vertex4iv(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                   ));
+    glVertex4iv((const GLint *) (pc + 0));
 }
 
 void
 __glXDisp_Vertex4sv(GLbyte * pc)
 {
-    CALL_Vertex4sv(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                   ));
+    glVertex4sv((const GLshort *) (pc + 0));
 }
 
 void
@@ -795,31 +702,25 @@ __glXDisp_ClipPlane(GLbyte * pc)
     }
 #endif
 
-    CALL_ClipPlane(GET_DISPATCH(), (*(GLenum *) (pc + 32),
-                                    (const GLdouble *) (pc + 0)
-                   ));
+    glClipPlane(*(GLenum *) (pc + 32), (const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_ColorMaterial(GLbyte * pc)
 {
-    CALL_ColorMaterial(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                        *(GLenum *) (pc + 4)
-                       ));
+    glColorMaterial(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4));
 }
 
 void
 __glXDisp_CullFace(GLbyte * pc)
 {
-    CALL_CullFace(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                  ));
+    glCullFace(*(GLenum *) (pc + 0));
 }
 
 void
 __glXDisp_Fogf(GLbyte * pc)
 {
-    CALL_Fogf(GET_DISPATCH(), (*(GLenum *) (pc + 0), *(GLfloat *) (pc + 4)
-              ));
+    glFogf(*(GLenum *) (pc + 0), *(GLfloat *) (pc + 4));
 }
 
 void
@@ -830,14 +731,13 @@ __glXDisp_Fogfv(GLbyte * pc)
 
     params = (const GLfloat *) (pc + 4);
 
-    CALL_Fogfv(GET_DISPATCH(), (pname, params));
+    glFogfv(pname, params);
 }
 
 void
 __glXDisp_Fogi(GLbyte * pc)
 {
-    CALL_Fogi(GET_DISPATCH(), (*(GLenum *) (pc + 0), *(GLint *) (pc + 4)
-              ));
+    glFogi(*(GLenum *) (pc + 0), *(GLint *) (pc + 4));
 }
 
 void
@@ -848,29 +748,25 @@ __glXDisp_Fogiv(GLbyte * pc)
 
     params = (const GLint *) (pc + 4);
 
-    CALL_Fogiv(GET_DISPATCH(), (pname, params));
+    glFogiv(pname, params);
 }
 
 void
 __glXDisp_FrontFace(GLbyte * pc)
 {
-    CALL_FrontFace(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                   ));
+    glFrontFace(*(GLenum *) (pc + 0));
 }
 
 void
 __glXDisp_Hint(GLbyte * pc)
 {
-    CALL_Hint(GET_DISPATCH(), (*(GLenum *) (pc + 0), *(GLenum *) (pc + 4)
-              ));
+    glHint(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4));
 }
 
 void
 __glXDisp_Lightf(GLbyte * pc)
 {
-    CALL_Lightf(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                 *(GLenum *) (pc + 4), *(GLfloat *) (pc + 8)
-                ));
+    glLightf(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4), *(GLfloat *) (pc + 8));
 }
 
 void
@@ -881,15 +777,13 @@ __glXDisp_Lightfv(GLbyte * pc)
 
     params = (const GLfloat *) (pc + 8);
 
-    CALL_Lightfv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+    glLightfv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
 __glXDisp_Lighti(GLbyte * pc)
 {
-    CALL_Lighti(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                 *(GLenum *) (pc + 4), *(GLint *) (pc + 8)
-                ));
+    glLighti(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4), *(GLint *) (pc + 8));
 }
 
 void
@@ -900,15 +794,13 @@ __glXDisp_Lightiv(GLbyte * pc)
 
     params = (const GLint *) (pc + 8);
 
-    CALL_Lightiv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+    glLightiv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
 __glXDisp_LightModelf(GLbyte * pc)
 {
-    CALL_LightModelf(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                      *(GLfloat *) (pc + 4)
-                     ));
+    glLightModelf(*(GLenum *) (pc + 0), *(GLfloat *) (pc + 4));
 }
 
 void
@@ -919,14 +811,13 @@ __glXDisp_LightModelfv(GLbyte * pc)
 
     params = (const GLfloat *) (pc + 4);
 
-    CALL_LightModelfv(GET_DISPATCH(), (pname, params));
+    glLightModelfv(pname, params);
 }
 
 void
 __glXDisp_LightModeli(GLbyte * pc)
 {
-    CALL_LightModeli(GET_DISPATCH(), (*(GLenum *) (pc + 0), *(GLint *) (pc + 4)
-                     ));
+    glLightModeli(*(GLenum *) (pc + 0), *(GLint *) (pc + 4));
 }
 
 void
@@ -937,30 +828,26 @@ __glXDisp_LightModeliv(GLbyte * pc)
 
     params = (const GLint *) (pc + 4);
 
-    CALL_LightModeliv(GET_DISPATCH(), (pname, params));
+    glLightModeliv(pname, params);
 }
 
 void
 __glXDisp_LineStipple(GLbyte * pc)
 {
-    CALL_LineStipple(GET_DISPATCH(), (*(GLint *) (pc + 0),
-                                      *(GLushort *) (pc + 4)
-                     ));
+    glLineStipple(*(GLint *) (pc + 0), *(GLushort *) (pc + 4));
 }
 
 void
 __glXDisp_LineWidth(GLbyte * pc)
 {
-    CALL_LineWidth(GET_DISPATCH(), (*(GLfloat *) (pc + 0)
-                   ));
+    glLineWidth(*(GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_Materialf(GLbyte * pc)
 {
-    CALL_Materialf(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                    *(GLenum *) (pc + 4), *(GLfloat *) (pc + 8)
-                   ));
+    glMaterialf(*(GLenum *) (pc + 0),
+                *(GLenum *) (pc + 4), *(GLfloat *) (pc + 8));
 }
 
 void
@@ -971,15 +858,14 @@ __glXDisp_Materialfv(GLbyte * pc)
 
     params = (const GLfloat *) (pc + 8);
 
-    CALL_Materialfv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+    glMaterialfv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
 __glXDisp_Materiali(GLbyte * pc)
 {
-    CALL_Materiali(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                    *(GLenum *) (pc + 4), *(GLint *) (pc + 8)
-                   ));
+    glMateriali(*(GLenum *) (pc + 0),
+                *(GLenum *) (pc + 4), *(GLint *) (pc + 8));
 }
 
 void
@@ -990,21 +876,19 @@ __glXDisp_Materialiv(GLbyte * pc)
 
     params = (const GLint *) (pc + 8);
 
-    CALL_Materialiv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+    glMaterialiv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
 __glXDisp_PointSize(GLbyte * pc)
 {
-    CALL_PointSize(GET_DISPATCH(), (*(GLfloat *) (pc + 0)
-                   ));
+    glPointSize(*(GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_PolygonMode(GLbyte * pc)
 {
-    CALL_PolygonMode(GET_DISPATCH(), (*(GLenum *) (pc + 0), *(GLenum *) (pc + 4)
-                     ));
+    glPolygonMode(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4));
 }
 
 void
@@ -1013,42 +897,34 @@ __glXDisp_PolygonStipple(GLbyte * pc)
     const GLubyte *const mask = (const GLubyte *) ((pc + 20));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
 
-    CALL_PolygonStipple(GET_DISPATCH(), (mask));
+    glPolygonStipple(mask);
 }
 
 void
 __glXDisp_Scissor(GLbyte * pc)
 {
-    CALL_Scissor(GET_DISPATCH(), (*(GLint *) (pc + 0),
-                                  *(GLint *) (pc + 4),
-                                  *(GLsizei *) (pc + 8), *(GLsizei *) (pc + 12)
-                 ));
+    glScissor(*(GLint *) (pc + 0),
+              *(GLint *) (pc + 4),
+              *(GLsizei *) (pc + 8), *(GLsizei *) (pc + 12));
 }
 
 void
 __glXDisp_ShadeModel(GLbyte * pc)
 {
-    CALL_ShadeModel(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                    ));
+    glShadeModel(*(GLenum *) (pc + 0));
 }
 
 void
 __glXDisp_TexParameterf(GLbyte * pc)
 {
-    CALL_TexParameterf(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                        *(GLenum *) (pc + 4),
-                                        *(GLfloat *) (pc + 8)
-                       ));
+    glTexParameterf(*(GLenum *) (pc + 0),
+                    *(GLenum *) (pc + 4), *(GLfloat *) (pc + 8));
 }
 
 void
@@ -1059,16 +935,14 @@ __glXDisp_TexParameterfv(GLbyte * pc)
 
     params = (const GLfloat *) (pc + 8);
 
-    CALL_TexParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+    glTexParameterfv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
 __glXDisp_TexParameteri(GLbyte * pc)
 {
-    CALL_TexParameteri(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                        *(GLenum *) (pc + 4),
-                                        *(GLint *) (pc + 8)
-                       ));
+    glTexParameteri(*(GLenum *) (pc + 0),
+                    *(GLenum *) (pc + 4), *(GLint *) (pc + 8));
 }
 
 void
@@ -1079,7 +953,7 @@ __glXDisp_TexParameteriv(GLbyte * pc)
 
     params = (const GLint *) (pc + 8);
 
-    CALL_TexParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+    glTexParameteriv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
@@ -1088,24 +962,19 @@ __glXDisp_TexImage1D(GLbyte * pc)
     const GLvoid *const pixels = (const GLvoid *) ((pc + 52));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
 
-    CALL_TexImage1D(GET_DISPATCH(), (*(GLenum *) (pc + 20),
-                                     *(GLint *) (pc + 24),
-                                     *(GLint *) (pc + 28),
-                                     *(GLsizei *) (pc + 32),
-                                     *(GLint *) (pc + 40),
-                                     *(GLenum *) (pc + 44),
-                                     *(GLenum *) (pc + 48), pixels));
+    glTexImage1D(*(GLenum *) (pc + 20),
+                 *(GLint *) (pc + 24),
+                 *(GLint *) (pc + 28),
+                 *(GLsizei *) (pc + 32),
+                 *(GLint *) (pc + 40),
+                 *(GLenum *) (pc + 44), *(GLenum *) (pc + 48), pixels);
 }
 
 void
@@ -1114,33 +983,27 @@ __glXDisp_TexImage2D(GLbyte * pc)
     const GLvoid *const pixels = (const GLvoid *) ((pc + 52));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
 
-    CALL_TexImage2D(GET_DISPATCH(), (*(GLenum *) (pc + 20),
-                                     *(GLint *) (pc + 24),
-                                     *(GLint *) (pc + 28),
-                                     *(GLsizei *) (pc + 32),
-                                     *(GLsizei *) (pc + 36),
-                                     *(GLint *) (pc + 40),
-                                     *(GLenum *) (pc + 44),
-                                     *(GLenum *) (pc + 48), pixels));
+    glTexImage2D(*(GLenum *) (pc + 20),
+                 *(GLint *) (pc + 24),
+                 *(GLint *) (pc + 28),
+                 *(GLsizei *) (pc + 32),
+                 *(GLsizei *) (pc + 36),
+                 *(GLint *) (pc + 40),
+                 *(GLenum *) (pc + 44), *(GLenum *) (pc + 48), pixels);
 }
 
 void
 __glXDisp_TexEnvf(GLbyte * pc)
 {
-    CALL_TexEnvf(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                  *(GLenum *) (pc + 4), *(GLfloat *) (pc + 8)
-                 ));
+    glTexEnvf(*(GLenum *) (pc + 0),
+              *(GLenum *) (pc + 4), *(GLfloat *) (pc + 8));
 }
 
 void
@@ -1151,15 +1014,13 @@ __glXDisp_TexEnvfv(GLbyte * pc)
 
     params = (const GLfloat *) (pc + 8);
 
-    CALL_TexEnvfv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+    glTexEnvfv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
 __glXDisp_TexEnvi(GLbyte * pc)
 {
-    CALL_TexEnvi(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                  *(GLenum *) (pc + 4), *(GLint *) (pc + 8)
-                 ));
+    glTexEnvi(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4), *(GLint *) (pc + 8));
 }
 
 void
@@ -1170,7 +1031,7 @@ __glXDisp_TexEnviv(GLbyte * pc)
 
     params = (const GLint *) (pc + 8);
 
-    CALL_TexEnviv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+    glTexEnviv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
@@ -1183,9 +1044,8 @@ __glXDisp_TexGend(GLbyte * pc)
     }
 #endif
 
-    CALL_TexGend(GET_DISPATCH(), (*(GLenum *) (pc + 8),
-                                  *(GLenum *) (pc + 12), *(GLdouble *) (pc + 0)
-                 ));
+    glTexGend(*(GLenum *) (pc + 8),
+              *(GLenum *) (pc + 12), *(GLdouble *) (pc + 0));
 }
 
 void
@@ -1206,15 +1066,14 @@ __glXDisp_TexGendv(GLbyte * pc)
 
     params = (const GLdouble *) (pc + 8);
 
-    CALL_TexGendv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+    glTexGendv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
 __glXDisp_TexGenf(GLbyte * pc)
 {
-    CALL_TexGenf(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                  *(GLenum *) (pc + 4), *(GLfloat *) (pc + 8)
-                 ));
+    glTexGenf(*(GLenum *) (pc + 0),
+              *(GLenum *) (pc + 4), *(GLfloat *) (pc + 8));
 }
 
 void
@@ -1225,15 +1084,13 @@ __glXDisp_TexGenfv(GLbyte * pc)
 
     params = (const GLfloat *) (pc + 8);
 
-    CALL_TexGenfv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+    glTexGenfv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
 __glXDisp_TexGeni(GLbyte * pc)
 {
-    CALL_TexGeni(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                  *(GLenum *) (pc + 4), *(GLint *) (pc + 8)
-                 ));
+    glTexGeni(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4), *(GLint *) (pc + 8));
 }
 
 void
@@ -1244,88 +1101,77 @@ __glXDisp_TexGeniv(GLbyte * pc)
 
     params = (const GLint *) (pc + 8);
 
-    CALL_TexGeniv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+    glTexGeniv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
 __glXDisp_InitNames(GLbyte * pc)
 {
-    CALL_InitNames(GET_DISPATCH(), ());
+    glInitNames();
 }
 
 void
 __glXDisp_LoadName(GLbyte * pc)
 {
-    CALL_LoadName(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                  ));
+    glLoadName(*(GLuint *) (pc + 0));
 }
 
 void
 __glXDisp_PassThrough(GLbyte * pc)
 {
-    CALL_PassThrough(GET_DISPATCH(), (*(GLfloat *) (pc + 0)
-                     ));
+    glPassThrough(*(GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_PopName(GLbyte * pc)
 {
-    CALL_PopName(GET_DISPATCH(), ());
+    glPopName();
 }
 
 void
 __glXDisp_PushName(GLbyte * pc)
 {
-    CALL_PushName(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                  ));
+    glPushName(*(GLuint *) (pc + 0));
 }
 
 void
 __glXDisp_DrawBuffer(GLbyte * pc)
 {
-    CALL_DrawBuffer(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                    ));
+    glDrawBuffer(*(GLenum *) (pc + 0));
 }
 
 void
 __glXDisp_Clear(GLbyte * pc)
 {
-    CALL_Clear(GET_DISPATCH(), (*(GLbitfield *) (pc + 0)
-               ));
+    glClear(*(GLbitfield *) (pc + 0));
 }
 
 void
 __glXDisp_ClearAccum(GLbyte * pc)
 {
-    CALL_ClearAccum(GET_DISPATCH(), (*(GLfloat *) (pc + 0),
-                                     *(GLfloat *) (pc + 4),
-                                     *(GLfloat *) (pc + 8),
-                                     *(GLfloat *) (pc + 12)
-                    ));
+    glClearAccum(*(GLfloat *) (pc + 0),
+                 *(GLfloat *) (pc + 4),
+                 *(GLfloat *) (pc + 8), *(GLfloat *) (pc + 12));
 }
 
 void
 __glXDisp_ClearIndex(GLbyte * pc)
 {
-    CALL_ClearIndex(GET_DISPATCH(), (*(GLfloat *) (pc + 0)
-                    ));
+    glClearIndex(*(GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_ClearColor(GLbyte * pc)
 {
-    CALL_ClearColor(GET_DISPATCH(), (*(GLclampf *) (pc + 0),
-                                     *(GLclampf *) (pc + 4),
-                                     *(GLclampf *) (pc + 8),
-                                     *(GLclampf *) (pc + 12)
-                    ));
+    glClearColor(*(GLclampf *) (pc + 0),
+                 *(GLclampf *) (pc + 4),
+                 *(GLclampf *) (pc + 8), *(GLclampf *) (pc + 12));
 }
 
 void
 __glXDisp_ClearStencil(GLbyte * pc)
 {
-    CALL_ClearStencil(GET_DISPATCH(), (*(GLint *) (pc + 0)
-                      ));
+    glClearStencil(*(GLint *) (pc + 0));
 }
 
 void
@@ -1338,73 +1184,63 @@ __glXDisp_ClearDepth(GLbyte * pc)
     }
 #endif
 
-    CALL_ClearDepth(GET_DISPATCH(), (*(GLclampd *) (pc + 0)
-                    ));
+    glClearDepth(*(GLclampd *) (pc + 0));
 }
 
 void
 __glXDisp_StencilMask(GLbyte * pc)
 {
-    CALL_StencilMask(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                     ));
+    glStencilMask(*(GLuint *) (pc + 0));
 }
 
 void
 __glXDisp_ColorMask(GLbyte * pc)
 {
-    CALL_ColorMask(GET_DISPATCH(), (*(GLboolean *) (pc + 0),
-                                    *(GLboolean *) (pc + 1),
-                                    *(GLboolean *) (pc + 2),
-                                    *(GLboolean *) (pc + 3)
-                   ));
+    glColorMask(*(GLboolean *) (pc + 0),
+                *(GLboolean *) (pc + 1),
+                *(GLboolean *) (pc + 2), *(GLboolean *) (pc + 3));
 }
 
 void
 __glXDisp_DepthMask(GLbyte * pc)
 {
-    CALL_DepthMask(GET_DISPATCH(), (*(GLboolean *) (pc + 0)
-                   ));
+    glDepthMask(*(GLboolean *) (pc + 0));
 }
 
 void
 __glXDisp_IndexMask(GLbyte * pc)
 {
-    CALL_IndexMask(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                   ));
+    glIndexMask(*(GLuint *) (pc + 0));
 }
 
 void
 __glXDisp_Accum(GLbyte * pc)
 {
-    CALL_Accum(GET_DISPATCH(), (*(GLenum *) (pc + 0), *(GLfloat *) (pc + 4)
-               ));
+    glAccum(*(GLenum *) (pc + 0), *(GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_Disable(GLbyte * pc)
 {
-    CALL_Disable(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                 ));
+    glDisable(*(GLenum *) (pc + 0));
 }
 
 void
 __glXDisp_Enable(GLbyte * pc)
 {
-    CALL_Enable(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                ));
+    glEnable(*(GLenum *) (pc + 0));
 }
 
 void
 __glXDisp_PopAttrib(GLbyte * pc)
 {
-    CALL_PopAttrib(GET_DISPATCH(), ());
+    glPopAttrib();
 }
 
 void
 __glXDisp_PushAttrib(GLbyte * pc)
 {
-    CALL_PushAttrib(GET_DISPATCH(), (*(GLbitfield *) (pc + 0)
-                    ));
+    glPushAttrib(*(GLbitfield *) (pc + 0));
 }
 
 void
@@ -1417,18 +1253,15 @@ __glXDisp_MapGrid1d(GLbyte * pc)
     }
 #endif
 
-    CALL_MapGrid1d(GET_DISPATCH(), (*(GLint *) (pc + 16),
-                                    *(GLdouble *) (pc + 0),
-                                    *(GLdouble *) (pc + 8)
-                   ));
+    glMapGrid1d(*(GLint *) (pc + 16),
+                *(GLdouble *) (pc + 0), *(GLdouble *) (pc + 8));
 }
 
 void
 __glXDisp_MapGrid1f(GLbyte * pc)
 {
-    CALL_MapGrid1f(GET_DISPATCH(), (*(GLint *) (pc + 0),
-                                    *(GLfloat *) (pc + 4), *(GLfloat *) (pc + 8)
-                   ));
+    glMapGrid1f(*(GLint *) (pc + 0),
+                *(GLfloat *) (pc + 4), *(GLfloat *) (pc + 8));
 }
 
 void
@@ -1441,25 +1274,21 @@ __glXDisp_MapGrid2d(GLbyte * pc)
     }
 #endif
 
-    CALL_MapGrid2d(GET_DISPATCH(), (*(GLint *) (pc + 32),
-                                    *(GLdouble *) (pc + 0),
-                                    *(GLdouble *) (pc + 8),
-                                    *(GLint *) (pc + 36),
-                                    *(GLdouble *) (pc + 16),
-                                    *(GLdouble *) (pc + 24)
-                   ));
+    glMapGrid2d(*(GLint *) (pc + 32),
+                *(GLdouble *) (pc + 0),
+                *(GLdouble *) (pc + 8),
+                *(GLint *) (pc + 36),
+                *(GLdouble *) (pc + 16), *(GLdouble *) (pc + 24));
 }
 
 void
 __glXDisp_MapGrid2f(GLbyte * pc)
 {
-    CALL_MapGrid2f(GET_DISPATCH(), (*(GLint *) (pc + 0),
-                                    *(GLfloat *) (pc + 4),
-                                    *(GLfloat *) (pc + 8),
-                                    *(GLint *) (pc + 12),
-                                    *(GLfloat *) (pc + 16),
-                                    *(GLfloat *) (pc + 20)
-                   ));
+    glMapGrid2f(*(GLint *) (pc + 0),
+                *(GLfloat *) (pc + 4),
+                *(GLfloat *) (pc + 8),
+                *(GLint *) (pc + 12),
+                *(GLfloat *) (pc + 16), *(GLfloat *) (pc + 20));
 }
 
 void
@@ -1472,15 +1301,13 @@ __glXDisp_EvalCoord1dv(GLbyte * pc)
     }
 #endif
 
-    CALL_EvalCoord1dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                      ));
+    glEvalCoord1dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_EvalCoord1fv(GLbyte * pc)
 {
-    CALL_EvalCoord1fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                      ));
+    glEvalCoord1fv((const GLfloat *) (pc + 0));
 }
 
 void
@@ -1493,114 +1320,96 @@ __glXDisp_EvalCoord2dv(GLbyte * pc)
     }
 #endif
 
-    CALL_EvalCoord2dv(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                      ));
+    glEvalCoord2dv((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_EvalCoord2fv(GLbyte * pc)
 {
-    CALL_EvalCoord2fv(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                      ));
+    glEvalCoord2fv((const GLfloat *) (pc + 0));
 }
 
 void
 __glXDisp_EvalMesh1(GLbyte * pc)
 {
-    CALL_EvalMesh1(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                    *(GLint *) (pc + 4), *(GLint *) (pc + 8)
-                   ));
+    glEvalMesh1(*(GLenum *) (pc + 0), *(GLint *) (pc + 4), *(GLint *) (pc + 8));
 }
 
 void
 __glXDisp_EvalPoint1(GLbyte * pc)
 {
-    CALL_EvalPoint1(GET_DISPATCH(), (*(GLint *) (pc + 0)
-                    ));
+    glEvalPoint1(*(GLint *) (pc + 0));
 }
 
 void
 __glXDisp_EvalMesh2(GLbyte * pc)
 {
-    CALL_EvalMesh2(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                    *(GLint *) (pc + 4),
-                                    *(GLint *) (pc + 8),
-                                    *(GLint *) (pc + 12), *(GLint *) (pc + 16)
-                   ));
+    glEvalMesh2(*(GLenum *) (pc + 0),
+                *(GLint *) (pc + 4),
+                *(GLint *) (pc + 8),
+                *(GLint *) (pc + 12), *(GLint *) (pc + 16));
 }
 
 void
 __glXDisp_EvalPoint2(GLbyte * pc)
 {
-    CALL_EvalPoint2(GET_DISPATCH(), (*(GLint *) (pc + 0), *(GLint *) (pc + 4)
-                    ));
+    glEvalPoint2(*(GLint *) (pc + 0), *(GLint *) (pc + 4));
 }
 
 void
 __glXDisp_AlphaFunc(GLbyte * pc)
 {
-    CALL_AlphaFunc(GET_DISPATCH(), (*(GLenum *) (pc + 0), *(GLclampf *) (pc + 4)
-                   ));
+    glAlphaFunc(*(GLenum *) (pc + 0), *(GLclampf *) (pc + 4));
 }
 
 void
 __glXDisp_BlendFunc(GLbyte * pc)
 {
-    CALL_BlendFunc(GET_DISPATCH(), (*(GLenum *) (pc + 0), *(GLenum *) (pc + 4)
-                   ));
+    glBlendFunc(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4));
 }
 
 void
 __glXDisp_LogicOp(GLbyte * pc)
 {
-    CALL_LogicOp(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                 ));
+    glLogicOp(*(GLenum *) (pc + 0));
 }
 
 void
 __glXDisp_StencilFunc(GLbyte * pc)
 {
-    CALL_StencilFunc(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                      *(GLint *) (pc + 4), *(GLuint *) (pc + 8)
-                     ));
+    glStencilFunc(*(GLenum *) (pc + 0),
+                  *(GLint *) (pc + 4), *(GLuint *) (pc + 8));
 }
 
 void
 __glXDisp_StencilOp(GLbyte * pc)
 {
-    CALL_StencilOp(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                    *(GLenum *) (pc + 4), *(GLenum *) (pc + 8)
-                   ));
+    glStencilOp(*(GLenum *) (pc + 0),
+                *(GLenum *) (pc + 4), *(GLenum *) (pc + 8));
 }
 
 void
 __glXDisp_DepthFunc(GLbyte * pc)
 {
-    CALL_DepthFunc(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                   ));
+    glDepthFunc(*(GLenum *) (pc + 0));
 }
 
 void
 __glXDisp_PixelZoom(GLbyte * pc)
 {
-    CALL_PixelZoom(GET_DISPATCH(), (*(GLfloat *) (pc + 0), *(GLfloat *) (pc + 4)
-                   ));
+    glPixelZoom(*(GLfloat *) (pc + 0), *(GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_PixelTransferf(GLbyte * pc)
 {
-    CALL_PixelTransferf(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                         *(GLfloat *) (pc + 4)
-                        ));
+    glPixelTransferf(*(GLenum *) (pc + 0), *(GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_PixelTransferi(GLbyte * pc)
 {
-    CALL_PixelTransferi(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                         *(GLint *) (pc + 4)
-                        ));
+    glPixelTransferi(*(GLenum *) (pc + 0), *(GLint *) (pc + 4));
 }
 
 int
@@ -1612,9 +1421,7 @@ __glXDisp_PixelStoref(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        CALL_PixelStoref(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                          *(GLfloat *) (pc + 4)
-                         ));
+        glPixelStoref(*(GLenum *) (pc + 0), *(GLfloat *) (pc + 4));
         error = Success;
     }
 
@@ -1630,9 +1437,7 @@ __glXDisp_PixelStorei(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        CALL_PixelStorei(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                          *(GLint *) (pc + 4)
-                         ));
+        glPixelStorei(*(GLenum *) (pc + 0), *(GLint *) (pc + 4));
         error = Success;
     }
 
@@ -1644,9 +1449,7 @@ __glXDisp_PixelMapfv(GLbyte * pc)
 {
     const GLsizei mapsize = *(GLsizei *) (pc + 4);
 
-    CALL_PixelMapfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                     mapsize, (const GLfloat *) (pc + 8)
-                    ));
+    glPixelMapfv(*(GLenum *) (pc + 0), mapsize, (const GLfloat *) (pc + 8));
 }
 
 void
@@ -1654,9 +1457,7 @@ __glXDisp_PixelMapuiv(GLbyte * pc)
 {
     const GLsizei mapsize = *(GLsizei *) (pc + 4);
 
-    CALL_PixelMapuiv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                      mapsize, (const GLuint *) (pc + 8)
-                     ));
+    glPixelMapuiv(*(GLenum *) (pc + 0), mapsize, (const GLuint *) (pc + 8));
 }
 
 void
@@ -1664,27 +1465,22 @@ __glXDisp_PixelMapusv(GLbyte * pc)
 {
     const GLsizei mapsize = *(GLsizei *) (pc + 4);
 
-    CALL_PixelMapusv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                      mapsize, (const GLushort *) (pc + 8)
-                     ));
+    glPixelMapusv(*(GLenum *) (pc + 0), mapsize, (const GLushort *) (pc + 8));
 }
 
 void
 __glXDisp_ReadBuffer(GLbyte * pc)
 {
-    CALL_ReadBuffer(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                    ));
+    glReadBuffer(*(GLenum *) (pc + 0));
 }
 
 void
 __glXDisp_CopyPixels(GLbyte * pc)
 {
-    CALL_CopyPixels(GET_DISPATCH(), (*(GLint *) (pc + 0),
-                                     *(GLint *) (pc + 4),
-                                     *(GLsizei *) (pc + 8),
-                                     *(GLsizei *) (pc + 12),
-                                     *(GLenum *) (pc + 16)
-                    ));
+    glCopyPixels(*(GLint *) (pc + 0),
+                 *(GLint *) (pc + 4),
+                 *(GLsizei *) (pc + 8),
+                 *(GLsizei *) (pc + 12), *(GLenum *) (pc + 16));
 }
 
 void
@@ -1693,21 +1489,16 @@ __glXDisp_DrawPixels(GLbyte * pc)
     const GLvoid *const pixels = (const GLvoid *) ((pc + 36));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
 
-    CALL_DrawPixels(GET_DISPATCH(), (*(GLsizei *) (pc + 20),
-                                     *(GLsizei *) (pc + 24),
-                                     *(GLenum *) (pc + 28),
-                                     *(GLenum *) (pc + 32), pixels));
+    glDrawPixels(*(GLsizei *) (pc + 20),
+                 *(GLsizei *) (pc + 24),
+                 *(GLenum *) (pc + 28), *(GLenum *) (pc + 32), pixels);
 }
 
 int
@@ -1731,7 +1522,7 @@ __glXDisp_GetBooleanv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetBooleanv(GET_DISPATCH(), (pname, params));
+        glGetBooleanv(pname, params);
         __glXSendReply(cl->client, params, compsize, 1, GL_FALSE, 0);
         error = Success;
     }
@@ -1750,7 +1541,7 @@ __glXDisp_GetClipPlane(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLdouble equation[4];
 
-        CALL_GetClipPlane(GET_DISPATCH(), (*(GLenum *) (pc + 0), equation));
+        glGetClipPlane(*(GLenum *) (pc + 0), equation);
         __glXSendReply(cl->client, equation, 4, 8, GL_TRUE, 0);
         error = Success;
     }
@@ -1779,7 +1570,7 @@ __glXDisp_GetDoublev(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetDoublev(GET_DISPATCH(), (pname, params));
+        glGetDoublev(pname, params);
         __glXSendReply(cl->client, params, compsize, 8, GL_FALSE, 0);
         error = Success;
     }
@@ -1798,7 +1589,7 @@ __glXDisp_GetError(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLenum retval;
 
-        retval = CALL_GetError(GET_DISPATCH(), ());
+        retval = glGetError();
         __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -1827,7 +1618,7 @@ __glXDisp_GetFloatv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetFloatv(GET_DISPATCH(), (pname, params));
+        glGetFloatv(pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -1856,7 +1647,7 @@ __glXDisp_GetIntegerv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetIntegerv(GET_DISPATCH(), (pname, params));
+        glGetIntegerv(pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -1885,7 +1676,7 @@ __glXDisp_GetLightfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetLightfv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+        glGetLightfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -1914,7 +1705,7 @@ __glXDisp_GetLightiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetLightiv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+        glGetLightiv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -1944,7 +1735,7 @@ __glXDisp_GetMapdv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMapdv(GET_DISPATCH(), (target, query, v));
+        glGetMapdv(target, query, v);
         __glXSendReply(cl->client, v, compsize, 8, GL_FALSE, 0);
         error = Success;
     }
@@ -1974,7 +1765,7 @@ __glXDisp_GetMapfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMapfv(GET_DISPATCH(), (target, query, v));
+        glGetMapfv(target, query, v);
         __glXSendReply(cl->client, v, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2004,7 +1795,7 @@ __glXDisp_GetMapiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMapiv(GET_DISPATCH(), (target, query, v));
+        glGetMapiv(target, query, v);
         __glXSendReply(cl->client, v, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2033,8 +1824,7 @@ __glXDisp_GetMaterialfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMaterialfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                            pname, params));
+        glGetMaterialfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2063,8 +1853,7 @@ __glXDisp_GetMaterialiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMaterialiv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                            pname, params));
+        glGetMaterialiv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2093,7 +1882,7 @@ __glXDisp_GetPixelMapfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetPixelMapfv(GET_DISPATCH(), (map, values));
+        glGetPixelMapfv(map, values);
         __glXSendReply(cl->client, values, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2122,7 +1911,7 @@ __glXDisp_GetPixelMapuiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetPixelMapuiv(GET_DISPATCH(), (map, values));
+        glGetPixelMapuiv(map, values);
         __glXSendReply(cl->client, values, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2151,7 +1940,7 @@ __glXDisp_GetPixelMapusv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetPixelMapusv(GET_DISPATCH(), (map, values));
+        glGetPixelMapusv(map, values);
         __glXSendReply(cl->client, values, compsize, 2, GL_FALSE, 0);
         error = Success;
     }
@@ -2180,7 +1969,7 @@ __glXDisp_GetTexEnvfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexEnvfv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+        glGetTexEnvfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2209,7 +1998,7 @@ __glXDisp_GetTexEnviv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexEnviv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+        glGetTexEnviv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2238,7 +2027,7 @@ __glXDisp_GetTexGendv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexGendv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+        glGetTexGendv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 8, GL_FALSE, 0);
         error = Success;
     }
@@ -2267,7 +2056,7 @@ __glXDisp_GetTexGenfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexGenfv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+        glGetTexGenfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2296,7 +2085,7 @@ __glXDisp_GetTexGeniv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexGeniv(GET_DISPATCH(), (*(GLenum *) (pc + 0), pname, params));
+        glGetTexGeniv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2325,8 +2114,7 @@ __glXDisp_GetTexParameterfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                pname, params));
+        glGetTexParameterfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2355,8 +2143,7 @@ __glXDisp_GetTexParameteriv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                pname, params));
+        glGetTexParameteriv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2385,9 +2172,8 @@ __glXDisp_GetTexLevelParameterfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexLevelParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                     *(GLint *) (pc + 4),
-                                                     pname, params));
+        glGetTexLevelParameterfv(*(GLenum *) (pc + 0),
+                                 *(GLint *) (pc + 4), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2416,9 +2202,8 @@ __glXDisp_GetTexLevelParameteriv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexLevelParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                     *(GLint *) (pc + 4),
-                                                     pname, params));
+        glGetTexLevelParameteriv(*(GLenum *) (pc + 0),
+                                 *(GLint *) (pc + 4), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -2437,8 +2222,7 @@ __glXDisp_IsEnabled(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = CALL_IsEnabled(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                                ));
+        retval = glIsEnabled(*(GLenum *) (pc + 0));
         __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -2457,8 +2241,7 @@ __glXDisp_IsList(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = CALL_IsList(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                             ));
+        retval = glIsList(*(GLuint *) (pc + 0));
         __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -2476,9 +2259,7 @@ __glXDisp_DepthRange(GLbyte * pc)
     }
 #endif
 
-    CALL_DepthRange(GET_DISPATCH(), (*(GLclampd *) (pc + 0),
-                                     *(GLclampd *) (pc + 8)
-                    ));
+    glDepthRange(*(GLclampd *) (pc + 0), *(GLclampd *) (pc + 8));
 }
 
 void
@@ -2491,26 +2272,23 @@ __glXDisp_Frustum(GLbyte * pc)
     }
 #endif
 
-    CALL_Frustum(GET_DISPATCH(), (*(GLdouble *) (pc + 0),
-                                  *(GLdouble *) (pc + 8),
-                                  *(GLdouble *) (pc + 16),
-                                  *(GLdouble *) (pc + 24),
-                                  *(GLdouble *) (pc + 32),
-                                  *(GLdouble *) (pc + 40)
-                 ));
+    glFrustum(*(GLdouble *) (pc + 0),
+              *(GLdouble *) (pc + 8),
+              *(GLdouble *) (pc + 16),
+              *(GLdouble *) (pc + 24),
+              *(GLdouble *) (pc + 32), *(GLdouble *) (pc + 40));
 }
 
 void
 __glXDisp_LoadIdentity(GLbyte * pc)
 {
-    CALL_LoadIdentity(GET_DISPATCH(), ());
+    glLoadIdentity();
 }
 
 void
 __glXDisp_LoadMatrixf(GLbyte * pc)
 {
-    CALL_LoadMatrixf(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                     ));
+    glLoadMatrixf((const GLfloat *) (pc + 0));
 }
 
 void
@@ -2523,22 +2301,19 @@ __glXDisp_LoadMatrixd(GLbyte * pc)
     }
 #endif
 
-    CALL_LoadMatrixd(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                     ));
+    glLoadMatrixd((const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_MatrixMode(GLbyte * pc)
 {
-    CALL_MatrixMode(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                    ));
+    glMatrixMode(*(GLenum *) (pc + 0));
 }
 
 void
 __glXDisp_MultMatrixf(GLbyte * pc)
 {
-    CALL_MultMatrixf(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                     ));
+    glMultMatrixf((const GLfloat *) (pc + 0));
 }
 
 void
@@ -2551,8 +2326,7 @@ __glXDisp_MultMatrixd(GLbyte * pc)
     }
 #endif
 
-    CALL_MultMatrixd(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                     ));
+    glMultMatrixd((const GLdouble *) (pc + 0));
 }
 
 void
@@ -2565,24 +2339,23 @@ __glXDisp_Ortho(GLbyte * pc)
     }
 #endif
 
-    CALL_Ortho(GET_DISPATCH(), (*(GLdouble *) (pc + 0),
-                                *(GLdouble *) (pc + 8),
-                                *(GLdouble *) (pc + 16),
-                                *(GLdouble *) (pc + 24),
-                                *(GLdouble *) (pc + 32), *(GLdouble *) (pc + 40)
-               ));
+    glOrtho(*(GLdouble *) (pc + 0),
+            *(GLdouble *) (pc + 8),
+            *(GLdouble *) (pc + 16),
+            *(GLdouble *) (pc + 24),
+            *(GLdouble *) (pc + 32), *(GLdouble *) (pc + 40));
 }
 
 void
 __glXDisp_PopMatrix(GLbyte * pc)
 {
-    CALL_PopMatrix(GET_DISPATCH(), ());
+    glPopMatrix();
 }
 
 void
 __glXDisp_PushMatrix(GLbyte * pc)
 {
-    CALL_PushMatrix(GET_DISPATCH(), ());
+    glPushMatrix();
 }
 
 void
@@ -2595,20 +2368,17 @@ __glXDisp_Rotated(GLbyte * pc)
     }
 #endif
 
-    CALL_Rotated(GET_DISPATCH(), (*(GLdouble *) (pc + 0),
-                                  *(GLdouble *) (pc + 8),
-                                  *(GLdouble *) (pc + 16),
-                                  *(GLdouble *) (pc + 24)
-                 ));
+    glRotated(*(GLdouble *) (pc + 0),
+              *(GLdouble *) (pc + 8),
+              *(GLdouble *) (pc + 16), *(GLdouble *) (pc + 24));
 }
 
 void
 __glXDisp_Rotatef(GLbyte * pc)
 {
-    CALL_Rotatef(GET_DISPATCH(), (*(GLfloat *) (pc + 0),
-                                  *(GLfloat *) (pc + 4),
-                                  *(GLfloat *) (pc + 8), *(GLfloat *) (pc + 12)
-                 ));
+    glRotatef(*(GLfloat *) (pc + 0),
+              *(GLfloat *) (pc + 4),
+              *(GLfloat *) (pc + 8), *(GLfloat *) (pc + 12));
 }
 
 void
@@ -2621,17 +2391,15 @@ __glXDisp_Scaled(GLbyte * pc)
     }
 #endif
 
-    CALL_Scaled(GET_DISPATCH(), (*(GLdouble *) (pc + 0),
-                                 *(GLdouble *) (pc + 8), *(GLdouble *) (pc + 16)
-                ));
+    glScaled(*(GLdouble *) (pc + 0),
+             *(GLdouble *) (pc + 8), *(GLdouble *) (pc + 16));
 }
 
 void
 __glXDisp_Scalef(GLbyte * pc)
 {
-    CALL_Scalef(GET_DISPATCH(), (*(GLfloat *) (pc + 0),
-                                 *(GLfloat *) (pc + 4), *(GLfloat *) (pc + 8)
-                ));
+    glScalef(*(GLfloat *) (pc + 0),
+             *(GLfloat *) (pc + 4), *(GLfloat *) (pc + 8));
 }
 
 void
@@ -2644,50 +2412,41 @@ __glXDisp_Translated(GLbyte * pc)
     }
 #endif
 
-    CALL_Translated(GET_DISPATCH(), (*(GLdouble *) (pc + 0),
-                                     *(GLdouble *) (pc + 8),
-                                     *(GLdouble *) (pc + 16)
-                    ));
+    glTranslated(*(GLdouble *) (pc + 0),
+                 *(GLdouble *) (pc + 8), *(GLdouble *) (pc + 16));
 }
 
 void
 __glXDisp_Translatef(GLbyte * pc)
 {
-    CALL_Translatef(GET_DISPATCH(), (*(GLfloat *) (pc + 0),
-                                     *(GLfloat *) (pc + 4),
-                                     *(GLfloat *) (pc + 8)
-                    ));
+    glTranslatef(*(GLfloat *) (pc + 0),
+                 *(GLfloat *) (pc + 4), *(GLfloat *) (pc + 8));
 }
 
 void
 __glXDisp_Viewport(GLbyte * pc)
 {
-    CALL_Viewport(GET_DISPATCH(), (*(GLint *) (pc + 0),
-                                   *(GLint *) (pc + 4),
-                                   *(GLsizei *) (pc + 8), *(GLsizei *) (pc + 12)
-                  ));
+    glViewport(*(GLint *) (pc + 0),
+               *(GLint *) (pc + 4),
+               *(GLsizei *) (pc + 8), *(GLsizei *) (pc + 12));
 }
 
 void
 __glXDisp_BindTexture(GLbyte * pc)
 {
-    CALL_BindTexture(GET_DISPATCH(), (*(GLenum *) (pc + 0), *(GLuint *) (pc + 4)
-                     ));
+    glBindTexture(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
 }
 
 void
 __glXDisp_Indexubv(GLbyte * pc)
 {
-    CALL_Indexubv(GET_DISPATCH(), ((const GLubyte *) (pc + 0)
-                  ));
+    glIndexubv((const GLubyte *) (pc + 0));
 }
 
 void
 __glXDisp_PolygonOffset(GLbyte * pc)
 {
-    CALL_PolygonOffset(GET_DISPATCH(), (*(GLfloat *) (pc + 0),
-                                        *(GLfloat *) (pc + 4)
-                       ));
+    glPolygonOffset(*(GLfloat *) (pc + 0), *(GLfloat *) (pc + 4));
 }
 
 int
@@ -2706,9 +2465,7 @@ __glXDisp_AreTexturesResident(__GLXclientState * cl, GLbyte * pc)
         GLboolean *residences =
             __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
         retval =
-            CALL_AreTexturesResident(GET_DISPATCH(),
-                                     (n, (const GLuint *) (pc + 4),
-                                      residences));
+            glAreTexturesResident(n, (const GLuint *) (pc + 4), residences);
         __glXSendReply(cl->client, residences, n, 1, GL_TRUE, retval);
         error = Success;
     }
@@ -2732,9 +2489,7 @@ __glXDisp_AreTexturesResidentEXT(__GLXclientState * cl, GLbyte * pc)
         GLboolean *residences =
             __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
         retval =
-            CALL_AreTexturesResident(GET_DISPATCH(),
-                                     (n, (const GLuint *) (pc + 4),
-                                      residences));
+            glAreTexturesResident(n, (const GLuint *) (pc + 4), residences);
         __glXSendReply(cl->client, residences, n, 1, GL_TRUE, retval);
         error = Success;
     }
@@ -2745,54 +2500,46 @@ __glXDisp_AreTexturesResidentEXT(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDisp_CopyTexImage1D(GLbyte * pc)
 {
-    CALL_CopyTexImage1D(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                         *(GLint *) (pc + 4),
-                                         *(GLenum *) (pc + 8),
-                                         *(GLint *) (pc + 12),
-                                         *(GLint *) (pc + 16),
-                                         *(GLsizei *) (pc + 20),
-                                         *(GLint *) (pc + 24)
-                        ));
+    glCopyTexImage1D(*(GLenum *) (pc + 0),
+                     *(GLint *) (pc + 4),
+                     *(GLenum *) (pc + 8),
+                     *(GLint *) (pc + 12),
+                     *(GLint *) (pc + 16),
+                     *(GLsizei *) (pc + 20), *(GLint *) (pc + 24));
 }
 
 void
 __glXDisp_CopyTexImage2D(GLbyte * pc)
 {
-    CALL_CopyTexImage2D(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                         *(GLint *) (pc + 4),
-                                         *(GLenum *) (pc + 8),
-                                         *(GLint *) (pc + 12),
-                                         *(GLint *) (pc + 16),
-                                         *(GLsizei *) (pc + 20),
-                                         *(GLsizei *) (pc + 24),
-                                         *(GLint *) (pc + 28)
-                        ));
+    glCopyTexImage2D(*(GLenum *) (pc + 0),
+                     *(GLint *) (pc + 4),
+                     *(GLenum *) (pc + 8),
+                     *(GLint *) (pc + 12),
+                     *(GLint *) (pc + 16),
+                     *(GLsizei *) (pc + 20),
+                     *(GLsizei *) (pc + 24), *(GLint *) (pc + 28));
 }
 
 void
 __glXDisp_CopyTexSubImage1D(GLbyte * pc)
 {
-    CALL_CopyTexSubImage1D(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                            *(GLint *) (pc + 4),
-                                            *(GLint *) (pc + 8),
-                                            *(GLint *) (pc + 12),
-                                            *(GLint *) (pc + 16),
-                                            *(GLsizei *) (pc + 20)
-                           ));
+    glCopyTexSubImage1D(*(GLenum *) (pc + 0),
+                        *(GLint *) (pc + 4),
+                        *(GLint *) (pc + 8),
+                        *(GLint *) (pc + 12),
+                        *(GLint *) (pc + 16), *(GLsizei *) (pc + 20));
 }
 
 void
 __glXDisp_CopyTexSubImage2D(GLbyte * pc)
 {
-    CALL_CopyTexSubImage2D(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                            *(GLint *) (pc + 4),
-                                            *(GLint *) (pc + 8),
-                                            *(GLint *) (pc + 12),
-                                            *(GLint *) (pc + 16),
-                                            *(GLint *) (pc + 20),
-                                            *(GLsizei *) (pc + 24),
-                                            *(GLsizei *) (pc + 28)
-                           ));
+    glCopyTexSubImage2D(*(GLenum *) (pc + 0),
+                        *(GLint *) (pc + 4),
+                        *(GLint *) (pc + 8),
+                        *(GLint *) (pc + 12),
+                        *(GLint *) (pc + 16),
+                        *(GLint *) (pc + 20),
+                        *(GLsizei *) (pc + 24), *(GLsizei *) (pc + 28));
 }
 
 int
@@ -2806,8 +2553,7 @@ __glXDisp_DeleteTextures(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         const GLsizei n = *(GLsizei *) (pc + 0);
 
-        CALL_DeleteTextures(GET_DISPATCH(), (n, (const GLuint *) (pc + 4)
-                            ));
+        glDeleteTextures(n, (const GLuint *) (pc + 4));
         error = Success;
     }
 
@@ -2825,8 +2571,7 @@ __glXDisp_DeleteTexturesEXT(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         const GLsizei n = *(GLsizei *) (pc + 0);
 
-        CALL_DeleteTextures(GET_DISPATCH(), (n, (const GLuint *) (pc + 4)
-                            ));
+        glDeleteTextures(n, (const GLuint *) (pc + 4));
         error = Success;
     }
 
@@ -2848,7 +2593,7 @@ __glXDisp_GenTextures(__GLXclientState * cl, GLbyte * pc)
         GLuint *textures =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        CALL_GenTextures(GET_DISPATCH(), (n, textures));
+        glGenTextures(n, textures);
         __glXSendReply(cl->client, textures, n, 4, GL_TRUE, 0);
         error = Success;
     }
@@ -2871,7 +2616,7 @@ __glXDisp_GenTexturesEXT(__GLXclientState * cl, GLbyte * pc)
         GLuint *textures =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        CALL_GenTextures(GET_DISPATCH(), (n, textures));
+        glGenTextures(n, textures);
         __glXSendReply(cl->client, textures, n, 4, GL_TRUE, 0);
         error = Success;
     }
@@ -2890,8 +2635,7 @@ __glXDisp_IsTexture(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = CALL_IsTexture(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                                ));
+        retval = glIsTexture(*(GLuint *) (pc + 0));
         __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -2910,8 +2654,7 @@ __glXDisp_IsTextureEXT(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = CALL_IsTexture(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                                ));
+        retval = glIsTexture(*(GLuint *) (pc + 0));
         __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -2924,10 +2667,9 @@ __glXDisp_PrioritizeTextures(GLbyte * pc)
 {
     const GLsizei n = *(GLsizei *) (pc + 0);
 
-    CALL_PrioritizeTextures(GET_DISPATCH(), (n,
-                                             (const GLuint *) (pc + 4),
-                                             (const GLclampf *) (pc + 4)
-                            ));
+    glPrioritizeTextures(n,
+                         (const GLuint *) (pc + 4),
+                         (const GLclampf *) (pc + 4));
 }
 
 void
@@ -2936,23 +2678,18 @@ __glXDisp_TexSubImage1D(GLbyte * pc)
     const GLvoid *const pixels = (const GLvoid *) ((pc + 56));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
 
-    CALL_TexSubImage1D(GET_DISPATCH(), (*(GLenum *) (pc + 20),
-                                        *(GLint *) (pc + 24),
-                                        *(GLint *) (pc + 28),
-                                        *(GLsizei *) (pc + 36),
-                                        *(GLenum *) (pc + 44),
-                                        *(GLenum *) (pc + 48), pixels));
+    glTexSubImage1D(*(GLenum *) (pc + 20),
+                    *(GLint *) (pc + 24),
+                    *(GLint *) (pc + 28),
+                    *(GLsizei *) (pc + 36),
+                    *(GLenum *) (pc + 44), *(GLenum *) (pc + 48), pixels);
 }
 
 void
@@ -2961,42 +2698,34 @@ __glXDisp_TexSubImage2D(GLbyte * pc)
     const GLvoid *const pixels = (const GLvoid *) ((pc + 56));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
 
-    CALL_TexSubImage2D(GET_DISPATCH(), (*(GLenum *) (pc + 20),
-                                        *(GLint *) (pc + 24),
-                                        *(GLint *) (pc + 28),
-                                        *(GLint *) (pc + 32),
-                                        *(GLsizei *) (pc + 36),
-                                        *(GLsizei *) (pc + 40),
-                                        *(GLenum *) (pc + 44),
-                                        *(GLenum *) (pc + 48), pixels));
+    glTexSubImage2D(*(GLenum *) (pc + 20),
+                    *(GLint *) (pc + 24),
+                    *(GLint *) (pc + 28),
+                    *(GLint *) (pc + 32),
+                    *(GLsizei *) (pc + 36),
+                    *(GLsizei *) (pc + 40),
+                    *(GLenum *) (pc + 44), *(GLenum *) (pc + 48), pixels);
 }
 
 void
 __glXDisp_BlendColor(GLbyte * pc)
 {
-    CALL_BlendColor(GET_DISPATCH(), (*(GLclampf *) (pc + 0),
-                                     *(GLclampf *) (pc + 4),
-                                     *(GLclampf *) (pc + 8),
-                                     *(GLclampf *) (pc + 12)
-                    ));
+    glBlendColor(*(GLclampf *) (pc + 0),
+                 *(GLclampf *) (pc + 4),
+                 *(GLclampf *) (pc + 8), *(GLclampf *) (pc + 12));
 }
 
 void
 __glXDisp_BlendEquation(GLbyte * pc)
 {
-    CALL_BlendEquation(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                       ));
+    glBlendEquation(*(GLenum *) (pc + 0));
 }
 
 void
@@ -3005,22 +2734,17 @@ __glXDisp_ColorTable(GLbyte * pc)
     const GLvoid *const table = (const GLvoid *) ((pc + 40));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
 
-    CALL_ColorTable(GET_DISPATCH(), (*(GLenum *) (pc + 20),
-                                     *(GLenum *) (pc + 24),
-                                     *(GLsizei *) (pc + 28),
-                                     *(GLenum *) (pc + 32),
-                                     *(GLenum *) (pc + 36), table));
+    glColorTable(*(GLenum *) (pc + 20),
+                 *(GLenum *) (pc + 24),
+                 *(GLsizei *) (pc + 28),
+                 *(GLenum *) (pc + 32), *(GLenum *) (pc + 36), table);
 }
 
 void
@@ -3031,8 +2755,7 @@ __glXDisp_ColorTableParameterfv(GLbyte * pc)
 
     params = (const GLfloat *) (pc + 8);
 
-    CALL_ColorTableParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                pname, params));
+    glColorTableParameterfv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
@@ -3043,19 +2766,16 @@ __glXDisp_ColorTableParameteriv(GLbyte * pc)
 
     params = (const GLint *) (pc + 8);
 
-    CALL_ColorTableParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                pname, params));
+    glColorTableParameteriv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
 __glXDisp_CopyColorTable(GLbyte * pc)
 {
-    CALL_CopyColorTable(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                         *(GLenum *) (pc + 4),
-                                         *(GLint *) (pc + 8),
-                                         *(GLint *) (pc + 12),
-                                         *(GLsizei *) (pc + 16)
-                        ));
+    glCopyColorTable(*(GLenum *) (pc + 0),
+                     *(GLenum *) (pc + 4),
+                     *(GLint *) (pc + 8),
+                     *(GLint *) (pc + 12), *(GLsizei *) (pc + 16));
 }
 
 int
@@ -3079,8 +2799,7 @@ __glXDisp_GetColorTableParameterfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetColorTableParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                       pname, params));
+        glGetColorTableParameterfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3109,8 +2828,7 @@ __glXDisp_GetColorTableParameterfvSGI(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetColorTableParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                       pname, params));
+        glGetColorTableParameterfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3139,8 +2857,7 @@ __glXDisp_GetColorTableParameteriv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetColorTableParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                       pname, params));
+        glGetColorTableParameteriv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3169,8 +2886,7 @@ __glXDisp_GetColorTableParameterivSGI(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetColorTableParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                       pname, params));
+        glGetColorTableParameteriv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3184,33 +2900,26 @@ __glXDisp_ColorSubTable(GLbyte * pc)
     const GLvoid *const data = (const GLvoid *) ((pc + 40));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
 
-    CALL_ColorSubTable(GET_DISPATCH(), (*(GLenum *) (pc + 20),
-                                        *(GLsizei *) (pc + 24),
-                                        *(GLsizei *) (pc + 28),
-                                        *(GLenum *) (pc + 32),
-                                        *(GLenum *) (pc + 36), data));
+    glColorSubTable(*(GLenum *) (pc + 20),
+                    *(GLsizei *) (pc + 24),
+                    *(GLsizei *) (pc + 28),
+                    *(GLenum *) (pc + 32), *(GLenum *) (pc + 36), data);
 }
 
 void
 __glXDisp_CopyColorSubTable(GLbyte * pc)
 {
-    CALL_CopyColorSubTable(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                            *(GLsizei *) (pc + 4),
-                                            *(GLint *) (pc + 8),
-                                            *(GLint *) (pc + 12),
-                                            *(GLsizei *) (pc + 16)
-                           ));
+    glCopyColorSubTable(*(GLenum *) (pc + 0),
+                        *(GLsizei *) (pc + 4),
+                        *(GLint *) (pc + 8),
+                        *(GLint *) (pc + 12), *(GLsizei *) (pc + 16));
 }
 
 void
@@ -3219,22 +2928,17 @@ __glXDisp_ConvolutionFilter1D(GLbyte * pc)
     const GLvoid *const image = (const GLvoid *) ((pc + 44));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
 
-    CALL_ConvolutionFilter1D(GET_DISPATCH(), (*(GLenum *) (pc + 20),
-                                              *(GLenum *) (pc + 24),
-                                              *(GLsizei *) (pc + 28),
-                                              *(GLenum *) (pc + 36),
-                                              *(GLenum *) (pc + 40), image));
+    glConvolutionFilter1D(*(GLenum *) (pc + 20),
+                          *(GLenum *) (pc + 24),
+                          *(GLsizei *) (pc + 28),
+                          *(GLenum *) (pc + 36), *(GLenum *) (pc + 40), image);
 }
 
 void
@@ -3243,32 +2947,25 @@ __glXDisp_ConvolutionFilter2D(GLbyte * pc)
     const GLvoid *const image = (const GLvoid *) ((pc + 44));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
 
-    CALL_ConvolutionFilter2D(GET_DISPATCH(), (*(GLenum *) (pc + 20),
-                                              *(GLenum *) (pc + 24),
-                                              *(GLsizei *) (pc + 28),
-                                              *(GLsizei *) (pc + 32),
-                                              *(GLenum *) (pc + 36),
-                                              *(GLenum *) (pc + 40), image));
+    glConvolutionFilter2D(*(GLenum *) (pc + 20),
+                          *(GLenum *) (pc + 24),
+                          *(GLsizei *) (pc + 28),
+                          *(GLsizei *) (pc + 32),
+                          *(GLenum *) (pc + 36), *(GLenum *) (pc + 40), image);
 }
 
 void
 __glXDisp_ConvolutionParameterf(GLbyte * pc)
 {
-    CALL_ConvolutionParameterf(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                *(GLenum *) (pc + 4),
-                                                *(GLfloat *) (pc + 8)
-                               ));
+    glConvolutionParameterf(*(GLenum *) (pc + 0),
+                            *(GLenum *) (pc + 4), *(GLfloat *) (pc + 8));
 }
 
 void
@@ -3279,17 +2976,14 @@ __glXDisp_ConvolutionParameterfv(GLbyte * pc)
 
     params = (const GLfloat *) (pc + 8);
 
-    CALL_ConvolutionParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                 pname, params));
+    glConvolutionParameterfv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
 __glXDisp_ConvolutionParameteri(GLbyte * pc)
 {
-    CALL_ConvolutionParameteri(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                *(GLenum *) (pc + 4),
-                                                *(GLint *) (pc + 8)
-                               ));
+    glConvolutionParameteri(*(GLenum *) (pc + 0),
+                            *(GLenum *) (pc + 4), *(GLint *) (pc + 8));
 }
 
 void
@@ -3300,31 +2994,26 @@ __glXDisp_ConvolutionParameteriv(GLbyte * pc)
 
     params = (const GLint *) (pc + 8);
 
-    CALL_ConvolutionParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                 pname, params));
+    glConvolutionParameteriv(*(GLenum *) (pc + 0), pname, params);
 }
 
 void
 __glXDisp_CopyConvolutionFilter1D(GLbyte * pc)
 {
-    CALL_CopyConvolutionFilter1D(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                  *(GLenum *) (pc + 4),
-                                                  *(GLint *) (pc + 8),
-                                                  *(GLint *) (pc + 12),
-                                                  *(GLsizei *) (pc + 16)
-                                 ));
+    glCopyConvolutionFilter1D(*(GLenum *) (pc + 0),
+                              *(GLenum *) (pc + 4),
+                              *(GLint *) (pc + 8),
+                              *(GLint *) (pc + 12), *(GLsizei *) (pc + 16));
 }
 
 void
 __glXDisp_CopyConvolutionFilter2D(GLbyte * pc)
 {
-    CALL_CopyConvolutionFilter2D(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                  *(GLenum *) (pc + 4),
-                                                  *(GLint *) (pc + 8),
-                                                  *(GLint *) (pc + 12),
-                                                  *(GLsizei *) (pc + 16),
-                                                  *(GLsizei *) (pc + 20)
-                                 ));
+    glCopyConvolutionFilter2D(*(GLenum *) (pc + 0),
+                              *(GLenum *) (pc + 4),
+                              *(GLint *) (pc + 8),
+                              *(GLint *) (pc + 12),
+                              *(GLsizei *) (pc + 16), *(GLsizei *) (pc + 20));
 }
 
 int
@@ -3348,8 +3037,7 @@ __glXDisp_GetConvolutionParameterfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetConvolutionParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                        pname, params));
+        glGetConvolutionParameterfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3378,8 +3066,7 @@ __glXDisp_GetConvolutionParameterfvEXT(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetConvolutionParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                        pname, params));
+        glGetConvolutionParameterfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3408,8 +3095,7 @@ __glXDisp_GetConvolutionParameteriv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetConvolutionParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                        pname, params));
+        glGetConvolutionParameteriv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3438,8 +3124,7 @@ __glXDisp_GetConvolutionParameterivEXT(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetConvolutionParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                        pname, params));
+        glGetConvolutionParameteriv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3468,8 +3153,7 @@ __glXDisp_GetHistogramParameterfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetHistogramParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                      pname, params));
+        glGetHistogramParameterfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3498,8 +3182,7 @@ __glXDisp_GetHistogramParameterfvEXT(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetHistogramParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                      pname, params));
+        glGetHistogramParameterfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3528,8 +3211,7 @@ __glXDisp_GetHistogramParameteriv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetHistogramParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                      pname, params));
+        glGetHistogramParameteriv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3558,8 +3240,7 @@ __glXDisp_GetHistogramParameterivEXT(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetHistogramParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                      pname, params));
+        glGetHistogramParameteriv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3588,8 +3269,7 @@ __glXDisp_GetMinmaxParameterfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMinmaxParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                   pname, params));
+        glGetMinmaxParameterfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3618,8 +3298,7 @@ __glXDisp_GetMinmaxParameterfvEXT(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMinmaxParameterfv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                   pname, params));
+        glGetMinmaxParameterfv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3648,8 +3327,7 @@ __glXDisp_GetMinmaxParameteriv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMinmaxParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                   pname, params));
+        glGetMinmaxParameteriv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3678,8 +3356,7 @@ __glXDisp_GetMinmaxParameterivEXT(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMinmaxParameteriv(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                   pname, params));
+        glGetMinmaxParameteriv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -3690,33 +3367,28 @@ __glXDisp_GetMinmaxParameterivEXT(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDisp_Histogram(GLbyte * pc)
 {
-    CALL_Histogram(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                    *(GLsizei *) (pc + 4),
-                                    *(GLenum *) (pc + 8),
-                                    *(GLboolean *) (pc + 12)
-                   ));
+    glHistogram(*(GLenum *) (pc + 0),
+                *(GLsizei *) (pc + 4),
+                *(GLenum *) (pc + 8), *(GLboolean *) (pc + 12));
 }
 
 void
 __glXDisp_Minmax(GLbyte * pc)
 {
-    CALL_Minmax(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                 *(GLenum *) (pc + 4), *(GLboolean *) (pc + 8)
-                ));
+    glMinmax(*(GLenum *) (pc + 0),
+             *(GLenum *) (pc + 4), *(GLboolean *) (pc + 8));
 }
 
 void
 __glXDisp_ResetHistogram(GLbyte * pc)
 {
-    CALL_ResetHistogram(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                        ));
+    glResetHistogram(*(GLenum *) (pc + 0));
 }
 
 void
 __glXDisp_ResetMinmax(GLbyte * pc)
 {
-    CALL_ResetMinmax(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                     ));
+    glResetMinmax(*(GLenum *) (pc + 0));
 }
 
 void
@@ -3727,30 +3399,23 @@ __glXDisp_TexImage3D(GLbyte * pc)
         (const GLvoid *) ((ptr_is_null != 0) ? NULL : (pc + 80));
     __GLXpixel3DHeader *const hdr = (__GLXpixel3DHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_IMAGE_HEIGHT, (GLint) hdr->imageHeight));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_IMAGES, (GLint) hdr->skipImages));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
-
-    CALL_TexImage3D(GET_DISPATCH(), (*(GLenum *) (pc + 36),
-                                     *(GLint *) (pc + 40),
-                                     *(GLint *) (pc + 44),
-                                     *(GLsizei *) (pc + 48),
-                                     *(GLsizei *) (pc + 52),
-                                     *(GLsizei *) (pc + 56),
-                                     *(GLint *) (pc + 64),
-                                     *(GLenum *) (pc + 68),
-                                     *(GLenum *) (pc + 72), pixels));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, (GLint) hdr->imageHeight);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_IMAGES, (GLint) hdr->skipImages);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
+
+    glTexImage3D(*(GLenum *) (pc + 36),
+                 *(GLint *) (pc + 40),
+                 *(GLint *) (pc + 44),
+                 *(GLsizei *) (pc + 48),
+                 *(GLsizei *) (pc + 52),
+                 *(GLsizei *) (pc + 56),
+                 *(GLint *) (pc + 64),
+                 *(GLenum *) (pc + 68), *(GLenum *) (pc + 72), pixels);
 }
 
 void
@@ -3759,57 +3424,47 @@ __glXDisp_TexSubImage3D(GLbyte * pc)
     const GLvoid *const pixels = (const GLvoid *) ((pc + 88));
     __GLXpixel3DHeader *const hdr = (__GLXpixel3DHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_IMAGE_HEIGHT, (GLint) hdr->imageHeight));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_IMAGES, (GLint) hdr->skipImages));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment));
-
-    CALL_TexSubImage3D(GET_DISPATCH(), (*(GLenum *) (pc + 36),
-                                        *(GLint *) (pc + 40),
-                                        *(GLint *) (pc + 44),
-                                        *(GLint *) (pc + 48),
-                                        *(GLint *) (pc + 52),
-                                        *(GLsizei *) (pc + 60),
-                                        *(GLsizei *) (pc + 64),
-                                        *(GLsizei *) (pc + 68),
-                                        *(GLenum *) (pc + 76),
-                                        *(GLenum *) (pc + 80), pixels));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) hdr->rowLength);
+    glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, (GLint) hdr->imageHeight);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_IMAGES, (GLint) hdr->skipImages);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, (GLint) hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) hdr->alignment);
+
+    glTexSubImage3D(*(GLenum *) (pc + 36),
+                    *(GLint *) (pc + 40),
+                    *(GLint *) (pc + 44),
+                    *(GLint *) (pc + 48),
+                    *(GLint *) (pc + 52),
+                    *(GLsizei *) (pc + 60),
+                    *(GLsizei *) (pc + 64),
+                    *(GLsizei *) (pc + 68),
+                    *(GLenum *) (pc + 76), *(GLenum *) (pc + 80), pixels);
 }
 
 void
 __glXDisp_CopyTexSubImage3D(GLbyte * pc)
 {
-    CALL_CopyTexSubImage3D(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                            *(GLint *) (pc + 4),
-                                            *(GLint *) (pc + 8),
-                                            *(GLint *) (pc + 12),
-                                            *(GLint *) (pc + 16),
-                                            *(GLint *) (pc + 20),
-                                            *(GLint *) (pc + 24),
-                                            *(GLsizei *) (pc + 28),
-                                            *(GLsizei *) (pc + 32)
-                           ));
+    glCopyTexSubImage3D(*(GLenum *) (pc + 0),
+                        *(GLint *) (pc + 4),
+                        *(GLint *) (pc + 8),
+                        *(GLint *) (pc + 12),
+                        *(GLint *) (pc + 16),
+                        *(GLint *) (pc + 20),
+                        *(GLint *) (pc + 24),
+                        *(GLsizei *) (pc + 28), *(GLsizei *) (pc + 32));
 }
 
 void
-__glXDisp_ActiveTextureARB(GLbyte * pc)
+__glXDisp_ActiveTexture(GLbyte * pc)
 {
-    CALL_ActiveTextureARB(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                          ));
+    glActiveTexture(*(GLenum *) (pc + 0));
 }
 
 void
-__glXDisp_MultiTexCoord1dvARB(GLbyte * pc)
+__glXDisp_MultiTexCoord1dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -3818,37 +3473,29 @@ __glXDisp_MultiTexCoord1dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_MultiTexCoord1dvARB(GET_DISPATCH(), (*(GLenum *) (pc + 8),
-                                              (const GLdouble *) (pc + 0)
-                             ));
+    glMultiTexCoord1dv(*(GLenum *) (pc + 8), (const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_MultiTexCoord1fvARB(GLbyte * pc)
 {
-    CALL_MultiTexCoord1fvARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              (const GLfloat *) (pc + 4)
-                             ));
+    glMultiTexCoord1fvARB(*(GLenum *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
-__glXDisp_MultiTexCoord1ivARB(GLbyte * pc)
+__glXDisp_MultiTexCoord1iv(GLbyte * pc)
 {
-    CALL_MultiTexCoord1ivARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              (const GLint *) (pc + 4)
-                             ));
+    glMultiTexCoord1iv(*(GLenum *) (pc + 0), (const GLint *) (pc + 4));
 }
 
 void
-__glXDisp_MultiTexCoord1svARB(GLbyte * pc)
+__glXDisp_MultiTexCoord1sv(GLbyte * pc)
 {
-    CALL_MultiTexCoord1svARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              (const GLshort *) (pc + 4)
-                             ));
+    glMultiTexCoord1sv(*(GLenum *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
-__glXDisp_MultiTexCoord2dvARB(GLbyte * pc)
+__glXDisp_MultiTexCoord2dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -3857,37 +3504,29 @@ __glXDisp_MultiTexCoord2dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_MultiTexCoord2dvARB(GET_DISPATCH(), (*(GLenum *) (pc + 16),
-                                              (const GLdouble *) (pc + 0)
-                             ));
+    glMultiTexCoord2dv(*(GLenum *) (pc + 16), (const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_MultiTexCoord2fvARB(GLbyte * pc)
 {
-    CALL_MultiTexCoord2fvARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              (const GLfloat *) (pc + 4)
-                             ));
+    glMultiTexCoord2fvARB(*(GLenum *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
-__glXDisp_MultiTexCoord2ivARB(GLbyte * pc)
+__glXDisp_MultiTexCoord2iv(GLbyte * pc)
 {
-    CALL_MultiTexCoord2ivARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              (const GLint *) (pc + 4)
-                             ));
+    glMultiTexCoord2iv(*(GLenum *) (pc + 0), (const GLint *) (pc + 4));
 }
 
 void
-__glXDisp_MultiTexCoord2svARB(GLbyte * pc)
+__glXDisp_MultiTexCoord2sv(GLbyte * pc)
 {
-    CALL_MultiTexCoord2svARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              (const GLshort *) (pc + 4)
-                             ));
+    glMultiTexCoord2sv(*(GLenum *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
-__glXDisp_MultiTexCoord3dvARB(GLbyte * pc)
+__glXDisp_MultiTexCoord3dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -3896,37 +3535,29 @@ __glXDisp_MultiTexCoord3dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_MultiTexCoord3dvARB(GET_DISPATCH(), (*(GLenum *) (pc + 24),
-                                              (const GLdouble *) (pc + 0)
-                             ));
+    glMultiTexCoord3dv(*(GLenum *) (pc + 24), (const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_MultiTexCoord3fvARB(GLbyte * pc)
 {
-    CALL_MultiTexCoord3fvARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              (const GLfloat *) (pc + 4)
-                             ));
+    glMultiTexCoord3fvARB(*(GLenum *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
-__glXDisp_MultiTexCoord3ivARB(GLbyte * pc)
+__glXDisp_MultiTexCoord3iv(GLbyte * pc)
 {
-    CALL_MultiTexCoord3ivARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              (const GLint *) (pc + 4)
-                             ));
+    glMultiTexCoord3iv(*(GLenum *) (pc + 0), (const GLint *) (pc + 4));
 }
 
 void
-__glXDisp_MultiTexCoord3svARB(GLbyte * pc)
+__glXDisp_MultiTexCoord3sv(GLbyte * pc)
 {
-    CALL_MultiTexCoord3svARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              (const GLshort *) (pc + 4)
-                             ));
+    glMultiTexCoord3sv(*(GLenum *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
-__glXDisp_MultiTexCoord4dvARB(GLbyte * pc)
+__glXDisp_MultiTexCoord4dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -3935,250 +3566,277 @@ __glXDisp_MultiTexCoord4dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_MultiTexCoord4dvARB(GET_DISPATCH(), (*(GLenum *) (pc + 32),
-                                              (const GLdouble *) (pc + 0)
-                             ));
+    glMultiTexCoord4dv(*(GLenum *) (pc + 32), (const GLdouble *) (pc + 0));
 }
 
 void
 __glXDisp_MultiTexCoord4fvARB(GLbyte * pc)
 {
-    CALL_MultiTexCoord4fvARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              (const GLfloat *) (pc + 4)
-                             ));
-}
-
-void
-__glXDisp_MultiTexCoord4ivARB(GLbyte * pc)
-{
-    CALL_MultiTexCoord4ivARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              (const GLint *) (pc + 4)
-                             ));
+    glMultiTexCoord4fvARB(*(GLenum *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
-__glXDisp_MultiTexCoord4svARB(GLbyte * pc)
+__glXDisp_MultiTexCoord4iv(GLbyte * pc)
 {
-    CALL_MultiTexCoord4svARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              (const GLshort *) (pc + 4)
-                             ));
+    glMultiTexCoord4iv(*(GLenum *) (pc + 0), (const GLint *) (pc + 4));
 }
 
 void
-__glXDisp_SampleCoverageARB(GLbyte * pc)
+__glXDisp_MultiTexCoord4sv(GLbyte * pc)
 {
-    CALL_SampleCoverageARB(GET_DISPATCH(), (*(GLclampf *) (pc + 0),
-                                            *(GLboolean *) (pc + 4)
-                           ));
+    glMultiTexCoord4sv(*(GLenum *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
-__glXDisp_CompressedTexImage1DARB(GLbyte * pc)
+__glXDisp_CompressedTexImage1D(GLbyte * pc)
 {
     const GLsizei imageSize = *(GLsizei *) (pc + 20);
 
-    CALL_CompressedTexImage1DARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                  *(GLint *) (pc + 4),
-                                                  *(GLenum *) (pc + 8),
-                                                  *(GLsizei *) (pc + 12),
-                                                  *(GLint *) (pc + 16),
-                                                  imageSize,
-                                                  (const GLvoid *) (pc + 24)
-                                 ));
+    glCompressedTexImage1D(*(GLenum *) (pc + 0),
+                           *(GLint *) (pc + 4),
+                           *(GLenum *) (pc + 8),
+                           *(GLsizei *) (pc + 12),
+                           *(GLint *) (pc + 16),
+                           imageSize, (const GLvoid *) (pc + 24));
 }
 
 void
-__glXDisp_CompressedTexImage2DARB(GLbyte * pc)
+__glXDisp_CompressedTexImage2D(GLbyte * pc)
 {
     const GLsizei imageSize = *(GLsizei *) (pc + 24);
 
-    CALL_CompressedTexImage2DARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                  *(GLint *) (pc + 4),
-                                                  *(GLenum *) (pc + 8),
-                                                  *(GLsizei *) (pc + 12),
-                                                  *(GLsizei *) (pc + 16),
-                                                  *(GLint *) (pc + 20),
-                                                  imageSize,
-                                                  (const GLvoid *) (pc + 28)
-                                 ));
+    glCompressedTexImage2D(*(GLenum *) (pc + 0),
+                           *(GLint *) (pc + 4),
+                           *(GLenum *) (pc + 8),
+                           *(GLsizei *) (pc + 12),
+                           *(GLsizei *) (pc + 16),
+                           *(GLint *) (pc + 20),
+                           imageSize, (const GLvoid *) (pc + 28));
 }
 
 void
-__glXDisp_CompressedTexImage3DARB(GLbyte * pc)
+__glXDisp_CompressedTexImage3D(GLbyte * pc)
 {
     const GLsizei imageSize = *(GLsizei *) (pc + 28);
 
-    CALL_CompressedTexImage3DARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                  *(GLint *) (pc + 4),
-                                                  *(GLenum *) (pc + 8),
-                                                  *(GLsizei *) (pc + 12),
-                                                  *(GLsizei *) (pc + 16),
-                                                  *(GLsizei *) (pc + 20),
-                                                  *(GLint *) (pc + 24),
-                                                  imageSize,
-                                                  (const GLvoid *) (pc + 32)
-                                 ));
+    glCompressedTexImage3D(*(GLenum *) (pc + 0),
+                           *(GLint *) (pc + 4),
+                           *(GLenum *) (pc + 8),
+                           *(GLsizei *) (pc + 12),
+                           *(GLsizei *) (pc + 16),
+                           *(GLsizei *) (pc + 20),
+                           *(GLint *) (pc + 24),
+                           imageSize, (const GLvoid *) (pc + 32));
 }
 
 void
-__glXDisp_CompressedTexSubImage1DARB(GLbyte * pc)
+__glXDisp_CompressedTexSubImage1D(GLbyte * pc)
 {
     const GLsizei imageSize = *(GLsizei *) (pc + 20);
 
-    CALL_CompressedTexSubImage1DARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                     *(GLint *) (pc + 4),
-                                                     *(GLint *) (pc + 8),
-                                                     *(GLsizei *) (pc + 12),
-                                                     *(GLenum *) (pc + 16),
-                                                     imageSize,
-                                                     (const GLvoid *) (pc + 24)
-                                    ));
+    glCompressedTexSubImage1D(*(GLenum *) (pc + 0),
+                              *(GLint *) (pc + 4),
+                              *(GLint *) (pc + 8),
+                              *(GLsizei *) (pc + 12),
+                              *(GLenum *) (pc + 16),
+                              imageSize, (const GLvoid *) (pc + 24));
 }
 
 void
-__glXDisp_CompressedTexSubImage2DARB(GLbyte * pc)
+__glXDisp_CompressedTexSubImage2D(GLbyte * pc)
 {
     const GLsizei imageSize = *(GLsizei *) (pc + 28);
 
-    CALL_CompressedTexSubImage2DARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                     *(GLint *) (pc + 4),
-                                                     *(GLint *) (pc + 8),
-                                                     *(GLint *) (pc + 12),
-                                                     *(GLsizei *) (pc + 16),
-                                                     *(GLsizei *) (pc + 20),
-                                                     *(GLenum *) (pc + 24),
-                                                     imageSize,
-                                                     (const GLvoid *) (pc + 32)
-                                    ));
+    glCompressedTexSubImage2D(*(GLenum *) (pc + 0),
+                              *(GLint *) (pc + 4),
+                              *(GLint *) (pc + 8),
+                              *(GLint *) (pc + 12),
+                              *(GLsizei *) (pc + 16),
+                              *(GLsizei *) (pc + 20),
+                              *(GLenum *) (pc + 24),
+                              imageSize, (const GLvoid *) (pc + 32));
 }
 
 void
-__glXDisp_CompressedTexSubImage3DARB(GLbyte * pc)
+__glXDisp_CompressedTexSubImage3D(GLbyte * pc)
 {
     const GLsizei imageSize = *(GLsizei *) (pc + 36);
 
-    CALL_CompressedTexSubImage3DARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                     *(GLint *) (pc + 4),
-                                                     *(GLint *) (pc + 8),
-                                                     *(GLint *) (pc + 12),
-                                                     *(GLint *) (pc + 16),
-                                                     *(GLsizei *) (pc + 20),
-                                                     *(GLsizei *) (pc + 24),
-                                                     *(GLsizei *) (pc + 28),
-                                                     *(GLenum *) (pc + 32),
-                                                     imageSize,
-                                                     (const GLvoid *) (pc + 40)
-                                    ));
+    glCompressedTexSubImage3D(*(GLenum *) (pc + 0),
+                              *(GLint *) (pc + 4),
+                              *(GLint *) (pc + 8),
+                              *(GLint *) (pc + 12),
+                              *(GLint *) (pc + 16),
+                              *(GLsizei *) (pc + 20),
+                              *(GLsizei *) (pc + 24),
+                              *(GLsizei *) (pc + 28),
+                              *(GLenum *) (pc + 32),
+                              imageSize, (const GLvoid *) (pc + 40));
 }
 
-int
-__glXDisp_GetProgramEnvParameterdvARB(__GLXclientState * cl, GLbyte * pc)
+void
+__glXDisp_SampleCoverage(GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
+    glSampleCoverage(*(GLclampf *) (pc + 0), *(GLboolean *) (pc + 4));
+}
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLdouble params[4];
+void
+__glXDisp_BlendFuncSeparate(GLbyte * pc)
+{
+    glBlendFuncSeparate(*(GLenum *) (pc + 0),
+                        *(GLenum *) (pc + 4),
+                        *(GLenum *) (pc + 8), *(GLenum *) (pc + 12));
+}
 
-        CALL_GetProgramEnvParameterdvARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                          *(GLuint *) (pc + 4),
-                                                          params));
-        __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0);
-        error = Success;
+void
+__glXDisp_FogCoorddv(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+    if ((unsigned long) (pc) & 7) {
+        (void) memmove(pc - 4, pc, 8);
+        pc -= 4;
     }
+#endif
 
-    return error;
+    glFogCoorddv((const GLdouble *) (pc + 0));
 }
 
-int
-__glXDisp_GetProgramEnvParameterfvARB(__GLXclientState * cl, GLbyte * pc)
+void
+__glXDisp_PointParameterf(GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
+    glPointParameterf(*(GLenum *) (pc + 0), *(GLfloat *) (pc + 4));
+}
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLfloat params[4];
+void
+__glXDisp_PointParameterfv(GLbyte * pc)
+{
+    const GLenum pname = *(GLenum *) (pc + 0);
+    const GLfloat *params;
 
-        CALL_GetProgramEnvParameterfvARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                          *(GLuint *) (pc + 4),
-                                                          params));
-        __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0);
-        error = Success;
-    }
+    params = (const GLfloat *) (pc + 4);
 
-    return error;
+    glPointParameterfv(pname, params);
 }
 
-int
-__glXDisp_GetProgramLocalParameterdvARB(__GLXclientState * cl, GLbyte * pc)
+void
+__glXDisp_PointParameteri(GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
+    glPointParameteri(*(GLenum *) (pc + 0), *(GLint *) (pc + 4));
+}
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLdouble params[4];
+void
+__glXDisp_PointParameteriv(GLbyte * pc)
+{
+    const GLenum pname = *(GLenum *) (pc + 0);
+    const GLint *params;
 
-        CALL_GetProgramLocalParameterdvARB(GET_DISPATCH(),
-                                           (*(GLenum *) (pc + 0),
-                                            *(GLuint *) (pc + 4), params));
-        __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0);
-        error = Success;
+    params = (const GLint *) (pc + 4);
+
+    glPointParameteriv(pname, params);
+}
+
+void
+__glXDisp_SecondaryColor3bv(GLbyte * pc)
+{
+    glSecondaryColor3bv((const GLbyte *) (pc + 0));
+}
+
+void
+__glXDisp_SecondaryColor3dv(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+    if ((unsigned long) (pc) & 7) {
+        (void) memmove(pc - 4, pc, 24);
+        pc -= 4;
     }
+#endif
 
-    return error;
+    glSecondaryColor3dv((const GLdouble *) (pc + 0));
+}
+
+void
+__glXDisp_SecondaryColor3iv(GLbyte * pc)
+{
+    glSecondaryColor3iv((const GLint *) (pc + 0));
+}
+
+void
+__glXDisp_SecondaryColor3sv(GLbyte * pc)
+{
+    glSecondaryColor3sv((const GLshort *) (pc + 0));
+}
+
+void
+__glXDisp_SecondaryColor3ubv(GLbyte * pc)
+{
+    glSecondaryColor3ubv((const GLubyte *) (pc + 0));
+}
+
+void
+__glXDisp_SecondaryColor3uiv(GLbyte * pc)
+{
+    glSecondaryColor3uiv((const GLuint *) (pc + 0));
+}
+
+void
+__glXDisp_SecondaryColor3usv(GLbyte * pc)
+{
+    glSecondaryColor3usv((const GLushort *) (pc + 0));
+}
+
+void
+__glXDisp_WindowPos3fv(GLbyte * pc)
+{
+    glWindowPos3fv((const GLfloat *) (pc + 0));
+}
+
+void
+__glXDisp_BeginQuery(GLbyte * pc)
+{
+    glBeginQuery(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
 }
 
 int
-__glXDisp_GetProgramLocalParameterfvARB(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_DeleteQueries(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
+    pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        GLfloat params[4];
+        const GLsizei n = *(GLsizei *) (pc + 0);
 
-        CALL_GetProgramLocalParameterfvARB(GET_DISPATCH(),
-                                           (*(GLenum *) (pc + 0),
-                                            *(GLuint *) (pc + 4), params));
-        __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0);
+        glDeleteQueries(n, (const GLuint *) (pc + 4));
         error = Success;
     }
 
     return error;
 }
 
+void
+__glXDisp_EndQuery(GLbyte * pc)
+{
+    glEndQuery(*(GLenum *) (pc + 0));
+}
+
 int
-__glXDisp_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_GenQueries(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
+    pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        const GLenum pname = *(GLenum *) (pc + 4);
-
-        const GLuint compsize = __glGetProgramivARB_size(pname);
-        GLint answerBuffer[200];
-        GLint *params =
-            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
-                                 sizeof(answerBuffer), 4);
-
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
+        const GLsizei n = *(GLsizei *) (pc + 0);
 
-        CALL_GetProgramivARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              pname, params));
-        __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+        GLuint answerBuffer[200];
+        GLuint *ids =
+            __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                 4);
+        glGenQueries(n, ids);
+        __glXSendReply(cl->client, ids, n, 4, GL_TRUE, 0);
         error = Success;
     }
 
@@ -4186,29 +3844,28 @@ __glXDisp_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDisp_GetVertexAttribdvARB(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_GetQueryObjectiv(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
+    pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
         const GLenum pname = *(GLenum *) (pc + 4);
 
-        const GLuint compsize = __glGetVertexAttribdvARB_size(pname);
-        GLdouble answerBuffer[200];
-        GLdouble *params =
-            __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer,
-                                 sizeof(answerBuffer), 8);
+        const GLuint compsize = __glGetQueryObjectiv_size(pname);
+        GLint answerBuffer[200];
+        GLint *params =
+            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
+                                 sizeof(answerBuffer), 4);
 
         if (params == NULL)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetVertexAttribdvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                                   pname, params));
-        __glXSendReply(cl->client, params, compsize, 8, GL_FALSE, 0);
+        glGetQueryObjectiv(*(GLuint *) (pc + 0), pname, params);
+        __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
 
@@ -4216,19 +3873,19 @@ __glXDisp_GetVertexAttribdvARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDisp_GetVertexAttribfvARB(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_GetQueryObjectuiv(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
+    pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
         const GLenum pname = *(GLenum *) (pc + 4);
 
-        const GLuint compsize = __glGetVertexAttribfvARB_size(pname);
-        GLfloat answerBuffer[200];
-        GLfloat *params =
+        const GLuint compsize = __glGetQueryObjectuiv_size(pname);
+        GLuint answerBuffer[200];
+        GLuint *params =
             __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
                                  sizeof(answerBuffer), 4);
 
@@ -4236,8 +3893,7 @@ __glXDisp_GetVertexAttribfvARB(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetVertexAttribfvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                                   pname, params));
+        glGetQueryObjectuiv(*(GLuint *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -4246,17 +3902,17 @@ __glXDisp_GetVertexAttribfvARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDisp_GetVertexAttribivARB(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_GetQueryiv(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
+    pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
         const GLenum pname = *(GLenum *) (pc + 4);
 
-        const GLuint compsize = __glGetVertexAttribivARB_size(pname);
+        const GLuint compsize = __glGetQueryiv_size(pname);
         GLint answerBuffer[200];
         GLint *params =
             __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
@@ -4266,8 +3922,7 @@ __glXDisp_GetVertexAttribivARB(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetVertexAttribivARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                                   pname, params));
+        glGetQueryiv(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -4275,70 +3930,41 @@ __glXDisp_GetVertexAttribivARB(__GLXclientState * cl, GLbyte * pc)
     return error;
 }
 
-void
-__glXDisp_ProgramEnvParameter4dvARB(GLbyte * pc)
+int
+__glXDisp_IsQuery(__GLXclientState * cl, GLbyte * pc)
 {
-#ifdef __GLX_ALIGN64
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, 40);
-        pc -= 4;
-    }
-#endif
-
-    CALL_ProgramEnvParameter4dvARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                    *(GLuint *) (pc + 4),
-                                                    (const GLdouble *) (pc + 8)
-                                   ));
-}
+    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    int error;
+    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
 
-void
-__glXDisp_ProgramEnvParameter4fvARB(GLbyte * pc)
-{
-    CALL_ProgramEnvParameter4fvARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                    *(GLuint *) (pc + 4),
-                                                    (const GLfloat *) (pc + 8)
-                                   ));
-}
+    pc += __GLX_SINGLE_HDR_SIZE;
+    if (cx != NULL) {
+        GLboolean retval;
 
-void
-__glXDisp_ProgramLocalParameter4dvARB(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, 40);
-        pc -= 4;
+        retval = glIsQuery(*(GLuint *) (pc + 0));
+        __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
+        error = Success;
     }
-#endif
 
-    CALL_ProgramLocalParameter4dvARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                      *(GLuint *) (pc + 4),
-                                                      (const GLdouble *) (pc +
-                                                                          8)
-                                     ));
+    return error;
 }
 
 void
-__glXDisp_ProgramLocalParameter4fvARB(GLbyte * pc)
+__glXDisp_BlendEquationSeparate(GLbyte * pc)
 {
-    CALL_ProgramLocalParameter4fvARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                      *(GLuint *) (pc + 4),
-                                                      (const GLfloat *) (pc + 8)
-                                     ));
+    glBlendEquationSeparate(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4));
 }
 
 void
-__glXDisp_ProgramStringARB(GLbyte * pc)
+__glXDisp_DrawBuffers(GLbyte * pc)
 {
-    const GLsizei len = *(GLsizei *) (pc + 8);
+    const GLsizei n = *(GLsizei *) (pc + 0);
 
-    CALL_ProgramStringARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                           *(GLenum *) (pc + 4),
-                                           len, (const GLvoid *) (pc + 12)
-                          ));
+    glDrawBuffers(n, (const GLenum *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib1dvARB(GLbyte * pc)
+__glXDisp_VertexAttrib1dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -4347,29 +3973,17 @@ __glXDisp_VertexAttrib1dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib1dvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLdouble *) (pc + 4)
-                            ));
+    glVertexAttrib1dv(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib1fvARB(GLbyte * pc)
-{
-    CALL_VertexAttrib1fvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLfloat *) (pc + 4)
-                            ));
-}
-
-void
-__glXDisp_VertexAttrib1svARB(GLbyte * pc)
+__glXDisp_VertexAttrib1sv(GLbyte * pc)
 {
-    CALL_VertexAttrib1svARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLshort *) (pc + 4)
-                            ));
+    glVertexAttrib1sv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib2dvARB(GLbyte * pc)
+__glXDisp_VertexAttrib2dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -4378,29 +3992,17 @@ __glXDisp_VertexAttrib2dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib2dvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLdouble *) (pc + 4)
-                            ));
-}
-
-void
-__glXDisp_VertexAttrib2fvARB(GLbyte * pc)
-{
-    CALL_VertexAttrib2fvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLfloat *) (pc + 4)
-                            ));
+    glVertexAttrib2dv(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib2svARB(GLbyte * pc)
+__glXDisp_VertexAttrib2sv(GLbyte * pc)
 {
-    CALL_VertexAttrib2svARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLshort *) (pc + 4)
-                            ));
+    glVertexAttrib2sv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib3dvARB(GLbyte * pc)
+__glXDisp_VertexAttrib3dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -4409,85 +4011,59 @@ __glXDisp_VertexAttrib3dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib3dvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLdouble *) (pc + 4)
-                            ));
-}
-
-void
-__glXDisp_VertexAttrib3fvARB(GLbyte * pc)
-{
-    CALL_VertexAttrib3fvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLfloat *) (pc + 4)
-                            ));
+    glVertexAttrib3dv(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib3svARB(GLbyte * pc)
+__glXDisp_VertexAttrib3sv(GLbyte * pc)
 {
-    CALL_VertexAttrib3svARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLshort *) (pc + 4)
-                            ));
+    glVertexAttrib3sv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4NbvARB(GLbyte * pc)
+__glXDisp_VertexAttrib4Nbv(GLbyte * pc)
 {
-    CALL_VertexAttrib4NbvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                              (const GLbyte *) (pc + 4)
-                             ));
+    glVertexAttrib4Nbv(*(GLuint *) (pc + 0), (const GLbyte *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4NivARB(GLbyte * pc)
+__glXDisp_VertexAttrib4Niv(GLbyte * pc)
 {
-    CALL_VertexAttrib4NivARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                              (const GLint *) (pc + 4)
-                             ));
+    glVertexAttrib4Niv(*(GLuint *) (pc + 0), (const GLint *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4NsvARB(GLbyte * pc)
+__glXDisp_VertexAttrib4Nsv(GLbyte * pc)
 {
-    CALL_VertexAttrib4NsvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                              (const GLshort *) (pc + 4)
-                             ));
+    glVertexAttrib4Nsv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4NubvARB(GLbyte * pc)
+__glXDisp_VertexAttrib4Nubv(GLbyte * pc)
 {
-    CALL_VertexAttrib4NubvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                               (const GLubyte *) (pc + 4)
-                              ));
+    glVertexAttrib4Nubv(*(GLuint *) (pc + 0), (const GLubyte *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4NuivARB(GLbyte * pc)
+__glXDisp_VertexAttrib4Nuiv(GLbyte * pc)
 {
-    CALL_VertexAttrib4NuivARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                               (const GLuint *) (pc + 4)
-                              ));
+    glVertexAttrib4Nuiv(*(GLuint *) (pc + 0), (const GLuint *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4NusvARB(GLbyte * pc)
+__glXDisp_VertexAttrib4Nusv(GLbyte * pc)
 {
-    CALL_VertexAttrib4NusvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                               (const GLushort *) (pc + 4)
-                              ));
+    glVertexAttrib4Nusv(*(GLuint *) (pc + 0), (const GLushort *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4bvARB(GLbyte * pc)
+__glXDisp_VertexAttrib4bv(GLbyte * pc)
 {
-    CALL_VertexAttrib4bvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLbyte *) (pc + 4)
-                            ));
+    glVertexAttrib4bv(*(GLuint *) (pc + 0), (const GLbyte *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4dvARB(GLbyte * pc)
+__glXDisp_VertexAttrib4dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -4496,110 +4072,86 @@ __glXDisp_VertexAttrib4dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib4dvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLdouble *) (pc + 4)
-                            ));
+    glVertexAttrib4dv(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4fvARB(GLbyte * pc)
+__glXDisp_VertexAttrib4iv(GLbyte * pc)
 {
-    CALL_VertexAttrib4fvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLfloat *) (pc + 4)
-                            ));
+    glVertexAttrib4iv(*(GLuint *) (pc + 0), (const GLint *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4ivARB(GLbyte * pc)
+__glXDisp_VertexAttrib4sv(GLbyte * pc)
 {
-    CALL_VertexAttrib4ivARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLint *) (pc + 4)
-                            ));
+    glVertexAttrib4sv(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4svARB(GLbyte * pc)
+__glXDisp_VertexAttrib4ubv(GLbyte * pc)
 {
-    CALL_VertexAttrib4svARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLshort *) (pc + 4)
-                            ));
+    glVertexAttrib4ubv(*(GLuint *) (pc + 0), (const GLubyte *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4ubvARB(GLbyte * pc)
+__glXDisp_VertexAttrib4uiv(GLbyte * pc)
 {
-    CALL_VertexAttrib4ubvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                              (const GLubyte *) (pc + 4)
-                             ));
+    glVertexAttrib4uiv(*(GLuint *) (pc + 0), (const GLuint *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4uivARB(GLbyte * pc)
+__glXDisp_VertexAttrib4usv(GLbyte * pc)
 {
-    CALL_VertexAttrib4uivARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                              (const GLuint *) (pc + 4)
-                             ));
+    glVertexAttrib4usv(*(GLuint *) (pc + 0), (const GLushort *) (pc + 4));
 }
 
 void
-__glXDisp_VertexAttrib4usvARB(GLbyte * pc)
+__glXDisp_ClampColor(GLbyte * pc)
 {
-    CALL_VertexAttrib4usvARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                              (const GLushort *) (pc + 4)
-                             ));
+    glClampColor(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4));
 }
 
 void
-__glXDisp_BeginQueryARB(GLbyte * pc)
+__glXDisp_BindProgramARB(GLbyte * pc)
 {
-    CALL_BeginQueryARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                        *(GLuint *) (pc + 4)
-                       ));
+    glBindProgramARB(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
 }
 
 int
-__glXDisp_DeleteQueriesARB(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_DeleteProgramsARB(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
 
-    pc += __GLX_SINGLE_HDR_SIZE;
+    pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
         const GLsizei n = *(GLsizei *) (pc + 0);
 
-        CALL_DeleteQueriesARB(GET_DISPATCH(), (n, (const GLuint *) (pc + 4)
-                              ));
+        glDeleteProgramsARB(n, (const GLuint *) (pc + 4));
         error = Success;
     }
 
     return error;
 }
 
-void
-__glXDisp_EndQueryARB(GLbyte * pc)
-{
-    CALL_EndQueryARB(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                     ));
-}
-
 int
-__glXDisp_GenQueriesARB(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_GenProgramsARB(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
 
-    pc += __GLX_SINGLE_HDR_SIZE;
+    pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
         const GLsizei n = *(GLsizei *) (pc + 0);
 
         GLuint answerBuffer[200];
-        GLuint *ids =
+        GLuint *programs =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        CALL_GenQueriesARB(GET_DISPATCH(), (n, ids));
-        __glXSendReply(cl->client, ids, n, 4, GL_TRUE, 0);
+        glGenProgramsARB(n, programs);
+        __glXSendReply(cl->client, programs, n, 4, GL_TRUE, 0);
         error = Success;
     }
 
@@ -4607,29 +4159,39 @@ __glXDisp_GenQueriesARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDisp_GetQueryObjectivARB(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_GetProgramEnvParameterdvARB(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
 
-    pc += __GLX_SINGLE_HDR_SIZE;
+    pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        const GLenum pname = *(GLenum *) (pc + 4);
+        GLdouble params[4];
 
-        const GLuint compsize = __glGetQueryObjectivARB_size(pname);
-        GLint answerBuffer[200];
-        GLint *params =
-            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
-                                 sizeof(answerBuffer), 4);
+        glGetProgramEnvParameterdvARB(*(GLenum *) (pc + 0),
+                                      *(GLuint *) (pc + 4), params);
+        __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0);
+        error = Success;
+    }
 
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
+    return error;
+}
 
-        CALL_GetQueryObjectivARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                                  pname, params));
-        __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+int
+__glXDisp_GetProgramEnvParameterfvARB(__GLXclientState * cl, GLbyte * pc)
+{
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    int error;
+    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+    pc += __GLX_VENDPRIV_HDR_SIZE;
+    if (cx != NULL) {
+        GLfloat params[4];
+
+        glGetProgramEnvParameterfvARB(*(GLenum *) (pc + 0),
+                                      *(GLuint *) (pc + 4), params);
+        __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0);
         error = Success;
     }
 
@@ -4637,29 +4199,39 @@ __glXDisp_GetQueryObjectivARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDisp_GetQueryObjectuivARB(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_GetProgramLocalParameterdvARB(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
 
-    pc += __GLX_SINGLE_HDR_SIZE;
+    pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        const GLenum pname = *(GLenum *) (pc + 4);
+        GLdouble params[4];
 
-        const GLuint compsize = __glGetQueryObjectuivARB_size(pname);
-        GLuint answerBuffer[200];
-        GLuint *params =
-            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
-                                 sizeof(answerBuffer), 4);
+        glGetProgramLocalParameterdvARB(*(GLenum *) (pc + 0),
+                                        *(GLuint *) (pc + 4), params);
+        __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0);
+        error = Success;
+    }
 
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
+    return error;
+}
 
-        CALL_GetQueryObjectuivARB(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                                   pname, params));
-        __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+int
+__glXDisp_GetProgramLocalParameterfvARB(__GLXclientState * cl, GLbyte * pc)
+{
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    int error;
+    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+    pc += __GLX_VENDPRIV_HDR_SIZE;
+    if (cx != NULL) {
+        GLfloat params[4];
+
+        glGetProgramLocalParameterfvARB(*(GLenum *) (pc + 0),
+                                        *(GLuint *) (pc + 4), params);
+        __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0);
         error = Success;
     }
 
@@ -4667,17 +4239,17 @@ __glXDisp_GetQueryObjectuivARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDisp_GetQueryivARB(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
 
-    pc += __GLX_SINGLE_HDR_SIZE;
+    pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
         const GLenum pname = *(GLenum *) (pc + 4);
 
-        const GLuint compsize = __glGetQueryivARB_size(pname);
+        const GLuint compsize = __glGetProgramivARB_size(pname);
         GLint answerBuffer[200];
         GLint *params =
             __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
@@ -4687,8 +4259,7 @@ __glXDisp_GetQueryivARB(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetQueryivARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                            pname, params));
+        glGetProgramivARB(*(GLenum *) (pc + 0), pname, params);
         __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
@@ -4697,18 +4268,17 @@ __glXDisp_GetQueryivARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDisp_IsQueryARB(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_IsProgramARB(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
 
-    pc += __GLX_SINGLE_HDR_SIZE;
+    pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = CALL_IsQueryARB(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                                 ));
+        retval = glIsProgramARB(*(GLuint *) (pc + 0));
         __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -4717,170 +4287,192 @@ __glXDisp_IsQueryARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 void
-__glXDisp_DrawBuffersARB(GLbyte * pc)
+__glXDisp_ProgramEnvParameter4dvARB(GLbyte * pc)
 {
-    const GLsizei n = *(GLsizei *) (pc + 0);
+#ifdef __GLX_ALIGN64
+    if ((unsigned long) (pc) & 7) {
+        (void) memmove(pc - 4, pc, 40);
+        pc -= 4;
+    }
+#endif
 
-    CALL_DrawBuffersARB(GET_DISPATCH(), (n, (const GLenum *) (pc + 4)
-                        ));
+    glProgramEnvParameter4dvARB(*(GLenum *) (pc + 0),
+                                *(GLuint *) (pc + 4),
+                                (const GLdouble *) (pc + 8));
 }
 
 void
-__glXDisp_ClampColorARB(GLbyte * pc)
+__glXDisp_ProgramEnvParameter4fvARB(GLbyte * pc)
 {
-    CALL_ClampColorARB(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                        *(GLenum *) (pc + 4)
-                       ));
+    glProgramEnvParameter4fvARB(*(GLenum *) (pc + 0),
+                                *(GLuint *) (pc + 4),
+                                (const GLfloat *) (pc + 8));
 }
 
 void
-__glXDisp_RenderbufferStorageMultisample(GLbyte * pc)
+__glXDisp_ProgramLocalParameter4dvARB(GLbyte * pc)
 {
-    CALL_RenderbufferStorageMultisample(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                         *(GLsizei *) (pc + 4),
-                                                         *(GLenum *) (pc + 8),
-                                                         *(GLsizei *) (pc + 12),
-                                                         *(GLsizei *) (pc + 16)
-                                        ));
+#ifdef __GLX_ALIGN64
+    if ((unsigned long) (pc) & 7) {
+        (void) memmove(pc - 4, pc, 40);
+        pc -= 4;
+    }
+#endif
+
+    glProgramLocalParameter4dvARB(*(GLenum *) (pc + 0),
+                                  *(GLuint *) (pc + 4),
+                                  (const GLdouble *) (pc + 8));
 }
 
 void
-__glXDisp_SampleMaskSGIS(GLbyte * pc)
+__glXDisp_ProgramLocalParameter4fvARB(GLbyte * pc)
 {
-    CALL_SampleMaskSGIS(GET_DISPATCH(), (*(GLclampf *) (pc + 0),
-                                         *(GLboolean *) (pc + 4)
-                        ));
+    glProgramLocalParameter4fvARB(*(GLenum *) (pc + 0),
+                                  *(GLuint *) (pc + 4),
+                                  (const GLfloat *) (pc + 8));
 }
 
 void
-__glXDisp_SamplePatternSGIS(GLbyte * pc)
+__glXDisp_ProgramStringARB(GLbyte * pc)
 {
-    CALL_SamplePatternSGIS(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                           ));
+    const GLsizei len = *(GLsizei *) (pc + 8);
+
+    glProgramStringARB(*(GLenum *) (pc + 0),
+                       *(GLenum *) (pc + 4), len, (const GLvoid *) (pc + 12));
 }
 
 void
-__glXDisp_PointParameterfEXT(GLbyte * pc)
+__glXDisp_VertexAttrib1fvARB(GLbyte * pc)
 {
-    CALL_PointParameterfEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                             *(GLfloat *) (pc + 4)
-                            ));
+    glVertexAttrib1fvARB(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
-__glXDisp_PointParameterfvEXT(GLbyte * pc)
+__glXDisp_VertexAttrib2fvARB(GLbyte * pc)
 {
-    const GLenum pname = *(GLenum *) (pc + 0);
-    const GLfloat *params;
-
-    params = (const GLfloat *) (pc + 4);
-
-    CALL_PointParameterfvEXT(GET_DISPATCH(), (pname, params));
+    glVertexAttrib2fvARB(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
-__glXDisp_SecondaryColor3bvEXT(GLbyte * pc)
+__glXDisp_VertexAttrib3fvARB(GLbyte * pc)
 {
-    CALL_SecondaryColor3bvEXT(GET_DISPATCH(), ((const GLbyte *) (pc + 0)
-                              ));
+    glVertexAttrib3fvARB(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
-__glXDisp_SecondaryColor3dvEXT(GLbyte * pc)
+__glXDisp_VertexAttrib4fvARB(GLbyte * pc)
 {
-#ifdef __GLX_ALIGN64
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, 24);
-        pc -= 4;
-    }
-#endif
-
-    CALL_SecondaryColor3dvEXT(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                              ));
+    glVertexAttrib4fvARB(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
-__glXDisp_SecondaryColor3fvEXT(GLbyte * pc)
+__glXDisp_BindFramebuffer(GLbyte * pc)
 {
-    CALL_SecondaryColor3fvEXT(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                              ));
+    glBindFramebuffer(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
 }
 
 void
-__glXDisp_SecondaryColor3ivEXT(GLbyte * pc)
+__glXDisp_BindRenderbuffer(GLbyte * pc)
 {
-    CALL_SecondaryColor3ivEXT(GET_DISPATCH(), ((const GLint *) (pc + 0)
-                              ));
+    glBindRenderbuffer(*(GLenum *) (pc + 0), *(GLuint *) (pc + 4));
 }
 
 void
-__glXDisp_SecondaryColor3svEXT(GLbyte * pc)
+__glXDisp_BlitFramebuffer(GLbyte * pc)
 {
-    CALL_SecondaryColor3svEXT(GET_DISPATCH(), ((const GLshort *) (pc + 0)
-                              ));
+    glBlitFramebuffer(*(GLint *) (pc + 0),
+                      *(GLint *) (pc + 4),
+                      *(GLint *) (pc + 8),
+                      *(GLint *) (pc + 12),
+                      *(GLint *) (pc + 16),
+                      *(GLint *) (pc + 20),
+                      *(GLint *) (pc + 24),
+                      *(GLint *) (pc + 28),
+                      *(GLbitfield *) (pc + 32), *(GLenum *) (pc + 36));
 }
 
-void
-__glXDisp_SecondaryColor3ubvEXT(GLbyte * pc)
+int
+__glXDisp_CheckFramebufferStatus(__GLXclientState * cl, GLbyte * pc)
 {
-    CALL_SecondaryColor3ubvEXT(GET_DISPATCH(), ((const GLubyte *) (pc + 0)
-                               ));
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    int error;
+    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+    pc += __GLX_VENDPRIV_HDR_SIZE;
+    if (cx != NULL) {
+        GLenum retval;
+
+        retval = glCheckFramebufferStatus(*(GLenum *) (pc + 0));
+        __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
+        error = Success;
+    }
+
+    return error;
 }
 
 void
-__glXDisp_SecondaryColor3uivEXT(GLbyte * pc)
+__glXDisp_DeleteFramebuffers(GLbyte * pc)
 {
-    CALL_SecondaryColor3uivEXT(GET_DISPATCH(), ((const GLuint *) (pc + 0)
-                               ));
+    const GLsizei n = *(GLsizei *) (pc + 0);
+
+    glDeleteFramebuffers(n, (const GLuint *) (pc + 4));
 }
 
 void
-__glXDisp_SecondaryColor3usvEXT(GLbyte * pc)
+__glXDisp_DeleteRenderbuffers(GLbyte * pc)
 {
-    CALL_SecondaryColor3usvEXT(GET_DISPATCH(), ((const GLushort *) (pc + 0)
-                               ));
+    const GLsizei n = *(GLsizei *) (pc + 0);
+
+    glDeleteRenderbuffers(n, (const GLuint *) (pc + 4));
 }
 
 void
-__glXDisp_FogCoorddvEXT(GLbyte * pc)
+__glXDisp_FramebufferRenderbuffer(GLbyte * pc)
 {
-#ifdef __GLX_ALIGN64
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, 8);
-        pc -= 4;
-    }
-#endif
+    glFramebufferRenderbuffer(*(GLenum *) (pc + 0),
+                              *(GLenum *) (pc + 4),
+                              *(GLenum *) (pc + 8), *(GLuint *) (pc + 12));
+}
 
-    CALL_FogCoorddvEXT(GET_DISPATCH(), ((const GLdouble *) (pc + 0)
-                       ));
+void
+__glXDisp_FramebufferTexture1D(GLbyte * pc)
+{
+    glFramebufferTexture1D(*(GLenum *) (pc + 0),
+                           *(GLenum *) (pc + 4),
+                           *(GLenum *) (pc + 8),
+                           *(GLuint *) (pc + 12), *(GLint *) (pc + 16));
 }
 
 void
-__glXDisp_FogCoordfvEXT(GLbyte * pc)
+__glXDisp_FramebufferTexture2D(GLbyte * pc)
 {
-    CALL_FogCoordfvEXT(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                       ));
+    glFramebufferTexture2D(*(GLenum *) (pc + 0),
+                           *(GLenum *) (pc + 4),
+                           *(GLenum *) (pc + 8),
+                           *(GLuint *) (pc + 12), *(GLint *) (pc + 16));
 }
 
 void
-__glXDisp_BlendFuncSeparateEXT(GLbyte * pc)
+__glXDisp_FramebufferTexture3D(GLbyte * pc)
 {
-    CALL_BlendFuncSeparateEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                               *(GLenum *) (pc + 4),
-                                               *(GLenum *) (pc + 8),
-                                               *(GLenum *) (pc + 12)
-                              ));
+    glFramebufferTexture3D(*(GLenum *) (pc + 0),
+                           *(GLenum *) (pc + 4),
+                           *(GLenum *) (pc + 8),
+                           *(GLuint *) (pc + 12),
+                           *(GLint *) (pc + 16), *(GLint *) (pc + 20));
 }
 
 void
-__glXDisp_WindowPos3fvMESA(GLbyte * pc)
+__glXDisp_FramebufferTextureLayer(GLbyte * pc)
 {
-    CALL_WindowPos3fvMESA(GET_DISPATCH(), ((const GLfloat *) (pc + 0)
-                          ));
+    glFramebufferTextureLayer(*(GLenum *) (pc + 0),
+                              *(GLenum *) (pc + 4),
+                              *(GLuint *) (pc + 8),
+                              *(GLint *) (pc + 12), *(GLint *) (pc + 16));
 }
 
 int
-__glXDisp_AreProgramsResidentNV(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_GenFramebuffers(__GLXclientState * cl, GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -4890,31 +4482,20 @@ __glXDisp_AreProgramsResidentNV(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         const GLsizei n = *(GLsizei *) (pc + 0);
 
-        GLboolean retval;
-        GLboolean answerBuffer[200];
-        GLboolean *residences =
-            __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
-        retval =
-            CALL_AreProgramsResidentNV(GET_DISPATCH(),
-                                       (n, (const GLuint *) (pc + 4),
-                                        residences));
-        __glXSendReply(cl->client, residences, n, 1, GL_FALSE, retval);
+        GLuint answerBuffer[200];
+        GLuint *framebuffers =
+            __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                 4);
+        glGenFramebuffers(n, framebuffers);
+        __glXSendReply(cl->client, framebuffers, n, 4, GL_TRUE, 0);
         error = Success;
     }
 
     return error;
 }
 
-void
-__glXDisp_BindProgramNV(GLbyte * pc)
-{
-    CALL_BindProgramNV(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                        *(GLuint *) (pc + 4)
-                       ));
-}
-
 int
-__glXDisp_DeleteProgramsNV(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_GenRenderbuffers(__GLXclientState * cl, GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -4924,8 +4505,12 @@ __glXDisp_DeleteProgramsNV(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         const GLsizei n = *(GLsizei *) (pc + 0);
 
-        CALL_DeleteProgramsNV(GET_DISPATCH(), (n, (const GLuint *) (pc + 4)
-                              ));
+        GLuint answerBuffer[200];
+        GLuint *renderbuffers =
+            __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                 4);
+        glGenRenderbuffers(n, renderbuffers);
+        __glXSendReply(cl->client, renderbuffers, n, 4, GL_TRUE, 0);
         error = Success;
     }
 
@@ -4933,16 +4518,14 @@ __glXDisp_DeleteProgramsNV(__GLXclientState * cl, GLbyte * pc)
 }
 
 void
-__glXDisp_ExecuteProgramNV(GLbyte * pc)
+__glXDisp_GenerateMipmap(GLbyte * pc)
 {
-    CALL_ExecuteProgramNV(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                           *(GLuint *) (pc + 4),
-                                           (const GLfloat *) (pc + 8)
-                          ));
+    glGenerateMipmap(*(GLenum *) (pc + 0));
 }
 
 int
-__glXDisp_GenProgramsNV(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_GetFramebufferAttachmentParameteriv(__GLXclientState * cl,
+                                              GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -4950,14 +4533,12 @@ __glXDisp_GenProgramsNV(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        const GLsizei n = *(GLsizei *) (pc + 0);
+        GLint params[1];
 
-        GLuint answerBuffer[200];
-        GLuint *programs =
-            __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
-                                 4);
-        CALL_GenProgramsNV(GET_DISPATCH(), (n, programs));
-        __glXSendReply(cl->client, programs, n, 4, GL_TRUE, 0);
+        glGetFramebufferAttachmentParameteriv(*(GLenum *) (pc + 0),
+                                              *(GLenum *) (pc + 4),
+                                              *(GLenum *) (pc + 8), params);
+        __glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0);
         error = Success;
     }
 
@@ -4965,7 +4546,7 @@ __glXDisp_GenProgramsNV(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDisp_GetProgramParameterdvNV(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_GetRenderbufferParameteriv(__GLXclientState * cl, GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -4973,13 +4554,11 @@ __glXDisp_GetProgramParameterdvNV(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        GLdouble params[4];
+        GLint params[1];
 
-        CALL_GetProgramParameterdvNV(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                      *(GLuint *) (pc + 4),
-                                                      *(GLenum *) (pc + 8),
-                                                      params));
-        __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0);
+        glGetRenderbufferParameteriv(*(GLenum *) (pc + 0),
+                                     *(GLenum *) (pc + 4), params);
+        __glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0);
         error = Success;
     }
 
@@ -4987,7 +4566,7 @@ __glXDisp_GetProgramParameterdvNV(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDisp_GetProgramParameterfvNV(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_IsFramebuffer(__GLXclientState * cl, GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -4995,13 +4574,10 @@ __glXDisp_GetProgramParameterfvNV(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        GLfloat params[4];
+        GLboolean retval;
 
-        CALL_GetProgramParameterfvNV(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                      *(GLuint *) (pc + 4),
-                                                      *(GLenum *) (pc + 8),
-                                                      params));
-        __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0);
+        retval = glIsFramebuffer(*(GLuint *) (pc + 0));
+        __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
 
@@ -5009,7 +4585,7 @@ __glXDisp_GetProgramParameterfvNV(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDisp_GetProgramivNV(__GLXclientState * cl, GLbyte * pc)
+__glXDisp_IsRenderbuffer(__GLXclientState * cl, GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -5017,282 +4593,95 @@ __glXDisp_GetProgramivNV(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        const GLenum pname = *(GLenum *) (pc + 4);
-
-        const GLuint compsize = __glGetProgramivNV_size(pname);
-        GLint answerBuffer[200];
-        GLint *params =
-            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
-                                 sizeof(answerBuffer), 4);
-
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
+        GLboolean retval;
 
-        CALL_GetProgramivNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             pname, params));
-        __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+        retval = glIsRenderbuffer(*(GLuint *) (pc + 0));
+        __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
 
     return error;
 }
 
-int
-__glXDisp_GetTrackMatrixivNV(__GLXclientState * cl, GLbyte * pc)
+void
+__glXDisp_RenderbufferStorage(GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
+    glRenderbufferStorage(*(GLenum *) (pc + 0),
+                          *(GLenum *) (pc + 4),
+                          *(GLsizei *) (pc + 8), *(GLsizei *) (pc + 12));
+}
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLint params[1];
+void
+__glXDisp_RenderbufferStorageMultisample(GLbyte * pc)
+{
+    glRenderbufferStorageMultisample(*(GLenum *) (pc + 0),
+                                     *(GLsizei *) (pc + 4),
+                                     *(GLenum *) (pc + 8),
+                                     *(GLsizei *) (pc + 12),
+                                     *(GLsizei *) (pc + 16));
+}
 
-        CALL_GetTrackMatrixivNV(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                 *(GLuint *) (pc + 4),
-                                                 *(GLenum *) (pc + 8), params));
-        __glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0);
-        error = Success;
-    }
+void
+__glXDisp_SecondaryColor3fvEXT(GLbyte * pc)
+{
+    glSecondaryColor3fvEXT((const GLfloat *) (pc + 0));
+}
 
-    return error;
+void
+__glXDisp_FogCoordfvEXT(GLbyte * pc)
+{
+    glFogCoordfvEXT((const GLfloat *) (pc + 0));
 }
 
-int
-__glXDisp_GetVertexAttribdvNV(__GLXclientState * cl, GLbyte * pc)
+void
+__glXDisp_VertexAttrib1dvNV(GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
+#ifdef __GLX_ALIGN64
+    if ((unsigned long) (pc) & 7) {
+        (void) memmove(pc - 4, pc, 12);
+        pc -= 4;
+    }
+#endif
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLenum pname = *(GLenum *) (pc + 4);
+    glVertexAttrib1dvNV(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
+}
 
-        const GLuint compsize = __glGetVertexAttribdvNV_size(pname);
-        GLdouble answerBuffer[200];
-        GLdouble *params =
-            __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer,
-                                 sizeof(answerBuffer), 8);
+void
+__glXDisp_VertexAttrib1fvNV(GLbyte * pc)
+{
+    glVertexAttrib1fvNV(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
+}
 
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
+void
+__glXDisp_VertexAttrib1svNV(GLbyte * pc)
+{
+    glVertexAttrib1svNV(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
+}
 
-        CALL_GetVertexAttribdvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                                  pname, params));
-        __glXSendReply(cl->client, params, compsize, 8, GL_FALSE, 0);
-        error = Success;
+void
+__glXDisp_VertexAttrib2dvNV(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+    if ((unsigned long) (pc) & 7) {
+        (void) memmove(pc - 4, pc, 20);
+        pc -= 4;
     }
+#endif
 
-    return error;
+    glVertexAttrib2dvNV(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
-int
-__glXDisp_GetVertexAttribfvNV(__GLXclientState * cl, GLbyte * pc)
+void
+__glXDisp_VertexAttrib2fvNV(GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
+    glVertexAttrib2fvNV(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
+}
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLenum pname = *(GLenum *) (pc + 4);
-
-        const GLuint compsize = __glGetVertexAttribfvNV_size(pname);
-        GLfloat answerBuffer[200];
-        GLfloat *params =
-            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
-                                 sizeof(answerBuffer), 4);
-
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
-
-        CALL_GetVertexAttribfvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                                  pname, params));
-        __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDisp_GetVertexAttribivNV(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLenum pname = *(GLenum *) (pc + 4);
-
-        const GLuint compsize = __glGetVertexAttribivNV_size(pname);
-        GLint answerBuffer[200];
-        GLint *params =
-            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
-                                 sizeof(answerBuffer), 4);
-
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
-
-        CALL_GetVertexAttribivNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                                  pname, params));
-        __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDisp_IsProgramNV(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLboolean retval;
-
-        retval = CALL_IsProgramNV(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                                  ));
-        __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
-        error = Success;
-    }
-
-    return error;
-}
-
-void
-__glXDisp_LoadProgramNV(GLbyte * pc)
-{
-    const GLsizei len = *(GLsizei *) (pc + 8);
-
-    CALL_LoadProgramNV(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                        *(GLuint *) (pc + 4),
-                                        len, (const GLubyte *) (pc + 12)
-                       ));
-}
-
-void
-__glXDisp_ProgramParameters4dvNV(GLbyte * pc)
-{
-    const GLsizei num = *(GLsizei *) (pc + 8);
-
-#ifdef __GLX_ALIGN64
-    const GLuint cmdlen = 16 + __GLX_PAD((num * 32)) - 4;
-
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, cmdlen);
-        pc -= 4;
-    }
-#endif
-
-    CALL_ProgramParameters4dvNV(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                 *(GLuint *) (pc + 4),
-                                                 num,
-                                                 (const GLdouble *) (pc + 12)
-                                ));
-}
-
-void
-__glXDisp_ProgramParameters4fvNV(GLbyte * pc)
-{
-    const GLsizei num = *(GLsizei *) (pc + 8);
-
-    CALL_ProgramParameters4fvNV(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                 *(GLuint *) (pc + 4),
-                                                 num,
-                                                 (const GLfloat *) (pc + 12)
-                                ));
-}
-
-void
-__glXDisp_RequestResidentProgramsNV(GLbyte * pc)
-{
-    const GLsizei n = *(GLsizei *) (pc + 0);
-
-    CALL_RequestResidentProgramsNV(GET_DISPATCH(), (n, (const GLuint *) (pc + 4)
-                                   ));
-}
-
-void
-__glXDisp_TrackMatrixNV(GLbyte * pc)
-{
-    CALL_TrackMatrixNV(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                        *(GLuint *) (pc + 4),
-                                        *(GLenum *) (pc + 8),
-                                        *(GLenum *) (pc + 12)
-                       ));
-}
-
-void
-__glXDisp_VertexAttrib1dvNV(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, 12);
-        pc -= 4;
-    }
-#endif
-
-    CALL_VertexAttrib1dvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                            (const GLdouble *) (pc + 4)
-                           ));
-}
-
-void
-__glXDisp_VertexAttrib1fvNV(GLbyte * pc)
-{
-    CALL_VertexAttrib1fvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                            (const GLfloat *) (pc + 4)
-                           ));
-}
-
-void
-__glXDisp_VertexAttrib1svNV(GLbyte * pc)
-{
-    CALL_VertexAttrib1svNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                            (const GLshort *) (pc + 4)
-                           ));
-}
-
-void
-__glXDisp_VertexAttrib2dvNV(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, 20);
-        pc -= 4;
-    }
-#endif
-
-    CALL_VertexAttrib2dvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                            (const GLdouble *) (pc + 4)
-                           ));
-}
-
-void
-__glXDisp_VertexAttrib2fvNV(GLbyte * pc)
-{
-    CALL_VertexAttrib2fvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                            (const GLfloat *) (pc + 4)
-                           ));
-}
-
-void
-__glXDisp_VertexAttrib2svNV(GLbyte * pc)
-{
-    CALL_VertexAttrib2svNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                            (const GLshort *) (pc + 4)
-                           ));
-}
+void
+__glXDisp_VertexAttrib2svNV(GLbyte * pc)
+{
+    glVertexAttrib2svNV(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
+}
 
 void
 __glXDisp_VertexAttrib3dvNV(GLbyte * pc)
@@ -5304,25 +4693,19 @@ __glXDisp_VertexAttrib3dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib3dvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                            (const GLdouble *) (pc + 4)
-                           ));
+    glVertexAttrib3dvNV(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib3fvNV(GLbyte * pc)
 {
-    CALL_VertexAttrib3fvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                            (const GLfloat *) (pc + 4)
-                           ));
+    glVertexAttrib3fvNV(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib3svNV(GLbyte * pc)
 {
-    CALL_VertexAttrib3svNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                            (const GLshort *) (pc + 4)
-                           ));
+    glVertexAttrib3svNV(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
@@ -5335,33 +4718,25 @@ __glXDisp_VertexAttrib4dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib4dvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                            (const GLdouble *) (pc + 4)
-                           ));
+    glVertexAttrib4dvNV(*(GLuint *) (pc + 0), (const GLdouble *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4fvNV(GLbyte * pc)
 {
-    CALL_VertexAttrib4fvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                            (const GLfloat *) (pc + 4)
-                           ));
+    glVertexAttrib4fvNV(*(GLuint *) (pc + 0), (const GLfloat *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4svNV(GLbyte * pc)
 {
-    CALL_VertexAttrib4svNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                            (const GLshort *) (pc + 4)
-                           ));
+    glVertexAttrib4svNV(*(GLuint *) (pc + 0), (const GLshort *) (pc + 4));
 }
 
 void
 __glXDisp_VertexAttrib4ubvNV(GLbyte * pc)
 {
-    CALL_VertexAttrib4ubvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             (const GLubyte *) (pc + 4)
-                            ));
+    glVertexAttrib4ubvNV(*(GLuint *) (pc + 0), (const GLubyte *) (pc + 4));
 }
 
 void
@@ -5378,9 +4753,7 @@ __glXDisp_VertexAttribs1dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttribs1dvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             n, (const GLdouble *) (pc + 8)
-                            ));
+    glVertexAttribs1dvNV(*(GLuint *) (pc + 0), n, (const GLdouble *) (pc + 8));
 }
 
 void
@@ -5388,9 +4761,7 @@ __glXDisp_VertexAttribs1fvNV(GLbyte * pc)
 {
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    CALL_VertexAttribs1fvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             n, (const GLfloat *) (pc + 8)
-                            ));
+    glVertexAttribs1fvNV(*(GLuint *) (pc + 0), n, (const GLfloat *) (pc + 8));
 }
 
 void
@@ -5398,9 +4769,7 @@ __glXDisp_VertexAttribs1svNV(GLbyte * pc)
 {
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    CALL_VertexAttribs1svNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             n, (const GLshort *) (pc + 8)
-                            ));
+    glVertexAttribs1svNV(*(GLuint *) (pc + 0), n, (const GLshort *) (pc + 8));
 }
 
 void
@@ -5417,9 +4786,7 @@ __glXDisp_VertexAttribs2dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttribs2dvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             n, (const GLdouble *) (pc + 8)
-                            ));
+    glVertexAttribs2dvNV(*(GLuint *) (pc + 0), n, (const GLdouble *) (pc + 8));
 }
 
 void
@@ -5427,9 +4794,7 @@ __glXDisp_VertexAttribs2fvNV(GLbyte * pc)
 {
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    CALL_VertexAttribs2fvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             n, (const GLfloat *) (pc + 8)
-                            ));
+    glVertexAttribs2fvNV(*(GLuint *) (pc + 0), n, (const GLfloat *) (pc + 8));
 }
 
 void
@@ -5437,9 +4802,7 @@ __glXDisp_VertexAttribs2svNV(GLbyte * pc)
 {
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    CALL_VertexAttribs2svNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             n, (const GLshort *) (pc + 8)
-                            ));
+    glVertexAttribs2svNV(*(GLuint *) (pc + 0), n, (const GLshort *) (pc + 8));
 }
 
 void
@@ -5456,9 +4819,7 @@ __glXDisp_VertexAttribs3dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttribs3dvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             n, (const GLdouble *) (pc + 8)
-                            ));
+    glVertexAttribs3dvNV(*(GLuint *) (pc + 0), n, (const GLdouble *) (pc + 8));
 }
 
 void
@@ -5466,9 +4827,7 @@ __glXDisp_VertexAttribs3fvNV(GLbyte * pc)
 {
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    CALL_VertexAttribs3fvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             n, (const GLfloat *) (pc + 8)
-                            ));
+    glVertexAttribs3fvNV(*(GLuint *) (pc + 0), n, (const GLfloat *) (pc + 8));
 }
 
 void
@@ -5476,9 +4835,7 @@ __glXDisp_VertexAttribs3svNV(GLbyte * pc)
 {
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    CALL_VertexAttribs3svNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             n, (const GLshort *) (pc + 8)
-                            ));
+    glVertexAttribs3svNV(*(GLuint *) (pc + 0), n, (const GLshort *) (pc + 8));
 }
 
 void
@@ -5495,9 +4852,7 @@ __glXDisp_VertexAttribs4dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttribs4dvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             n, (const GLdouble *) (pc + 8)
-                            ));
+    glVertexAttribs4dvNV(*(GLuint *) (pc + 0), n, (const GLdouble *) (pc + 8));
 }
 
 void
@@ -5505,9 +4860,7 @@ __glXDisp_VertexAttribs4fvNV(GLbyte * pc)
 {
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    CALL_VertexAttribs4fvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             n, (const GLfloat *) (pc + 8)
-                            ));
+    glVertexAttribs4fvNV(*(GLuint *) (pc + 0), n, (const GLfloat *) (pc + 8));
 }
 
 void
@@ -5515,9 +4868,7 @@ __glXDisp_VertexAttribs4svNV(GLbyte * pc)
 {
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    CALL_VertexAttribs4svNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                             n, (const GLshort *) (pc + 8)
-                            ));
+    glVertexAttribs4svNV(*(GLuint *) (pc + 0), n, (const GLshort *) (pc + 8));
 }
 
 void
@@ -5525,402 +4876,11 @@ __glXDisp_VertexAttribs4ubvNV(GLbyte * pc)
 {
     const GLsizei n = *(GLsizei *) (pc + 4);
 
-    CALL_VertexAttribs4ubvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                              n, (const GLubyte *) (pc + 8)
-                             ));
-}
-
-void
-__glXDisp_PointParameteriNV(GLbyte * pc)
-{
-    CALL_PointParameteriNV(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                            *(GLint *) (pc + 4)
-                           ));
-}
-
-void
-__glXDisp_PointParameterivNV(GLbyte * pc)
-{
-    const GLenum pname = *(GLenum *) (pc + 0);
-    const GLint *params;
-
-    params = (const GLint *) (pc + 4);
-
-    CALL_PointParameterivNV(GET_DISPATCH(), (pname, params));
+    glVertexAttribs4ubvNV(*(GLuint *) (pc + 0), n, (const GLubyte *) (pc + 8));
 }
 
 void
 __glXDisp_ActiveStencilFaceEXT(GLbyte * pc)
 {
-    CALL_ActiveStencilFaceEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                              ));
-}
-
-int
-__glXDisp_GetProgramNamedParameterdvNV(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLsizei len = *(GLsizei *) (pc + 4);
-
-        GLdouble params[4];
-
-        CALL_GetProgramNamedParameterdvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                                           len,
-                                                           (const GLubyte *) (pc
-                                                                              +
-                                                                              8),
-                                                           params));
-        __glXSendReply(cl->client, params, 4, 8, GL_TRUE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDisp_GetProgramNamedParameterfvNV(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLsizei len = *(GLsizei *) (pc + 4);
-
-        GLfloat params[4];
-
-        CALL_GetProgramNamedParameterfvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                                           len,
-                                                           (const GLubyte *) (pc
-                                                                              +
-                                                                              8),
-                                                           params));
-        __glXSendReply(cl->client, params, 4, 4, GL_TRUE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-void
-__glXDisp_ProgramNamedParameter4dvNV(GLbyte * pc)
-{
-    const GLsizei len = *(GLsizei *) (pc + 36);
-
-#ifdef __GLX_ALIGN64
-    const GLuint cmdlen = 44 + __GLX_PAD(len) - 4;
-
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, cmdlen);
-        pc -= 4;
-    }
-#endif
-
-    CALL_ProgramNamedParameter4dvNV(GET_DISPATCH(), (*(GLuint *) (pc + 32),
-                                                     len,
-                                                     (const GLubyte *) (pc +
-                                                                        40),
-                                                     (const GLdouble *) (pc + 0)
-                                    ));
-}
-
-void
-__glXDisp_ProgramNamedParameter4fvNV(GLbyte * pc)
-{
-    const GLsizei len = *(GLsizei *) (pc + 4);
-
-    CALL_ProgramNamedParameter4fvNV(GET_DISPATCH(), (*(GLuint *) (pc + 0),
-                                                     len,
-                                                     (const GLubyte *) (pc +
-                                                                        24),
-                                                     (const GLfloat *) (pc + 8)
-                                    ));
-}
-
-void
-__glXDisp_BlendEquationSeparateEXT(GLbyte * pc)
-{
-    CALL_BlendEquationSeparateEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                   *(GLenum *) (pc + 4)
-                                  ));
-}
-
-void
-__glXDisp_BindFramebufferEXT(GLbyte * pc)
-{
-    CALL_BindFramebufferEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                             *(GLuint *) (pc + 4)
-                            ));
-}
-
-void
-__glXDisp_BindRenderbufferEXT(GLbyte * pc)
-{
-    CALL_BindRenderbufferEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                              *(GLuint *) (pc + 4)
-                             ));
-}
-
-int
-__glXDisp_CheckFramebufferStatusEXT(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLenum retval;
-
-        retval =
-            CALL_CheckFramebufferStatusEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                                           ));
-        __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
-        error = Success;
-    }
-
-    return error;
-}
-
-void
-__glXDisp_DeleteFramebuffersEXT(GLbyte * pc)
-{
-    const GLsizei n = *(GLsizei *) (pc + 0);
-
-    CALL_DeleteFramebuffersEXT(GET_DISPATCH(), (n, (const GLuint *) (pc + 4)
-                               ));
-}
-
-void
-__glXDisp_DeleteRenderbuffersEXT(GLbyte * pc)
-{
-    const GLsizei n = *(GLsizei *) (pc + 0);
-
-    CALL_DeleteRenderbuffersEXT(GET_DISPATCH(), (n, (const GLuint *) (pc + 4)
-                                ));
-}
-
-void
-__glXDisp_FramebufferRenderbufferEXT(GLbyte * pc)
-{
-    CALL_FramebufferRenderbufferEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                     *(GLenum *) (pc + 4),
-                                                     *(GLenum *) (pc + 8),
-                                                     *(GLuint *) (pc + 12)
-                                    ));
-}
-
-void
-__glXDisp_FramebufferTexture1DEXT(GLbyte * pc)
-{
-    CALL_FramebufferTexture1DEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                  *(GLenum *) (pc + 4),
-                                                  *(GLenum *) (pc + 8),
-                                                  *(GLuint *) (pc + 12),
-                                                  *(GLint *) (pc + 16)
-                                 ));
-}
-
-void
-__glXDisp_FramebufferTexture2DEXT(GLbyte * pc)
-{
-    CALL_FramebufferTexture2DEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                  *(GLenum *) (pc + 4),
-                                                  *(GLenum *) (pc + 8),
-                                                  *(GLuint *) (pc + 12),
-                                                  *(GLint *) (pc + 16)
-                                 ));
-}
-
-void
-__glXDisp_FramebufferTexture3DEXT(GLbyte * pc)
-{
-    CALL_FramebufferTexture3DEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                  *(GLenum *) (pc + 4),
-                                                  *(GLenum *) (pc + 8),
-                                                  *(GLuint *) (pc + 12),
-                                                  *(GLint *) (pc + 16),
-                                                  *(GLint *) (pc + 20)
-                                 ));
-}
-
-int
-__glXDisp_GenFramebuffersEXT(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLsizei n = *(GLsizei *) (pc + 0);
-
-        GLuint answerBuffer[200];
-        GLuint *framebuffers =
-            __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
-                                 4);
-        CALL_GenFramebuffersEXT(GET_DISPATCH(), (n, framebuffers));
-        __glXSendReply(cl->client, framebuffers, n, 4, GL_TRUE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDisp_GenRenderbuffersEXT(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLsizei n = *(GLsizei *) (pc + 0);
-
-        GLuint answerBuffer[200];
-        GLuint *renderbuffers =
-            __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
-                                 4);
-        CALL_GenRenderbuffersEXT(GET_DISPATCH(), (n, renderbuffers));
-        __glXSendReply(cl->client, renderbuffers, n, 4, GL_TRUE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-void
-__glXDisp_GenerateMipmapEXT(GLbyte * pc)
-{
-    CALL_GenerateMipmapEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0)
-                           ));
-}
-
-int
-__glXDisp_GetFramebufferAttachmentParameterivEXT(__GLXclientState * cl,
-                                                 GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLint params[1];
-
-        CALL_GetFramebufferAttachmentParameterivEXT(GET_DISPATCH(),
-                                                    (*(GLenum *) (pc + 0),
-                                                     *(GLenum *) (pc + 4),
-                                                     *(GLenum *) (pc + 8),
-                                                     params));
-        __glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDisp_GetRenderbufferParameterivEXT(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLint params[1];
-
-        CALL_GetRenderbufferParameterivEXT(GET_DISPATCH(),
-                                           (*(GLenum *) (pc + 0),
-                                            *(GLenum *) (pc + 4), params));
-        __glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDisp_IsFramebufferEXT(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLboolean retval;
-
-        retval = CALL_IsFramebufferEXT(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                                       ));
-        __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDisp_IsRenderbufferEXT(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLboolean retval;
-
-        retval = CALL_IsRenderbufferEXT(GET_DISPATCH(), (*(GLuint *) (pc + 0)
-                                        ));
-        __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
-        error = Success;
-    }
-
-    return error;
-}
-
-void
-__glXDisp_RenderbufferStorageEXT(GLbyte * pc)
-{
-    CALL_RenderbufferStorageEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                 *(GLenum *) (pc + 4),
-                                                 *(GLsizei *) (pc + 8),
-                                                 *(GLsizei *) (pc + 12)
-                                ));
-}
-
-void
-__glXDisp_BlitFramebufferEXT(GLbyte * pc)
-{
-    CALL_BlitFramebufferEXT(GET_DISPATCH(), (*(GLint *) (pc + 0),
-                                             *(GLint *) (pc + 4),
-                                             *(GLint *) (pc + 8),
-                                             *(GLint *) (pc + 12),
-                                             *(GLint *) (pc + 16),
-                                             *(GLint *) (pc + 20),
-                                             *(GLint *) (pc + 24),
-                                             *(GLint *) (pc + 28),
-                                             *(GLbitfield *) (pc + 32),
-                                             *(GLenum *) (pc + 36)
-                            ));
-}
-
-void
-__glXDisp_FramebufferTextureLayerEXT(GLbyte * pc)
-{
-    CALL_FramebufferTextureLayerEXT(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                                     *(GLenum *) (pc + 4),
-                                                     *(GLuint *) (pc + 8),
-                                                     *(GLint *) (pc + 12),
-                                                     *(GLint *) (pc + 16)
-                                    ));
+    glActiveStencilFaceEXT(*(GLenum *) (pc + 0));
 }
diff --git a/glx/indirect_dispatch.h b/glx/indirect_dispatch.h
index d75dbe0..e6e3fda 100644
--- a/glx/indirect_dispatch.h
+++ b/glx/indirect_dispatch.h
@@ -41,32 +41,18 @@ extern _X_HIDDEN int __glXDispSwap_NewList(struct __GLXclientStateRec *,
                                            GLbyte *);
 extern _X_HIDDEN void __glXDisp_LoadIdentity(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_LoadIdentity(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_SampleCoverageARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_SampleCoverageARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ConvolutionFilter1D(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ConvolutionFilter1D(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_BeginQueryARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_BeginQueryARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_RasterPos3dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_RasterPos3dv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_PointParameteriNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_PointParameteriNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexCoord1iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord1iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexCoord4sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord4sv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_ActiveTextureARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_ActiveTextureARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_BlitFramebufferEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_BlitFramebufferEXT(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib3dv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib3dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_VertexAttrib4ubvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttrib4ubvNV(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GetProgramNamedParameterdvNV(struct
-                                                            __GLXclientStateRec
-                                                            *, GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetProgramNamedParameterdvNV(struct
-                                                                __GLXclientStateRec
-                                                                *, GLbyte *);
 extern _X_HIDDEN void __glXDisp_Histogram(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Histogram(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetMapfv(struct __GLXclientStateRec *, GLbyte *);
@@ -76,8 +62,8 @@ extern _X_HIDDEN void __glXDisp_RasterPos4dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_RasterPos4dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_PolygonStipple(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PolygonStipple(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_BlendEquationSeparateEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_BlendEquationSeparateEXT(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_MultiTexCoord1dv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_MultiTexCoord1dv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetPixelMapfv(struct __GLXclientStateRec *,
                                              GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetPixelMapfv(struct __GLXclientStateRec *,
@@ -96,6 +82,8 @@ extern _X_HIDDEN int __glXDisp_DestroyPixmap(struct __GLXclientStateRec *,
                                              GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_DestroyPixmap(struct __GLXclientStateRec *,
                                                  GLbyte *);
+extern _X_HIDDEN void __glXDisp_FramebufferTexture1D(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_FramebufferTexture1D(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetMapiv(struct __GLXclientStateRec *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetMapiv(struct __GLXclientStateRec *,
                                             GLbyte *);
@@ -108,10 +96,6 @@ extern _X_HIDDEN void __glXDispSwap_Indexubv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_Render(struct __GLXclientStateRec *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_Render(struct __GLXclientStateRec *,
                                           GLbyte *);
-extern _X_HIDDEN int __glXDisp_GetQueryivARB(struct __GLXclientStateRec *,
-                                             GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetQueryivARB(struct __GLXclientStateRec *,
-                                                 GLbyte *);
 extern _X_HIDDEN void __glXDisp_TexImage3D(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexImage3D(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_MakeContextCurrent(struct __GLXclientStateRec *,
@@ -122,23 +106,14 @@ extern _X_HIDDEN int __glXDisp_GetFBConfigs(struct __GLXclientStateRec *,
                                             GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetFBConfigs(struct __GLXclientStateRec *,
                                                 GLbyte *);
+extern _X_HIDDEN void __glXDisp_VertexAttrib1sv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib1sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Color3ubv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Color3ubv(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GetQueryObjectivARB(struct __GLXclientStateRec *,
-                                                   GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetQueryObjectivARB(struct
-                                                       __GLXclientStateRec *,
-                                                       GLbyte *);
 extern _X_HIDDEN void __glXDisp_Vertex3dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Vertex3dv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_CompressedTexSubImage2DARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_CompressedTexSubImage2DARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttribs3fvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttribs3fvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_LightModeliv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_LightModeliv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib1svARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib1svARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_VertexAttribs1dvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttribs1dvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Normal3bv(GLbyte * pc);
@@ -149,46 +124,52 @@ extern _X_HIDDEN int __glXDispSwap_VendorPrivate(struct __GLXclientStateRec *,
                                                  GLbyte *);
 extern _X_HIDDEN void __glXDisp_TexGeniv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexGeniv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib1fvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib1fvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Vertex3iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Vertex3iv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_RenderbufferStorage(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_RenderbufferStorage(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_CopyConvolutionFilter1D(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_CopyConvolutionFilter1D(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_GenQueries(struct __GLXclientStateRec *,
+                                          GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_GenQueries(struct __GLXclientStateRec *,
+                                              GLbyte *);
 extern _X_HIDDEN void __glXDisp_BlendColor(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_BlendColor(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_CompressedTexImage3D(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_CompressedTexImage3D(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Scalef(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Scalef(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Normal3iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Normal3iv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_SecondaryColor3dv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_SecondaryColor3dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_PassThrough(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PassThrough(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_FramebufferTextureLayerEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_FramebufferTextureLayerEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Viewport(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Viewport(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4NusvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4NusvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_CopyTexSubImage2D(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_CopyTexSubImage2D(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_DepthRange(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_DepthRange(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_GetQueryiv(struct __GLXclientStateRec *,
+                                          GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_GetQueryiv(struct __GLXclientStateRec *,
+                                              GLbyte *);
 extern _X_HIDDEN void __glXDisp_ResetHistogram(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ResetHistogram(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GetProgramNamedParameterfvNV(struct
-                                                            __GLXclientStateRec
-                                                            *, GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetProgramNamedParameterfvNV(struct
-                                                                __GLXclientStateRec
-                                                                *, GLbyte *);
-extern _X_HIDDEN void __glXDisp_PointParameterfEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_PointParameterfEXT(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_CompressedTexSubImage2D(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_CompressedTexSubImage2D(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_SecondaryColor3uiv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_SecondaryColor3uiv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexCoord2sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord2sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Vertex4dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Vertex4dv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_CompressedTexImage3DARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_CompressedTexImage3DARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4Nbv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4Nbv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttribs2svNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttribs2svNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Color3sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Color3sv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetConvolutionParameteriv(struct
@@ -209,6 +190,8 @@ extern _X_HIDDEN int __glXDisp_GetVisualConfigs(struct __GLXclientStateRec *,
                                                 GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetVisualConfigs(struct __GLXclientStateRec
                                                     *, GLbyte *);
+extern _X_HIDDEN void __glXDisp_DeleteRenderbuffers(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_DeleteRenderbuffers(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_MultiTexCoord1fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_MultiTexCoord1fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexCoord3iv(GLbyte * pc);
@@ -217,16 +200,24 @@ extern _X_HIDDEN int __glXDisp_CopyContext(struct __GLXclientStateRec *,
                                            GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_CopyContext(struct __GLXclientStateRec *,
                                                GLbyte *);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4usv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4usv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Color3fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Color3fv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_MultiTexCoord4sv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_MultiTexCoord4sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_PointSize(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PointSize(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_PopName(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PopName(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4NbvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4NbvARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib2dv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib2dv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4Nusv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4Nusv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Vertex4sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Vertex4sv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_ClampColor(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_ClampColor(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetTexEnvfv(struct __GLXclientStateRec *,
                                            GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetTexEnvfv(struct __GLXclientStateRec *,
@@ -251,8 +242,6 @@ extern _X_HIDDEN void __glXDisp_AlphaFunc(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_AlphaFunc(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexCoord2iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord2iv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_CompressedTexImage1DARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_CompressedTexImage1DARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Rotated(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Rotated(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_ReadPixels(struct __GLXclientStateRec *,
@@ -261,6 +250,8 @@ extern _X_HIDDEN int __glXDispSwap_ReadPixels(struct __GLXclientStateRec *,
                                               GLbyte *);
 extern _X_HIDDEN void __glXDisp_EdgeFlagv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_EdgeFlagv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_CompressedTexSubImage1D(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_CompressedTexSubImage1D(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexParameterf(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexParameterf(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexParameteri(GLbyte * pc);
@@ -271,12 +262,8 @@ extern _X_HIDDEN int __glXDispSwap_DestroyContext(struct __GLXclientStateRec *,
                                                   GLbyte *);
 extern _X_HIDDEN void __glXDisp_DrawPixels(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_DrawPixels(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_MultiTexCoord2svARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_MultiTexCoord2svARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_MultiTexCoord3svARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_MultiTexCoord3svARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_GenerateMipmapEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_GenerateMipmapEXT(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_MultiTexCoord3sv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_MultiTexCoord3sv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GenLists(struct __GLXclientStateRec *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GenLists(struct __GLXclientStateRec *,
                                             GLbyte *);
@@ -300,6 +287,8 @@ extern _X_HIDDEN void __glXDisp_PixelMapfv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PixelMapfv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Color3usv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Color3usv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_MultiTexCoord2iv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_MultiTexCoord2iv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_AreTexturesResident(struct __GLXclientStateRec *,
                                                    GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_AreTexturesResident(struct
@@ -310,20 +299,16 @@ extern _X_HIDDEN int __glXDisp_AreTexturesResidentEXT(struct __GLXclientStateRec
 extern _X_HIDDEN int __glXDispSwap_AreTexturesResidentEXT(struct
                                                           __GLXclientStateRec *,
                                                           GLbyte *);
-extern _X_HIDDEN void __glXDisp_PointParameterfvEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_PointParameterfvEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Color3bv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Color3bv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_SecondaryColor3bvEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_SecondaryColor3bvEXT(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib2fvARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib2fvARB(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetProgramLocalParameterfvARB(struct
                                                              __GLXclientStateRec
                                                              *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetProgramLocalParameterfvARB(struct
                                                                  __GLXclientStateRec
                                                                  *, GLbyte *);
-extern _X_HIDDEN void __glXDisp_RenderbufferStorageEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_RenderbufferStorageEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ColorTable(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ColorTable(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Accum(GLbyte * pc);
@@ -339,8 +324,6 @@ extern _X_HIDDEN int __glXDispSwap_Finish(struct __GLXclientStateRec *,
                                           GLbyte *);
 extern _X_HIDDEN void __glXDisp_ClearStencil(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ClearStencil(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib3dvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib3dvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_VertexAttribs4ubvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttribs4ubvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ConvolutionParameteriv(GLbyte * pc);
@@ -349,6 +332,8 @@ extern _X_HIDDEN void __glXDisp_RasterPos2fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_RasterPos2fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexCoord1fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord1fv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_MultiTexCoord4dv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_MultiTexCoord4dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ProgramEnvParameter4fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ProgramEnvParameter4fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_RasterPos4fv(GLbyte * pc);
@@ -365,39 +350,29 @@ extern _X_HIDDEN int __glXDisp_GetTexGendv(struct __GLXclientStateRec *,
                                            GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetTexGendv(struct __GLXclientStateRec *,
                                                GLbyte *);
-extern _X_HIDDEN int __glXDisp_GetVertexAttribfvNV(struct __GLXclientStateRec *,
-                                                   GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetVertexAttribfvNV(struct
-                                                       __GLXclientStateRec *,
-                                                       GLbyte *);
-extern _X_HIDDEN void __glXDisp_LoadProgramNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_LoadProgramNV(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_EndList(struct __GLXclientStateRec *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_EndList(struct __GLXclientStateRec *,
                                            GLbyte *);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4fvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4fvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_EvalCoord1fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_EvalCoord1fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_EvalMesh2(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_EvalMesh2(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Vertex4fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Vertex4fv(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_CheckFramebufferStatusEXT(struct
-                                                         __GLXclientStateRec *,
-                                                         GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_CheckFramebufferStatusEXT(struct
-                                                             __GLXclientStateRec
-                                                             *, GLbyte *);
-extern _X_HIDDEN int __glXDisp_GetVertexAttribivARB(struct __GLXclientStateRec
-                                                    *, GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetVertexAttribivARB(struct
-                                                        __GLXclientStateRec *,
-                                                        GLbyte *);
+extern _X_HIDDEN void __glXDisp_VertexAttribs3fvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttribs3fvNV(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_GetProgramEnvParameterdvARB(struct
+                                                           __GLXclientStateRec
+                                                           *, GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_GetProgramEnvParameterdvARB(struct
+                                                               __GLXclientStateRec
+                                                               *, GLbyte *);
 extern _X_HIDDEN int __glXDisp_GetFBConfigsSGIX(struct __GLXclientStateRec *,
                                                 GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetFBConfigsSGIX(struct __GLXclientStateRec
                                                     *, GLbyte *);
+extern _X_HIDDEN void __glXDisp_BindFramebuffer(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_BindFramebuffer(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_CreateNewContext(struct __GLXclientStateRec *,
                                                 GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_CreateNewContext(struct __GLXclientStateRec
@@ -410,14 +385,16 @@ extern _X_HIDDEN int __glXDisp_GetMinmaxEXT(struct __GLXclientStateRec *,
                                             GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetMinmaxEXT(struct __GLXclientStateRec *,
                                                 GLbyte *);
+extern _X_HIDDEN void __glXDisp_BlendFuncSeparate(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_BlendFuncSeparate(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Normal3fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Normal3fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ProgramEnvParameter4dvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ProgramEnvParameter4dvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4ivARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4ivARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_End(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_End(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttribs3svNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttribs3svNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_VertexAttribs2dvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttribs2dvNV(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_CreateContextAttribsARB(struct
@@ -426,28 +403,24 @@ extern _X_HIDDEN int __glXDisp_CreateContextAttribsARB(struct
 extern _X_HIDDEN int __glXDispSwap_CreateContextAttribsARB(struct
                                                            __GLXclientStateRec
                                                            *, GLbyte *);
-extern _X_HIDDEN int __glXDisp_GetProgramParameterfvNV(struct
-                                                       __GLXclientStateRec *,
-                                                       GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetProgramParameterfvNV(struct
-                                                           __GLXclientStateRec
-                                                           *, GLbyte *);
 extern _X_HIDDEN void __glXDisp_BindTexture(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_BindTexture(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib2sv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib2sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexSubImage2D(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexSubImage2D(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexGenfv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexGenfv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4bvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4bvARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4dvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4dvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_DrawBuffers(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_DrawBuffers(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_CreateContextWithConfigSGIX(struct
                                                            __GLXclientStateRec
                                                            *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_CreateContextWithConfigSGIX(struct
                                                                __GLXclientStateRec
                                                                *, GLbyte *);
-extern _X_HIDDEN void __glXDisp_FramebufferTexture3DEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_FramebufferTexture3DEXT(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_CopySubBufferMESA(struct __GLXclientStateRec *,
                                                  GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_CopySubBufferMESA(struct __GLXclientStateRec
@@ -461,25 +434,21 @@ extern _X_HIDDEN void __glXDisp_TexCoord3dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord3dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Indexdv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Indexdv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_FramebufferTexture2DEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_FramebufferTexture2DEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_PushName(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PushName(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_MultiTexCoord2dvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_MultiTexCoord2dvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_ProgramNamedParameter4fvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_ProgramNamedParameter4fvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_VertexAttrib4fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttrib4fvARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib1dv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib1dv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_CreateGLXPbufferSGIX(struct __GLXclientStateRec
                                                     *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_CreateGLXPbufferSGIX(struct
                                                         __GLXclientStateRec *,
                                                         GLbyte *);
-extern _X_HIDDEN void __glXDisp_MultiTexCoord1svARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_MultiTexCoord1svARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_EndQueryARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_EndQueryARB(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_IsRenderbuffer(struct __GLXclientStateRec *,
+                                              GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_IsRenderbuffer(struct __GLXclientStateRec *,
+                                                  GLbyte *);
 extern _X_HIDDEN void __glXDisp_DepthMask(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_DepthMask(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Color4iv(GLbyte * pc);
@@ -490,6 +459,8 @@ extern _X_HIDDEN int __glXDispSwap_GetMaterialiv(struct __GLXclientStateRec *,
                                                  GLbyte *);
 extern _X_HIDDEN void __glXDisp_StencilOp(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_StencilOp(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_FramebufferTextureLayer(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_FramebufferTextureLayer(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Ortho(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Ortho(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexEnvfv(GLbyte * pc);
@@ -502,8 +473,11 @@ extern _X_HIDDEN void __glXDisp_LoadMatrixf(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_LoadMatrixf(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Color4bv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Color4bv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_SecondaryColor3usvEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_SecondaryColor3usvEXT(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_GetCompressedTexImage(struct __GLXclientStateRec
+                                                     *, GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_GetCompressedTexImage(struct
+                                                         __GLXclientStateRec *,
+                                                         GLbyte *);
 extern _X_HIDDEN void __glXDisp_VertexAttrib2fvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttrib2fvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ProgramLocalParameter4dvARB(GLbyte * pc);
@@ -518,13 +492,13 @@ extern _X_HIDDEN void __glXDisp_RenderbufferStorageMultisample(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_RenderbufferStorageMultisample(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexCoord4fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord4fv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_ActiveTexture(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_ActiveTexture(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_SecondaryColor3bv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_SecondaryColor3bv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_WaitX(struct __GLXclientStateRec *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_WaitX(struct __GLXclientStateRec *,
                                          GLbyte *);
-extern _X_HIDDEN void __glXDisp_SecondaryColor3uivEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_SecondaryColor3uivEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_FramebufferRenderbufferEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_FramebufferRenderbufferEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_VertexAttrib1dvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttrib1dvNV(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GenTextures(struct __GLXclientStateRec *,
@@ -535,8 +509,6 @@ extern _X_HIDDEN int __glXDisp_GenTexturesEXT(struct __GLXclientStateRec *,
                                               GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GenTexturesEXT(struct __GLXclientStateRec *,
                                                   GLbyte *);
-extern _X_HIDDEN void __glXDisp_FramebufferTexture1DEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_FramebufferTexture1DEXT(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetDrawableAttributes(struct __GLXclientStateRec
                                                      *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetDrawableAttributes(struct
@@ -550,6 +522,8 @@ extern _X_HIDDEN void __glXDisp_DrawBuffer(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_DrawBuffer(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexCoord2fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord2fv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_MultiTexCoord4iv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_MultiTexCoord4iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexCoord1sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord1sv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_CreateGLXPixmapWithConfigSGIX(struct
@@ -562,26 +536,22 @@ extern _X_HIDDEN void __glXDisp_DepthFunc(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_DepthFunc(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_PixelMapusv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PixelMapusv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_PointParameterivNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_PointParameterivNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_BlendFunc(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_BlendFunc(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_WaitGL(struct __GLXclientStateRec *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_WaitGL(struct __GLXclientStateRec *,
                                           GLbyte *);
-extern _X_HIDDEN void __glXDisp_MultiTexCoord3dvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_MultiTexCoord3dvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_ProgramNamedParameter4dvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_ProgramNamedParameter4dvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_CompressedTexImage2D(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_CompressedTexImage2D(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_Flush(struct __GLXclientStateRec *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_Flush(struct __GLXclientStateRec *,
                                          GLbyte *);
 extern _X_HIDDEN void __glXDisp_Color4uiv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Color4uiv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_MultiTexCoord1sv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_MultiTexCoord1sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_RasterPos3sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_RasterPos3sv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_BindFramebufferEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_BindFramebufferEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_PushAttrib(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PushAttrib(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_DestroyPbuffer(struct __GLXclientStateRec *,
@@ -590,10 +560,6 @@ extern _X_HIDDEN int __glXDispSwap_DestroyPbuffer(struct __GLXclientStateRec *,
                                                   GLbyte *);
 extern _X_HIDDEN void __glXDisp_TexParameteriv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexParameteriv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_WindowPos3fvMESA(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_WindowPos3fvMESA(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib1svNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib1svNV(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_QueryExtensionsString(struct __GLXclientStateRec
                                                      *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_QueryExtensionsString(struct
@@ -619,6 +585,8 @@ extern _X_HIDDEN int __glXDispSwap_CreateContext(struct __GLXclientStateRec *,
                                                  GLbyte *);
 extern _X_HIDDEN void __glXDisp_CopyColorTable(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_CopyColorTable(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_PointParameterfv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_PointParameterfv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetHistogramParameterfv(struct
                                                        __GLXclientStateRec *,
                                                        GLbyte *);
@@ -643,15 +611,10 @@ extern _X_HIDDEN int __glXDispSwap_CreateGLXPixmap(struct __GLXclientStateRec *,
                                                    GLbyte *);
 extern _X_HIDDEN void __glXDisp_TexEnvf(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexEnvf(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GetProgramStringARB(struct __GLXclientStateRec *,
-                                                   GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetProgramStringARB(struct
-                                                       __GLXclientStateRec *,
-                                                       GLbyte *);
-extern _X_HIDDEN void __glXDisp_MultiTexCoord3ivARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_MultiTexCoord3ivARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib1dvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib1dvARB(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_GenProgramsARB(struct __GLXclientStateRec *,
+                                              GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_GenProgramsARB(struct __GLXclientStateRec *,
+                                                  GLbyte *);
 extern _X_HIDDEN int __glXDisp_DeleteTextures(struct __GLXclientStateRec *,
                                               GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_DeleteTextures(struct __GLXclientStateRec *,
@@ -671,15 +634,10 @@ extern _X_HIDDEN int __glXDisp_QueryVersion(struct __GLXclientStateRec *,
                                             GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_QueryVersion(struct __GLXclientStateRec *,
                                                 GLbyte *);
-extern _X_HIDDEN int __glXDisp_GetVertexAttribfvARB(struct __GLXclientStateRec
-                                                    *, GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetVertexAttribfvARB(struct
-                                                        __GLXclientStateRec *,
-                                                        GLbyte *);
-extern _X_HIDDEN void __glXDisp_SecondaryColor3ivEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_SecondaryColor3ivEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexCoord4iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord4iv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_FramebufferTexture3D(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_FramebufferTexture3D(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetDrawableAttributesSGIX(struct
                                                          __GLXclientStateRec *,
                                                          GLbyte *);
@@ -688,69 +646,60 @@ extern _X_HIDDEN int __glXDispSwap_GetDrawableAttributesSGIX(struct
                                                              *, GLbyte *);
 extern _X_HIDDEN void __glXDisp_ColorTableParameteriv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ColorTableParameteriv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4ubvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4ubvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_CopyTexImage2D(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_CopyTexImage2D(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_MultiTexCoord2dv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_MultiTexCoord2dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Lightfv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Lightfv(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_GetFramebufferAttachmentParameteriv(struct
+                                                                   __GLXclientStateRec
+                                                                   *, GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_GetFramebufferAttachmentParameteriv(struct
+                                                                       __GLXclientStateRec
+                                                                       *,
+                                                                       GLbyte
+                                                                       *);
 extern _X_HIDDEN void __glXDisp_ClearDepth(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ClearDepth(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ColorSubTable(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ColorSubTable(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Color4fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Color4fv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_MultiTexCoord4ivARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_MultiTexCoord4ivARB(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_CreatePixmap(struct __GLXclientStateRec *,
                                             GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_CreatePixmap(struct __GLXclientStateRec *,
                                                 GLbyte *);
 extern _X_HIDDEN void __glXDisp_Lightiv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Lightiv(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GetQueryObjectuivARB(struct __GLXclientStateRec
-                                                    *, GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetQueryObjectuivARB(struct
-                                                        __GLXclientStateRec *,
-                                                        GLbyte *);
 extern _X_HIDDEN int __glXDisp_GetTexParameteriv(struct __GLXclientStateRec *,
                                                  GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetTexParameteriv(struct __GLXclientStateRec
                                                      *, GLbyte *);
-extern _X_HIDDEN int __glXDisp_GenRenderbuffersEXT(struct __GLXclientStateRec *,
-                                                   GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GenRenderbuffersEXT(struct
-                                                       __GLXclientStateRec *,
-                                                       GLbyte *);
-extern _X_HIDDEN void __glXDisp_VertexAttrib2dvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib2dvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttribs2svNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttribs2svNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib3sv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib3sv(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_IsQuery(struct __GLXclientStateRec *, GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_IsQuery(struct __GLXclientStateRec *,
+                                           GLbyte *);
 extern _X_HIDDEN void __glXDisp_Rectdv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Rectdv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4NivARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4NivARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4dv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Materialiv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Materialiv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_SampleMaskSGIS(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_SampleMaskSGIS(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_SecondaryColor3fvEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_SecondaryColor3fvEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_PolygonMode(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PolygonMode(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_CompressedTexSubImage1DARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_CompressedTexSubImage1DARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib2dvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib2dvNV(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GetVertexAttribivNV(struct __GLXclientStateRec *,
+extern _X_HIDDEN void __glXDisp_SecondaryColor3iv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_SecondaryColor3iv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4Niv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4Niv(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_GetProgramStringARB(struct __GLXclientStateRec *,
                                                    GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetVertexAttribivNV(struct
+extern _X_HIDDEN int __glXDispSwap_GetProgramStringARB(struct
                                                        __GLXclientStateRec *,
                                                        GLbyte *);
-extern _X_HIDDEN int __glXDisp_IsQueryARB(struct __GLXclientStateRec *,
-                                          GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_IsQueryARB(struct __GLXclientStateRec *,
-                                              GLbyte *);
 extern _X_HIDDEN void __glXDisp_TexGeni(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexGeni(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexGenf(GLbyte * pc);
@@ -763,23 +712,16 @@ extern _X_HIDDEN int __glXDispSwap_GetPolygonStipple(struct __GLXclientStateRec
                                                      *, GLbyte *);
 extern _X_HIDDEN void __glXDisp_VertexAttrib2svNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttrib2svNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4NuivARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4NuivARB(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GetVertexAttribdvNV(struct __GLXclientStateRec *,
-                                                   GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetVertexAttribdvNV(struct
-                                                       __GLXclientStateRec *,
-                                                       GLbyte *);
+extern _X_HIDDEN void __glXDisp_VertexAttribs1fvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttribs1fvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib2dvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib2dvNV(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_DestroyWindow(struct __GLXclientStateRec *,
                                              GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_DestroyWindow(struct __GLXclientStateRec *,
                                                  GLbyte *);
 extern _X_HIDDEN void __glXDisp_Color4sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Color4sv(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_IsProgramNV(struct __GLXclientStateRec *,
-                                           GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_IsProgramNV(struct __GLXclientStateRec *,
-                                               GLbyte *);
 extern _X_HIDDEN void __glXDisp_PixelZoom(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PixelZoom(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ColorTableParameterfv(GLbyte * pc);
@@ -796,23 +738,23 @@ extern _X_HIDDEN int __glXDisp_IsTextureEXT(struct __GLXclientStateRec *,
                                             GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_IsTextureEXT(struct __GLXclientStateRec *,
                                                 GLbyte *);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4fvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4fvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_BeginQuery(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_BeginQuery(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_SetClientInfo2ARB(struct __GLXclientStateRec *,
                                                  GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_SetClientInfo2ARB(struct __GLXclientStateRec
                                                      *, GLbyte *);
-extern _X_HIDDEN int __glXDisp_DeleteQueriesARB(struct __GLXclientStateRec *,
-                                                GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_DeleteQueriesARB(struct __GLXclientStateRec
-                                                    *, GLbyte *);
 extern _X_HIDDEN int __glXDisp_GetMapdv(struct __GLXclientStateRec *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetMapdv(struct __GLXclientStateRec *,
                                             GLbyte *);
+extern _X_HIDDEN void __glXDisp_MultiTexCoord3iv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_MultiTexCoord3iv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_DestroyGLXPixmap(struct __GLXclientStateRec *,
                                                 GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_DestroyGLXPixmap(struct __GLXclientStateRec
                                                     *, GLbyte *);
-extern _X_HIDDEN void __glXDisp_SamplePatternSGIS(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_SamplePatternSGIS(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_PixelStoref(struct __GLXclientStateRec *,
                                            GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_PixelStoref(struct __GLXclientStateRec *,
@@ -823,8 +765,6 @@ extern _X_HIDDEN int __glXDisp_PixelStorei(struct __GLXclientStateRec *,
                                            GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_PixelStorei(struct __GLXclientStateRec *,
                                                GLbyte *);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4usvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4usvARB(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_DestroyGLXPbufferSGIX(struct __GLXclientStateRec
                                                      *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_DestroyGLXPbufferSGIX(struct
@@ -832,21 +772,12 @@ extern _X_HIDDEN int __glXDispSwap_DestroyGLXPbufferSGIX(struct
                                                          GLbyte *);
 extern _X_HIDDEN void __glXDisp_EvalCoord2dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_EvalCoord2dv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib3svARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib3svARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ColorMaterial(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ColorMaterial(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_CompressedTexSubImage3DARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_CompressedTexSubImage3DARB(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_IsFramebufferEXT(struct __GLXclientStateRec *,
-                                                GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_IsFramebufferEXT(struct __GLXclientStateRec
-                                                    *, GLbyte *);
-extern _X_HIDDEN int __glXDisp_GetVertexAttribdvARB(struct __GLXclientStateRec
-                                                    *, GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetVertexAttribdvARB(struct
-                                                        __GLXclientStateRec *,
-                                                        GLbyte *);
+extern _X_HIDDEN void __glXDisp_VertexAttribs1svNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttribs1svNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib1fvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib1fvNV(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetSeparableFilter(struct __GLXclientStateRec *,
                                                   GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetSeparableFilter(struct __GLXclientStateRec
@@ -856,8 +787,6 @@ extern _X_HIDDEN int __glXDisp_GetSeparableFilterEXT(struct __GLXclientStateRec
 extern _X_HIDDEN int __glXDispSwap_GetSeparableFilterEXT(struct
                                                          __GLXclientStateRec *,
                                                          GLbyte *);
-extern _X_HIDDEN void __glXDisp_RequestResidentProgramsNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_RequestResidentProgramsNV(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_FeedbackBuffer(struct __GLXclientStateRec *,
                                               GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_FeedbackBuffer(struct __GLXclientStateRec *,
@@ -872,12 +801,8 @@ extern _X_HIDDEN int __glXDisp_RenderLarge(struct __GLXclientStateRec *,
                                            GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_RenderLarge(struct __GLXclientStateRec *,
                                                GLbyte *);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4dvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4dvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_PolygonOffset(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PolygonOffset(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_ExecuteProgramNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_ExecuteProgramNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Normal3dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Normal3dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Lightf(GLbyte * pc);
@@ -890,23 +815,22 @@ extern _X_HIDDEN int __glXDispSwap_GetPixelMapusv(struct __GLXclientStateRec *,
                                                   GLbyte *);
 extern _X_HIDDEN void __glXDisp_Lighti(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Lighti(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GetFramebufferAttachmentParameterivEXT(struct
-                                                                      __GLXclientStateRec
-                                                                      *,
-                                                                      GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetFramebufferAttachmentParameterivEXT(struct
-                                                                          __GLXclientStateRec
-                                                                          *,
-                                                                          GLbyte
-                                                                          *);
+extern _X_HIDDEN int __glXDisp_GenFramebuffers(struct __GLXclientStateRec *,
+                                               GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_GenFramebuffers(struct __GLXclientStateRec *,
+                                                   GLbyte *);
+extern _X_HIDDEN int __glXDisp_IsFramebuffer(struct __GLXclientStateRec *,
+                                             GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_IsFramebuffer(struct __GLXclientStateRec *,
+                                                 GLbyte *);
 extern _X_HIDDEN int __glXDisp_ChangeDrawableAttributesSGIX(struct
                                                             __GLXclientStateRec
                                                             *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_ChangeDrawableAttributesSGIX(struct
                                                                 __GLXclientStateRec
                                                                 *, GLbyte *);
-extern _X_HIDDEN void __glXDisp_MultiTexCoord4dvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_MultiTexCoord4dvARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_BlendEquationSeparate(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_BlendEquationSeparate(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_CreatePbuffer(struct __GLXclientStateRec *,
                                              GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_CreatePbuffer(struct __GLXclientStateRec *,
@@ -919,12 +843,12 @@ extern _X_HIDDEN void __glXDisp_MultMatrixd(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_MultMatrixd(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_MultMatrixf(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_MultMatrixf(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_CompressedTexImage1D(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_CompressedTexImage1D(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_MultiTexCoord4fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_MultiTexCoord4fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_RasterPos4sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_RasterPos4sv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4NsvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4NsvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_VertexAttrib3fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttrib3fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ClearColor(GLbyte * pc);
@@ -932,12 +856,20 @@ extern _X_HIDDEN void __glXDispSwap_ClearColor(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_IsDirect(struct __GLXclientStateRec *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_IsDirect(struct __GLXclientStateRec *,
                                             GLbyte *);
-extern _X_HIDDEN void __glXDisp_DeleteFramebuffersEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_DeleteFramebuffersEXT(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib1svNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib1svNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_SecondaryColor3ubv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_SecondaryColor3ubv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_PointParameteri(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_PointParameteri(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_PointParameterf(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_PointParameterf(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexEnviv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexEnviv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexSubImage3D(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexSubImage3D(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4iv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4iv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_SwapIntervalSGI(struct __GLXclientStateRec *,
                                                GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_SwapIntervalSGI(struct __GLXclientStateRec *,
@@ -954,6 +886,8 @@ extern _X_HIDDEN int __glXDisp_GetColorTableParameterfvSGI(struct
 extern _X_HIDDEN int __glXDispSwap_GetColorTableParameterfvSGI(struct
                                                                __GLXclientStateRec
                                                                *, GLbyte *);
+extern _X_HIDDEN void __glXDisp_FramebufferTexture2D(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_FramebufferTexture2D(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Bitmap(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Bitmap(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetTexLevelParameterfv(struct __GLXclientStateRec
@@ -961,32 +895,25 @@ extern _X_HIDDEN int __glXDisp_GetTexLevelParameterfv(struct __GLXclientStateRec
 extern _X_HIDDEN int __glXDispSwap_GetTexLevelParameterfv(struct
                                                           __GLXclientStateRec *,
                                                           GLbyte *);
-extern _X_HIDDEN int __glXDisp_GenFramebuffersEXT(struct __GLXclientStateRec *,
-                                                  GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GenFramebuffersEXT(struct __GLXclientStateRec
+extern _X_HIDDEN int __glXDisp_CheckFramebufferStatus(struct __GLXclientStateRec
                                                       *, GLbyte *);
-extern _X_HIDDEN int __glXDisp_GetProgramParameterdvNV(struct
-                                                       __GLXclientStateRec *,
-                                                       GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetProgramParameterdvNV(struct
-                                                           __GLXclientStateRec
-                                                           *, GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_CheckFramebufferStatus(struct
+                                                          __GLXclientStateRec *,
+                                                          GLbyte *);
 extern _X_HIDDEN void __glXDisp_Vertex2sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Vertex2sv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetIntegerv(struct __GLXclientStateRec *,
                                            GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetIntegerv(struct __GLXclientStateRec *,
                                                GLbyte *);
+extern _X_HIDDEN void __glXDisp_BindProgramARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_BindProgramARB(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetProgramEnvParameterfvARB(struct
                                                            __GLXclientStateRec
                                                            *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetProgramEnvParameterfvARB(struct
                                                                __GLXclientStateRec
                                                                *, GLbyte *);
-extern _X_HIDDEN int __glXDisp_GetTrackMatrixivNV(struct __GLXclientStateRec *,
-                                                  GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetTrackMatrixivNV(struct __GLXclientStateRec
-                                                      *, GLbyte *);
 extern _X_HIDDEN void __glXDisp_VertexAttrib3svNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttrib3svNV(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetTexEnviv(struct __GLXclientStateRec *,
@@ -1000,20 +927,16 @@ extern _X_HIDDEN int __glXDispSwap_VendorPrivateWithReply(struct
                                                           GLbyte *);
 extern _X_HIDDEN void __glXDisp_SeparableFilter2D(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_SeparableFilter2D(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_GetQueryObjectuiv(struct __GLXclientStateRec *,
+                                                 GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_GetQueryObjectuiv(struct __GLXclientStateRec
+                                                     *, GLbyte *);
 extern _X_HIDDEN void __glXDisp_Map1d(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Map1d(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Map1f(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Map1f(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_CompressedTexImage2DARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_CompressedTexImage2DARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexImage2D(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexImage2D(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_ProgramParameters4fvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_ProgramParameters4fvNV(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GetProgramivNV(struct __GLXclientStateRec *,
-                                              GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetProgramivNV(struct __GLXclientStateRec *,
-                                                  GLbyte *);
 extern _X_HIDDEN int __glXDisp_ChangeDrawableAttributes(struct
                                                         __GLXclientStateRec *,
                                                         GLbyte *);
@@ -1039,12 +962,12 @@ extern _X_HIDDEN void __glXDisp_RasterPos2dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_RasterPos2dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Fogiv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Fogiv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_EndQuery(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_EndQuery(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexCoord1dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord1dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_PixelTransferi(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PixelTransferi(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_SecondaryColor3ubvEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_SecondaryColor3ubvEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_VertexAttrib3fvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttrib3fvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Clear(GLbyte * pc);
@@ -1053,6 +976,8 @@ extern _X_HIDDEN void __glXDisp_ReadBuffer(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ReadBuffer(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ConvolutionParameteri(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ConvolutionParameteri(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4sv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_LightModeli(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_LightModeli(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ListBase(GLbyte * pc);
@@ -1077,18 +1002,20 @@ extern _X_HIDDEN int __glXDispSwap_ReleaseTexImageEXT(struct __GLXclientStateRec
                                                       *, GLbyte *);
 extern _X_HIDDEN void __glXDisp_CallList(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_CallList(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttribs2fvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttribs2fvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_GenerateMipmap(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_GenerateMipmap(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Rectiv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Rectiv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_SecondaryColor3dvEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_SecondaryColor3dvEXT(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_MultiTexCoord1iv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_MultiTexCoord1iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Vertex2fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Vertex2fv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_BindRenderbufferEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_BindRenderbufferEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Vertex3sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Vertex3sv(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_GetQueryObjectiv(struct __GLXclientStateRec *,
+                                                GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_GetQueryObjectiv(struct __GLXclientStateRec
+                                                    *, GLbyte *);
 extern _X_HIDDEN int __glXDisp_SetClientInfoARB(struct __GLXclientStateRec *,
                                                 GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_SetClientInfoARB(struct __GLXclientStateRec
@@ -1099,26 +1026,14 @@ extern _X_HIDDEN int __glXDispSwap_BindTexImageEXT(struct __GLXclientStateRec *,
                                                    GLbyte *);
 extern _X_HIDDEN void __glXDisp_ProgramLocalParameter4fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ProgramLocalParameter4fvARB(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_DeleteProgramsNV(struct __GLXclientStateRec *,
-                                                GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_DeleteProgramsNV(struct __GLXclientStateRec
-                                                    *, GLbyte *);
 extern _X_HIDDEN void __glXDisp_EvalMesh1(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_EvalMesh1(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttribs1fvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttribs1fvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_MultiTexCoord1dvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_MultiTexCoord1dvARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_CompressedTexSubImage3D(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_CompressedTexSubImage3D(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Vertex2iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Vertex2iv(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GetProgramStringNV(struct __GLXclientStateRec *,
-                                                  GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetProgramStringNV(struct __GLXclientStateRec
-                                                      *, GLbyte *);
 extern _X_HIDDEN void __glXDisp_LineWidth(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_LineWidth(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib2fvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib2fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexGendv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexGendv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ResetMinmax(GLbyte * pc);
@@ -1135,12 +1050,16 @@ extern _X_HIDDEN int __glXDisp_GetConvolutionParameterfvEXT(struct
 extern _X_HIDDEN int __glXDispSwap_GetConvolutionParameterfvEXT(struct
                                                                 __GLXclientStateRec
                                                                 *, GLbyte *);
-extern _X_HIDDEN void __glXDisp_VertexAttribs4dvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttribs4dvNV(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetMaterialfv(struct __GLXclientStateRec *,
                                              GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetMaterialfv(struct __GLXclientStateRec *,
                                                  GLbyte *);
+extern _X_HIDDEN void __glXDisp_WindowPos3fv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_WindowPos3fv(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_DeleteProgramsARB(struct __GLXclientStateRec *,
+                                                 GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_DeleteProgramsARB(struct __GLXclientStateRec
+                                                     *, GLbyte *);
 extern _X_HIDDEN int __glXDisp_UseXFont(struct __GLXclientStateRec *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_UseXFont(struct __GLXclientStateRec *,
                                             GLbyte *);
@@ -1152,14 +1071,14 @@ extern _X_HIDDEN void __glXDisp_TexCoord3fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord3fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_FogCoordfvEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_FogCoordfvEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_MultiTexCoord1ivARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_MultiTexCoord1ivARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_MultiTexCoord2ivARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_MultiTexCoord2ivARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_DrawArrays(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_DrawArrays(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_SampleCoverage(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_SampleCoverage(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Color3iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Color3iv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4ubv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4ubv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetProgramLocalParameterdvARB(struct
                                                              __GLXclientStateRec
                                                              *, GLbyte *);
@@ -1178,22 +1097,24 @@ extern _X_HIDDEN int __glXDisp_GetHistogramParameterivEXT(struct
 extern _X_HIDDEN int __glXDispSwap_GetHistogramParameterivEXT(struct
                                                               __GLXclientStateRec
                                                               *, GLbyte *);
+extern _X_HIDDEN void __glXDisp_PointParameteriv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_PointParameteriv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Rotatef(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Rotatef(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetProgramivARB(struct __GLXclientStateRec *,
                                                GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetProgramivARB(struct __GLXclientStateRec *,
                                                    GLbyte *);
-extern _X_HIDDEN void __glXDisp_BlendFuncSeparateEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_BlendFuncSeparateEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_ProgramParameters4dvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_ProgramParameters4dvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_BindRenderbuffer(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_BindRenderbuffer(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_EvalPoint2(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_EvalPoint2(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_EvalPoint1(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_EvalPoint1(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_PopMatrix(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PopMatrix(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_DeleteFramebuffers(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_DeleteFramebuffers(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_MakeCurrentReadSGI(struct __GLXclientStateRec *,
                                                   GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_MakeCurrentReadSGI(struct __GLXclientStateRec
@@ -1206,12 +1127,24 @@ extern _X_HIDDEN int __glXDisp_MakeCurrent(struct __GLXclientStateRec *,
                                            GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_MakeCurrent(struct __GLXclientStateRec *,
                                                GLbyte *);
+extern _X_HIDDEN void __glXDisp_FramebufferRenderbuffer(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_FramebufferRenderbuffer(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_IsProgramARB(struct __GLXclientStateRec *,
+                                            GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_IsProgramARB(struct __GLXclientStateRec *,
+                                                GLbyte *);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4uiv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4uiv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4Nsv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4Nsv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Map2d(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Map2d(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Map2f(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Map2f(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ProgramStringARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ProgramStringARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4bv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4bv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetConvolutionFilter(struct __GLXclientStateRec
                                                     *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetConvolutionFilter(struct
@@ -1223,12 +1156,8 @@ extern _X_HIDDEN int __glXDisp_GetConvolutionFilterEXT(struct
 extern _X_HIDDEN int __glXDispSwap_GetConvolutionFilterEXT(struct
                                                            __GLXclientStateRec
                                                            *, GLbyte *);
-extern _X_HIDDEN int __glXDisp_GetCompressedTexImageARB(struct
-                                                        __GLXclientStateRec *,
-                                                        GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetCompressedTexImageARB(struct
-                                                            __GLXclientStateRec
-                                                            *, GLbyte *);
+extern _X_HIDDEN void __glXDisp_VertexAttribs4dvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttribs4dvNV(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetTexGenfv(struct __GLXclientStateRec *,
                                            GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetTexGenfv(struct __GLXclientStateRec *,
@@ -1249,16 +1178,12 @@ extern _X_HIDDEN void __glXDisp_Materiali(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Materiali(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Indexsv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Indexsv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_MultiTexCoord4svARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_MultiTexCoord4svARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib1fvARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib1fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_LightModelfv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_LightModelfv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexCoord2dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord2dv(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GenQueriesARB(struct __GLXclientStateRec *,
-                                             GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GenQueriesARB(struct __GLXclientStateRec *,
-                                                 GLbyte *);
 extern _X_HIDDEN void __glXDisp_EvalCoord1dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_EvalCoord1dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Translated(GLbyte * pc);
@@ -1267,8 +1192,6 @@ extern _X_HIDDEN void __glXDisp_Translatef(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Translatef(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_StencilMask(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_StencilMask(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_ClampColorARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_ClampColorARB(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_CreateWindow(struct __GLXclientStateRec *,
                                             GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_CreateWindow(struct __GLXclientStateRec *,
@@ -1284,8 +1207,6 @@ extern _X_HIDDEN int __glXDisp_RenderMode(struct __GLXclientStateRec *,
                                           GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_RenderMode(struct __GLXclientStateRec *,
                                               GLbyte *);
-extern _X_HIDDEN void __glXDisp_DrawBuffersARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_DrawBuffersARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_LoadName(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_LoadName(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_CopyTexSubImage1D(GLbyte * pc);
@@ -1297,8 +1218,8 @@ extern _X_HIDDEN int __glXDisp_QueryContextInfoEXT(struct __GLXclientStateRec *,
 extern _X_HIDDEN int __glXDispSwap_QueryContextInfoEXT(struct
                                                        __GLXclientStateRec *,
                                                        GLbyte *);
-extern _X_HIDDEN void __glXDisp_VertexAttribs3svNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttribs3svNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttribs2fvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttribs2fvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_StencilFunc(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_StencilFunc(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_CopyPixels(GLbyte * pc);
@@ -1309,12 +1230,14 @@ extern _X_HIDDEN void __glXDisp_CopyConvolutionFilter2D(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_CopyConvolutionFilter2D(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_TexParameterfv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexParameterfv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4uivARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4uivARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4Nubv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4Nubv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_ClipPlane(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_ClipPlane(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_TrackMatrixNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_TrackMatrixNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_SecondaryColor3usv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_SecondaryColor3usv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_MultiTexCoord3dv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_MultiTexCoord3dv(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetPixelMapuiv(struct __GLXclientStateRec *,
                                               GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetPixelMapuiv(struct __GLXclientStateRec *,
@@ -1325,22 +1248,20 @@ extern _X_HIDDEN int __glXDisp_QueryContext(struct __GLXclientStateRec *,
                                             GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_QueryContext(struct __GLXclientStateRec *,
                                                 GLbyte *);
-extern _X_HIDDEN void __glXDisp_SecondaryColor3svEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_SecondaryColor3svEXT(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_MultiTexCoord3fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_MultiTexCoord3fvARB(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_BlitFramebuffer(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_BlitFramebuffer(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_IndexMask(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_IndexMask(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_BindProgramNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_BindProgramNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4svARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4svARB(GLbyte * pc);
 extern _X_HIDDEN int __glXDisp_GetFloatv(struct __GLXclientStateRec *,
                                          GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetFloatv(struct __GLXclientStateRec *,
                                              GLbyte *);
 extern _X_HIDDEN void __glXDisp_TexCoord3sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord3sv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_FogCoorddv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_FogCoorddv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_PopAttrib(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_PopAttrib(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Fogfv(GLbyte * pc);
@@ -1351,8 +1272,10 @@ extern _X_HIDDEN void __glXDisp_Normal3sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Normal3sv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Minmax(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Minmax(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_FogCoorddvEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_FogCoorddvEXT(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_DeleteQueries(struct __GLXclientStateRec *,
+                                             GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_DeleteQueries(struct __GLXclientStateRec *,
+                                                 GLbyte *);
 extern _X_HIDDEN int __glXDisp_GetBooleanv(struct __GLXclientStateRec *,
                                            GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetBooleanv(struct __GLXclientStateRec *,
@@ -1361,29 +1284,12 @@ extern _X_HIDDEN void __glXDisp_Hint(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Hint(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Color4dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Color4dv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib2svARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib2svARB(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_AreProgramsResidentNV(struct __GLXclientStateRec
-                                                     *, GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_AreProgramsResidentNV(struct
-                                                         __GLXclientStateRec *,
-                                                         GLbyte *);
 extern _X_HIDDEN void __glXDisp_CopyColorSubTable(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_CopyColorSubTable(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_DeleteRenderbuffersEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_DeleteRenderbuffersEXT(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4NubvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4NubvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_VertexAttrib3dvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttrib3dvNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Vertex4iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Vertex4iv(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GetProgramEnvParameterdvARB(struct
-                                                           __GLXclientStateRec
-                                                           *, GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetProgramEnvParameterdvARB(struct
-                                                               __GLXclientStateRec
-                                                               *, GLbyte *);
 extern _X_HIDDEN void __glXDisp_TexCoord4dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_TexCoord4dv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Begin(GLbyte * pc);
@@ -1408,12 +1314,6 @@ extern _X_HIDDEN void __glXDisp_Disable(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Disable(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_MultiTexCoord2fvARB(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_MultiTexCoord2fvARB(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_GetRenderbufferParameterivEXT(struct
-                                                             __GLXclientStateRec
-                                                             *, GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GetRenderbufferParameterivEXT(struct
-                                                                 __GLXclientStateRec
-                                                                 *, GLbyte *);
 extern _X_HIDDEN int __glXDisp_SelectBuffer(struct __GLXclientStateRec *,
                                             GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_SelectBuffer(struct __GLXclientStateRec *,
@@ -1424,8 +1324,18 @@ extern _X_HIDDEN void __glXDisp_RasterPos4iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_RasterPos4iv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Enable(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Enable(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_GetRenderbufferParameteriv(struct
+                                                          __GLXclientStateRec *,
+                                                          GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_GetRenderbufferParameteriv(struct
+                                                              __GLXclientStateRec
+                                                              *, GLbyte *);
 extern _X_HIDDEN void __glXDisp_VertexAttribs4svNV(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_VertexAttribs4svNV(GLbyte * pc);
+extern _X_HIDDEN int __glXDisp_GenRenderbuffers(struct __GLXclientStateRec *,
+                                                GLbyte *);
+extern _X_HIDDEN int __glXDispSwap_GenRenderbuffers(struct __GLXclientStateRec
+                                                    *, GLbyte *);
 extern _X_HIDDEN int __glXDisp_GetMinmaxParameterfv(struct __GLXclientStateRec
                                                     *, GLbyte *);
 extern _X_HIDDEN int __glXDispSwap_GetMinmaxParameterfv(struct
@@ -1437,21 +1347,13 @@ extern _X_HIDDEN int __glXDisp_GetMinmaxParameterfvEXT(struct
 extern _X_HIDDEN int __glXDispSwap_GetMinmaxParameterfvEXT(struct
                                                            __GLXclientStateRec
                                                            *, GLbyte *);
-extern _X_HIDDEN void __glXDisp_VertexAttrib1fvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib1fvARB(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_VertexAttribs1svNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttribs1svNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttrib4Nuiv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttrib4Nuiv(GLbyte * pc);
 extern _X_HIDDEN void __glXDisp_Vertex3fv(GLbyte * pc);
 extern _X_HIDDEN void __glXDispSwap_Vertex3fv(GLbyte * pc);
-extern _X_HIDDEN int __glXDisp_IsRenderbufferEXT(struct __GLXclientStateRec *,
-                                                 GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_IsRenderbufferEXT(struct __GLXclientStateRec
-                                                     *, GLbyte *);
-extern _X_HIDDEN int __glXDisp_GenProgramsNV(struct __GLXclientStateRec *,
-                                             GLbyte *);
-extern _X_HIDDEN int __glXDispSwap_GenProgramsNV(struct __GLXclientStateRec *,
-                                                 GLbyte *);
-extern _X_HIDDEN void __glXDisp_VertexAttrib4dvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttrib4dvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_SecondaryColor3sv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_SecondaryColor3sv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_MultiTexCoord2sv(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_MultiTexCoord2sv(GLbyte * pc);
 
 #endif                          /* !defined( _INDIRECT_DISPATCH_H_ ) */
diff --git a/glx/indirect_dispatch_swap.c b/glx/indirect_dispatch_swap.c
index 80010b3..9747514 100644
--- a/glx/indirect_dispatch_swap.c
+++ b/glx/indirect_dispatch_swap.c
@@ -25,21 +25,14 @@
  * SOFTWARE.
  */
 
-#include <X11/Xmd.h>
-#include <GL/gl.h>
-#include <GL/glxproto.h>
 #include <inttypes.h>
+#include "glxserver.h"
 #include "indirect_size.h"
 #include "indirect_size_get.h"
 #include "indirect_dispatch.h"
-#include "glxserver.h"
 #include "glxbyteorder.h"
 #include "indirect_util.h"
 #include "singlesize.h"
-#include "glapi.h"
-#include "glapitable.h"
-#include "glthread.h"
-#include "dispatch.h"
 
 #define __GLX_PAD(x)  (((x) + 3) & ~3)
 
@@ -176,9 +169,7 @@ __glXDispSwap_NewList(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        CALL_NewList(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                      (GLenum) bswap_ENUM(pc + 4)
-                     ));
+        glNewList((GLuint) bswap_CARD32(pc + 0), (GLenum) bswap_ENUM(pc + 4));
         error = Success;
     }
 
@@ -195,7 +186,7 @@ __glXDispSwap_EndList(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        CALL_EndList(GET_DISPATCH(), ());
+        glEndList();
         error = Success;
     }
 
@@ -205,8 +196,7 @@ __glXDispSwap_EndList(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDispSwap_CallList(GLbyte * pc)
 {
-    CALL_CallList(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0)
-                  ));
+    glCallList((GLuint) bswap_CARD32(pc + 0));
 }
 
 void
@@ -237,7 +227,7 @@ __glXDispSwap_CallLists(GLbyte * pc)
         return;
     }
 
-    CALL_CallLists(GET_DISPATCH(), (n, type, lists));
+    glCallLists(n, type, lists);
 }
 
 int
@@ -250,9 +240,8 @@ __glXDispSwap_DeleteLists(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        CALL_DeleteLists(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                          (GLsizei) bswap_CARD32(pc + 4)
-                         ));
+        glDeleteLists((GLuint) bswap_CARD32(pc + 0),
+                      (GLsizei) bswap_CARD32(pc + 4));
         error = Success;
     }
 
@@ -271,8 +260,7 @@ __glXDispSwap_GenLists(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLuint retval;
 
-        retval = CALL_GenLists(GET_DISPATCH(), ((GLsizei) bswap_CARD32(pc + 0)
-                               ));
+        retval = glGenLists((GLsizei) bswap_CARD32(pc + 0));
         __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -283,15 +271,13 @@ __glXDispSwap_GenLists(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDispSwap_ListBase(GLbyte * pc)
 {
-    CALL_ListBase(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0)
-                  ));
+    glListBase((GLuint) bswap_CARD32(pc + 0));
 }
 
 void
 __glXDispSwap_Begin(GLbyte * pc)
 {
-    CALL_Begin(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-               ));
+    glBegin((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
@@ -300,33 +286,25 @@ __glXDispSwap_Bitmap(GLbyte * pc)
     const GLubyte *const bitmap = (const GLubyte *) ((pc + 44));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
-
-    CALL_Bitmap(GET_DISPATCH(), ((GLsizei) bswap_CARD32(pc + 20),
-                                 (GLsizei) bswap_CARD32(pc + 24),
-                                 (GLfloat) bswap_FLOAT32(pc + 28),
-                                 (GLfloat) bswap_FLOAT32(pc + 32),
-                                 (GLfloat) bswap_FLOAT32(pc + 36),
-                                 (GLfloat) bswap_FLOAT32(pc + 40), bitmap));
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
+
+    glBitmap((GLsizei) bswap_CARD32(pc + 20),
+             (GLsizei) bswap_CARD32(pc + 24),
+             (GLfloat) bswap_FLOAT32(pc + 28),
+             (GLfloat) bswap_FLOAT32(pc + 32),
+             (GLfloat) bswap_FLOAT32(pc + 36),
+             (GLfloat) bswap_FLOAT32(pc + 40), bitmap);
 }
 
 void
 __glXDispSwap_Color3bv(GLbyte * pc)
 {
-    CALL_Color3bv(GET_DISPATCH(), ((const GLbyte *) (pc + 0)
-                  ));
+    glColor3bv((const GLbyte *) (pc + 0));
 }
 
 void
@@ -339,63 +317,49 @@ __glXDispSwap_Color3dv(GLbyte * pc)
     }
 #endif
 
-    CALL_Color3dv(GET_DISPATCH(), ((const GLdouble *)
-                                   bswap_64_array((uint64_t *) (pc + 0), 3)
-                  ));
+    glColor3dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_Color3fv(GLbyte * pc)
 {
-    CALL_Color3fv(GET_DISPATCH(), ((const GLfloat *)
-                                   bswap_32_array((uint32_t *) (pc + 0), 3)
-                  ));
+    glColor3fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_Color3iv(GLbyte * pc)
 {
-    CALL_Color3iv(GET_DISPATCH(), ((const GLint *)
-                                   bswap_32_array((uint32_t *) (pc + 0), 3)
-                  ));
+    glColor3iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_Color3sv(GLbyte * pc)
 {
-    CALL_Color3sv(GET_DISPATCH(), ((const GLshort *)
-                                   bswap_16_array((uint16_t *) (pc + 0), 3)
-                  ));
+    glColor3sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_Color3ubv(GLbyte * pc)
 {
-    CALL_Color3ubv(GET_DISPATCH(), ((const GLubyte *) (pc + 0)
-                   ));
+    glColor3ubv((const GLubyte *) (pc + 0));
 }
 
 void
 __glXDispSwap_Color3uiv(GLbyte * pc)
 {
-    CALL_Color3uiv(GET_DISPATCH(), ((const GLuint *)
-                                    bswap_32_array((uint32_t *) (pc + 0), 3)
-                   ));
+    glColor3uiv((const GLuint *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_Color3usv(GLbyte * pc)
 {
-    CALL_Color3usv(GET_DISPATCH(), ((const GLushort *)
-                                    bswap_16_array((uint16_t *) (pc + 0), 3)
-                   ));
+    glColor3usv((const GLushort *) bswap_16_array((uint16_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_Color4bv(GLbyte * pc)
 {
-    CALL_Color4bv(GET_DISPATCH(), ((const GLbyte *) (pc + 0)
-                  ));
+    glColor4bv((const GLbyte *) (pc + 0));
 }
 
 void
@@ -408,69 +372,55 @@ __glXDispSwap_Color4dv(GLbyte * pc)
     }
 #endif
 
-    CALL_Color4dv(GET_DISPATCH(), ((const GLdouble *)
-                                   bswap_64_array((uint64_t *) (pc + 0), 4)
-                  ));
+    glColor4dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_Color4fv(GLbyte * pc)
 {
-    CALL_Color4fv(GET_DISPATCH(), ((const GLfloat *)
-                                   bswap_32_array((uint32_t *) (pc + 0), 4)
-                  ));
+    glColor4fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_Color4iv(GLbyte * pc)
 {
-    CALL_Color4iv(GET_DISPATCH(), ((const GLint *)
-                                   bswap_32_array((uint32_t *) (pc + 0), 4)
-                  ));
+    glColor4iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_Color4sv(GLbyte * pc)
 {
-    CALL_Color4sv(GET_DISPATCH(), ((const GLshort *)
-                                   bswap_16_array((uint16_t *) (pc + 0), 4)
-                  ));
+    glColor4sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_Color4ubv(GLbyte * pc)
 {
-    CALL_Color4ubv(GET_DISPATCH(), ((const GLubyte *) (pc + 0)
-                   ));
+    glColor4ubv((const GLubyte *) (pc + 0));
 }
 
 void
 __glXDispSwap_Color4uiv(GLbyte * pc)
 {
-    CALL_Color4uiv(GET_DISPATCH(), ((const GLuint *)
-                                    bswap_32_array((uint32_t *) (pc + 0), 4)
-                   ));
+    glColor4uiv((const GLuint *) bswap_32_array((uint32_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_Color4usv(GLbyte * pc)
 {
-    CALL_Color4usv(GET_DISPATCH(), ((const GLushort *)
-                                    bswap_16_array((uint16_t *) (pc + 0), 4)
-                   ));
+    glColor4usv((const GLushort *) bswap_16_array((uint16_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_EdgeFlagv(GLbyte * pc)
 {
-    CALL_EdgeFlagv(GET_DISPATCH(), ((const GLboolean *) (pc + 0)
-                   ));
+    glEdgeFlagv((const GLboolean *) (pc + 0));
 }
 
 void
 __glXDispSwap_End(GLbyte * pc)
 {
-    CALL_End(GET_DISPATCH(), ());
+    glEnd();
 }
 
 void
@@ -483,40 +433,31 @@ __glXDispSwap_Indexdv(GLbyte * pc)
     }
 #endif
 
-    CALL_Indexdv(GET_DISPATCH(), ((const GLdouble *)
-                                  bswap_64_array((uint64_t *) (pc + 0), 1)
-                 ));
+    glIndexdv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 1));
 }
 
 void
 __glXDispSwap_Indexfv(GLbyte * pc)
 {
-    CALL_Indexfv(GET_DISPATCH(), ((const GLfloat *)
-                                  bswap_32_array((uint32_t *) (pc + 0), 1)
-                 ));
+    glIndexfv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 1));
 }
 
 void
 __glXDispSwap_Indexiv(GLbyte * pc)
 {
-    CALL_Indexiv(GET_DISPATCH(), ((const GLint *)
-                                  bswap_32_array((uint32_t *) (pc + 0), 1)
-                 ));
+    glIndexiv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 1));
 }
 
 void
 __glXDispSwap_Indexsv(GLbyte * pc)
 {
-    CALL_Indexsv(GET_DISPATCH(), ((const GLshort *)
-                                  bswap_16_array((uint16_t *) (pc + 0), 1)
-                 ));
+    glIndexsv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 1));
 }
 
 void
 __glXDispSwap_Normal3bv(GLbyte * pc)
 {
-    CALL_Normal3bv(GET_DISPATCH(), ((const GLbyte *) (pc + 0)
-                   ));
+    glNormal3bv((const GLbyte *) (pc + 0));
 }
 
 void
@@ -529,33 +470,25 @@ __glXDispSwap_Normal3dv(GLbyte * pc)
     }
 #endif
 
-    CALL_Normal3dv(GET_DISPATCH(), ((const GLdouble *)
-                                    bswap_64_array((uint64_t *) (pc + 0), 3)
-                   ));
+    glNormal3dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_Normal3fv(GLbyte * pc)
 {
-    CALL_Normal3fv(GET_DISPATCH(), ((const GLfloat *)
-                                    bswap_32_array((uint32_t *) (pc + 0), 3)
-                   ));
+    glNormal3fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_Normal3iv(GLbyte * pc)
 {
-    CALL_Normal3iv(GET_DISPATCH(), ((const GLint *)
-                                    bswap_32_array((uint32_t *) (pc + 0), 3)
-                   ));
+    glNormal3iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_Normal3sv(GLbyte * pc)
 {
-    CALL_Normal3sv(GET_DISPATCH(), ((const GLshort *)
-                                    bswap_16_array((uint16_t *) (pc + 0), 3)
-                   ));
+    glNormal3sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 3));
 }
 
 void
@@ -568,33 +501,25 @@ __glXDispSwap_RasterPos2dv(GLbyte * pc)
     }
 #endif
 
-    CALL_RasterPos2dv(GET_DISPATCH(), ((const GLdouble *)
-                                       bswap_64_array((uint64_t *) (pc + 0), 2)
-                      ));
+    glRasterPos2dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 2));
 }
 
 void
 __glXDispSwap_RasterPos2fv(GLbyte * pc)
 {
-    CALL_RasterPos2fv(GET_DISPATCH(), ((const GLfloat *)
-                                       bswap_32_array((uint32_t *) (pc + 0), 2)
-                      ));
+    glRasterPos2fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 2));
 }
 
 void
 __glXDispSwap_RasterPos2iv(GLbyte * pc)
 {
-    CALL_RasterPos2iv(GET_DISPATCH(), ((const GLint *)
-                                       bswap_32_array((uint32_t *) (pc + 0), 2)
-                      ));
+    glRasterPos2iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 2));
 }
 
 void
 __glXDispSwap_RasterPos2sv(GLbyte * pc)
 {
-    CALL_RasterPos2sv(GET_DISPATCH(), ((const GLshort *)
-                                       bswap_16_array((uint16_t *) (pc + 0), 2)
-                      ));
+    glRasterPos2sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 2));
 }
 
 void
@@ -607,33 +532,25 @@ __glXDispSwap_RasterPos3dv(GLbyte * pc)
     }
 #endif
 
-    CALL_RasterPos3dv(GET_DISPATCH(), ((const GLdouble *)
-                                       bswap_64_array((uint64_t *) (pc + 0), 3)
-                      ));
+    glRasterPos3dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_RasterPos3fv(GLbyte * pc)
 {
-    CALL_RasterPos3fv(GET_DISPATCH(), ((const GLfloat *)
-                                       bswap_32_array((uint32_t *) (pc + 0), 3)
-                      ));
+    glRasterPos3fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_RasterPos3iv(GLbyte * pc)
 {
-    CALL_RasterPos3iv(GET_DISPATCH(), ((const GLint *)
-                                       bswap_32_array((uint32_t *) (pc + 0), 3)
-                      ));
+    glRasterPos3iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_RasterPos3sv(GLbyte * pc)
 {
-    CALL_RasterPos3sv(GET_DISPATCH(), ((const GLshort *)
-                                       bswap_16_array((uint16_t *) (pc + 0), 3)
-                      ));
+    glRasterPos3sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 3));
 }
 
 void
@@ -646,33 +563,25 @@ __glXDispSwap_RasterPos4dv(GLbyte * pc)
     }
 #endif
 
-    CALL_RasterPos4dv(GET_DISPATCH(), ((const GLdouble *)
-                                       bswap_64_array((uint64_t *) (pc + 0), 4)
-                      ));
+    glRasterPos4dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_RasterPos4fv(GLbyte * pc)
 {
-    CALL_RasterPos4fv(GET_DISPATCH(), ((const GLfloat *)
-                                       bswap_32_array((uint32_t *) (pc + 0), 4)
-                      ));
+    glRasterPos4fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_RasterPos4iv(GLbyte * pc)
 {
-    CALL_RasterPos4iv(GET_DISPATCH(), ((const GLint *)
-                                       bswap_32_array((uint32_t *) (pc + 0), 4)
-                      ));
+    glRasterPos4iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_RasterPos4sv(GLbyte * pc)
 {
-    CALL_RasterPos4sv(GET_DISPATCH(), ((const GLshort *)
-                                       bswap_16_array((uint16_t *) (pc + 0), 4)
-                      ));
+    glRasterPos4sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 4));
 }
 
 void
@@ -685,41 +594,29 @@ __glXDispSwap_Rectdv(GLbyte * pc)
     }
 #endif
 
-    CALL_Rectdv(GET_DISPATCH(), ((const GLdouble *)
-                                 bswap_64_array((uint64_t *) (pc + 0), 2),
-                                 (const GLdouble *)
-                                 bswap_64_array((uint64_t *) (pc + 16), 2)
-                ));
+    glRectdv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 2),
+             (const GLdouble *) bswap_64_array((uint64_t *) (pc + 16), 2));
 }
 
 void
 __glXDispSwap_Rectfv(GLbyte * pc)
 {
-    CALL_Rectfv(GET_DISPATCH(), ((const GLfloat *)
-                                 bswap_32_array((uint32_t *) (pc + 0), 2),
-                                 (const GLfloat *)
-                                 bswap_32_array((uint32_t *) (pc + 8), 2)
-                ));
+    glRectfv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 2),
+             (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8), 2));
 }
 
 void
 __glXDispSwap_Rectiv(GLbyte * pc)
 {
-    CALL_Rectiv(GET_DISPATCH(), ((const GLint *)
-                                 bswap_32_array((uint32_t *) (pc + 0), 2),
-                                 (const GLint *)
-                                 bswap_32_array((uint32_t *) (pc + 8), 2)
-                ));
+    glRectiv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 2),
+             (const GLint *) bswap_32_array((uint32_t *) (pc + 8), 2));
 }
 
 void
 __glXDispSwap_Rectsv(GLbyte * pc)
 {
-    CALL_Rectsv(GET_DISPATCH(), ((const GLshort *)
-                                 bswap_16_array((uint16_t *) (pc + 0), 2),
-                                 (const GLshort *)
-                                 bswap_16_array((uint16_t *) (pc + 4), 2)
-                ));
+    glRectsv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 2),
+             (const GLshort *) bswap_16_array((uint16_t *) (pc + 4), 2));
 }
 
 void
@@ -732,33 +629,25 @@ __glXDispSwap_TexCoord1dv(GLbyte * pc)
     }
 #endif
 
-    CALL_TexCoord1dv(GET_DISPATCH(), ((const GLdouble *)
-                                      bswap_64_array((uint64_t *) (pc + 0), 1)
-                     ));
+    glTexCoord1dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 1));
 }
 
 void
 __glXDispSwap_TexCoord1fv(GLbyte * pc)
 {
-    CALL_TexCoord1fv(GET_DISPATCH(), ((const GLfloat *)
-                                      bswap_32_array((uint32_t *) (pc + 0), 1)
-                     ));
+    glTexCoord1fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 1));
 }
 
 void
 __glXDispSwap_TexCoord1iv(GLbyte * pc)
 {
-    CALL_TexCoord1iv(GET_DISPATCH(), ((const GLint *)
-                                      bswap_32_array((uint32_t *) (pc + 0), 1)
-                     ));
+    glTexCoord1iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 1));
 }
 
 void
 __glXDispSwap_TexCoord1sv(GLbyte * pc)
 {
-    CALL_TexCoord1sv(GET_DISPATCH(), ((const GLshort *)
-                                      bswap_16_array((uint16_t *) (pc + 0), 1)
-                     ));
+    glTexCoord1sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 1));
 }
 
 void
@@ -771,33 +660,25 @@ __glXDispSwap_TexCoord2dv(GLbyte * pc)
     }
 #endif
 
-    CALL_TexCoord2dv(GET_DISPATCH(), ((const GLdouble *)
-                                      bswap_64_array((uint64_t *) (pc + 0), 2)
-                     ));
+    glTexCoord2dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 2));
 }
 
 void
 __glXDispSwap_TexCoord2fv(GLbyte * pc)
 {
-    CALL_TexCoord2fv(GET_DISPATCH(), ((const GLfloat *)
-                                      bswap_32_array((uint32_t *) (pc + 0), 2)
-                     ));
+    glTexCoord2fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 2));
 }
 
 void
 __glXDispSwap_TexCoord2iv(GLbyte * pc)
 {
-    CALL_TexCoord2iv(GET_DISPATCH(), ((const GLint *)
-                                      bswap_32_array((uint32_t *) (pc + 0), 2)
-                     ));
+    glTexCoord2iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 2));
 }
 
 void
 __glXDispSwap_TexCoord2sv(GLbyte * pc)
 {
-    CALL_TexCoord2sv(GET_DISPATCH(), ((const GLshort *)
-                                      bswap_16_array((uint16_t *) (pc + 0), 2)
-                     ));
+    glTexCoord2sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 2));
 }
 
 void
@@ -810,33 +691,25 @@ __glXDispSwap_TexCoord3dv(GLbyte * pc)
     }
 #endif
 
-    CALL_TexCoord3dv(GET_DISPATCH(), ((const GLdouble *)
-                                      bswap_64_array((uint64_t *) (pc + 0), 3)
-                     ));
+    glTexCoord3dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_TexCoord3fv(GLbyte * pc)
 {
-    CALL_TexCoord3fv(GET_DISPATCH(), ((const GLfloat *)
-                                      bswap_32_array((uint32_t *) (pc + 0), 3)
-                     ));
+    glTexCoord3fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_TexCoord3iv(GLbyte * pc)
 {
-    CALL_TexCoord3iv(GET_DISPATCH(), ((const GLint *)
-                                      bswap_32_array((uint32_t *) (pc + 0), 3)
-                     ));
+    glTexCoord3iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_TexCoord3sv(GLbyte * pc)
 {
-    CALL_TexCoord3sv(GET_DISPATCH(), ((const GLshort *)
-                                      bswap_16_array((uint16_t *) (pc + 0), 3)
-                     ));
+    glTexCoord3sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 3));
 }
 
 void
@@ -849,33 +722,25 @@ __glXDispSwap_TexCoord4dv(GLbyte * pc)
     }
 #endif
 
-    CALL_TexCoord4dv(GET_DISPATCH(), ((const GLdouble *)
-                                      bswap_64_array((uint64_t *) (pc + 0), 4)
-                     ));
+    glTexCoord4dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_TexCoord4fv(GLbyte * pc)
 {
-    CALL_TexCoord4fv(GET_DISPATCH(), ((const GLfloat *)
-                                      bswap_32_array((uint32_t *) (pc + 0), 4)
-                     ));
+    glTexCoord4fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_TexCoord4iv(GLbyte * pc)
 {
-    CALL_TexCoord4iv(GET_DISPATCH(), ((const GLint *)
-                                      bswap_32_array((uint32_t *) (pc + 0), 4)
-                     ));
+    glTexCoord4iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_TexCoord4sv(GLbyte * pc)
 {
-    CALL_TexCoord4sv(GET_DISPATCH(), ((const GLshort *)
-                                      bswap_16_array((uint16_t *) (pc + 0), 4)
-                     ));
+    glTexCoord4sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 4));
 }
 
 void
@@ -888,33 +753,25 @@ __glXDispSwap_Vertex2dv(GLbyte * pc)
     }
 #endif
 
-    CALL_Vertex2dv(GET_DISPATCH(), ((const GLdouble *)
-                                    bswap_64_array((uint64_t *) (pc + 0), 2)
-                   ));
+    glVertex2dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 2));
 }
 
 void
 __glXDispSwap_Vertex2fv(GLbyte * pc)
 {
-    CALL_Vertex2fv(GET_DISPATCH(), ((const GLfloat *)
-                                    bswap_32_array((uint32_t *) (pc + 0), 2)
-                   ));
+    glVertex2fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 2));
 }
 
 void
 __glXDispSwap_Vertex2iv(GLbyte * pc)
 {
-    CALL_Vertex2iv(GET_DISPATCH(), ((const GLint *)
-                                    bswap_32_array((uint32_t *) (pc + 0), 2)
-                   ));
+    glVertex2iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 2));
 }
 
 void
 __glXDispSwap_Vertex2sv(GLbyte * pc)
 {
-    CALL_Vertex2sv(GET_DISPATCH(), ((const GLshort *)
-                                    bswap_16_array((uint16_t *) (pc + 0), 2)
-                   ));
+    glVertex2sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 2));
 }
 
 void
@@ -927,33 +784,25 @@ __glXDispSwap_Vertex3dv(GLbyte * pc)
     }
 #endif
 
-    CALL_Vertex3dv(GET_DISPATCH(), ((const GLdouble *)
-                                    bswap_64_array((uint64_t *) (pc + 0), 3)
-                   ));
+    glVertex3dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_Vertex3fv(GLbyte * pc)
 {
-    CALL_Vertex3fv(GET_DISPATCH(), ((const GLfloat *)
-                                    bswap_32_array((uint32_t *) (pc + 0), 3)
-                   ));
+    glVertex3fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_Vertex3iv(GLbyte * pc)
 {
-    CALL_Vertex3iv(GET_DISPATCH(), ((const GLint *)
-                                    bswap_32_array((uint32_t *) (pc + 0), 3)
-                   ));
+    glVertex3iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
 __glXDispSwap_Vertex3sv(GLbyte * pc)
 {
-    CALL_Vertex3sv(GET_DISPATCH(), ((const GLshort *)
-                                    bswap_16_array((uint16_t *) (pc + 0), 3)
-                   ));
+    glVertex3sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 3));
 }
 
 void
@@ -966,33 +815,25 @@ __glXDispSwap_Vertex4dv(GLbyte * pc)
     }
 #endif
 
-    CALL_Vertex4dv(GET_DISPATCH(), ((const GLdouble *)
-                                    bswap_64_array((uint64_t *) (pc + 0), 4)
-                   ));
+    glVertex4dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_Vertex4fv(GLbyte * pc)
 {
-    CALL_Vertex4fv(GET_DISPATCH(), ((const GLfloat *)
-                                    bswap_32_array((uint32_t *) (pc + 0), 4)
-                   ));
+    glVertex4fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_Vertex4iv(GLbyte * pc)
 {
-    CALL_Vertex4iv(GET_DISPATCH(), ((const GLint *)
-                                    bswap_32_array((uint32_t *) (pc + 0), 4)
-                   ));
+    glVertex4iv((const GLint *) bswap_32_array((uint32_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_Vertex4sv(GLbyte * pc)
 {
-    CALL_Vertex4sv(GET_DISPATCH(), ((const GLshort *)
-                                    bswap_16_array((uint16_t *) (pc + 0), 4)
-                   ));
+    glVertex4sv((const GLshort *) bswap_16_array((uint16_t *) (pc + 0), 4));
 }
 
 void
@@ -1005,33 +846,26 @@ __glXDispSwap_ClipPlane(GLbyte * pc)
     }
 #endif
 
-    CALL_ClipPlane(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 32),
-                                    (const GLdouble *)
-                                    bswap_64_array((uint64_t *) (pc + 0), 4)
-                   ));
+    glClipPlane((GLenum) bswap_ENUM(pc + 32),
+                (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 4));
 }
 
 void
 __glXDispSwap_ColorMaterial(GLbyte * pc)
 {
-    CALL_ColorMaterial(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                        (GLenum) bswap_ENUM(pc + 4)
-                       ));
+    glColorMaterial((GLenum) bswap_ENUM(pc + 0), (GLenum) bswap_ENUM(pc + 4));
 }
 
 void
 __glXDispSwap_CullFace(GLbyte * pc)
 {
-    CALL_CullFace(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                  ));
+    glCullFace((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
 __glXDispSwap_Fogf(GLbyte * pc)
 {
-    CALL_Fogf(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                               (GLfloat) bswap_FLOAT32(pc + 4)
-              ));
+    glFogf((GLenum) bswap_ENUM(pc + 0), (GLfloat) bswap_FLOAT32(pc + 4));
 }
 
 void
@@ -1044,15 +878,13 @@ __glXDispSwap_Fogfv(GLbyte * pc)
         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
                                          __glFogfv_size(pname));
 
-    CALL_Fogfv(GET_DISPATCH(), (pname, params));
+    glFogfv(pname, params);
 }
 
 void
 __glXDispSwap_Fogi(GLbyte * pc)
 {
-    CALL_Fogi(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                               (GLint) bswap_CARD32(pc + 4)
-              ));
+    glFogi((GLenum) bswap_ENUM(pc + 0), (GLint) bswap_CARD32(pc + 4));
 }
 
 void
@@ -1065,31 +897,26 @@ __glXDispSwap_Fogiv(GLbyte * pc)
         (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
                                        __glFogiv_size(pname));
 
-    CALL_Fogiv(GET_DISPATCH(), (pname, params));
+    glFogiv(pname, params);
 }
 
 void
 __glXDispSwap_FrontFace(GLbyte * pc)
 {
-    CALL_FrontFace(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                   ));
+    glFrontFace((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
 __glXDispSwap_Hint(GLbyte * pc)
 {
-    CALL_Hint(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                               (GLenum) bswap_ENUM(pc + 4)
-              ));
+    glHint((GLenum) bswap_ENUM(pc + 0), (GLenum) bswap_ENUM(pc + 4));
 }
 
 void
 __glXDispSwap_Lightf(GLbyte * pc)
 {
-    CALL_Lightf(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                 (GLenum) bswap_ENUM(pc + 4),
-                                 (GLfloat) bswap_FLOAT32(pc + 8)
-                ));
+    glLightf((GLenum) bswap_ENUM(pc + 0),
+             (GLenum) bswap_ENUM(pc + 4), (GLfloat) bswap_FLOAT32(pc + 8));
 }
 
 void
@@ -1102,16 +929,14 @@ __glXDispSwap_Lightfv(GLbyte * pc)
         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
                                          __glLightfv_size(pname));
 
-    CALL_Lightfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0), pname, params));
+    glLightfv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
 __glXDispSwap_Lighti(GLbyte * pc)
 {
-    CALL_Lighti(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                 (GLenum) bswap_ENUM(pc + 4),
-                                 (GLint) bswap_CARD32(pc + 8)
-                ));
+    glLighti((GLenum) bswap_ENUM(pc + 0),
+             (GLenum) bswap_ENUM(pc + 4), (GLint) bswap_CARD32(pc + 8));
 }
 
 void
@@ -1124,15 +949,13 @@ __glXDispSwap_Lightiv(GLbyte * pc)
         (const GLint *) bswap_32_array((uint32_t *) (pc + 8),
                                        __glLightiv_size(pname));
 
-    CALL_Lightiv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0), pname, params));
+    glLightiv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
 __glXDispSwap_LightModelf(GLbyte * pc)
 {
-    CALL_LightModelf(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                      (GLfloat) bswap_FLOAT32(pc + 4)
-                     ));
+    glLightModelf((GLenum) bswap_ENUM(pc + 0), (GLfloat) bswap_FLOAT32(pc + 4));
 }
 
 void
@@ -1145,15 +968,13 @@ __glXDispSwap_LightModelfv(GLbyte * pc)
         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
                                          __glLightModelfv_size(pname));
 
-    CALL_LightModelfv(GET_DISPATCH(), (pname, params));
+    glLightModelfv(pname, params);
 }
 
 void
 __glXDispSwap_LightModeli(GLbyte * pc)
 {
-    CALL_LightModeli(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                      (GLint) bswap_CARD32(pc + 4)
-                     ));
+    glLightModeli((GLenum) bswap_ENUM(pc + 0), (GLint) bswap_CARD32(pc + 4));
 }
 
 void
@@ -1166,31 +987,27 @@ __glXDispSwap_LightModeliv(GLbyte * pc)
         (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
                                        __glLightModeliv_size(pname));
 
-    CALL_LightModeliv(GET_DISPATCH(), (pname, params));
+    glLightModeliv(pname, params);
 }
 
 void
 __glXDispSwap_LineStipple(GLbyte * pc)
 {
-    CALL_LineStipple(GET_DISPATCH(), ((GLint) bswap_CARD32(pc + 0),
-                                      (GLushort) bswap_CARD16(pc + 4)
-                     ));
+    glLineStipple((GLint) bswap_CARD32(pc + 0),
+                  (GLushort) bswap_CARD16(pc + 4));
 }
 
 void
 __glXDispSwap_LineWidth(GLbyte * pc)
 {
-    CALL_LineWidth(GET_DISPATCH(), ((GLfloat) bswap_FLOAT32(pc + 0)
-                   ));
+    glLineWidth((GLfloat) bswap_FLOAT32(pc + 0));
 }
 
 void
 __glXDispSwap_Materialf(GLbyte * pc)
 {
-    CALL_Materialf(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                    (GLenum) bswap_ENUM(pc + 4),
-                                    (GLfloat) bswap_FLOAT32(pc + 8)
-                   ));
+    glMaterialf((GLenum) bswap_ENUM(pc + 0),
+                (GLenum) bswap_ENUM(pc + 4), (GLfloat) bswap_FLOAT32(pc + 8));
 }
 
 void
@@ -1203,17 +1020,14 @@ __glXDispSwap_Materialfv(GLbyte * pc)
         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
                                          __glMaterialfv_size(pname));
 
-    CALL_Materialfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                     pname, params));
+    glMaterialfv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
 __glXDispSwap_Materiali(GLbyte * pc)
 {
-    CALL_Materiali(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                    (GLenum) bswap_ENUM(pc + 4),
-                                    (GLint) bswap_CARD32(pc + 8)
-                   ));
+    glMateriali((GLenum) bswap_ENUM(pc + 0),
+                (GLenum) bswap_ENUM(pc + 4), (GLint) bswap_CARD32(pc + 8));
 }
 
 void
@@ -1226,23 +1040,19 @@ __glXDispSwap_Materialiv(GLbyte * pc)
         (const GLint *) bswap_32_array((uint32_t *) (pc + 8),
                                        __glMaterialiv_size(pname));
 
-    CALL_Materialiv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                     pname, params));
+    glMaterialiv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
 __glXDispSwap_PointSize(GLbyte * pc)
 {
-    CALL_PointSize(GET_DISPATCH(), ((GLfloat) bswap_FLOAT32(pc + 0)
-                   ));
+    glPointSize((GLfloat) bswap_FLOAT32(pc + 0));
 }
 
 void
 __glXDispSwap_PolygonMode(GLbyte * pc)
 {
-    CALL_PolygonMode(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                      (GLenum) bswap_ENUM(pc + 4)
-                     ));
+    glPolygonMode((GLenum) bswap_ENUM(pc + 0), (GLenum) bswap_ENUM(pc + 4));
 }
 
 void
@@ -1251,47 +1061,36 @@ __glXDispSwap_PolygonStipple(GLbyte * pc)
     const GLubyte *const mask = (const GLubyte *) ((pc + 20));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
 
-    CALL_PolygonStipple(GET_DISPATCH(), (mask));
+    glPolygonStipple(mask);
 }
 
 void
 __glXDispSwap_Scissor(GLbyte * pc)
 {
-    CALL_Scissor(GET_DISPATCH(), ((GLint) bswap_CARD32(pc + 0),
-                                  (GLint) bswap_CARD32(pc + 4),
-                                  (GLsizei) bswap_CARD32(pc + 8),
-                                  (GLsizei) bswap_CARD32(pc + 12)
-                 ));
+    glScissor((GLint) bswap_CARD32(pc + 0),
+              (GLint) bswap_CARD32(pc + 4),
+              (GLsizei) bswap_CARD32(pc + 8), (GLsizei) bswap_CARD32(pc + 12));
 }
 
 void
 __glXDispSwap_ShadeModel(GLbyte * pc)
 {
-    CALL_ShadeModel(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                    ));
+    glShadeModel((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
 __glXDispSwap_TexParameterf(GLbyte * pc)
 {
-    CALL_TexParameterf(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                        (GLenum) bswap_ENUM(pc + 4),
-                                        (GLfloat) bswap_FLOAT32(pc + 8)
-                       ));
+    glTexParameterf((GLenum) bswap_ENUM(pc + 0),
+                    (GLenum) bswap_ENUM(pc + 4),
+                    (GLfloat) bswap_FLOAT32(pc + 8));
 }
 
 void
@@ -1304,17 +1103,14 @@ __glXDispSwap_TexParameterfv(GLbyte * pc)
         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
                                          __glTexParameterfv_size(pname));
 
-    CALL_TexParameterfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                         pname, params));
+    glTexParameterfv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
 __glXDispSwap_TexParameteri(GLbyte * pc)
 {
-    CALL_TexParameteri(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                        (GLenum) bswap_ENUM(pc + 4),
-                                        (GLint) bswap_CARD32(pc + 8)
-                       ));
+    glTexParameteri((GLenum) bswap_ENUM(pc + 0),
+                    (GLenum) bswap_ENUM(pc + 4), (GLint) bswap_CARD32(pc + 8));
 }
 
 void
@@ -1327,8 +1123,7 @@ __glXDispSwap_TexParameteriv(GLbyte * pc)
         (const GLint *) bswap_32_array((uint32_t *) (pc + 8),
                                        __glTexParameteriv_size(pname));
 
-    CALL_TexParameteriv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                         pname, params));
+    glTexParameteriv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
@@ -1337,28 +1132,21 @@ __glXDispSwap_TexImage1D(GLbyte * pc)
     const GLvoid *const pixels = (const GLvoid *) ((pc + 52));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
-
-    CALL_TexImage1D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 20),
-                                     (GLint) bswap_CARD32(pc + 24),
-                                     (GLint) bswap_CARD32(pc + 28),
-                                     (GLsizei) bswap_CARD32(pc + 32),
-                                     (GLint) bswap_CARD32(pc + 40),
-                                     (GLenum) bswap_ENUM(pc + 44),
-                                     (GLenum) bswap_ENUM(pc + 48), pixels));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
+
+    glTexImage1D((GLenum) bswap_ENUM(pc + 20),
+                 (GLint) bswap_CARD32(pc + 24),
+                 (GLint) bswap_CARD32(pc + 28),
+                 (GLsizei) bswap_CARD32(pc + 32),
+                 (GLint) bswap_CARD32(pc + 40),
+                 (GLenum) bswap_ENUM(pc + 44),
+                 (GLenum) bswap_ENUM(pc + 48), pixels);
 }
 
 void
@@ -1367,38 +1155,29 @@ __glXDispSwap_TexImage2D(GLbyte * pc)
     const GLvoid *const pixels = (const GLvoid *) ((pc + 52));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
-
-    CALL_TexImage2D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 20),
-                                     (GLint) bswap_CARD32(pc + 24),
-                                     (GLint) bswap_CARD32(pc + 28),
-                                     (GLsizei) bswap_CARD32(pc + 32),
-                                     (GLsizei) bswap_CARD32(pc + 36),
-                                     (GLint) bswap_CARD32(pc + 40),
-                                     (GLenum) bswap_ENUM(pc + 44),
-                                     (GLenum) bswap_ENUM(pc + 48), pixels));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
+
+    glTexImage2D((GLenum) bswap_ENUM(pc + 20),
+                 (GLint) bswap_CARD32(pc + 24),
+                 (GLint) bswap_CARD32(pc + 28),
+                 (GLsizei) bswap_CARD32(pc + 32),
+                 (GLsizei) bswap_CARD32(pc + 36),
+                 (GLint) bswap_CARD32(pc + 40),
+                 (GLenum) bswap_ENUM(pc + 44),
+                 (GLenum) bswap_ENUM(pc + 48), pixels);
 }
 
 void
 __glXDispSwap_TexEnvf(GLbyte * pc)
 {
-    CALL_TexEnvf(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                  (GLenum) bswap_ENUM(pc + 4),
-                                  (GLfloat) bswap_FLOAT32(pc + 8)
-                 ));
+    glTexEnvf((GLenum) bswap_ENUM(pc + 0),
+              (GLenum) bswap_ENUM(pc + 4), (GLfloat) bswap_FLOAT32(pc + 8));
 }
 
 void
@@ -1411,16 +1190,14 @@ __glXDispSwap_TexEnvfv(GLbyte * pc)
         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
                                          __glTexEnvfv_size(pname));
 
-    CALL_TexEnvfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0), pname, params));
+    glTexEnvfv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
 __glXDispSwap_TexEnvi(GLbyte * pc)
 {
-    CALL_TexEnvi(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                  (GLenum) bswap_ENUM(pc + 4),
-                                  (GLint) bswap_CARD32(pc + 8)
-                 ));
+    glTexEnvi((GLenum) bswap_ENUM(pc + 0),
+              (GLenum) bswap_ENUM(pc + 4), (GLint) bswap_CARD32(pc + 8));
 }
 
 void
@@ -1433,7 +1210,7 @@ __glXDispSwap_TexEnviv(GLbyte * pc)
         (const GLint *) bswap_32_array((uint32_t *) (pc + 8),
                                        __glTexEnviv_size(pname));
 
-    CALL_TexEnviv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0), pname, params));
+    glTexEnviv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
@@ -1446,10 +1223,8 @@ __glXDispSwap_TexGend(GLbyte * pc)
     }
 #endif
 
-    CALL_TexGend(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 8),
-                                  (GLenum) bswap_ENUM(pc + 12),
-                                  (GLdouble) bswap_FLOAT64(pc + 0)
-                 ));
+    glTexGend((GLenum) bswap_ENUM(pc + 8),
+              (GLenum) bswap_ENUM(pc + 12), (GLdouble) bswap_FLOAT64(pc + 0));
 }
 
 void
@@ -1472,16 +1247,14 @@ __glXDispSwap_TexGendv(GLbyte * pc)
         (const GLdouble *) bswap_64_array((uint64_t *) (pc + 8),
                                           __glTexGendv_size(pname));
 
-    CALL_TexGendv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0), pname, params));
+    glTexGendv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
 __glXDispSwap_TexGenf(GLbyte * pc)
 {
-    CALL_TexGenf(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                  (GLenum) bswap_ENUM(pc + 4),
-                                  (GLfloat) bswap_FLOAT32(pc + 8)
-                 ));
+    glTexGenf((GLenum) bswap_ENUM(pc + 0),
+              (GLenum) bswap_ENUM(pc + 4), (GLfloat) bswap_FLOAT32(pc + 8));
 }
 
 void
@@ -1494,16 +1267,14 @@ __glXDispSwap_TexGenfv(GLbyte * pc)
         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
                                          __glTexGenfv_size(pname));
 
-    CALL_TexGenfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0), pname, params));
+    glTexGenfv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
 __glXDispSwap_TexGeni(GLbyte * pc)
 {
-    CALL_TexGeni(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                  (GLenum) bswap_ENUM(pc + 4),
-                                  (GLint) bswap_CARD32(pc + 8)
-                 ));
+    glTexGeni((GLenum) bswap_ENUM(pc + 0),
+              (GLenum) bswap_ENUM(pc + 4), (GLint) bswap_CARD32(pc + 8));
 }
 
 void
@@ -1516,88 +1287,79 @@ __glXDispSwap_TexGeniv(GLbyte * pc)
         (const GLint *) bswap_32_array((uint32_t *) (pc + 8),
                                        __glTexGeniv_size(pname));
 
-    CALL_TexGeniv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0), pname, params));
+    glTexGeniv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
 __glXDispSwap_InitNames(GLbyte * pc)
 {
-    CALL_InitNames(GET_DISPATCH(), ());
+    glInitNames();
 }
 
 void
 __glXDispSwap_LoadName(GLbyte * pc)
 {
-    CALL_LoadName(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0)
-                  ));
+    glLoadName((GLuint) bswap_CARD32(pc + 0));
 }
 
 void
 __glXDispSwap_PassThrough(GLbyte * pc)
 {
-    CALL_PassThrough(GET_DISPATCH(), ((GLfloat) bswap_FLOAT32(pc + 0)
-                     ));
+    glPassThrough((GLfloat) bswap_FLOAT32(pc + 0));
 }
 
 void
 __glXDispSwap_PopName(GLbyte * pc)
 {
-    CALL_PopName(GET_DISPATCH(), ());
+    glPopName();
 }
 
 void
 __glXDispSwap_PushName(GLbyte * pc)
 {
-    CALL_PushName(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0)
-                  ));
+    glPushName((GLuint) bswap_CARD32(pc + 0));
 }
 
 void
 __glXDispSwap_DrawBuffer(GLbyte * pc)
 {
-    CALL_DrawBuffer(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                    ));
+    glDrawBuffer((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
 __glXDispSwap_Clear(GLbyte * pc)
 {
-    CALL_Clear(GET_DISPATCH(), ((GLbitfield) bswap_CARD32(pc + 0)
-               ));
+    glClear((GLbitfield) bswap_CARD32(pc + 0));
 }
 
 void
 __glXDispSwap_ClearAccum(GLbyte * pc)
 {
-    CALL_ClearAccum(GET_DISPATCH(), ((GLfloat) bswap_FLOAT32(pc + 0),
-                                     (GLfloat) bswap_FLOAT32(pc + 4),
-                                     (GLfloat) bswap_FLOAT32(pc + 8),
-                                     (GLfloat) bswap_FLOAT32(pc + 12)
-                    ));
+    glClearAccum((GLfloat) bswap_FLOAT32(pc + 0),
+                 (GLfloat) bswap_FLOAT32(pc + 4),
+                 (GLfloat) bswap_FLOAT32(pc + 8),
+                 (GLfloat) bswap_FLOAT32(pc + 12));
 }
 
 void
 __glXDispSwap_ClearIndex(GLbyte * pc)
 {
-    CALL_ClearIndex(GET_DISPATCH(), ((GLfloat) bswap_FLOAT32(pc + 0)
-                    ));
+    glClearIndex((GLfloat) bswap_FLOAT32(pc + 0));
 }
 
 void
 __glXDispSwap_ClearColor(GLbyte * pc)
 {
-    CALL_ClearColor(GET_DISPATCH(), ((GLclampf) bswap_FLOAT32(pc + 0),
-                                     (GLclampf) bswap_FLOAT32(pc + 4),
-                                     (GLclampf) bswap_FLOAT32(pc + 8),
-                                     (GLclampf) bswap_FLOAT32(pc + 12)
-                    ));
+    glClearColor((GLclampf) bswap_FLOAT32(pc + 0),
+                 (GLclampf) bswap_FLOAT32(pc + 4),
+                 (GLclampf) bswap_FLOAT32(pc + 8),
+                 (GLclampf) bswap_FLOAT32(pc + 12));
 }
 
 void
 __glXDispSwap_ClearStencil(GLbyte * pc)
 {
-    CALL_ClearStencil(GET_DISPATCH(), ((GLint) bswap_CARD32(pc + 0)
-                      ));
+    glClearStencil((GLint) bswap_CARD32(pc + 0));
 }
 
 void
@@ -1610,74 +1372,63 @@ __glXDispSwap_ClearDepth(GLbyte * pc)
     }
 #endif
 
-    CALL_ClearDepth(GET_DISPATCH(), ((GLclampd) bswap_FLOAT64(pc + 0)
-                    ));
+    glClearDepth((GLclampd) bswap_FLOAT64(pc + 0));
 }
 
 void
 __glXDispSwap_StencilMask(GLbyte * pc)
 {
-    CALL_StencilMask(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0)
-                     ));
+    glStencilMask((GLuint) bswap_CARD32(pc + 0));
 }
 
 void
 __glXDispSwap_ColorMask(GLbyte * pc)
 {
-    CALL_ColorMask(GET_DISPATCH(), (*(GLboolean *) (pc + 0),
-                                    *(GLboolean *) (pc + 1),
-                                    *(GLboolean *) (pc + 2),
-                                    *(GLboolean *) (pc + 3)
-                   ));
+    glColorMask(*(GLboolean *) (pc + 0),
+                *(GLboolean *) (pc + 1),
+                *(GLboolean *) (pc + 2), *(GLboolean *) (pc + 3));
 }
 
 void
 __glXDispSwap_DepthMask(GLbyte * pc)
 {
-    CALL_DepthMask(GET_DISPATCH(), (*(GLboolean *) (pc + 0)
-                   ));
+    glDepthMask(*(GLboolean *) (pc + 0));
 }
 
 void
 __glXDispSwap_IndexMask(GLbyte * pc)
 {
-    CALL_IndexMask(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0)
-                   ));
+    glIndexMask((GLuint) bswap_CARD32(pc + 0));
 }
 
 void
 __glXDispSwap_Accum(GLbyte * pc)
 {
-    CALL_Accum(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                (GLfloat) bswap_FLOAT32(pc + 4)
-               ));
+    glAccum((GLenum) bswap_ENUM(pc + 0), (GLfloat) bswap_FLOAT32(pc + 4));
 }
 
 void
 __glXDispSwap_Disable(GLbyte * pc)
 {
-    CALL_Disable(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                 ));
+    glDisable((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
 __glXDispSwap_Enable(GLbyte * pc)
 {
-    CALL_Enable(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                ));
+    glEnable((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
 __glXDispSwap_PopAttrib(GLbyte * pc)
 {
-    CALL_PopAttrib(GET_DISPATCH(), ());
+    glPopAttrib();
 }
 
 void
 __glXDispSwap_PushAttrib(GLbyte * pc)
 {
-    CALL_PushAttrib(GET_DISPATCH(), ((GLbitfield) bswap_CARD32(pc + 0)
-                    ));
+    glPushAttrib((GLbitfield) bswap_CARD32(pc + 0));
 }
 
 void
@@ -1690,19 +1441,17 @@ __glXDispSwap_MapGrid1d(GLbyte * pc)
     }
 #endif
 
-    CALL_MapGrid1d(GET_DISPATCH(), ((GLint) bswap_CARD32(pc + 16),
-                                    (GLdouble) bswap_FLOAT64(pc + 0),
-                                    (GLdouble) bswap_FLOAT64(pc + 8)
-                   ));
+    glMapGrid1d((GLint) bswap_CARD32(pc + 16),
+                (GLdouble) bswap_FLOAT64(pc + 0),
+                (GLdouble) bswap_FLOAT64(pc + 8));
 }
 
 void
 __glXDispSwap_MapGrid1f(GLbyte * pc)
 {
-    CALL_MapGrid1f(GET_DISPATCH(), ((GLint) bswap_CARD32(pc + 0),
-                                    (GLfloat) bswap_FLOAT32(pc + 4),
-                                    (GLfloat) bswap_FLOAT32(pc + 8)
-                   ));
+    glMapGrid1f((GLint) bswap_CARD32(pc + 0),
+                (GLfloat) bswap_FLOAT32(pc + 4),
+                (GLfloat) bswap_FLOAT32(pc + 8));
 }
 
 void
@@ -1715,25 +1464,23 @@ __glXDispSwap_MapGrid2d(GLbyte * pc)
     }
 #endif
 
-    CALL_MapGrid2d(GET_DISPATCH(), ((GLint) bswap_CARD32(pc + 32),
-                                    (GLdouble) bswap_FLOAT64(pc + 0),
-                                    (GLdouble) bswap_FLOAT64(pc + 8),
-                                    (GLint) bswap_CARD32(pc + 36),
-                                    (GLdouble) bswap_FLOAT64(pc + 16),
-                                    (GLdouble) bswap_FLOAT64(pc + 24)
-                   ));
+    glMapGrid2d((GLint) bswap_CARD32(pc + 32),
+                (GLdouble) bswap_FLOAT64(pc + 0),
+                (GLdouble) bswap_FLOAT64(pc + 8),
+                (GLint) bswap_CARD32(pc + 36),
+                (GLdouble) bswap_FLOAT64(pc + 16),
+                (GLdouble) bswap_FLOAT64(pc + 24));
 }
 
 void
 __glXDispSwap_MapGrid2f(GLbyte * pc)
 {
-    CALL_MapGrid2f(GET_DISPATCH(), ((GLint) bswap_CARD32(pc + 0),
-                                    (GLfloat) bswap_FLOAT32(pc + 4),
-                                    (GLfloat) bswap_FLOAT32(pc + 8),
-                                    (GLint) bswap_CARD32(pc + 12),
-                                    (GLfloat) bswap_FLOAT32(pc + 16),
-                                    (GLfloat) bswap_FLOAT32(pc + 20)
-                   ));
+    glMapGrid2f((GLint) bswap_CARD32(pc + 0),
+                (GLfloat) bswap_FLOAT32(pc + 4),
+                (GLfloat) bswap_FLOAT32(pc + 8),
+                (GLint) bswap_CARD32(pc + 12),
+                (GLfloat) bswap_FLOAT32(pc + 16),
+                (GLfloat) bswap_FLOAT32(pc + 20));
 }
 
 void
@@ -1746,17 +1493,13 @@ __glXDispSwap_EvalCoord1dv(GLbyte * pc)
     }
 #endif
 
-    CALL_EvalCoord1dv(GET_DISPATCH(), ((const GLdouble *)
-                                       bswap_64_array((uint64_t *) (pc + 0), 1)
-                      ));
+    glEvalCoord1dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 1));
 }
 
 void
 __glXDispSwap_EvalCoord1fv(GLbyte * pc)
 {
-    CALL_EvalCoord1fv(GET_DISPATCH(), ((const GLfloat *)
-                                       bswap_32_array((uint32_t *) (pc + 0), 1)
-                      ));
+    glEvalCoord1fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 1));
 }
 
 void
@@ -1769,124 +1512,99 @@ __glXDispSwap_EvalCoord2dv(GLbyte * pc)
     }
 #endif
 
-    CALL_EvalCoord2dv(GET_DISPATCH(), ((const GLdouble *)
-                                       bswap_64_array((uint64_t *) (pc + 0), 2)
-                      ));
+    glEvalCoord2dv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 2));
 }
 
 void
 __glXDispSwap_EvalCoord2fv(GLbyte * pc)
 {
-    CALL_EvalCoord2fv(GET_DISPATCH(), ((const GLfloat *)
-                                       bswap_32_array((uint32_t *) (pc + 0), 2)
-                      ));
+    glEvalCoord2fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 2));
 }
 
 void
 __glXDispSwap_EvalMesh1(GLbyte * pc)
 {
-    CALL_EvalMesh1(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                    (GLint) bswap_CARD32(pc + 4),
-                                    (GLint) bswap_CARD32(pc + 8)
-                   ));
+    glEvalMesh1((GLenum) bswap_ENUM(pc + 0),
+                (GLint) bswap_CARD32(pc + 4), (GLint) bswap_CARD32(pc + 8));
 }
 
 void
 __glXDispSwap_EvalPoint1(GLbyte * pc)
 {
-    CALL_EvalPoint1(GET_DISPATCH(), ((GLint) bswap_CARD32(pc + 0)
-                    ));
+    glEvalPoint1((GLint) bswap_CARD32(pc + 0));
 }
 
 void
 __glXDispSwap_EvalMesh2(GLbyte * pc)
 {
-    CALL_EvalMesh2(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                    (GLint) bswap_CARD32(pc + 4),
-                                    (GLint) bswap_CARD32(pc + 8),
-                                    (GLint) bswap_CARD32(pc + 12),
-                                    (GLint) bswap_CARD32(pc + 16)
-                   ));
+    glEvalMesh2((GLenum) bswap_ENUM(pc + 0),
+                (GLint) bswap_CARD32(pc + 4),
+                (GLint) bswap_CARD32(pc + 8),
+                (GLint) bswap_CARD32(pc + 12), (GLint) bswap_CARD32(pc + 16));
 }
 
 void
 __glXDispSwap_EvalPoint2(GLbyte * pc)
 {
-    CALL_EvalPoint2(GET_DISPATCH(), ((GLint) bswap_CARD32(pc + 0),
-                                     (GLint) bswap_CARD32(pc + 4)
-                    ));
+    glEvalPoint2((GLint) bswap_CARD32(pc + 0), (GLint) bswap_CARD32(pc + 4));
 }
 
 void
 __glXDispSwap_AlphaFunc(GLbyte * pc)
 {
-    CALL_AlphaFunc(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                    (GLclampf) bswap_FLOAT32(pc + 4)
-                   ));
+    glAlphaFunc((GLenum) bswap_ENUM(pc + 0), (GLclampf) bswap_FLOAT32(pc + 4));
 }
 
 void
 __glXDispSwap_BlendFunc(GLbyte * pc)
 {
-    CALL_BlendFunc(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                    (GLenum) bswap_ENUM(pc + 4)
-                   ));
+    glBlendFunc((GLenum) bswap_ENUM(pc + 0), (GLenum) bswap_ENUM(pc + 4));
 }
 
 void
 __glXDispSwap_LogicOp(GLbyte * pc)
 {
-    CALL_LogicOp(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                 ));
+    glLogicOp((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
 __glXDispSwap_StencilFunc(GLbyte * pc)
 {
-    CALL_StencilFunc(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                      (GLint) bswap_CARD32(pc + 4),
-                                      (GLuint) bswap_CARD32(pc + 8)
-                     ));
+    glStencilFunc((GLenum) bswap_ENUM(pc + 0),
+                  (GLint) bswap_CARD32(pc + 4), (GLuint) bswap_CARD32(pc + 8));
 }
 
 void
 __glXDispSwap_StencilOp(GLbyte * pc)
 {
-    CALL_StencilOp(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                    (GLenum) bswap_ENUM(pc + 4),
-                                    (GLenum) bswap_ENUM(pc + 8)
-                   ));
+    glStencilOp((GLenum) bswap_ENUM(pc + 0),
+                (GLenum) bswap_ENUM(pc + 4), (GLenum) bswap_ENUM(pc + 8));
 }
 
 void
 __glXDispSwap_DepthFunc(GLbyte * pc)
 {
-    CALL_DepthFunc(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                   ));
+    glDepthFunc((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
 __glXDispSwap_PixelZoom(GLbyte * pc)
 {
-    CALL_PixelZoom(GET_DISPATCH(), ((GLfloat) bswap_FLOAT32(pc + 0),
-                                    (GLfloat) bswap_FLOAT32(pc + 4)
-                   ));
+    glPixelZoom((GLfloat) bswap_FLOAT32(pc + 0),
+                (GLfloat) bswap_FLOAT32(pc + 4));
 }
 
 void
 __glXDispSwap_PixelTransferf(GLbyte * pc)
 {
-    CALL_PixelTransferf(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                         (GLfloat) bswap_FLOAT32(pc + 4)
-                        ));
+    glPixelTransferf((GLenum) bswap_ENUM(pc + 0),
+                     (GLfloat) bswap_FLOAT32(pc + 4));
 }
 
 void
 __glXDispSwap_PixelTransferi(GLbyte * pc)
 {
-    CALL_PixelTransferi(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                         (GLint) bswap_CARD32(pc + 4)
-                        ));
+    glPixelTransferi((GLenum) bswap_ENUM(pc + 0), (GLint) bswap_CARD32(pc + 4));
 }
 
 int
@@ -1899,9 +1617,8 @@ __glXDispSwap_PixelStoref(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        CALL_PixelStoref(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                          (GLfloat) bswap_FLOAT32(pc + 4)
-                         ));
+        glPixelStoref((GLenum) bswap_ENUM(pc + 0),
+                      (GLfloat) bswap_FLOAT32(pc + 4));
         error = Success;
     }
 
@@ -1918,9 +1635,8 @@ __glXDispSwap_PixelStorei(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        CALL_PixelStorei(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                          (GLint) bswap_CARD32(pc + 4)
-                         ));
+        glPixelStorei((GLenum) bswap_ENUM(pc + 0),
+                      (GLint) bswap_CARD32(pc + 4));
         error = Success;
     }
 
@@ -1932,11 +1648,9 @@ __glXDispSwap_PixelMapfv(GLbyte * pc)
 {
     const GLsizei mapsize = (GLsizei) bswap_CARD32(pc + 4);
 
-    CALL_PixelMapfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                     mapsize,
-                                     (const GLfloat *)
-                                     bswap_32_array((uint32_t *) (pc + 8), 0)
-                    ));
+    glPixelMapfv((GLenum) bswap_ENUM(pc + 0),
+                 mapsize,
+                 (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8), 0));
 }
 
 void
@@ -1944,11 +1658,9 @@ __glXDispSwap_PixelMapuiv(GLbyte * pc)
 {
     const GLsizei mapsize = (GLsizei) bswap_CARD32(pc + 4);
 
-    CALL_PixelMapuiv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                      mapsize,
-                                      (const GLuint *)
-                                      bswap_32_array((uint32_t *) (pc + 8), 0)
-                     ));
+    glPixelMapuiv((GLenum) bswap_ENUM(pc + 0),
+                  mapsize,
+                  (const GLuint *) bswap_32_array((uint32_t *) (pc + 8), 0));
 }
 
 void
@@ -1956,29 +1668,24 @@ __glXDispSwap_PixelMapusv(GLbyte * pc)
 {
     const GLsizei mapsize = (GLsizei) bswap_CARD32(pc + 4);
 
-    CALL_PixelMapusv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                      mapsize,
-                                      (const GLushort *)
-                                      bswap_16_array((uint16_t *) (pc + 8), 0)
-                     ));
+    glPixelMapusv((GLenum) bswap_ENUM(pc + 0),
+                  mapsize,
+                  (const GLushort *) bswap_16_array((uint16_t *) (pc + 8), 0));
 }
 
 void
 __glXDispSwap_ReadBuffer(GLbyte * pc)
 {
-    CALL_ReadBuffer(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                    ));
+    glReadBuffer((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
 __glXDispSwap_CopyPixels(GLbyte * pc)
 {
-    CALL_CopyPixels(GET_DISPATCH(), ((GLint) bswap_CARD32(pc + 0),
-                                     (GLint) bswap_CARD32(pc + 4),
-                                     (GLsizei) bswap_CARD32(pc + 8),
-                                     (GLsizei) bswap_CARD32(pc + 12),
-                                     (GLenum) bswap_ENUM(pc + 16)
-                    ));
+    glCopyPixels((GLint) bswap_CARD32(pc + 0),
+                 (GLint) bswap_CARD32(pc + 4),
+                 (GLsizei) bswap_CARD32(pc + 8),
+                 (GLsizei) bswap_CARD32(pc + 12), (GLenum) bswap_ENUM(pc + 16));
 }
 
 void
@@ -1987,25 +1694,18 @@ __glXDispSwap_DrawPixels(GLbyte * pc)
     const GLvoid *const pixels = (const GLvoid *) ((pc + 36));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
-
-    CALL_DrawPixels(GET_DISPATCH(), ((GLsizei) bswap_CARD32(pc + 20),
-                                     (GLsizei) bswap_CARD32(pc + 24),
-                                     (GLenum) bswap_ENUM(pc + 28),
-                                     (GLenum) bswap_ENUM(pc + 32), pixels));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
+
+    glDrawPixels((GLsizei) bswap_CARD32(pc + 20),
+                 (GLsizei) bswap_CARD32(pc + 24),
+                 (GLenum) bswap_ENUM(pc + 28),
+                 (GLenum) bswap_ENUM(pc + 32), pixels);
 }
 
 int
@@ -2030,7 +1730,7 @@ __glXDispSwap_GetBooleanv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetBooleanv(GET_DISPATCH(), (pname, params));
+        glGetBooleanv(pname, params);
         __glXSendReplySwap(cl->client, params, compsize, 1, GL_FALSE, 0);
         error = Success;
     }
@@ -2050,8 +1750,7 @@ __glXDispSwap_GetClipPlane(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLdouble equation[4];
 
-        CALL_GetClipPlane(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                           equation));
+        glGetClipPlane((GLenum) bswap_ENUM(pc + 0), equation);
         (void) bswap_64_array((uint64_t *) equation, 4);
         __glXSendReplySwap(cl->client, equation, 4, 8, GL_TRUE, 0);
         error = Success;
@@ -2082,7 +1781,7 @@ __glXDispSwap_GetDoublev(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetDoublev(GET_DISPATCH(), (pname, params));
+        glGetDoublev(pname, params);
         (void) bswap_64_array((uint64_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 8, GL_FALSE, 0);
         error = Success;
@@ -2103,7 +1802,7 @@ __glXDispSwap_GetError(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLenum retval;
 
-        retval = CALL_GetError(GET_DISPATCH(), ());
+        retval = glGetError();
         __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -2133,7 +1832,7 @@ __glXDispSwap_GetFloatv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetFloatv(GET_DISPATCH(), (pname, params));
+        glGetFloatv(pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2164,7 +1863,7 @@ __glXDispSwap_GetIntegerv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetIntegerv(GET_DISPATCH(), (pname, params));
+        glGetIntegerv(pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2195,8 +1894,7 @@ __glXDispSwap_GetLightfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetLightfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                         pname, params));
+        glGetLightfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2227,8 +1925,7 @@ __glXDispSwap_GetLightiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetLightiv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                         pname, params));
+        glGetLightiv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2260,7 +1957,7 @@ __glXDispSwap_GetMapdv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMapdv(GET_DISPATCH(), (target, query, v));
+        glGetMapdv(target, query, v);
         (void) bswap_64_array((uint64_t *) v, compsize);
         __glXSendReplySwap(cl->client, v, compsize, 8, GL_FALSE, 0);
         error = Success;
@@ -2292,7 +1989,7 @@ __glXDispSwap_GetMapfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMapfv(GET_DISPATCH(), (target, query, v));
+        glGetMapfv(target, query, v);
         (void) bswap_32_array((uint32_t *) v, compsize);
         __glXSendReplySwap(cl->client, v, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2324,7 +2021,7 @@ __glXDispSwap_GetMapiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMapiv(GET_DISPATCH(), (target, query, v));
+        glGetMapiv(target, query, v);
         (void) bswap_32_array((uint32_t *) v, compsize);
         __glXSendReplySwap(cl->client, v, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2355,8 +2052,7 @@ __glXDispSwap_GetMaterialfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMaterialfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                            pname, params));
+        glGetMaterialfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2387,8 +2083,7 @@ __glXDispSwap_GetMaterialiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMaterialiv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                            pname, params));
+        glGetMaterialiv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2419,7 +2114,7 @@ __glXDispSwap_GetPixelMapfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetPixelMapfv(GET_DISPATCH(), (map, values));
+        glGetPixelMapfv(map, values);
         (void) bswap_32_array((uint32_t *) values, compsize);
         __glXSendReplySwap(cl->client, values, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2450,7 +2145,7 @@ __glXDispSwap_GetPixelMapuiv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetPixelMapuiv(GET_DISPATCH(), (map, values));
+        glGetPixelMapuiv(map, values);
         (void) bswap_32_array((uint32_t *) values, compsize);
         __glXSendReplySwap(cl->client, values, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2481,7 +2176,7 @@ __glXDispSwap_GetPixelMapusv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetPixelMapusv(GET_DISPATCH(), (map, values));
+        glGetPixelMapusv(map, values);
         (void) bswap_16_array((uint16_t *) values, compsize);
         __glXSendReplySwap(cl->client, values, compsize, 2, GL_FALSE, 0);
         error = Success;
@@ -2512,8 +2207,7 @@ __glXDispSwap_GetTexEnvfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexEnvfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                          pname, params));
+        glGetTexEnvfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2544,8 +2238,7 @@ __glXDispSwap_GetTexEnviv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexEnviv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                          pname, params));
+        glGetTexEnviv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2576,8 +2269,7 @@ __glXDispSwap_GetTexGendv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexGendv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                          pname, params));
+        glGetTexGendv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_64_array((uint64_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 8, GL_FALSE, 0);
         error = Success;
@@ -2608,8 +2300,7 @@ __glXDispSwap_GetTexGenfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexGenfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                          pname, params));
+        glGetTexGenfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2640,8 +2331,7 @@ __glXDispSwap_GetTexGeniv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexGeniv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                          pname, params));
+        glGetTexGeniv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2672,8 +2362,7 @@ __glXDispSwap_GetTexParameterfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexParameterfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                pname, params));
+        glGetTexParameterfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2704,8 +2393,7 @@ __glXDispSwap_GetTexParameteriv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexParameteriv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                pname, params));
+        glGetTexParameteriv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2736,11 +2424,8 @@ __glXDispSwap_GetTexLevelParameterfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexLevelParameterfv(GET_DISPATCH(), ((GLenum)
-                                                     bswap_ENUM(pc + 0),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          4),
-                                                     pname, params));
+        glGetTexLevelParameterfv((GLenum) bswap_ENUM(pc + 0),
+                                 (GLint) bswap_CARD32(pc + 4), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2771,11 +2456,8 @@ __glXDispSwap_GetTexLevelParameteriv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetTexLevelParameteriv(GET_DISPATCH(), ((GLenum)
-                                                     bswap_ENUM(pc + 0),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          4),
-                                                     pname, params));
+        glGetTexLevelParameteriv((GLenum) bswap_ENUM(pc + 0),
+                                 (GLint) bswap_CARD32(pc + 4), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -2796,8 +2478,7 @@ __glXDispSwap_IsEnabled(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = CALL_IsEnabled(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                                ));
+        retval = glIsEnabled((GLenum) bswap_ENUM(pc + 0));
         __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -2817,8 +2498,7 @@ __glXDispSwap_IsList(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = CALL_IsList(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0)
-                             ));
+        retval = glIsList((GLuint) bswap_CARD32(pc + 0));
         __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -2836,9 +2516,8 @@ __glXDispSwap_DepthRange(GLbyte * pc)
     }
 #endif
 
-    CALL_DepthRange(GET_DISPATCH(), ((GLclampd) bswap_FLOAT64(pc + 0),
-                                     (GLclampd) bswap_FLOAT64(pc + 8)
-                    ));
+    glDepthRange((GLclampd) bswap_FLOAT64(pc + 0),
+                 (GLclampd) bswap_FLOAT64(pc + 8));
 }
 
 void
@@ -2851,27 +2530,24 @@ __glXDispSwap_Frustum(GLbyte * pc)
     }
 #endif
 
-    CALL_Frustum(GET_DISPATCH(), ((GLdouble) bswap_FLOAT64(pc + 0),
-                                  (GLdouble) bswap_FLOAT64(pc + 8),
-                                  (GLdouble) bswap_FLOAT64(pc + 16),
-                                  (GLdouble) bswap_FLOAT64(pc + 24),
-                                  (GLdouble) bswap_FLOAT64(pc + 32),
-                                  (GLdouble) bswap_FLOAT64(pc + 40)
-                 ));
+    glFrustum((GLdouble) bswap_FLOAT64(pc + 0),
+              (GLdouble) bswap_FLOAT64(pc + 8),
+              (GLdouble) bswap_FLOAT64(pc + 16),
+              (GLdouble) bswap_FLOAT64(pc + 24),
+              (GLdouble) bswap_FLOAT64(pc + 32),
+              (GLdouble) bswap_FLOAT64(pc + 40));
 }
 
 void
 __glXDispSwap_LoadIdentity(GLbyte * pc)
 {
-    CALL_LoadIdentity(GET_DISPATCH(), ());
+    glLoadIdentity();
 }
 
 void
 __glXDispSwap_LoadMatrixf(GLbyte * pc)
 {
-    CALL_LoadMatrixf(GET_DISPATCH(), ((const GLfloat *)
-                                      bswap_32_array((uint32_t *) (pc + 0), 16)
-                     ));
+    glLoadMatrixf((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 16));
 }
 
 void
@@ -2884,24 +2560,19 @@ __glXDispSwap_LoadMatrixd(GLbyte * pc)
     }
 #endif
 
-    CALL_LoadMatrixd(GET_DISPATCH(), ((const GLdouble *)
-                                      bswap_64_array((uint64_t *) (pc + 0), 16)
-                     ));
+    glLoadMatrixd((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 16));
 }
 
 void
 __glXDispSwap_MatrixMode(GLbyte * pc)
 {
-    CALL_MatrixMode(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                    ));
+    glMatrixMode((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
 __glXDispSwap_MultMatrixf(GLbyte * pc)
 {
-    CALL_MultMatrixf(GET_DISPATCH(), ((const GLfloat *)
-                                      bswap_32_array((uint32_t *) (pc + 0), 16)
-                     ));
+    glMultMatrixf((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 16));
 }
 
 void
@@ -2914,9 +2585,7 @@ __glXDispSwap_MultMatrixd(GLbyte * pc)
     }
 #endif
 
-    CALL_MultMatrixd(GET_DISPATCH(), ((const GLdouble *)
-                                      bswap_64_array((uint64_t *) (pc + 0), 16)
-                     ));
+    glMultMatrixd((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 16));
 }
 
 void
@@ -2929,25 +2598,24 @@ __glXDispSwap_Ortho(GLbyte * pc)
     }
 #endif
 
-    CALL_Ortho(GET_DISPATCH(), ((GLdouble) bswap_FLOAT64(pc + 0),
-                                (GLdouble) bswap_FLOAT64(pc + 8),
-                                (GLdouble) bswap_FLOAT64(pc + 16),
-                                (GLdouble) bswap_FLOAT64(pc + 24),
-                                (GLdouble) bswap_FLOAT64(pc + 32),
-                                (GLdouble) bswap_FLOAT64(pc + 40)
-               ));
+    glOrtho((GLdouble) bswap_FLOAT64(pc + 0),
+            (GLdouble) bswap_FLOAT64(pc + 8),
+            (GLdouble) bswap_FLOAT64(pc + 16),
+            (GLdouble) bswap_FLOAT64(pc + 24),
+            (GLdouble) bswap_FLOAT64(pc + 32),
+            (GLdouble) bswap_FLOAT64(pc + 40));
 }
 
 void
 __glXDispSwap_PopMatrix(GLbyte * pc)
 {
-    CALL_PopMatrix(GET_DISPATCH(), ());
+    glPopMatrix();
 }
 
 void
 __glXDispSwap_PushMatrix(GLbyte * pc)
 {
-    CALL_PushMatrix(GET_DISPATCH(), ());
+    glPushMatrix();
 }
 
 void
@@ -2960,21 +2628,19 @@ __glXDispSwap_Rotated(GLbyte * pc)
     }
 #endif
 
-    CALL_Rotated(GET_DISPATCH(), ((GLdouble) bswap_FLOAT64(pc + 0),
-                                  (GLdouble) bswap_FLOAT64(pc + 8),
-                                  (GLdouble) bswap_FLOAT64(pc + 16),
-                                  (GLdouble) bswap_FLOAT64(pc + 24)
-                 ));
+    glRotated((GLdouble) bswap_FLOAT64(pc + 0),
+              (GLdouble) bswap_FLOAT64(pc + 8),
+              (GLdouble) bswap_FLOAT64(pc + 16),
+              (GLdouble) bswap_FLOAT64(pc + 24));
 }
 
 void
 __glXDispSwap_Rotatef(GLbyte * pc)
 {
-    CALL_Rotatef(GET_DISPATCH(), ((GLfloat) bswap_FLOAT32(pc + 0),
-                                  (GLfloat) bswap_FLOAT32(pc + 4),
-                                  (GLfloat) bswap_FLOAT32(pc + 8),
-                                  (GLfloat) bswap_FLOAT32(pc + 12)
-                 ));
+    glRotatef((GLfloat) bswap_FLOAT32(pc + 0),
+              (GLfloat) bswap_FLOAT32(pc + 4),
+              (GLfloat) bswap_FLOAT32(pc + 8),
+              (GLfloat) bswap_FLOAT32(pc + 12));
 }
 
 void
@@ -2987,19 +2653,16 @@ __glXDispSwap_Scaled(GLbyte * pc)
     }
 #endif
 
-    CALL_Scaled(GET_DISPATCH(), ((GLdouble) bswap_FLOAT64(pc + 0),
-                                 (GLdouble) bswap_FLOAT64(pc + 8),
-                                 (GLdouble) bswap_FLOAT64(pc + 16)
-                ));
+    glScaled((GLdouble) bswap_FLOAT64(pc + 0),
+             (GLdouble) bswap_FLOAT64(pc + 8),
+             (GLdouble) bswap_FLOAT64(pc + 16));
 }
 
 void
 __glXDispSwap_Scalef(GLbyte * pc)
 {
-    CALL_Scalef(GET_DISPATCH(), ((GLfloat) bswap_FLOAT32(pc + 0),
-                                 (GLfloat) bswap_FLOAT32(pc + 4),
-                                 (GLfloat) bswap_FLOAT32(pc + 8)
-                ));
+    glScalef((GLfloat) bswap_FLOAT32(pc + 0),
+             (GLfloat) bswap_FLOAT32(pc + 4), (GLfloat) bswap_FLOAT32(pc + 8));
 }
 
 void
@@ -3012,52 +2675,44 @@ __glXDispSwap_Translated(GLbyte * pc)
     }
 #endif
 
-    CALL_Translated(GET_DISPATCH(), ((GLdouble) bswap_FLOAT64(pc + 0),
-                                     (GLdouble) bswap_FLOAT64(pc + 8),
-                                     (GLdouble) bswap_FLOAT64(pc + 16)
-                    ));
+    glTranslated((GLdouble) bswap_FLOAT64(pc + 0),
+                 (GLdouble) bswap_FLOAT64(pc + 8),
+                 (GLdouble) bswap_FLOAT64(pc + 16));
 }
 
 void
 __glXDispSwap_Translatef(GLbyte * pc)
 {
-    CALL_Translatef(GET_DISPATCH(), ((GLfloat) bswap_FLOAT32(pc + 0),
-                                     (GLfloat) bswap_FLOAT32(pc + 4),
-                                     (GLfloat) bswap_FLOAT32(pc + 8)
-                    ));
+    glTranslatef((GLfloat) bswap_FLOAT32(pc + 0),
+                 (GLfloat) bswap_FLOAT32(pc + 4),
+                 (GLfloat) bswap_FLOAT32(pc + 8));
 }
 
 void
 __glXDispSwap_Viewport(GLbyte * pc)
 {
-    CALL_Viewport(GET_DISPATCH(), ((GLint) bswap_CARD32(pc + 0),
-                                   (GLint) bswap_CARD32(pc + 4),
-                                   (GLsizei) bswap_CARD32(pc + 8),
-                                   (GLsizei) bswap_CARD32(pc + 12)
-                  ));
+    glViewport((GLint) bswap_CARD32(pc + 0),
+               (GLint) bswap_CARD32(pc + 4),
+               (GLsizei) bswap_CARD32(pc + 8), (GLsizei) bswap_CARD32(pc + 12));
 }
 
 void
 __glXDispSwap_BindTexture(GLbyte * pc)
 {
-    CALL_BindTexture(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                      (GLuint) bswap_CARD32(pc + 4)
-                     ));
+    glBindTexture((GLenum) bswap_ENUM(pc + 0), (GLuint) bswap_CARD32(pc + 4));
 }
 
 void
 __glXDispSwap_Indexubv(GLbyte * pc)
 {
-    CALL_Indexubv(GET_DISPATCH(), ((const GLubyte *) (pc + 0)
-                  ));
+    glIndexubv((const GLubyte *) (pc + 0));
 }
 
 void
 __glXDispSwap_PolygonOffset(GLbyte * pc)
 {
-    CALL_PolygonOffset(GET_DISPATCH(), ((GLfloat) bswap_FLOAT32(pc + 0),
-                                        (GLfloat) bswap_FLOAT32(pc + 4)
-                       ));
+    glPolygonOffset((GLfloat) bswap_FLOAT32(pc + 0),
+                    (GLfloat) bswap_FLOAT32(pc + 4));
 }
 
 int
@@ -3077,11 +2732,10 @@ __glXDispSwap_AreTexturesResident(__GLXclientState * cl, GLbyte * pc)
         GLboolean *residences =
             __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
         retval =
-            CALL_AreTexturesResident(GET_DISPATCH(),
-                                     (n,
-                                      (const GLuint *)
-                                      bswap_32_array((uint32_t *) (pc + 4), 0),
-                                      residences));
+            glAreTexturesResident(n,
+                                  (const GLuint *)
+                                  bswap_32_array((uint32_t *) (pc + 4), 0),
+                                  residences);
         __glXSendReplySwap(cl->client, residences, n, 1, GL_TRUE, retval);
         error = Success;
     }
@@ -3106,11 +2760,10 @@ __glXDispSwap_AreTexturesResidentEXT(__GLXclientState * cl, GLbyte * pc)
         GLboolean *residences =
             __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
         retval =
-            CALL_AreTexturesResident(GET_DISPATCH(),
-                                     (n,
-                                      (const GLuint *)
-                                      bswap_32_array((uint32_t *) (pc + 4), 0),
-                                      residences));
+            glAreTexturesResident(n,
+                                  (const GLuint *)
+                                  bswap_32_array((uint32_t *) (pc + 4), 0),
+                                  residences);
         __glXSendReplySwap(cl->client, residences, n, 1, GL_TRUE, retval);
         error = Success;
     }
@@ -3121,54 +2774,50 @@ __glXDispSwap_AreTexturesResidentEXT(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDispSwap_CopyTexImage1D(GLbyte * pc)
 {
-    CALL_CopyTexImage1D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                         (GLint) bswap_CARD32(pc + 4),
-                                         (GLenum) bswap_ENUM(pc + 8),
-                                         (GLint) bswap_CARD32(pc + 12),
-                                         (GLint) bswap_CARD32(pc + 16),
-                                         (GLsizei) bswap_CARD32(pc + 20),
-                                         (GLint) bswap_CARD32(pc + 24)
-                        ));
+    glCopyTexImage1D((GLenum) bswap_ENUM(pc + 0),
+                     (GLint) bswap_CARD32(pc + 4),
+                     (GLenum) bswap_ENUM(pc + 8),
+                     (GLint) bswap_CARD32(pc + 12),
+                     (GLint) bswap_CARD32(pc + 16),
+                     (GLsizei) bswap_CARD32(pc + 20),
+                     (GLint) bswap_CARD32(pc + 24));
 }
 
 void
 __glXDispSwap_CopyTexImage2D(GLbyte * pc)
 {
-    CALL_CopyTexImage2D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                         (GLint) bswap_CARD32(pc + 4),
-                                         (GLenum) bswap_ENUM(pc + 8),
-                                         (GLint) bswap_CARD32(pc + 12),
-                                         (GLint) bswap_CARD32(pc + 16),
-                                         (GLsizei) bswap_CARD32(pc + 20),
-                                         (GLsizei) bswap_CARD32(pc + 24),
-                                         (GLint) bswap_CARD32(pc + 28)
-                        ));
+    glCopyTexImage2D((GLenum) bswap_ENUM(pc + 0),
+                     (GLint) bswap_CARD32(pc + 4),
+                     (GLenum) bswap_ENUM(pc + 8),
+                     (GLint) bswap_CARD32(pc + 12),
+                     (GLint) bswap_CARD32(pc + 16),
+                     (GLsizei) bswap_CARD32(pc + 20),
+                     (GLsizei) bswap_CARD32(pc + 24),
+                     (GLint) bswap_CARD32(pc + 28));
 }
 
 void
 __glXDispSwap_CopyTexSubImage1D(GLbyte * pc)
 {
-    CALL_CopyTexSubImage1D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                            (GLint) bswap_CARD32(pc + 4),
-                                            (GLint) bswap_CARD32(pc + 8),
-                                            (GLint) bswap_CARD32(pc + 12),
-                                            (GLint) bswap_CARD32(pc + 16),
-                                            (GLsizei) bswap_CARD32(pc + 20)
-                           ));
+    glCopyTexSubImage1D((GLenum) bswap_ENUM(pc + 0),
+                        (GLint) bswap_CARD32(pc + 4),
+                        (GLint) bswap_CARD32(pc + 8),
+                        (GLint) bswap_CARD32(pc + 12),
+                        (GLint) bswap_CARD32(pc + 16),
+                        (GLsizei) bswap_CARD32(pc + 20));
 }
 
 void
 __glXDispSwap_CopyTexSubImage2D(GLbyte * pc)
 {
-    CALL_CopyTexSubImage2D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                            (GLint) bswap_CARD32(pc + 4),
-                                            (GLint) bswap_CARD32(pc + 8),
-                                            (GLint) bswap_CARD32(pc + 12),
-                                            (GLint) bswap_CARD32(pc + 16),
-                                            (GLint) bswap_CARD32(pc + 20),
-                                            (GLsizei) bswap_CARD32(pc + 24),
-                                            (GLsizei) bswap_CARD32(pc + 28)
-                           ));
+    glCopyTexSubImage2D((GLenum) bswap_ENUM(pc + 0),
+                        (GLint) bswap_CARD32(pc + 4),
+                        (GLint) bswap_CARD32(pc + 8),
+                        (GLint) bswap_CARD32(pc + 12),
+                        (GLint) bswap_CARD32(pc + 16),
+                        (GLint) bswap_CARD32(pc + 20),
+                        (GLsizei) bswap_CARD32(pc + 24),
+                        (GLsizei) bswap_CARD32(pc + 28));
 }
 
 int
@@ -3183,11 +2832,9 @@ __glXDispSwap_DeleteTextures(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-        CALL_DeleteTextures(GET_DISPATCH(), (n,
-                                             (const GLuint *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          4), 0)
-                            ));
+        glDeleteTextures(n,
+                         (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                         0));
         error = Success;
     }
 
@@ -3206,11 +2853,9 @@ __glXDispSwap_DeleteTexturesEXT(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-        CALL_DeleteTextures(GET_DISPATCH(), (n,
-                                             (const GLuint *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          4), 0)
-                            ));
+        glDeleteTextures(n,
+                         (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                         0));
         error = Success;
     }
 
@@ -3233,7 +2878,7 @@ __glXDispSwap_GenTextures(__GLXclientState * cl, GLbyte * pc)
         GLuint *textures =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        CALL_GenTextures(GET_DISPATCH(), (n, textures));
+        glGenTextures(n, textures);
         (void) bswap_32_array((uint32_t *) textures, n);
         __glXSendReplySwap(cl->client, textures, n, 4, GL_TRUE, 0);
         error = Success;
@@ -3258,7 +2903,7 @@ __glXDispSwap_GenTexturesEXT(__GLXclientState * cl, GLbyte * pc)
         GLuint *textures =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        CALL_GenTextures(GET_DISPATCH(), (n, textures));
+        glGenTextures(n, textures);
         (void) bswap_32_array((uint32_t *) textures, n);
         __glXSendReplySwap(cl->client, textures, n, 4, GL_TRUE, 0);
         error = Success;
@@ -3279,8 +2924,7 @@ __glXDispSwap_IsTexture(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = CALL_IsTexture(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0)
-                                ));
+        retval = glIsTexture((GLuint) bswap_CARD32(pc + 0));
         __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -3300,8 +2944,7 @@ __glXDispSwap_IsTextureEXT(__GLXclientState * cl, GLbyte * pc)
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = CALL_IsTexture(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0)
-                                ));
+        retval = glIsTexture((GLuint) bswap_CARD32(pc + 0));
         __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -3314,15 +2957,11 @@ __glXDispSwap_PrioritizeTextures(GLbyte * pc)
 {
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-    CALL_PrioritizeTextures(GET_DISPATCH(), (n,
-                                             (const GLuint *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          4),
-                                                            0),
-                                             (const GLclampf *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          4), 0)
-                            ));
+    glPrioritizeTextures(n,
+                         (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                         0),
+                         (const GLclampf *)
+                         bswap_32_array((uint32_t *) (pc + 4), 0));
 }
 
 void
@@ -3331,27 +2970,20 @@ __glXDispSwap_TexSubImage1D(GLbyte * pc)
     const GLvoid *const pixels = (const GLvoid *) ((pc + 56));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
-
-    CALL_TexSubImage1D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 20),
-                                        (GLint) bswap_CARD32(pc + 24),
-                                        (GLint) bswap_CARD32(pc + 28),
-                                        (GLsizei) bswap_CARD32(pc + 36),
-                                        (GLenum) bswap_ENUM(pc + 44),
-                                        (GLenum) bswap_ENUM(pc + 48), pixels));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
+
+    glTexSubImage1D((GLenum) bswap_ENUM(pc + 20),
+                    (GLint) bswap_CARD32(pc + 24),
+                    (GLint) bswap_CARD32(pc + 28),
+                    (GLsizei) bswap_CARD32(pc + 36),
+                    (GLenum) bswap_ENUM(pc + 44),
+                    (GLenum) bswap_ENUM(pc + 48), pixels);
 }
 
 void
@@ -3360,46 +2992,37 @@ __glXDispSwap_TexSubImage2D(GLbyte * pc)
     const GLvoid *const pixels = (const GLvoid *) ((pc + 56));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
-
-    CALL_TexSubImage2D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 20),
-                                        (GLint) bswap_CARD32(pc + 24),
-                                        (GLint) bswap_CARD32(pc + 28),
-                                        (GLint) bswap_CARD32(pc + 32),
-                                        (GLsizei) bswap_CARD32(pc + 36),
-                                        (GLsizei) bswap_CARD32(pc + 40),
-                                        (GLenum) bswap_ENUM(pc + 44),
-                                        (GLenum) bswap_ENUM(pc + 48), pixels));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
+
+    glTexSubImage2D((GLenum) bswap_ENUM(pc + 20),
+                    (GLint) bswap_CARD32(pc + 24),
+                    (GLint) bswap_CARD32(pc + 28),
+                    (GLint) bswap_CARD32(pc + 32),
+                    (GLsizei) bswap_CARD32(pc + 36),
+                    (GLsizei) bswap_CARD32(pc + 40),
+                    (GLenum) bswap_ENUM(pc + 44),
+                    (GLenum) bswap_ENUM(pc + 48), pixels);
 }
 
 void
 __glXDispSwap_BlendColor(GLbyte * pc)
 {
-    CALL_BlendColor(GET_DISPATCH(), ((GLclampf) bswap_FLOAT32(pc + 0),
-                                     (GLclampf) bswap_FLOAT32(pc + 4),
-                                     (GLclampf) bswap_FLOAT32(pc + 8),
-                                     (GLclampf) bswap_FLOAT32(pc + 12)
-                    ));
+    glBlendColor((GLclampf) bswap_FLOAT32(pc + 0),
+                 (GLclampf) bswap_FLOAT32(pc + 4),
+                 (GLclampf) bswap_FLOAT32(pc + 8),
+                 (GLclampf) bswap_FLOAT32(pc + 12));
 }
 
 void
 __glXDispSwap_BlendEquation(GLbyte * pc)
 {
-    CALL_BlendEquation(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                       ));
+    glBlendEquation((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
@@ -3408,26 +3031,19 @@ __glXDispSwap_ColorTable(GLbyte * pc)
     const GLvoid *const table = (const GLvoid *) ((pc + 40));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
-
-    CALL_ColorTable(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 20),
-                                     (GLenum) bswap_ENUM(pc + 24),
-                                     (GLsizei) bswap_CARD32(pc + 28),
-                                     (GLenum) bswap_ENUM(pc + 32),
-                                     (GLenum) bswap_ENUM(pc + 36), table));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
+
+    glColorTable((GLenum) bswap_ENUM(pc + 20),
+                 (GLenum) bswap_ENUM(pc + 24),
+                 (GLsizei) bswap_CARD32(pc + 28),
+                 (GLenum) bswap_ENUM(pc + 32),
+                 (GLenum) bswap_ENUM(pc + 36), table);
 }
 
 void
@@ -3440,8 +3056,7 @@ __glXDispSwap_ColorTableParameterfv(GLbyte * pc)
         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
                                          __glColorTableParameterfv_size(pname));
 
-    CALL_ColorTableParameterfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                pname, params));
+    glColorTableParameterfv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
@@ -3454,19 +3069,17 @@ __glXDispSwap_ColorTableParameteriv(GLbyte * pc)
         (const GLint *) bswap_32_array((uint32_t *) (pc + 8),
                                        __glColorTableParameteriv_size(pname));
 
-    CALL_ColorTableParameteriv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                pname, params));
+    glColorTableParameteriv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
 __glXDispSwap_CopyColorTable(GLbyte * pc)
 {
-    CALL_CopyColorTable(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                         (GLenum) bswap_ENUM(pc + 4),
-                                         (GLint) bswap_CARD32(pc + 8),
-                                         (GLint) bswap_CARD32(pc + 12),
-                                         (GLsizei) bswap_CARD32(pc + 16)
-                        ));
+    glCopyColorTable((GLenum) bswap_ENUM(pc + 0),
+                     (GLenum) bswap_ENUM(pc + 4),
+                     (GLint) bswap_CARD32(pc + 8),
+                     (GLint) bswap_CARD32(pc + 12),
+                     (GLsizei) bswap_CARD32(pc + 16));
 }
 
 int
@@ -3491,9 +3104,7 @@ __glXDispSwap_GetColorTableParameterfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetColorTableParameterfv(GET_DISPATCH(), ((GLenum)
-                                                       bswap_ENUM(pc + 0),
-                                                       pname, params));
+        glGetColorTableParameterfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -3524,9 +3135,7 @@ __glXDispSwap_GetColorTableParameterfvSGI(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetColorTableParameterfv(GET_DISPATCH(), ((GLenum)
-                                                       bswap_ENUM(pc + 0),
-                                                       pname, params));
+        glGetColorTableParameterfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -3557,9 +3166,7 @@ __glXDispSwap_GetColorTableParameteriv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetColorTableParameteriv(GET_DISPATCH(), ((GLenum)
-                                                       bswap_ENUM(pc + 0),
-                                                       pname, params));
+        glGetColorTableParameteriv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -3590,9 +3197,7 @@ __glXDispSwap_GetColorTableParameterivSGI(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetColorTableParameteriv(GET_DISPATCH(), ((GLenum)
-                                                       bswap_ENUM(pc + 0),
-                                                       pname, params));
+        glGetColorTableParameteriv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -3607,37 +3212,29 @@ __glXDispSwap_ColorSubTable(GLbyte * pc)
     const GLvoid *const data = (const GLvoid *) ((pc + 40));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
-
-    CALL_ColorSubTable(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 20),
-                                        (GLsizei) bswap_CARD32(pc + 24),
-                                        (GLsizei) bswap_CARD32(pc + 28),
-                                        (GLenum) bswap_ENUM(pc + 32),
-                                        (GLenum) bswap_ENUM(pc + 36), data));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
+
+    glColorSubTable((GLenum) bswap_ENUM(pc + 20),
+                    (GLsizei) bswap_CARD32(pc + 24),
+                    (GLsizei) bswap_CARD32(pc + 28),
+                    (GLenum) bswap_ENUM(pc + 32),
+                    (GLenum) bswap_ENUM(pc + 36), data);
 }
 
 void
 __glXDispSwap_CopyColorSubTable(GLbyte * pc)
 {
-    CALL_CopyColorSubTable(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                            (GLsizei) bswap_CARD32(pc + 4),
-                                            (GLint) bswap_CARD32(pc + 8),
-                                            (GLint) bswap_CARD32(pc + 12),
-                                            (GLsizei) bswap_CARD32(pc + 16)
-                           ));
+    glCopyColorSubTable((GLenum) bswap_ENUM(pc + 0),
+                        (GLsizei) bswap_CARD32(pc + 4),
+                        (GLint) bswap_CARD32(pc + 8),
+                        (GLint) bswap_CARD32(pc + 12),
+                        (GLsizei) bswap_CARD32(pc + 16));
 }
 
 void
@@ -3646,27 +3243,19 @@ __glXDispSwap_ConvolutionFilter1D(GLbyte * pc)
     const GLvoid *const image = (const GLvoid *) ((pc + 44));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
-
-    CALL_ConvolutionFilter1D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 20),
-                                              (GLenum) bswap_ENUM(pc + 24),
-                                              (GLsizei) bswap_CARD32(pc + 28),
-                                              (GLenum) bswap_ENUM(pc + 36),
-                                              (GLenum) bswap_ENUM(pc + 40),
-                                              image));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
+
+    glConvolutionFilter1D((GLenum) bswap_ENUM(pc + 20),
+                          (GLenum) bswap_ENUM(pc + 24),
+                          (GLsizei) bswap_CARD32(pc + 28),
+                          (GLenum) bswap_ENUM(pc + 36),
+                          (GLenum) bswap_ENUM(pc + 40), image);
 }
 
 void
@@ -3675,37 +3264,28 @@ __glXDispSwap_ConvolutionFilter2D(GLbyte * pc)
     const GLvoid *const image = (const GLvoid *) ((pc + 44));
     __GLXpixelHeader *const hdr = (__GLXpixelHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
-
-    CALL_ConvolutionFilter2D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 20),
-                                              (GLenum) bswap_ENUM(pc + 24),
-                                              (GLsizei) bswap_CARD32(pc + 28),
-                                              (GLsizei) bswap_CARD32(pc + 32),
-                                              (GLenum) bswap_ENUM(pc + 36),
-                                              (GLenum) bswap_ENUM(pc + 40),
-                                              image));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
+
+    glConvolutionFilter2D((GLenum) bswap_ENUM(pc + 20),
+                          (GLenum) bswap_ENUM(pc + 24),
+                          (GLsizei) bswap_CARD32(pc + 28),
+                          (GLsizei) bswap_CARD32(pc + 32),
+                          (GLenum) bswap_ENUM(pc + 36),
+                          (GLenum) bswap_ENUM(pc + 40), image);
 }
 
 void
 __glXDispSwap_ConvolutionParameterf(GLbyte * pc)
 {
-    CALL_ConvolutionParameterf(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                (GLenum) bswap_ENUM(pc + 4),
-                                                (GLfloat) bswap_FLOAT32(pc + 8)
-                               ));
+    glConvolutionParameterf((GLenum) bswap_ENUM(pc + 0),
+                            (GLenum) bswap_ENUM(pc + 4),
+                            (GLfloat) bswap_FLOAT32(pc + 8));
 }
 
 void
@@ -3719,17 +3299,15 @@ __glXDispSwap_ConvolutionParameterfv(GLbyte * pc)
                                          __glConvolutionParameterfv_size
                                          (pname));
 
-    CALL_ConvolutionParameterfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                 pname, params));
+    glConvolutionParameterfv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
 __glXDispSwap_ConvolutionParameteri(GLbyte * pc)
 {
-    CALL_ConvolutionParameteri(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                (GLenum) bswap_ENUM(pc + 4),
-                                                (GLint) bswap_CARD32(pc + 8)
-                               ));
+    glConvolutionParameteri((GLenum) bswap_ENUM(pc + 0),
+                            (GLenum) bswap_ENUM(pc + 4),
+                            (GLint) bswap_CARD32(pc + 8));
 }
 
 void
@@ -3742,34 +3320,28 @@ __glXDispSwap_ConvolutionParameteriv(GLbyte * pc)
         (const GLint *) bswap_32_array((uint32_t *) (pc + 8),
                                        __glConvolutionParameteriv_size(pname));
 
-    CALL_ConvolutionParameteriv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                 pname, params));
+    glConvolutionParameteriv((GLenum) bswap_ENUM(pc + 0), pname, params);
 }
 
 void
 __glXDispSwap_CopyConvolutionFilter1D(GLbyte * pc)
 {
-    CALL_CopyConvolutionFilter1D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                  (GLenum) bswap_ENUM(pc + 4),
-                                                  (GLint) bswap_CARD32(pc + 8),
-                                                  (GLint) bswap_CARD32(pc + 12),
-                                                  (GLsizei) bswap_CARD32(pc +
-                                                                         16)
-                                 ));
+    glCopyConvolutionFilter1D((GLenum) bswap_ENUM(pc + 0),
+                              (GLenum) bswap_ENUM(pc + 4),
+                              (GLint) bswap_CARD32(pc + 8),
+                              (GLint) bswap_CARD32(pc + 12),
+                              (GLsizei) bswap_CARD32(pc + 16));
 }
 
 void
 __glXDispSwap_CopyConvolutionFilter2D(GLbyte * pc)
 {
-    CALL_CopyConvolutionFilter2D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                  (GLenum) bswap_ENUM(pc + 4),
-                                                  (GLint) bswap_CARD32(pc + 8),
-                                                  (GLint) bswap_CARD32(pc + 12),
-                                                  (GLsizei) bswap_CARD32(pc +
-                                                                         16),
-                                                  (GLsizei) bswap_CARD32(pc +
-                                                                         20)
-                                 ));
+    glCopyConvolutionFilter2D((GLenum) bswap_ENUM(pc + 0),
+                              (GLenum) bswap_ENUM(pc + 4),
+                              (GLint) bswap_CARD32(pc + 8),
+                              (GLint) bswap_CARD32(pc + 12),
+                              (GLsizei) bswap_CARD32(pc + 16),
+                              (GLsizei) bswap_CARD32(pc + 20));
 }
 
 int
@@ -3794,9 +3366,7 @@ __glXDispSwap_GetConvolutionParameterfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetConvolutionParameterfv(GET_DISPATCH(), ((GLenum)
-                                                        bswap_ENUM(pc + 0),
-                                                        pname, params));
+        glGetConvolutionParameterfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -3827,9 +3397,7 @@ __glXDispSwap_GetConvolutionParameterfvEXT(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetConvolutionParameterfv(GET_DISPATCH(), ((GLenum)
-                                                        bswap_ENUM(pc + 0),
-                                                        pname, params));
+        glGetConvolutionParameterfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -3860,9 +3428,7 @@ __glXDispSwap_GetConvolutionParameteriv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetConvolutionParameteriv(GET_DISPATCH(), ((GLenum)
-                                                        bswap_ENUM(pc + 0),
-                                                        pname, params));
+        glGetConvolutionParameteriv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -3893,9 +3459,7 @@ __glXDispSwap_GetConvolutionParameterivEXT(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetConvolutionParameteriv(GET_DISPATCH(), ((GLenum)
-                                                        bswap_ENUM(pc + 0),
-                                                        pname, params));
+        glGetConvolutionParameteriv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -3926,9 +3490,7 @@ __glXDispSwap_GetHistogramParameterfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetHistogramParameterfv(GET_DISPATCH(), ((GLenum)
-                                                      bswap_ENUM(pc + 0), pname,
-                                                      params));
+        glGetHistogramParameterfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -3959,9 +3521,7 @@ __glXDispSwap_GetHistogramParameterfvEXT(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetHistogramParameterfv(GET_DISPATCH(), ((GLenum)
-                                                      bswap_ENUM(pc + 0), pname,
-                                                      params));
+        glGetHistogramParameterfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -3992,9 +3552,7 @@ __glXDispSwap_GetHistogramParameteriv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetHistogramParameteriv(GET_DISPATCH(), ((GLenum)
-                                                      bswap_ENUM(pc + 0), pname,
-                                                      params));
+        glGetHistogramParameteriv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -4025,9 +3583,7 @@ __glXDispSwap_GetHistogramParameterivEXT(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetHistogramParameteriv(GET_DISPATCH(), ((GLenum)
-                                                      bswap_ENUM(pc + 0), pname,
-                                                      params));
+        glGetHistogramParameteriv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -4058,8 +3614,7 @@ __glXDispSwap_GetMinmaxParameterfv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMinmaxParameterfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                   pname, params));
+        glGetMinmaxParameterfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -4090,8 +3645,7 @@ __glXDispSwap_GetMinmaxParameterfvEXT(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMinmaxParameterfv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                   pname, params));
+        glGetMinmaxParameterfv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -4122,8 +3676,7 @@ __glXDispSwap_GetMinmaxParameteriv(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMinmaxParameteriv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                   pname, params));
+        glGetMinmaxParameteriv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -4154,8 +3707,7 @@ __glXDispSwap_GetMinmaxParameterivEXT(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetMinmaxParameteriv(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                   pname, params));
+        glGetMinmaxParameteriv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -4167,34 +3719,28 @@ __glXDispSwap_GetMinmaxParameterivEXT(__GLXclientState * cl, GLbyte * pc)
 void
 __glXDispSwap_Histogram(GLbyte * pc)
 {
-    CALL_Histogram(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                    (GLsizei) bswap_CARD32(pc + 4),
-                                    (GLenum) bswap_ENUM(pc + 8),
-                                    *(GLboolean *) (pc + 12)
-                   ));
+    glHistogram((GLenum) bswap_ENUM(pc + 0),
+                (GLsizei) bswap_CARD32(pc + 4),
+                (GLenum) bswap_ENUM(pc + 8), *(GLboolean *) (pc + 12));
 }
 
 void
 __glXDispSwap_Minmax(GLbyte * pc)
 {
-    CALL_Minmax(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                 (GLenum) bswap_ENUM(pc + 4),
-                                 *(GLboolean *) (pc + 8)
-                ));
+    glMinmax((GLenum) bswap_ENUM(pc + 0),
+             (GLenum) bswap_ENUM(pc + 4), *(GLboolean *) (pc + 8));
 }
 
 void
 __glXDispSwap_ResetHistogram(GLbyte * pc)
 {
-    CALL_ResetHistogram(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                        ));
+    glResetHistogram((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
 __glXDispSwap_ResetMinmax(GLbyte * pc)
 {
-    CALL_ResetMinmax(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                     ));
+    glResetMinmax((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
@@ -4205,36 +3751,27 @@ __glXDispSwap_TexImage3D(GLbyte * pc)
         (const GLvoid *) ((ptr_is_null != 0) ? NULL : (pc + 80));
     __GLXpixel3DHeader *const hdr = (__GLXpixel3DHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_IMAGE_HEIGHT,
-                      (GLint) bswap_CARD32(&hdr->imageHeight)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_IMAGES,
-                      (GLint) bswap_CARD32(&hdr->skipImages)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
-
-    CALL_TexImage3D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 36),
-                                     (GLint) bswap_CARD32(pc + 40),
-                                     (GLint) bswap_CARD32(pc + 44),
-                                     (GLsizei) bswap_CARD32(pc + 48),
-                                     (GLsizei) bswap_CARD32(pc + 52),
-                                     (GLsizei) bswap_CARD32(pc + 56),
-                                     (GLint) bswap_CARD32(pc + 64),
-                                     (GLenum) bswap_ENUM(pc + 68),
-                                     (GLenum) bswap_ENUM(pc + 72), pixels));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_IMAGE_HEIGHT,
+                  (GLint) bswap_CARD32(&hdr->imageHeight));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_IMAGES,
+                  (GLint) bswap_CARD32(&hdr->skipImages));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
+
+    glTexImage3D((GLenum) bswap_ENUM(pc + 36),
+                 (GLint) bswap_CARD32(pc + 40),
+                 (GLint) bswap_CARD32(pc + 44),
+                 (GLsizei) bswap_CARD32(pc + 48),
+                 (GLsizei) bswap_CARD32(pc + 52),
+                 (GLsizei) bswap_CARD32(pc + 56),
+                 (GLint) bswap_CARD32(pc + 64),
+                 (GLenum) bswap_ENUM(pc + 68),
+                 (GLenum) bswap_ENUM(pc + 72), pixels);
 }
 
 void
@@ -4243,63 +3780,52 @@ __glXDispSwap_TexSubImage3D(GLbyte * pc)
     const GLvoid *const pixels = (const GLvoid *) ((pc + 88));
     __GLXpixel3DHeader *const hdr = (__GLXpixel3DHeader *) (pc);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ROW_LENGTH,
-                      (GLint) bswap_CARD32(&hdr->rowLength)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_IMAGE_HEIGHT,
-                      (GLint) bswap_CARD32(&hdr->imageHeight)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_ROWS,
-                      (GLint) bswap_CARD32(&hdr->skipRows)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_IMAGES,
-                      (GLint) bswap_CARD32(&hdr->skipImages)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_SKIP_PIXELS,
-                      (GLint) bswap_CARD32(&hdr->skipPixels)));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_ALIGNMENT,
-                      (GLint) bswap_CARD32(&hdr->alignment)));
-
-    CALL_TexSubImage3D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 36),
-                                        (GLint) bswap_CARD32(pc + 40),
-                                        (GLint) bswap_CARD32(pc + 44),
-                                        (GLint) bswap_CARD32(pc + 48),
-                                        (GLint) bswap_CARD32(pc + 52),
-                                        (GLsizei) bswap_CARD32(pc + 60),
-                                        (GLsizei) bswap_CARD32(pc + 64),
-                                        (GLsizei) bswap_CARD32(pc + 68),
-                                        (GLenum) bswap_ENUM(pc + 76),
-                                        (GLenum) bswap_ENUM(pc + 80), pixels));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) bswap_CARD32(&hdr->rowLength));
+    glPixelStorei(GL_UNPACK_IMAGE_HEIGHT,
+                  (GLint) bswap_CARD32(&hdr->imageHeight));
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) bswap_CARD32(&hdr->skipRows));
+    glPixelStorei(GL_UNPACK_SKIP_IMAGES,
+                  (GLint) bswap_CARD32(&hdr->skipImages));
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS,
+                  (GLint) bswap_CARD32(&hdr->skipPixels));
+    glPixelStorei(GL_UNPACK_ALIGNMENT, (GLint) bswap_CARD32(&hdr->alignment));
+
+    glTexSubImage3D((GLenum) bswap_ENUM(pc + 36),
+                    (GLint) bswap_CARD32(pc + 40),
+                    (GLint) bswap_CARD32(pc + 44),
+                    (GLint) bswap_CARD32(pc + 48),
+                    (GLint) bswap_CARD32(pc + 52),
+                    (GLsizei) bswap_CARD32(pc + 60),
+                    (GLsizei) bswap_CARD32(pc + 64),
+                    (GLsizei) bswap_CARD32(pc + 68),
+                    (GLenum) bswap_ENUM(pc + 76),
+                    (GLenum) bswap_ENUM(pc + 80), pixels);
 }
 
 void
 __glXDispSwap_CopyTexSubImage3D(GLbyte * pc)
 {
-    CALL_CopyTexSubImage3D(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                            (GLint) bswap_CARD32(pc + 4),
-                                            (GLint) bswap_CARD32(pc + 8),
-                                            (GLint) bswap_CARD32(pc + 12),
-                                            (GLint) bswap_CARD32(pc + 16),
-                                            (GLint) bswap_CARD32(pc + 20),
-                                            (GLint) bswap_CARD32(pc + 24),
-                                            (GLsizei) bswap_CARD32(pc + 28),
-                                            (GLsizei) bswap_CARD32(pc + 32)
-                           ));
+    glCopyTexSubImage3D((GLenum) bswap_ENUM(pc + 0),
+                        (GLint) bswap_CARD32(pc + 4),
+                        (GLint) bswap_CARD32(pc + 8),
+                        (GLint) bswap_CARD32(pc + 12),
+                        (GLint) bswap_CARD32(pc + 16),
+                        (GLint) bswap_CARD32(pc + 20),
+                        (GLint) bswap_CARD32(pc + 24),
+                        (GLsizei) bswap_CARD32(pc + 28),
+                        (GLsizei) bswap_CARD32(pc + 32));
 }
 
 void
-__glXDispSwap_ActiveTextureARB(GLbyte * pc)
+__glXDispSwap_ActiveTexture(GLbyte * pc)
 {
-    CALL_ActiveTextureARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                          ));
+    glActiveTexture((GLenum) bswap_ENUM(pc + 0));
 }
 
 void
-__glXDispSwap_MultiTexCoord1dvARB(GLbyte * pc)
+__glXDispSwap_MultiTexCoord1dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -4308,49 +3834,37 @@ __glXDispSwap_MultiTexCoord1dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_MultiTexCoord1dvARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 8),
-                                              (const GLdouble *)
-                                              bswap_64_array((uint64_t *) (pc +
-                                                                           0),
-                                                             1)
-                             ));
+    glMultiTexCoord1dv((GLenum) bswap_ENUM(pc + 8),
+                       (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0),
+                                                         1));
 }
 
 void
 __glXDispSwap_MultiTexCoord1fvARB(GLbyte * pc)
 {
-    CALL_MultiTexCoord1fvARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (const GLfloat *)
-                                              bswap_32_array((uint32_t *) (pc +
-                                                                           4),
-                                                             1)
-                             ));
+    glMultiTexCoord1fvARB((GLenum) bswap_ENUM(pc + 0),
+                          (const GLfloat *)
+                          bswap_32_array((uint32_t *) (pc + 4), 1));
 }
 
 void
-__glXDispSwap_MultiTexCoord1ivARB(GLbyte * pc)
+__glXDispSwap_MultiTexCoord1iv(GLbyte * pc)
 {
-    CALL_MultiTexCoord1ivARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (const GLint *)
-                                              bswap_32_array((uint32_t *) (pc +
-                                                                           4),
-                                                             1)
-                             ));
+    glMultiTexCoord1iv((GLenum) bswap_ENUM(pc + 0),
+                       (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                      1));
 }
 
 void
-__glXDispSwap_MultiTexCoord1svARB(GLbyte * pc)
+__glXDispSwap_MultiTexCoord1sv(GLbyte * pc)
 {
-    CALL_MultiTexCoord1svARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (const GLshort *)
-                                              bswap_16_array((uint16_t *) (pc +
-                                                                           4),
-                                                             1)
-                             ));
+    glMultiTexCoord1sv((GLenum) bswap_ENUM(pc + 0),
+                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                        1));
 }
 
 void
-__glXDispSwap_MultiTexCoord2dvARB(GLbyte * pc)
+__glXDispSwap_MultiTexCoord2dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -4359,49 +3873,37 @@ __glXDispSwap_MultiTexCoord2dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_MultiTexCoord2dvARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 16),
-                                              (const GLdouble *)
-                                              bswap_64_array((uint64_t *) (pc +
-                                                                           0),
-                                                             2)
-                             ));
+    glMultiTexCoord2dv((GLenum) bswap_ENUM(pc + 16),
+                       (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0),
+                                                         2));
 }
 
 void
 __glXDispSwap_MultiTexCoord2fvARB(GLbyte * pc)
 {
-    CALL_MultiTexCoord2fvARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (const GLfloat *)
-                                              bswap_32_array((uint32_t *) (pc +
-                                                                           4),
-                                                             2)
-                             ));
+    glMultiTexCoord2fvARB((GLenum) bswap_ENUM(pc + 0),
+                          (const GLfloat *)
+                          bswap_32_array((uint32_t *) (pc + 4), 2));
 }
 
 void
-__glXDispSwap_MultiTexCoord2ivARB(GLbyte * pc)
+__glXDispSwap_MultiTexCoord2iv(GLbyte * pc)
 {
-    CALL_MultiTexCoord2ivARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (const GLint *)
-                                              bswap_32_array((uint32_t *) (pc +
-                                                                           4),
-                                                             2)
-                             ));
+    glMultiTexCoord2iv((GLenum) bswap_ENUM(pc + 0),
+                       (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                      2));
 }
 
 void
-__glXDispSwap_MultiTexCoord2svARB(GLbyte * pc)
+__glXDispSwap_MultiTexCoord2sv(GLbyte * pc)
 {
-    CALL_MultiTexCoord2svARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (const GLshort *)
-                                              bswap_16_array((uint16_t *) (pc +
-                                                                           4),
-                                                             2)
-                             ));
+    glMultiTexCoord2sv((GLenum) bswap_ENUM(pc + 0),
+                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                        2));
 }
 
 void
-__glXDispSwap_MultiTexCoord3dvARB(GLbyte * pc)
+__glXDispSwap_MultiTexCoord3dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -4410,49 +3912,37 @@ __glXDispSwap_MultiTexCoord3dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_MultiTexCoord3dvARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 24),
-                                              (const GLdouble *)
-                                              bswap_64_array((uint64_t *) (pc +
-                                                                           0),
-                                                             3)
-                             ));
+    glMultiTexCoord3dv((GLenum) bswap_ENUM(pc + 24),
+                       (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0),
+                                                         3));
 }
 
 void
 __glXDispSwap_MultiTexCoord3fvARB(GLbyte * pc)
 {
-    CALL_MultiTexCoord3fvARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (const GLfloat *)
-                                              bswap_32_array((uint32_t *) (pc +
-                                                                           4),
-                                                             3)
-                             ));
+    glMultiTexCoord3fvARB((GLenum) bswap_ENUM(pc + 0),
+                          (const GLfloat *)
+                          bswap_32_array((uint32_t *) (pc + 4), 3));
 }
 
 void
-__glXDispSwap_MultiTexCoord3ivARB(GLbyte * pc)
+__glXDispSwap_MultiTexCoord3iv(GLbyte * pc)
 {
-    CALL_MultiTexCoord3ivARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (const GLint *)
-                                              bswap_32_array((uint32_t *) (pc +
-                                                                           4),
-                                                             3)
-                             ));
+    glMultiTexCoord3iv((GLenum) bswap_ENUM(pc + 0),
+                       (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                      3));
 }
 
 void
-__glXDispSwap_MultiTexCoord3svARB(GLbyte * pc)
+__glXDispSwap_MultiTexCoord3sv(GLbyte * pc)
 {
-    CALL_MultiTexCoord3svARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (const GLshort *)
-                                              bswap_16_array((uint16_t *) (pc +
-                                                                           4),
-                                                             3)
-                             ));
+    glMultiTexCoord3sv((GLenum) bswap_ENUM(pc + 0),
+                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                        3));
 }
 
 void
-__glXDispSwap_MultiTexCoord4dvARB(GLbyte * pc)
+__glXDispSwap_MultiTexCoord4dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -4461,277 +3951,302 @@ __glXDispSwap_MultiTexCoord4dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_MultiTexCoord4dvARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 32),
-                                              (const GLdouble *)
-                                              bswap_64_array((uint64_t *) (pc +
-                                                                           0),
-                                                             4)
-                             ));
+    glMultiTexCoord4dv((GLenum) bswap_ENUM(pc + 32),
+                       (const GLdouble *) bswap_64_array((uint64_t *) (pc + 0),
+                                                         4));
 }
 
 void
 __glXDispSwap_MultiTexCoord4fvARB(GLbyte * pc)
 {
-    CALL_MultiTexCoord4fvARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (const GLfloat *)
-                                              bswap_32_array((uint32_t *) (pc +
-                                                                           4),
-                                                             4)
-                             ));
-}
-
-void
-__glXDispSwap_MultiTexCoord4ivARB(GLbyte * pc)
-{
-    CALL_MultiTexCoord4ivARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (const GLint *)
-                                              bswap_32_array((uint32_t *) (pc +
-                                                                           4),
-                                                             4)
-                             ));
+    glMultiTexCoord4fvARB((GLenum) bswap_ENUM(pc + 0),
+                          (const GLfloat *)
+                          bswap_32_array((uint32_t *) (pc + 4), 4));
 }
 
 void
-__glXDispSwap_MultiTexCoord4svARB(GLbyte * pc)
+__glXDispSwap_MultiTexCoord4iv(GLbyte * pc)
 {
-    CALL_MultiTexCoord4svARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (const GLshort *)
-                                              bswap_16_array((uint16_t *) (pc +
-                                                                           4),
-                                                             4)
-                             ));
+    glMultiTexCoord4iv((GLenum) bswap_ENUM(pc + 0),
+                       (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                      4));
 }
 
 void
-__glXDispSwap_SampleCoverageARB(GLbyte * pc)
+__glXDispSwap_MultiTexCoord4sv(GLbyte * pc)
 {
-    CALL_SampleCoverageARB(GET_DISPATCH(), ((GLclampf) bswap_FLOAT32(pc + 0),
-                                            *(GLboolean *) (pc + 4)
-                           ));
+    glMultiTexCoord4sv((GLenum) bswap_ENUM(pc + 0),
+                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                        4));
 }
 
 void
-__glXDispSwap_CompressedTexImage1DARB(GLbyte * pc)
+__glXDispSwap_CompressedTexImage1D(GLbyte * pc)
 {
     const GLsizei imageSize = (GLsizei) bswap_CARD32(pc + 20);
 
-    CALL_CompressedTexImage1DARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                  (GLint) bswap_CARD32(pc + 4),
-                                                  (GLenum) bswap_ENUM(pc + 8),
-                                                  (GLsizei) bswap_CARD32(pc +
-                                                                         12),
-                                                  (GLint) bswap_CARD32(pc + 16),
-                                                  imageSize,
-                                                  (const GLvoid *) (pc + 24)
-                                 ));
+    glCompressedTexImage1D((GLenum) bswap_ENUM(pc + 0),
+                           (GLint) bswap_CARD32(pc + 4),
+                           (GLenum) bswap_ENUM(pc + 8),
+                           (GLsizei) bswap_CARD32(pc + 12),
+                           (GLint) bswap_CARD32(pc + 16),
+                           imageSize, (const GLvoid *) (pc + 24));
 }
 
 void
-__glXDispSwap_CompressedTexImage2DARB(GLbyte * pc)
+__glXDispSwap_CompressedTexImage2D(GLbyte * pc)
 {
     const GLsizei imageSize = (GLsizei) bswap_CARD32(pc + 24);
 
-    CALL_CompressedTexImage2DARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                  (GLint) bswap_CARD32(pc + 4),
-                                                  (GLenum) bswap_ENUM(pc + 8),
-                                                  (GLsizei) bswap_CARD32(pc +
-                                                                         12),
-                                                  (GLsizei) bswap_CARD32(pc +
-                                                                         16),
-                                                  (GLint) bswap_CARD32(pc + 20),
-                                                  imageSize,
-                                                  (const GLvoid *) (pc + 28)
-                                 ));
+    glCompressedTexImage2D((GLenum) bswap_ENUM(pc + 0),
+                           (GLint) bswap_CARD32(pc + 4),
+                           (GLenum) bswap_ENUM(pc + 8),
+                           (GLsizei) bswap_CARD32(pc + 12),
+                           (GLsizei) bswap_CARD32(pc + 16),
+                           (GLint) bswap_CARD32(pc + 20),
+                           imageSize, (const GLvoid *) (pc + 28));
 }
 
 void
-__glXDispSwap_CompressedTexImage3DARB(GLbyte * pc)
+__glXDispSwap_CompressedTexImage3D(GLbyte * pc)
 {
     const GLsizei imageSize = (GLsizei) bswap_CARD32(pc + 28);
 
-    CALL_CompressedTexImage3DARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                  (GLint) bswap_CARD32(pc + 4),
-                                                  (GLenum) bswap_ENUM(pc + 8),
-                                                  (GLsizei) bswap_CARD32(pc +
-                                                                         12),
-                                                  (GLsizei) bswap_CARD32(pc +
-                                                                         16),
-                                                  (GLsizei) bswap_CARD32(pc +
-                                                                         20),
-                                                  (GLint) bswap_CARD32(pc + 24),
-                                                  imageSize,
-                                                  (const GLvoid *) (pc + 32)
-                                 ));
+    glCompressedTexImage3D((GLenum) bswap_ENUM(pc + 0),
+                           (GLint) bswap_CARD32(pc + 4),
+                           (GLenum) bswap_ENUM(pc + 8),
+                           (GLsizei) bswap_CARD32(pc + 12),
+                           (GLsizei) bswap_CARD32(pc + 16),
+                           (GLsizei) bswap_CARD32(pc + 20),
+                           (GLint) bswap_CARD32(pc + 24),
+                           imageSize, (const GLvoid *) (pc + 32));
 }
 
 void
-__glXDispSwap_CompressedTexSubImage1DARB(GLbyte * pc)
+__glXDispSwap_CompressedTexSubImage1D(GLbyte * pc)
 {
     const GLsizei imageSize = (GLsizei) bswap_CARD32(pc + 20);
 
-    CALL_CompressedTexSubImage1DARB(GET_DISPATCH(), ((GLenum)
-                                                     bswap_ENUM(pc + 0),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          4),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          8),
-                                                     (GLsizei) bswap_CARD32(pc +
-                                                                            12),
-                                                     (GLenum) bswap_ENUM(pc +
-                                                                         16),
-                                                     imageSize,
-                                                     (const GLvoid *) (pc + 24)
-                                    ));
+    glCompressedTexSubImage1D((GLenum) bswap_ENUM(pc + 0),
+                              (GLint) bswap_CARD32(pc + 4),
+                              (GLint) bswap_CARD32(pc + 8),
+                              (GLsizei) bswap_CARD32(pc + 12),
+                              (GLenum) bswap_ENUM(pc + 16),
+                              imageSize, (const GLvoid *) (pc + 24));
 }
 
 void
-__glXDispSwap_CompressedTexSubImage2DARB(GLbyte * pc)
+__glXDispSwap_CompressedTexSubImage2D(GLbyte * pc)
 {
     const GLsizei imageSize = (GLsizei) bswap_CARD32(pc + 28);
 
-    CALL_CompressedTexSubImage2DARB(GET_DISPATCH(), ((GLenum)
-                                                     bswap_ENUM(pc + 0),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          4),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          8),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          12),
-                                                     (GLsizei) bswap_CARD32(pc +
-                                                                            16),
-                                                     (GLsizei) bswap_CARD32(pc +
-                                                                            20),
-                                                     (GLenum) bswap_ENUM(pc +
-                                                                         24),
-                                                     imageSize,
-                                                     (const GLvoid *) (pc + 32)
-                                    ));
+    glCompressedTexSubImage2D((GLenum) bswap_ENUM(pc + 0),
+                              (GLint) bswap_CARD32(pc + 4),
+                              (GLint) bswap_CARD32(pc + 8),
+                              (GLint) bswap_CARD32(pc + 12),
+                              (GLsizei) bswap_CARD32(pc + 16),
+                              (GLsizei) bswap_CARD32(pc + 20),
+                              (GLenum) bswap_ENUM(pc + 24),
+                              imageSize, (const GLvoid *) (pc + 32));
 }
 
 void
-__glXDispSwap_CompressedTexSubImage3DARB(GLbyte * pc)
+__glXDispSwap_CompressedTexSubImage3D(GLbyte * pc)
 {
     const GLsizei imageSize = (GLsizei) bswap_CARD32(pc + 36);
 
-    CALL_CompressedTexSubImage3DARB(GET_DISPATCH(), ((GLenum)
-                                                     bswap_ENUM(pc + 0),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          4),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          8),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          12),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          16),
-                                                     (GLsizei) bswap_CARD32(pc +
-                                                                            20),
-                                                     (GLsizei) bswap_CARD32(pc +
-                                                                            24),
-                                                     (GLsizei) bswap_CARD32(pc +
-                                                                            28),
-                                                     (GLenum) bswap_ENUM(pc +
-                                                                         32),
-                                                     imageSize,
-                                                     (const GLvoid *) (pc + 40)
-                                    ));
+    glCompressedTexSubImage3D((GLenum) bswap_ENUM(pc + 0),
+                              (GLint) bswap_CARD32(pc + 4),
+                              (GLint) bswap_CARD32(pc + 8),
+                              (GLint) bswap_CARD32(pc + 12),
+                              (GLint) bswap_CARD32(pc + 16),
+                              (GLsizei) bswap_CARD32(pc + 20),
+                              (GLsizei) bswap_CARD32(pc + 24),
+                              (GLsizei) bswap_CARD32(pc + 28),
+                              (GLenum) bswap_ENUM(pc + 32),
+                              imageSize, (const GLvoid *) (pc + 40));
 }
 
-int
-__glXDispSwap_GetProgramEnvParameterdvARB(__GLXclientState * cl, GLbyte * pc)
+void
+__glXDispSwap_SampleCoverage(GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
+    glSampleCoverage((GLclampf) bswap_FLOAT32(pc + 0), *(GLboolean *) (pc + 4));
+}
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLdouble params[4];
+void
+__glXDispSwap_BlendFuncSeparate(GLbyte * pc)
+{
+    glBlendFuncSeparate((GLenum) bswap_ENUM(pc + 0),
+                        (GLenum) bswap_ENUM(pc + 4),
+                        (GLenum) bswap_ENUM(pc + 8),
+                        (GLenum) bswap_ENUM(pc + 12));
+}
 
-        CALL_GetProgramEnvParameterdvARB(GET_DISPATCH(), ((GLenum)
-                                                          bswap_ENUM(pc + 0),
-                                                          (GLuint)
-                                                          bswap_CARD32(pc + 4),
-                                                          params));
-        (void) bswap_64_array((uint64_t *) params, 4);
-        __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0);
-        error = Success;
+void
+__glXDispSwap_FogCoorddv(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+    if ((unsigned long) (pc) & 7) {
+        (void) memmove(pc - 4, pc, 8);
+        pc -= 4;
     }
+#endif
 
-    return error;
+    glFogCoorddv((const GLdouble *) bswap_64_array((uint64_t *) (pc + 0), 1));
 }
 
-int
-__glXDispSwap_GetProgramEnvParameterfvARB(__GLXclientState * cl, GLbyte * pc)
+void
+__glXDispSwap_PointParameterf(GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
+    glPointParameterf((GLenum) bswap_ENUM(pc + 0),
+                      (GLfloat) bswap_FLOAT32(pc + 4));
+}
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLfloat params[4];
+void
+__glXDispSwap_PointParameterfv(GLbyte * pc)
+{
+    const GLenum pname = (GLenum) bswap_ENUM(pc + 0);
+    const GLfloat *params;
 
-        CALL_GetProgramEnvParameterfvARB(GET_DISPATCH(), ((GLenum)
-                                                          bswap_ENUM(pc + 0),
-                                                          (GLuint)
-                                                          bswap_CARD32(pc + 4),
-                                                          params));
-        (void) bswap_32_array((uint32_t *) params, 4);
-        __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0);
-        error = Success;
+    params =
+        (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                         __glPointParameterfv_size(pname));
+
+    glPointParameterfv(pname, params);
+}
+
+void
+__glXDispSwap_PointParameteri(GLbyte * pc)
+{
+    glPointParameteri((GLenum) bswap_ENUM(pc + 0),
+                      (GLint) bswap_CARD32(pc + 4));
+}
+
+void
+__glXDispSwap_PointParameteriv(GLbyte * pc)
+{
+    const GLenum pname = (GLenum) bswap_ENUM(pc + 0);
+    const GLint *params;
+
+    params =
+        (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
+                                       __glPointParameteriv_size(pname));
+
+    glPointParameteriv(pname, params);
+}
+
+void
+__glXDispSwap_SecondaryColor3bv(GLbyte * pc)
+{
+    glSecondaryColor3bv((const GLbyte *) (pc + 0));
+}
+
+void
+__glXDispSwap_SecondaryColor3dv(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+    if ((unsigned long) (pc) & 7) {
+        (void) memmove(pc - 4, pc, 24);
+        pc -= 4;
     }
+#endif
 
-    return error;
+    glSecondaryColor3dv((const GLdouble *)
+                        bswap_64_array((uint64_t *) (pc + 0), 3));
+}
+
+void
+__glXDispSwap_SecondaryColor3iv(GLbyte * pc)
+{
+    glSecondaryColor3iv((const GLint *)
+                        bswap_32_array((uint32_t *) (pc + 0), 3));
+}
+
+void
+__glXDispSwap_SecondaryColor3sv(GLbyte * pc)
+{
+    glSecondaryColor3sv((const GLshort *)
+                        bswap_16_array((uint16_t *) (pc + 0), 3));
+}
+
+void
+__glXDispSwap_SecondaryColor3ubv(GLbyte * pc)
+{
+    glSecondaryColor3ubv((const GLubyte *) (pc + 0));
+}
+
+void
+__glXDispSwap_SecondaryColor3uiv(GLbyte * pc)
+{
+    glSecondaryColor3uiv((const GLuint *)
+                         bswap_32_array((uint32_t *) (pc + 0), 3));
+}
+
+void
+__glXDispSwap_SecondaryColor3usv(GLbyte * pc)
+{
+    glSecondaryColor3usv((const GLushort *)
+                         bswap_16_array((uint16_t *) (pc + 0), 3));
+}
+
+void
+__glXDispSwap_WindowPos3fv(GLbyte * pc)
+{
+    glWindowPos3fv((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 3));
+}
+
+void
+__glXDispSwap_BeginQuery(GLbyte * pc)
+{
+    glBeginQuery((GLenum) bswap_ENUM(pc + 0), (GLuint) bswap_CARD32(pc + 4));
 }
 
 int
-__glXDispSwap_GetProgramLocalParameterdvARB(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_DeleteQueries(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx =
         __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
+    pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        GLdouble params[4];
+        const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-        CALL_GetProgramLocalParameterdvARB(GET_DISPATCH(), ((GLenum)
-                                                            bswap_ENUM(pc + 0),
-                                                            (GLuint)
-                                                            bswap_CARD32(pc +
-                                                                         4),
-                                                            params));
-        (void) bswap_64_array((uint64_t *) params, 4);
-        __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0);
+        glDeleteQueries(n,
+                        (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                        0));
         error = Success;
     }
 
     return error;
 }
 
+void
+__glXDispSwap_EndQuery(GLbyte * pc)
+{
+    glEndQuery((GLenum) bswap_ENUM(pc + 0));
+}
+
 int
-__glXDispSwap_GetProgramLocalParameterfvARB(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_GenQueries(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx =
         __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
+    pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        GLfloat params[4];
+        const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-        CALL_GetProgramLocalParameterfvARB(GET_DISPATCH(), ((GLenum)
-                                                            bswap_ENUM(pc + 0),
-                                                            (GLuint)
-                                                            bswap_CARD32(pc +
-                                                                         4),
-                                                            params));
-        (void) bswap_32_array((uint32_t *) params, 4);
-        __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0);
+        GLuint answerBuffer[200];
+        GLuint *ids =
+            __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                 4);
+        glGenQueries(n, ids);
+        (void) bswap_32_array((uint32_t *) ids, n);
+        __glXSendReplySwap(cl->client, ids, n, 4, GL_TRUE, 0);
         error = Success;
     }
 
@@ -4739,18 +4254,18 @@ __glXDispSwap_GetProgramLocalParameterfvARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_GetQueryObjectiv(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx =
         __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
+    pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
         const GLenum pname = (GLenum) bswap_ENUM(pc + 4);
 
-        const GLuint compsize = __glGetProgramivARB_size(pname);
+        const GLuint compsize = __glGetQueryObjectiv_size(pname);
         GLint answerBuffer[200];
         GLint *params =
             __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
@@ -4760,8 +4275,7 @@ __glXDispSwap_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetProgramivARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              pname, params));
+        glGetQueryObjectiv((GLuint) bswap_CARD32(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -4771,32 +4285,30 @@ __glXDispSwap_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_GetVertexAttribdvARB(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_GetQueryObjectuiv(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx =
         __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
+    pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
         const GLenum pname = (GLenum) bswap_ENUM(pc + 4);
 
-        const GLuint compsize = __glGetVertexAttribdvARB_size(pname);
-        GLdouble answerBuffer[200];
-        GLdouble *params =
-            __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer,
-                                 sizeof(answerBuffer), 8);
+        const GLuint compsize = __glGetQueryObjectuiv_size(pname);
+        GLuint answerBuffer[200];
+        GLuint *params =
+            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
+                                 sizeof(answerBuffer), 4);
 
         if (params == NULL)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetVertexAttribdvARB(GET_DISPATCH(), ((GLuint)
-                                                   bswap_CARD32(pc + 0), pname,
-                                                   params));
-        (void) bswap_64_array((uint64_t *) params, compsize);
-        __glXSendReplySwap(cl->client, params, compsize, 8, GL_FALSE, 0);
+        glGetQueryObjectuiv((GLuint) bswap_CARD32(pc + 0), pname, params);
+        (void) bswap_32_array((uint32_t *) params, compsize);
+        __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
     }
 
@@ -4804,20 +4316,20 @@ __glXDispSwap_GetVertexAttribdvARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_GetVertexAttribfvARB(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_GetQueryiv(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx =
         __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
+    pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
         const GLenum pname = (GLenum) bswap_ENUM(pc + 4);
 
-        const GLuint compsize = __glGetVertexAttribfvARB_size(pname);
-        GLfloat answerBuffer[200];
-        GLfloat *params =
+        const GLuint compsize = __glGetQueryiv_size(pname);
+        GLint answerBuffer[200];
+        GLint *params =
             __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
                                  sizeof(answerBuffer), 4);
 
@@ -4825,9 +4337,7 @@ __glXDispSwap_GetVertexAttribfvARB(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetVertexAttribfvARB(GET_DISPATCH(), ((GLuint)
-                                                   bswap_CARD32(pc + 0), pname,
-                                                   params));
+        glGetQueryiv((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -4837,32 +4347,19 @@ __glXDispSwap_GetVertexAttribfvARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_GetVertexAttribivARB(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_IsQuery(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
     __GLXcontext *const cx =
         __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
+    pc += __GLX_SINGLE_HDR_SIZE;
     if (cx != NULL) {
-        const GLenum pname = (GLenum) bswap_ENUM(pc + 4);
-
-        const GLuint compsize = __glGetVertexAttribivARB_size(pname);
-        GLint answerBuffer[200];
-        GLint *params =
-            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
-                                 sizeof(answerBuffer), 4);
-
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
+        GLboolean retval;
 
-        CALL_GetVertexAttribivARB(GET_DISPATCH(), ((GLuint)
-                                                   bswap_CARD32(pc + 0), pname,
-                                                   params));
-        (void) bswap_32_array((uint32_t *) params, compsize);
-        __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+        retval = glIsQuery((GLuint) bswap_CARD32(pc + 0));
+        __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
 
@@ -4870,86 +4367,22 @@ __glXDispSwap_GetVertexAttribivARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 void
-__glXDispSwap_ProgramEnvParameter4dvARB(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, 40);
-        pc -= 4;
-    }
-#endif
-
-    CALL_ProgramEnvParameter4dvARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                    (GLuint) bswap_CARD32(pc +
-                                                                          4),
-                                                    (const GLdouble *)
-                                                    bswap_64_array((uint64_t
-                                                                    *) (pc + 8),
-                                                                   4)
-                                   ));
-}
-
-void
-__glXDispSwap_ProgramEnvParameter4fvARB(GLbyte * pc)
-{
-    CALL_ProgramEnvParameter4fvARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                    (GLuint) bswap_CARD32(pc +
-                                                                          4),
-                                                    (const GLfloat *)
-                                                    bswap_32_array((uint32_t
-                                                                    *) (pc + 8),
-                                                                   4)
-                                   ));
-}
-
-void
-__glXDispSwap_ProgramLocalParameter4dvARB(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, 40);
-        pc -= 4;
-    }
-#endif
-
-    CALL_ProgramLocalParameter4dvARB(GET_DISPATCH(), ((GLenum)
-                                                      bswap_ENUM(pc + 0),
-                                                      (GLuint) bswap_CARD32(pc +
-                                                                            4),
-                                                      (const GLdouble *)
-                                                      bswap_64_array((uint64_t
-                                                                      *) (pc +
-                                                                          8), 4)
-                                     ));
-}
-
-void
-__glXDispSwap_ProgramLocalParameter4fvARB(GLbyte * pc)
+__glXDispSwap_BlendEquationSeparate(GLbyte * pc)
 {
-    CALL_ProgramLocalParameter4fvARB(GET_DISPATCH(), ((GLenum)
-                                                      bswap_ENUM(pc + 0),
-                                                      (GLuint) bswap_CARD32(pc +
-                                                                            4),
-                                                      (const GLfloat *)
-                                                      bswap_32_array((uint32_t
-                                                                      *) (pc +
-                                                                          8), 4)
-                                     ));
+    glBlendEquationSeparate((GLenum) bswap_ENUM(pc + 0),
+                            (GLenum) bswap_ENUM(pc + 4));
 }
 
 void
-__glXDispSwap_ProgramStringARB(GLbyte * pc)
+__glXDispSwap_DrawBuffers(GLbyte * pc)
 {
-    const GLsizei len = (GLsizei) bswap_CARD32(pc + 8);
+    const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-    CALL_ProgramStringARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                           (GLenum) bswap_ENUM(pc + 4),
-                                           len, (const GLvoid *) (pc + 12)
-                          ));
+    glDrawBuffers(n, (const GLenum *) bswap_32_array((uint32_t *) (pc + 4), 0));
 }
 
 void
-__glXDispSwap_VertexAttrib1dvARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib1dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -4958,35 +4391,21 @@ __glXDispSwap_VertexAttrib1dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib1dvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLdouble *)
-                                             bswap_64_array((uint64_t *) (pc +
-                                                                          4), 1)
-                            ));
-}
-
-void
-__glXDispSwap_VertexAttrib1fvARB(GLbyte * pc)
-{
-    CALL_VertexAttrib1fvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLfloat *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          4), 1)
-                            ));
+    glVertexAttrib1dv((GLuint) bswap_CARD32(pc + 0),
+                      (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                        1));
 }
 
 void
-__glXDispSwap_VertexAttrib1svARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib1sv(GLbyte * pc)
 {
-    CALL_VertexAttrib1svARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLshort *)
-                                             bswap_16_array((uint16_t *) (pc +
-                                                                          4), 1)
-                            ));
+    glVertexAttrib1sv((GLuint) bswap_CARD32(pc + 0),
+                      (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                       1));
 }
 
 void
-__glXDispSwap_VertexAttrib2dvARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib2dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -4995,35 +4414,21 @@ __glXDispSwap_VertexAttrib2dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib2dvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLdouble *)
-                                             bswap_64_array((uint64_t *) (pc +
-                                                                          4), 2)
-                            ));
-}
-
-void
-__glXDispSwap_VertexAttrib2fvARB(GLbyte * pc)
-{
-    CALL_VertexAttrib2fvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLfloat *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          4), 2)
-                            ));
+    glVertexAttrib2dv((GLuint) bswap_CARD32(pc + 0),
+                      (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                        2));
 }
 
 void
-__glXDispSwap_VertexAttrib2svARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib2sv(GLbyte * pc)
 {
-    CALL_VertexAttrib2svARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLshort *)
-                                             bswap_16_array((uint16_t *) (pc +
-                                                                          4), 2)
-                            ));
+    glVertexAttrib2sv((GLuint) bswap_CARD32(pc + 0),
+                      (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                       2));
 }
 
 void
-__glXDispSwap_VertexAttrib3dvARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib3dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -5032,103 +4437,73 @@ __glXDispSwap_VertexAttrib3dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib3dvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLdouble *)
-                                             bswap_64_array((uint64_t *) (pc +
-                                                                          4), 3)
-                            ));
-}
-
-void
-__glXDispSwap_VertexAttrib3fvARB(GLbyte * pc)
-{
-    CALL_VertexAttrib3fvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLfloat *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          4), 3)
-                            ));
+    glVertexAttrib3dv((GLuint) bswap_CARD32(pc + 0),
+                      (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                        3));
 }
 
 void
-__glXDispSwap_VertexAttrib3svARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib3sv(GLbyte * pc)
 {
-    CALL_VertexAttrib3svARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLshort *)
-                                             bswap_16_array((uint16_t *) (pc +
-                                                                          4), 3)
-                            ));
+    glVertexAttrib3sv((GLuint) bswap_CARD32(pc + 0),
+                      (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                       3));
 }
 
 void
-__glXDispSwap_VertexAttrib4NbvARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4Nbv(GLbyte * pc)
 {
-    CALL_VertexAttrib4NbvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                              (const GLbyte *) (pc + 4)
-                             ));
+    glVertexAttrib4Nbv((GLuint) bswap_CARD32(pc + 0),
+                       (const GLbyte *) (pc + 4));
 }
 
 void
-__glXDispSwap_VertexAttrib4NivARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4Niv(GLbyte * pc)
 {
-    CALL_VertexAttrib4NivARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                              (const GLint *)
-                                              bswap_32_array((uint32_t *) (pc +
-                                                                           4),
-                                                             4)
-                             ));
+    glVertexAttrib4Niv((GLuint) bswap_CARD32(pc + 0),
+                       (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                      4));
 }
 
 void
-__glXDispSwap_VertexAttrib4NsvARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4Nsv(GLbyte * pc)
 {
-    CALL_VertexAttrib4NsvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                              (const GLshort *)
-                                              bswap_16_array((uint16_t *) (pc +
-                                                                           4),
-                                                             4)
-                             ));
+    glVertexAttrib4Nsv((GLuint) bswap_CARD32(pc + 0),
+                       (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                        4));
 }
 
 void
-__glXDispSwap_VertexAttrib4NubvARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4Nubv(GLbyte * pc)
 {
-    CALL_VertexAttrib4NubvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                               (const GLubyte *) (pc + 4)
-                              ));
+    glVertexAttrib4Nubv((GLuint) bswap_CARD32(pc + 0),
+                        (const GLubyte *) (pc + 4));
 }
 
 void
-__glXDispSwap_VertexAttrib4NuivARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4Nuiv(GLbyte * pc)
 {
-    CALL_VertexAttrib4NuivARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                               (const GLuint *)
-                                               bswap_32_array((uint32_t *) (pc +
-                                                                            4),
-                                                              4)
-                              ));
+    glVertexAttrib4Nuiv((GLuint) bswap_CARD32(pc + 0),
+                        (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                        4));
 }
 
 void
-__glXDispSwap_VertexAttrib4NusvARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4Nusv(GLbyte * pc)
 {
-    CALL_VertexAttrib4NusvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                               (const GLushort *)
-                                               bswap_16_array((uint16_t *) (pc +
-                                                                            4),
-                                                              4)
-                              ));
+    glVertexAttrib4Nusv((GLuint) bswap_CARD32(pc + 0),
+                        (const GLushort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                          4));
 }
 
 void
-__glXDispSwap_VertexAttrib4bvARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4bv(GLbyte * pc)
 {
-    CALL_VertexAttrib4bvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLbyte *) (pc + 4)
-                            ));
+    glVertexAttrib4bv((GLuint) bswap_CARD32(pc + 0), (const GLbyte *) (pc + 4));
 }
 
 void
-__glXDispSwap_VertexAttrib4dvARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4dv(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
@@ -5137,131 +4512,102 @@ __glXDispSwap_VertexAttrib4dvARB(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib4dvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLdouble *)
-                                             bswap_64_array((uint64_t *) (pc +
-                                                                          4), 4)
-                            ));
+    glVertexAttrib4dv((GLuint) bswap_CARD32(pc + 0),
+                      (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                        4));
 }
 
 void
-__glXDispSwap_VertexAttrib4fvARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4iv(GLbyte * pc)
 {
-    CALL_VertexAttrib4fvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLfloat *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          4), 4)
-                            ));
+    glVertexAttrib4iv((GLuint) bswap_CARD32(pc + 0),
+                      (const GLint *) bswap_32_array((uint32_t *) (pc + 4), 4));
 }
 
 void
-__glXDispSwap_VertexAttrib4ivARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4sv(GLbyte * pc)
 {
-    CALL_VertexAttrib4ivARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLint *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          4), 4)
-                            ));
+    glVertexAttrib4sv((GLuint) bswap_CARD32(pc + 0),
+                      (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                       4));
 }
 
 void
-__glXDispSwap_VertexAttrib4svARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4ubv(GLbyte * pc)
 {
-    CALL_VertexAttrib4svARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLshort *)
-                                             bswap_16_array((uint16_t *) (pc +
-                                                                          4), 4)
-                            ));
+    glVertexAttrib4ubv((GLuint) bswap_CARD32(pc + 0),
+                       (const GLubyte *) (pc + 4));
 }
 
 void
-__glXDispSwap_VertexAttrib4ubvARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4uiv(GLbyte * pc)
 {
-    CALL_VertexAttrib4ubvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                              (const GLubyte *) (pc + 4)
-                             ));
+    glVertexAttrib4uiv((GLuint) bswap_CARD32(pc + 0),
+                       (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                       4));
 }
 
 void
-__glXDispSwap_VertexAttrib4uivARB(GLbyte * pc)
+__glXDispSwap_VertexAttrib4usv(GLbyte * pc)
 {
-    CALL_VertexAttrib4uivARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                              (const GLuint *)
-                                              bswap_32_array((uint32_t *) (pc +
-                                                                           4),
-                                                             4)
-                             ));
+    glVertexAttrib4usv((GLuint) bswap_CARD32(pc + 0),
+                       (const GLushort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                         4));
 }
 
 void
-__glXDispSwap_VertexAttrib4usvARB(GLbyte * pc)
+__glXDispSwap_ClampColor(GLbyte * pc)
 {
-    CALL_VertexAttrib4usvARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                              (const GLushort *)
-                                              bswap_16_array((uint16_t *) (pc +
-                                                                           4),
-                                                             4)
-                             ));
+    glClampColor((GLenum) bswap_ENUM(pc + 0), (GLenum) bswap_ENUM(pc + 4));
 }
 
 void
-__glXDispSwap_BeginQueryARB(GLbyte * pc)
+__glXDispSwap_BindProgramARB(GLbyte * pc)
 {
-    CALL_BeginQueryARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                        (GLuint) bswap_CARD32(pc + 4)
-                       ));
+    glBindProgramARB((GLenum) bswap_ENUM(pc + 0),
+                     (GLuint) bswap_CARD32(pc + 4));
 }
 
 int
-__glXDispSwap_DeleteQueriesARB(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_DeleteProgramsARB(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
         __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
 
-    pc += __GLX_SINGLE_HDR_SIZE;
+    pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
         const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-        CALL_DeleteQueriesARB(GET_DISPATCH(), (n,
-                                               (const GLuint *)
-                                               bswap_32_array((uint32_t *) (pc +
-                                                                            4),
-                                                              0)
-                              ));
+        glDeleteProgramsARB(n,
+                            (const GLuint *)
+                            bswap_32_array((uint32_t *) (pc + 4), 0));
         error = Success;
     }
 
     return error;
 }
 
-void
-__glXDispSwap_EndQueryARB(GLbyte * pc)
-{
-    CALL_EndQueryARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                     ));
-}
-
 int
-__glXDispSwap_GenQueriesARB(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_GenProgramsARB(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
         __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
 
-    pc += __GLX_SINGLE_HDR_SIZE;
+    pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
         const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
         GLuint answerBuffer[200];
-        GLuint *ids =
+        GLuint *programs =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        CALL_GenQueriesARB(GET_DISPATCH(), (n, ids));
-        (void) bswap_32_array((uint32_t *) ids, n);
-        __glXSendReplySwap(cl->client, ids, n, 4, GL_TRUE, 0);
+        glGenProgramsARB(n, programs);
+        (void) bswap_32_array((uint32_t *) programs, n);
+        __glXSendReplySwap(cl->client, programs, n, 4, GL_TRUE, 0);
         error = Success;
     }
 
@@ -5269,31 +4615,43 @@ __glXDispSwap_GenQueriesARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_GetQueryObjectivARB(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_GetProgramEnvParameterdvARB(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
         __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
 
-    pc += __GLX_SINGLE_HDR_SIZE;
+    pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        const GLenum pname = (GLenum) bswap_ENUM(pc + 4);
+        GLdouble params[4];
 
-        const GLuint compsize = __glGetQueryObjectivARB_size(pname);
-        GLint answerBuffer[200];
-        GLint *params =
-            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
-                                 sizeof(answerBuffer), 4);
+        glGetProgramEnvParameterdvARB((GLenum) bswap_ENUM(pc + 0),
+                                      (GLuint) bswap_CARD32(pc + 4), params);
+        (void) bswap_64_array((uint64_t *) params, 4);
+        __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0);
+        error = Success;
+    }
 
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
+    return error;
+}
 
-        CALL_GetQueryObjectivARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                                  pname, params));
-        (void) bswap_32_array((uint32_t *) params, compsize);
-        __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+int
+__glXDispSwap_GetProgramEnvParameterfvARB(__GLXclientState * cl, GLbyte * pc)
+{
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    int error;
+    __GLXcontext *const cx =
+        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
+
+    pc += __GLX_VENDPRIV_HDR_SIZE;
+    if (cx != NULL) {
+        GLfloat params[4];
+
+        glGetProgramEnvParameterfvARB((GLenum) bswap_ENUM(pc + 0),
+                                      (GLuint) bswap_CARD32(pc + 4), params);
+        (void) bswap_32_array((uint32_t *) params, 4);
+        __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0);
         error = Success;
     }
 
@@ -5301,32 +4659,43 @@ __glXDispSwap_GetQueryObjectivARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_GetQueryObjectuivARB(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_GetProgramLocalParameterdvARB(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
         __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
 
-    pc += __GLX_SINGLE_HDR_SIZE;
+    pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        const GLenum pname = (GLenum) bswap_ENUM(pc + 4);
+        GLdouble params[4];
 
-        const GLuint compsize = __glGetQueryObjectuivARB_size(pname);
-        GLuint answerBuffer[200];
-        GLuint *params =
-            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
-                                 sizeof(answerBuffer), 4);
+        glGetProgramLocalParameterdvARB((GLenum) bswap_ENUM(pc + 0),
+                                        (GLuint) bswap_CARD32(pc + 4), params);
+        (void) bswap_64_array((uint64_t *) params, 4);
+        __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0);
+        error = Success;
+    }
 
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
+    return error;
+}
 
-        CALL_GetQueryObjectuivARB(GET_DISPATCH(), ((GLuint)
-                                                   bswap_CARD32(pc + 0), pname,
-                                                   params));
-        (void) bswap_32_array((uint32_t *) params, compsize);
-        __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+int
+__glXDispSwap_GetProgramLocalParameterfvARB(__GLXclientState * cl, GLbyte * pc)
+{
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
+    int error;
+    __GLXcontext *const cx =
+        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
+
+    pc += __GLX_VENDPRIV_HDR_SIZE;
+    if (cx != NULL) {
+        GLfloat params[4];
+
+        glGetProgramLocalParameterfvARB((GLenum) bswap_ENUM(pc + 0),
+                                        (GLuint) bswap_CARD32(pc + 4), params);
+        (void) bswap_32_array((uint32_t *) params, 4);
+        __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0);
         error = Success;
     }
 
@@ -5334,18 +4703,18 @@ __glXDispSwap_GetQueryObjectuivARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_GetQueryivARB(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_GetProgramivARB(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
         __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
 
-    pc += __GLX_SINGLE_HDR_SIZE;
+    pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
         const GLenum pname = (GLenum) bswap_ENUM(pc + 4);
 
-        const GLuint compsize = __glGetQueryivARB_size(pname);
+        const GLuint compsize = __glGetProgramivARB_size(pname);
         GLint answerBuffer[200];
         GLint *params =
             __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
@@ -5355,8 +4724,7 @@ __glXDispSwap_GetQueryivARB(__GLXclientState * cl, GLbyte * pc)
             return BadAlloc;
         __glXClearErrorOccured();
 
-        CALL_GetQueryivARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                            pname, params));
+        glGetProgramivARB((GLenum) bswap_ENUM(pc + 0), pname, params);
         (void) bswap_32_array((uint32_t *) params, compsize);
         __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
         error = Success;
@@ -5366,19 +4734,18 @@ __glXDispSwap_GetQueryivARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_IsQueryARB(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_IsProgramARB(__GLXclientState * cl, GLbyte * pc)
 {
-    xGLXSingleReq *const req = (xGLXSingleReq *) pc;
+    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
     __GLXcontext *const cx =
         __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
 
-    pc += __GLX_SINGLE_HDR_SIZE;
+    pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
         GLboolean retval;
 
-        retval = CALL_IsQueryARB(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0)
-                                 ));
+        retval = glIsProgramARB((GLuint) bswap_CARD32(pc + 0));
         __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
@@ -5387,205 +4754,128 @@ __glXDispSwap_IsQueryARB(__GLXclientState * cl, GLbyte * pc)
 }
 
 void
-__glXDispSwap_DrawBuffersARB(GLbyte * pc)
-{
-    const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
-
-    CALL_DrawBuffersARB(GET_DISPATCH(), (n,
-                                         (const GLenum *)
-                                         bswap_32_array((uint32_t *) (pc + 4),
-                                                        0)
-                        ));
-}
-
-void
-__glXDispSwap_ClampColorARB(GLbyte * pc)
-{
-    CALL_ClampColorARB(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                        (GLenum) bswap_ENUM(pc + 4)
-                       ));
-}
-
-void
-__glXDispSwap_RenderbufferStorageMultisample(GLbyte * pc)
-{
-    CALL_RenderbufferStorageMultisample(GET_DISPATCH(), ((GLenum)
-                                                         bswap_ENUM(pc + 0),
-                                                         (GLsizei)
-                                                         bswap_CARD32(pc + 4),
-                                                         (GLenum) bswap_ENUM(pc
-                                                                             +
-                                                                             8),
-                                                         (GLsizei)
-                                                         bswap_CARD32(pc + 12),
-                                                         (GLsizei)
-                                                         bswap_CARD32(pc + 16)
-                                        ));
-}
-
-void
-__glXDispSwap_SampleMaskSGIS(GLbyte * pc)
-{
-    CALL_SampleMaskSGIS(GET_DISPATCH(), ((GLclampf) bswap_FLOAT32(pc + 0),
-                                         *(GLboolean *) (pc + 4)
-                        ));
-}
-
-void
-__glXDispSwap_SamplePatternSGIS(GLbyte * pc)
-{
-    CALL_SamplePatternSGIS(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                           ));
-}
-
-void
-__glXDispSwap_PointParameterfEXT(GLbyte * pc)
-{
-    CALL_PointParameterfEXT(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                             (GLfloat) bswap_FLOAT32(pc + 4)
-                            ));
-}
-
-void
-__glXDispSwap_PointParameterfvEXT(GLbyte * pc)
+__glXDispSwap_ProgramEnvParameter4dvARB(GLbyte * pc)
 {
-    const GLenum pname = (GLenum) bswap_ENUM(pc + 0);
-    const GLfloat *params;
-
-    params =
-        (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
-                                         __glPointParameterfvEXT_size(pname));
+#ifdef __GLX_ALIGN64
+    if ((unsigned long) (pc) & 7) {
+        (void) memmove(pc - 4, pc, 40);
+        pc -= 4;
+    }
+#endif
 
-    CALL_PointParameterfvEXT(GET_DISPATCH(), (pname, params));
+    glProgramEnvParameter4dvARB((GLenum) bswap_ENUM(pc + 0),
+                                (GLuint) bswap_CARD32(pc + 4),
+                                (const GLdouble *)
+                                bswap_64_array((uint64_t *) (pc + 8), 4));
 }
 
 void
-__glXDispSwap_SecondaryColor3bvEXT(GLbyte * pc)
+__glXDispSwap_ProgramEnvParameter4fvARB(GLbyte * pc)
 {
-    CALL_SecondaryColor3bvEXT(GET_DISPATCH(), ((const GLbyte *) (pc + 0)
-                              ));
+    glProgramEnvParameter4fvARB((GLenum) bswap_ENUM(pc + 0),
+                                (GLuint) bswap_CARD32(pc + 4),
+                                (const GLfloat *)
+                                bswap_32_array((uint32_t *) (pc + 8), 4));
 }
 
 void
-__glXDispSwap_SecondaryColor3dvEXT(GLbyte * pc)
+__glXDispSwap_ProgramLocalParameter4dvARB(GLbyte * pc)
 {
 #ifdef __GLX_ALIGN64
     if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, 24);
+        (void) memmove(pc - 4, pc, 40);
         pc -= 4;
     }
 #endif
 
-    CALL_SecondaryColor3dvEXT(GET_DISPATCH(), ((const GLdouble *)
-                                               bswap_64_array((uint64_t *) (pc +
-                                                                            0),
-                                                              3)
-                              ));
+    glProgramLocalParameter4dvARB((GLenum) bswap_ENUM(pc + 0),
+                                  (GLuint) bswap_CARD32(pc + 4),
+                                  (const GLdouble *)
+                                  bswap_64_array((uint64_t *) (pc + 8), 4));
 }
 
 void
-__glXDispSwap_SecondaryColor3fvEXT(GLbyte * pc)
+__glXDispSwap_ProgramLocalParameter4fvARB(GLbyte * pc)
 {
-    CALL_SecondaryColor3fvEXT(GET_DISPATCH(), ((const GLfloat *)
-                                               bswap_32_array((uint32_t *) (pc +
-                                                                            0),
-                                                              3)
-                              ));
+    glProgramLocalParameter4fvARB((GLenum) bswap_ENUM(pc + 0),
+                                  (GLuint) bswap_CARD32(pc + 4),
+                                  (const GLfloat *)
+                                  bswap_32_array((uint32_t *) (pc + 8), 4));
 }
 
 void
-__glXDispSwap_SecondaryColor3ivEXT(GLbyte * pc)
+__glXDispSwap_ProgramStringARB(GLbyte * pc)
 {
-    CALL_SecondaryColor3ivEXT(GET_DISPATCH(), ((const GLint *)
-                                               bswap_32_array((uint32_t *) (pc +
-                                                                            0),
-                                                              3)
-                              ));
-}
+    const GLsizei len = (GLsizei) bswap_CARD32(pc + 8);
 
-void
-__glXDispSwap_SecondaryColor3svEXT(GLbyte * pc)
-{
-    CALL_SecondaryColor3svEXT(GET_DISPATCH(), ((const GLshort *)
-                                               bswap_16_array((uint16_t *) (pc +
-                                                                            0),
-                                                              3)
-                              ));
+    glProgramStringARB((GLenum) bswap_ENUM(pc + 0),
+                       (GLenum) bswap_ENUM(pc + 4),
+                       len, (const GLvoid *) (pc + 12));
 }
 
 void
-__glXDispSwap_SecondaryColor3ubvEXT(GLbyte * pc)
+__glXDispSwap_VertexAttrib1fvARB(GLbyte * pc)
 {
-    CALL_SecondaryColor3ubvEXT(GET_DISPATCH(), ((const GLubyte *) (pc + 0)
-                               ));
+    glVertexAttrib1fvARB((GLuint) bswap_CARD32(pc + 0),
+                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                          1));
 }
 
 void
-__glXDispSwap_SecondaryColor3uivEXT(GLbyte * pc)
+__glXDispSwap_VertexAttrib2fvARB(GLbyte * pc)
 {
-    CALL_SecondaryColor3uivEXT(GET_DISPATCH(), ((const GLuint *)
-                                                bswap_32_array((uint32_t *) (pc
-                                                                             +
-                                                                             0),
-                                                               3)
-                               ));
+    glVertexAttrib2fvARB((GLuint) bswap_CARD32(pc + 0),
+                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                          2));
 }
 
 void
-__glXDispSwap_SecondaryColor3usvEXT(GLbyte * pc)
+__glXDispSwap_VertexAttrib3fvARB(GLbyte * pc)
 {
-    CALL_SecondaryColor3usvEXT(GET_DISPATCH(), ((const GLushort *)
-                                                bswap_16_array((uint16_t *) (pc
-                                                                             +
-                                                                             0),
-                                                               3)
-                               ));
+    glVertexAttrib3fvARB((GLuint) bswap_CARD32(pc + 0),
+                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                          3));
 }
 
 void
-__glXDispSwap_FogCoorddvEXT(GLbyte * pc)
+__glXDispSwap_VertexAttrib4fvARB(GLbyte * pc)
 {
-#ifdef __GLX_ALIGN64
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, 8);
-        pc -= 4;
-    }
-#endif
-
-    CALL_FogCoorddvEXT(GET_DISPATCH(), ((const GLdouble *)
-                                        bswap_64_array((uint64_t *) (pc + 0), 1)
-                       ));
+    glVertexAttrib4fvARB((GLuint) bswap_CARD32(pc + 0),
+                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                          4));
 }
 
 void
-__glXDispSwap_FogCoordfvEXT(GLbyte * pc)
+__glXDispSwap_BindFramebuffer(GLbyte * pc)
 {
-    CALL_FogCoordfvEXT(GET_DISPATCH(), ((const GLfloat *)
-                                        bswap_32_array((uint32_t *) (pc + 0), 1)
-                       ));
+    glBindFramebuffer((GLenum) bswap_ENUM(pc + 0),
+                      (GLuint) bswap_CARD32(pc + 4));
 }
 
 void
-__glXDispSwap_BlendFuncSeparateEXT(GLbyte * pc)
+__glXDispSwap_BindRenderbuffer(GLbyte * pc)
 {
-    CALL_BlendFuncSeparateEXT(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                               (GLenum) bswap_ENUM(pc + 4),
-                                               (GLenum) bswap_ENUM(pc + 8),
-                                               (GLenum) bswap_ENUM(pc + 12)
-                              ));
+    glBindRenderbuffer((GLenum) bswap_ENUM(pc + 0),
+                       (GLuint) bswap_CARD32(pc + 4));
 }
 
 void
-__glXDispSwap_WindowPos3fvMESA(GLbyte * pc)
+__glXDispSwap_BlitFramebuffer(GLbyte * pc)
 {
-    CALL_WindowPos3fvMESA(GET_DISPATCH(), ((const GLfloat *)
-                                           bswap_32_array((uint32_t *) (pc + 0),
-                                                          3)
-                          ));
+    glBlitFramebuffer((GLint) bswap_CARD32(pc + 0),
+                      (GLint) bswap_CARD32(pc + 4),
+                      (GLint) bswap_CARD32(pc + 8),
+                      (GLint) bswap_CARD32(pc + 12),
+                      (GLint) bswap_CARD32(pc + 16),
+                      (GLint) bswap_CARD32(pc + 20),
+                      (GLint) bswap_CARD32(pc + 24),
+                      (GLint) bswap_CARD32(pc + 28),
+                      (GLbitfield) bswap_CARD32(pc + 32),
+                      (GLenum) bswap_ENUM(pc + 36));
 }
 
 int
-__glXDispSwap_AreProgramsResidentNV(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_CheckFramebufferStatus(__GLXclientState * cl, GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -5594,19 +4884,10 @@ __glXDispSwap_AreProgramsResidentNV(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
+        GLenum retval;
 
-        GLboolean retval;
-        GLboolean answerBuffer[200];
-        GLboolean *residences =
-            __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
-        retval =
-            CALL_AreProgramsResidentNV(GET_DISPATCH(),
-                                       (n,
-                                        (const GLuint *)
-                                        bswap_32_array((uint32_t *) (pc + 4),
-                                                       0), residences));
-        __glXSendReplySwap(cl->client, residences, n, 1, GL_FALSE, retval);
+        retval = glCheckFramebufferStatus((GLenum) bswap_ENUM(pc + 0));
+        __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
 
@@ -5614,50 +4895,77 @@ __glXDispSwap_AreProgramsResidentNV(__GLXclientState * cl, GLbyte * pc)
 }
 
 void
-__glXDispSwap_BindProgramNV(GLbyte * pc)
+__glXDispSwap_DeleteFramebuffers(GLbyte * pc)
+{
+    const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
+
+    glDeleteFramebuffers(n,
+                         (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                         0));
+}
+
+void
+__glXDispSwap_DeleteRenderbuffers(GLbyte * pc)
 {
-    CALL_BindProgramNV(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                        (GLuint) bswap_CARD32(pc + 4)
-                       ));
+    const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
+
+    glDeleteRenderbuffers(n,
+                          (const GLuint *) bswap_32_array((uint32_t *) (pc + 4),
+                                                          0));
 }
 
-int
-__glXDispSwap_DeleteProgramsNV(__GLXclientState * cl, GLbyte * pc)
+void
+__glXDispSwap_FramebufferRenderbuffer(GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
+    glFramebufferRenderbuffer((GLenum) bswap_ENUM(pc + 0),
+                              (GLenum) bswap_ENUM(pc + 4),
+                              (GLenum) bswap_ENUM(pc + 8),
+                              (GLuint) bswap_CARD32(pc + 12));
+}
 
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
+void
+__glXDispSwap_FramebufferTexture1D(GLbyte * pc)
+{
+    glFramebufferTexture1D((GLenum) bswap_ENUM(pc + 0),
+                           (GLenum) bswap_ENUM(pc + 4),
+                           (GLenum) bswap_ENUM(pc + 8),
+                           (GLuint) bswap_CARD32(pc + 12),
+                           (GLint) bswap_CARD32(pc + 16));
+}
 
-        CALL_DeleteProgramsNV(GET_DISPATCH(), (n,
-                                               (const GLuint *)
-                                               bswap_32_array((uint32_t *) (pc +
-                                                                            4),
-                                                              0)
-                              ));
-        error = Success;
-    }
+void
+__glXDispSwap_FramebufferTexture2D(GLbyte * pc)
+{
+    glFramebufferTexture2D((GLenum) bswap_ENUM(pc + 0),
+                           (GLenum) bswap_ENUM(pc + 4),
+                           (GLenum) bswap_ENUM(pc + 8),
+                           (GLuint) bswap_CARD32(pc + 12),
+                           (GLint) bswap_CARD32(pc + 16));
+}
 
-    return error;
+void
+__glXDispSwap_FramebufferTexture3D(GLbyte * pc)
+{
+    glFramebufferTexture3D((GLenum) bswap_ENUM(pc + 0),
+                           (GLenum) bswap_ENUM(pc + 4),
+                           (GLenum) bswap_ENUM(pc + 8),
+                           (GLuint) bswap_CARD32(pc + 12),
+                           (GLint) bswap_CARD32(pc + 16),
+                           (GLint) bswap_CARD32(pc + 20));
 }
 
 void
-__glXDispSwap_ExecuteProgramNV(GLbyte * pc)
+__glXDispSwap_FramebufferTextureLayer(GLbyte * pc)
 {
-    CALL_ExecuteProgramNV(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                           (GLuint) bswap_CARD32(pc + 4),
-                                           (const GLfloat *)
-                                           bswap_32_array((uint32_t *) (pc + 8),
-                                                          4)
-                          ));
+    glFramebufferTextureLayer((GLenum) bswap_ENUM(pc + 0),
+                              (GLenum) bswap_ENUM(pc + 4),
+                              (GLuint) bswap_CARD32(pc + 8),
+                              (GLint) bswap_CARD32(pc + 12),
+                              (GLint) bswap_CARD32(pc + 16));
 }
 
 int
-__glXDispSwap_GenProgramsNV(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_GenFramebuffers(__GLXclientState * cl, GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -5669,12 +4977,12 @@ __glXDispSwap_GenProgramsNV(__GLXclientState * cl, GLbyte * pc)
         const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
         GLuint answerBuffer[200];
-        GLuint *programs =
+        GLuint *framebuffers =
             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
                                  4);
-        CALL_GenProgramsNV(GET_DISPATCH(), (n, programs));
-        (void) bswap_32_array((uint32_t *) programs, n);
-        __glXSendReplySwap(cl->client, programs, n, 4, GL_TRUE, 0);
+        glGenFramebuffers(n, framebuffers);
+        (void) bswap_32_array((uint32_t *) framebuffers, n);
+        __glXSendReplySwap(cl->client, framebuffers, n, 4, GL_TRUE, 0);
         error = Success;
     }
 
@@ -5682,7 +4990,7 @@ __glXDispSwap_GenProgramsNV(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_GetProgramParameterdvNV(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_GenRenderbuffers(__GLXclientState * cl, GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -5691,25 +4999,30 @@ __glXDispSwap_GetProgramParameterdvNV(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        GLdouble params[4];
+        const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
 
-        CALL_GetProgramParameterdvNV(GET_DISPATCH(), ((GLenum)
-                                                      bswap_ENUM(pc + 0),
-                                                      (GLuint) bswap_CARD32(pc +
-                                                                            4),
-                                                      (GLenum) bswap_ENUM(pc +
-                                                                          8),
-                                                      params));
-        (void) bswap_64_array((uint64_t *) params, 4);
-        __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0);
+        GLuint answerBuffer[200];
+        GLuint *renderbuffers =
+            __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                 4);
+        glGenRenderbuffers(n, renderbuffers);
+        (void) bswap_32_array((uint32_t *) renderbuffers, n);
+        __glXSendReplySwap(cl->client, renderbuffers, n, 4, GL_TRUE, 0);
         error = Success;
     }
 
     return error;
 }
 
+void
+__glXDispSwap_GenerateMipmap(GLbyte * pc)
+{
+    glGenerateMipmap((GLenum) bswap_ENUM(pc + 0));
+}
+
 int
-__glXDispSwap_GetProgramParameterfvNV(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_GetFramebufferAttachmentParameteriv(__GLXclientState * cl,
+                                                  GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -5718,17 +5031,14 @@ __glXDispSwap_GetProgramParameterfvNV(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        GLfloat params[4];
+        GLint params[1];
 
-        CALL_GetProgramParameterfvNV(GET_DISPATCH(), ((GLenum)
-                                                      bswap_ENUM(pc + 0),
-                                                      (GLuint) bswap_CARD32(pc +
-                                                                            4),
-                                                      (GLenum) bswap_ENUM(pc +
-                                                                          8),
-                                                      params));
-        (void) bswap_32_array((uint32_t *) params, 4);
-        __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0);
+        glGetFramebufferAttachmentParameteriv((GLenum) bswap_ENUM(pc + 0),
+                                              (GLenum) bswap_ENUM(pc + 4),
+                                              (GLenum) bswap_ENUM(pc + 8),
+                                              params);
+        (void) bswap_32_array((uint32_t *) params, 1);
+        __glXSendReplySwap(cl->client, params, 1, 4, GL_FALSE, 0);
         error = Success;
     }
 
@@ -5736,7 +5046,7 @@ __glXDispSwap_GetProgramParameterfvNV(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_GetProgramivNV(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_GetRenderbufferParameteriv(__GLXclientState * cl, GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -5745,22 +5055,12 @@ __glXDispSwap_GetProgramivNV(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        const GLenum pname = (GLenum) bswap_ENUM(pc + 4);
-
-        const GLuint compsize = __glGetProgramivNV_size(pname);
-        GLint answerBuffer[200];
-        GLint *params =
-            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
-                                 sizeof(answerBuffer), 4);
-
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
+        GLint params[1];
 
-        CALL_GetProgramivNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             pname, params));
-        (void) bswap_32_array((uint32_t *) params, compsize);
-        __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+        glGetRenderbufferParameteriv((GLenum) bswap_ENUM(pc + 0),
+                                     (GLenum) bswap_ENUM(pc + 4), params);
+        (void) bswap_32_array((uint32_t *) params, 1);
+        __glXSendReplySwap(cl->client, params, 1, 4, GL_FALSE, 0);
         error = Success;
     }
 
@@ -5768,7 +5068,7 @@ __glXDispSwap_GetProgramivNV(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_GetTrackMatrixivNV(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_IsFramebuffer(__GLXclientState * cl, GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -5777,14 +5077,10 @@ __glXDispSwap_GetTrackMatrixivNV(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        GLint params[1];
+        GLboolean retval;
 
-        CALL_GetTrackMatrixivNV(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                 (GLuint) bswap_CARD32(pc + 4),
-                                                 (GLenum) bswap_ENUM(pc + 8),
-                                                 params));
-        (void) bswap_32_array((uint32_t *) params, 1);
-        __glXSendReplySwap(cl->client, params, 1, 4, GL_FALSE, 0);
+        retval = glIsFramebuffer((GLuint) bswap_CARD32(pc + 0));
+        __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
 
@@ -5792,7 +5088,7 @@ __glXDispSwap_GetTrackMatrixivNV(__GLXclientState * cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_GetVertexAttribdvNV(__GLXclientState * cl, GLbyte * pc)
+__glXDispSwap_IsRenderbuffer(__GLXclientState * cl, GLbyte * pc)
 {
     xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
     int error;
@@ -5801,186 +5097,46 @@ __glXDispSwap_GetVertexAttribdvNV(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_VENDPRIV_HDR_SIZE;
     if (cx != NULL) {
-        const GLenum pname = (GLenum) bswap_ENUM(pc + 4);
-
-        const GLuint compsize = __glGetVertexAttribdvNV_size(pname);
-        GLdouble answerBuffer[200];
-        GLdouble *params =
-            __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer,
-                                 sizeof(answerBuffer), 8);
-
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
+        GLboolean retval;
 
-        CALL_GetVertexAttribdvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                                  pname, params));
-        (void) bswap_64_array((uint64_t *) params, compsize);
-        __glXSendReplySwap(cl->client, params, compsize, 8, GL_FALSE, 0);
+        retval = glIsRenderbuffer((GLuint) bswap_CARD32(pc + 0));
+        __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
         error = Success;
     }
 
     return error;
 }
 
-int
-__glXDispSwap_GetVertexAttribfvNV(__GLXclientState * cl, GLbyte * pc)
+void
+__glXDispSwap_RenderbufferStorage(GLbyte * pc)
 {
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLenum pname = (GLenum) bswap_ENUM(pc + 4);
-
-        const GLuint compsize = __glGetVertexAttribfvNV_size(pname);
-        GLfloat answerBuffer[200];
-        GLfloat *params =
-            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
-                                 sizeof(answerBuffer), 4);
-
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
-
-        CALL_GetVertexAttribfvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                                  pname, params));
-        (void) bswap_32_array((uint32_t *) params, compsize);
-        __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDispSwap_GetVertexAttribivNV(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLenum pname = (GLenum) bswap_ENUM(pc + 4);
-
-        const GLuint compsize = __glGetVertexAttribivNV_size(pname);
-        GLint answerBuffer[200];
-        GLint *params =
-            __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer,
-                                 sizeof(answerBuffer), 4);
-
-        if (params == NULL)
-            return BadAlloc;
-        __glXClearErrorOccured();
-
-        CALL_GetVertexAttribivNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                                  pname, params));
-        (void) bswap_32_array((uint32_t *) params, compsize);
-        __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDispSwap_IsProgramNV(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLboolean retval;
-
-        retval = CALL_IsProgramNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0)
-                                  ));
-        __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
-        error = Success;
-    }
-
-    return error;
-}
-
-void
-__glXDispSwap_LoadProgramNV(GLbyte * pc)
-{
-    const GLsizei len = (GLsizei) bswap_CARD32(pc + 8);
-
-    CALL_LoadProgramNV(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                        (GLuint) bswap_CARD32(pc + 4),
-                                        len, (const GLubyte *) (pc + 12)
-                       ));
-}
-
-void
-__glXDispSwap_ProgramParameters4dvNV(GLbyte * pc)
-{
-    const GLsizei num = (GLsizei) bswap_CARD32(pc + 8);
-
-#ifdef __GLX_ALIGN64
-    const GLuint cmdlen = 16 + __GLX_PAD((num * 32)) - 4;
-
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, cmdlen);
-        pc -= 4;
-    }
-#endif
-
-    CALL_ProgramParameters4dvNV(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                 (GLuint) bswap_CARD32(pc + 4),
-                                                 num,
-                                                 (const GLdouble *)
-                                                 bswap_64_array((uint64_t *) (pc
-                                                                              +
-                                                                              12),
-                                                                0)
-                                ));
-}
+    glRenderbufferStorage((GLenum) bswap_ENUM(pc + 0),
+                          (GLenum) bswap_ENUM(pc + 4),
+                          (GLsizei) bswap_CARD32(pc + 8),
+                          (GLsizei) bswap_CARD32(pc + 12));
+}
 
 void
-__glXDispSwap_ProgramParameters4fvNV(GLbyte * pc)
+__glXDispSwap_RenderbufferStorageMultisample(GLbyte * pc)
 {
-    const GLsizei num = (GLsizei) bswap_CARD32(pc + 8);
-
-    CALL_ProgramParameters4fvNV(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                 (GLuint) bswap_CARD32(pc + 4),
-                                                 num,
-                                                 (const GLfloat *)
-                                                 bswap_32_array((uint32_t *) (pc
-                                                                              +
-                                                                              12),
-                                                                0)
-                                ));
+    glRenderbufferStorageMultisample((GLenum) bswap_ENUM(pc + 0),
+                                     (GLsizei) bswap_CARD32(pc + 4),
+                                     (GLenum) bswap_ENUM(pc + 8),
+                                     (GLsizei) bswap_CARD32(pc + 12),
+                                     (GLsizei) bswap_CARD32(pc + 16));
 }
 
 void
-__glXDispSwap_RequestResidentProgramsNV(GLbyte * pc)
+__glXDispSwap_SecondaryColor3fvEXT(GLbyte * pc)
 {
-    const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
-
-    CALL_RequestResidentProgramsNV(GET_DISPATCH(), (n,
-                                                    (const GLuint *)
-                                                    bswap_32_array((uint32_t
-                                                                    *) (pc + 4),
-                                                                   0)
-                                   ));
+    glSecondaryColor3fvEXT((const GLfloat *)
+                           bswap_32_array((uint32_t *) (pc + 0), 3));
 }
 
 void
-__glXDispSwap_TrackMatrixNV(GLbyte * pc)
+__glXDispSwap_FogCoordfvEXT(GLbyte * pc)
 {
-    CALL_TrackMatrixNV(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                        (GLuint) bswap_CARD32(pc + 4),
-                                        (GLenum) bswap_ENUM(pc + 8),
-                                        (GLenum) bswap_ENUM(pc + 12)
-                       ));
+    glFogCoordfvEXT((const GLfloat *) bswap_32_array((uint32_t *) (pc + 0), 1));
 }
 
 void
@@ -5993,31 +5149,25 @@ __glXDispSwap_VertexAttrib1dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib1dvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                            (const GLdouble *)
-                                            bswap_64_array((uint64_t *) (pc +
-                                                                         4), 1)
-                           ));
+    glVertexAttrib1dvNV((GLuint) bswap_CARD32(pc + 0),
+                        (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                          1));
 }
 
 void
 __glXDispSwap_VertexAttrib1fvNV(GLbyte * pc)
 {
-    CALL_VertexAttrib1fvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                            (const GLfloat *)
-                                            bswap_32_array((uint32_t *) (pc +
-                                                                         4), 1)
-                           ));
+    glVertexAttrib1fvNV((GLuint) bswap_CARD32(pc + 0),
+                        (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                         1));
 }
 
 void
 __glXDispSwap_VertexAttrib1svNV(GLbyte * pc)
 {
-    CALL_VertexAttrib1svNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                            (const GLshort *)
-                                            bswap_16_array((uint16_t *) (pc +
-                                                                         4), 1)
-                           ));
+    glVertexAttrib1svNV((GLuint) bswap_CARD32(pc + 0),
+                        (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                         1));
 }
 
 void
@@ -6030,31 +5180,25 @@ __glXDispSwap_VertexAttrib2dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib2dvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                            (const GLdouble *)
-                                            bswap_64_array((uint64_t *) (pc +
-                                                                         4), 2)
-                           ));
+    glVertexAttrib2dvNV((GLuint) bswap_CARD32(pc + 0),
+                        (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                          2));
 }
 
 void
 __glXDispSwap_VertexAttrib2fvNV(GLbyte * pc)
 {
-    CALL_VertexAttrib2fvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                            (const GLfloat *)
-                                            bswap_32_array((uint32_t *) (pc +
-                                                                         4), 2)
-                           ));
+    glVertexAttrib2fvNV((GLuint) bswap_CARD32(pc + 0),
+                        (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                         2));
 }
 
 void
 __glXDispSwap_VertexAttrib2svNV(GLbyte * pc)
 {
-    CALL_VertexAttrib2svNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                            (const GLshort *)
-                                            bswap_16_array((uint16_t *) (pc +
-                                                                         4), 2)
-                           ));
+    glVertexAttrib2svNV((GLuint) bswap_CARD32(pc + 0),
+                        (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                         2));
 }
 
 void
@@ -6067,31 +5211,25 @@ __glXDispSwap_VertexAttrib3dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib3dvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                            (const GLdouble *)
-                                            bswap_64_array((uint64_t *) (pc +
-                                                                         4), 3)
-                           ));
+    glVertexAttrib3dvNV((GLuint) bswap_CARD32(pc + 0),
+                        (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                          3));
 }
 
 void
 __glXDispSwap_VertexAttrib3fvNV(GLbyte * pc)
 {
-    CALL_VertexAttrib3fvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                            (const GLfloat *)
-                                            bswap_32_array((uint32_t *) (pc +
-                                                                         4), 3)
-                           ));
+    glVertexAttrib3fvNV((GLuint) bswap_CARD32(pc + 0),
+                        (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                         3));
 }
 
 void
 __glXDispSwap_VertexAttrib3svNV(GLbyte * pc)
 {
-    CALL_VertexAttrib3svNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                            (const GLshort *)
-                                            bswap_16_array((uint16_t *) (pc +
-                                                                         4), 3)
-                           ));
+    glVertexAttrib3svNV((GLuint) bswap_CARD32(pc + 0),
+                        (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                         3));
 }
 
 void
@@ -6104,39 +5242,32 @@ __glXDispSwap_VertexAttrib4dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttrib4dvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                            (const GLdouble *)
-                                            bswap_64_array((uint64_t *) (pc +
-                                                                         4), 4)
-                           ));
+    glVertexAttrib4dvNV((GLuint) bswap_CARD32(pc + 0),
+                        (const GLdouble *) bswap_64_array((uint64_t *) (pc + 4),
+                                                          4));
 }
 
 void
 __glXDispSwap_VertexAttrib4fvNV(GLbyte * pc)
 {
-    CALL_VertexAttrib4fvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                            (const GLfloat *)
-                                            bswap_32_array((uint32_t *) (pc +
-                                                                         4), 4)
-                           ));
+    glVertexAttrib4fvNV((GLuint) bswap_CARD32(pc + 0),
+                        (const GLfloat *) bswap_32_array((uint32_t *) (pc + 4),
+                                                         4));
 }
 
 void
 __glXDispSwap_VertexAttrib4svNV(GLbyte * pc)
 {
-    CALL_VertexAttrib4svNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                            (const GLshort *)
-                                            bswap_16_array((uint16_t *) (pc +
-                                                                         4), 4)
-                           ));
+    glVertexAttrib4svNV((GLuint) bswap_CARD32(pc + 0),
+                        (const GLshort *) bswap_16_array((uint16_t *) (pc + 4),
+                                                         4));
 }
 
 void
 __glXDispSwap_VertexAttrib4ubvNV(GLbyte * pc)
 {
-    CALL_VertexAttrib4ubvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             (const GLubyte *) (pc + 4)
-                            ));
+    glVertexAttrib4ubvNV((GLuint) bswap_CARD32(pc + 0),
+                         (const GLubyte *) (pc + 4));
 }
 
 void
@@ -6153,12 +5284,10 @@ __glXDispSwap_VertexAttribs1dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttribs1dvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             n,
-                                             (const GLdouble *)
-                                             bswap_64_array((uint64_t *) (pc +
-                                                                          8), 0)
-                            ));
+    glVertexAttribs1dvNV((GLuint) bswap_CARD32(pc + 0),
+                         n,
+                         (const GLdouble *)
+                         bswap_64_array((uint64_t *) (pc + 8), 0));
 }
 
 void
@@ -6166,12 +5295,10 @@ __glXDispSwap_VertexAttribs1fvNV(GLbyte * pc)
 {
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    CALL_VertexAttribs1fvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             n,
-                                             (const GLfloat *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          8), 0)
-                            ));
+    glVertexAttribs1fvNV((GLuint) bswap_CARD32(pc + 0),
+                         n,
+                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
+                                                          0));
 }
 
 void
@@ -6179,12 +5306,10 @@ __glXDispSwap_VertexAttribs1svNV(GLbyte * pc)
 {
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    CALL_VertexAttribs1svNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             n,
-                                             (const GLshort *)
-                                             bswap_16_array((uint16_t *) (pc +
-                                                                          8), 0)
-                            ));
+    glVertexAttribs1svNV((GLuint) bswap_CARD32(pc + 0),
+                         n,
+                         (const GLshort *) bswap_16_array((uint16_t *) (pc + 8),
+                                                          0));
 }
 
 void
@@ -6201,12 +5326,10 @@ __glXDispSwap_VertexAttribs2dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttribs2dvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             n,
-                                             (const GLdouble *)
-                                             bswap_64_array((uint64_t *) (pc +
-                                                                          8), 0)
-                            ));
+    glVertexAttribs2dvNV((GLuint) bswap_CARD32(pc + 0),
+                         n,
+                         (const GLdouble *)
+                         bswap_64_array((uint64_t *) (pc + 8), 0));
 }
 
 void
@@ -6214,12 +5337,10 @@ __glXDispSwap_VertexAttribs2fvNV(GLbyte * pc)
 {
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    CALL_VertexAttribs2fvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             n,
-                                             (const GLfloat *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          8), 0)
-                            ));
+    glVertexAttribs2fvNV((GLuint) bswap_CARD32(pc + 0),
+                         n,
+                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
+                                                          0));
 }
 
 void
@@ -6227,12 +5348,10 @@ __glXDispSwap_VertexAttribs2svNV(GLbyte * pc)
 {
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    CALL_VertexAttribs2svNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             n,
-                                             (const GLshort *)
-                                             bswap_16_array((uint16_t *) (pc +
-                                                                          8), 0)
-                            ));
+    glVertexAttribs2svNV((GLuint) bswap_CARD32(pc + 0),
+                         n,
+                         (const GLshort *) bswap_16_array((uint16_t *) (pc + 8),
+                                                          0));
 }
 
 void
@@ -6249,12 +5368,10 @@ __glXDispSwap_VertexAttribs3dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttribs3dvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             n,
-                                             (const GLdouble *)
-                                             bswap_64_array((uint64_t *) (pc +
-                                                                          8), 0)
-                            ));
+    glVertexAttribs3dvNV((GLuint) bswap_CARD32(pc + 0),
+                         n,
+                         (const GLdouble *)
+                         bswap_64_array((uint64_t *) (pc + 8), 0));
 }
 
 void
@@ -6262,12 +5379,10 @@ __glXDispSwap_VertexAttribs3fvNV(GLbyte * pc)
 {
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    CALL_VertexAttribs3fvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             n,
-                                             (const GLfloat *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          8), 0)
-                            ));
+    glVertexAttribs3fvNV((GLuint) bswap_CARD32(pc + 0),
+                         n,
+                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
+                                                          0));
 }
 
 void
@@ -6275,12 +5390,10 @@ __glXDispSwap_VertexAttribs3svNV(GLbyte * pc)
 {
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    CALL_VertexAttribs3svNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             n,
-                                             (const GLshort *)
-                                             bswap_16_array((uint16_t *) (pc +
-                                                                          8), 0)
-                            ));
+    glVertexAttribs3svNV((GLuint) bswap_CARD32(pc + 0),
+                         n,
+                         (const GLshort *) bswap_16_array((uint16_t *) (pc + 8),
+                                                          0));
 }
 
 void
@@ -6297,12 +5410,10 @@ __glXDispSwap_VertexAttribs4dvNV(GLbyte * pc)
     }
 #endif
 
-    CALL_VertexAttribs4dvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             n,
-                                             (const GLdouble *)
-                                             bswap_64_array((uint64_t *) (pc +
-                                                                          8), 0)
-                            ));
+    glVertexAttribs4dvNV((GLuint) bswap_CARD32(pc + 0),
+                         n,
+                         (const GLdouble *)
+                         bswap_64_array((uint64_t *) (pc + 8), 0));
 }
 
 void
@@ -6310,12 +5421,10 @@ __glXDispSwap_VertexAttribs4fvNV(GLbyte * pc)
 {
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    CALL_VertexAttribs4fvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             n,
-                                             (const GLfloat *)
-                                             bswap_32_array((uint32_t *) (pc +
-                                                                          8), 0)
-                            ));
+    glVertexAttribs4fvNV((GLuint) bswap_CARD32(pc + 0),
+                         n,
+                         (const GLfloat *) bswap_32_array((uint32_t *) (pc + 8),
+                                                          0));
 }
 
 void
@@ -6323,12 +5432,10 @@ __glXDispSwap_VertexAttribs4svNV(GLbyte * pc)
 {
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    CALL_VertexAttribs4svNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                             n,
-                                             (const GLshort *)
-                                             bswap_16_array((uint16_t *) (pc +
-                                                                          8), 0)
-                            ));
+    glVertexAttribs4svNV((GLuint) bswap_CARD32(pc + 0),
+                         n,
+                         (const GLshort *) bswap_16_array((uint16_t *) (pc + 8),
+                                                          0));
 }
 
 void
@@ -6336,459 +5443,12 @@ __glXDispSwap_VertexAttribs4ubvNV(GLbyte * pc)
 {
     const GLsizei n = (GLsizei) bswap_CARD32(pc + 4);
 
-    CALL_VertexAttribs4ubvNV(GET_DISPATCH(), ((GLuint) bswap_CARD32(pc + 0),
-                                              n, (const GLubyte *) (pc + 8)
-                             ));
-}
-
-void
-__glXDispSwap_PointParameteriNV(GLbyte * pc)
-{
-    CALL_PointParameteriNV(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                            (GLint) bswap_CARD32(pc + 4)
-                           ));
-}
-
-void
-__glXDispSwap_PointParameterivNV(GLbyte * pc)
-{
-    const GLenum pname = (GLenum) bswap_ENUM(pc + 0);
-    const GLint *params;
-
-    params =
-        (const GLint *) bswap_32_array((uint32_t *) (pc + 4),
-                                       __glPointParameterivNV_size(pname));
-
-    CALL_PointParameterivNV(GET_DISPATCH(), (pname, params));
+    glVertexAttribs4ubvNV((GLuint) bswap_CARD32(pc + 0),
+                          n, (const GLubyte *) (pc + 8));
 }
 
 void
 __glXDispSwap_ActiveStencilFaceEXT(GLbyte * pc)
 {
-    CALL_ActiveStencilFaceEXT(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                              ));
-}
-
-int
-__glXDispSwap_GetProgramNamedParameterdvNV(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLsizei len = (GLsizei) bswap_CARD32(pc + 4);
-
-        GLdouble params[4];
-
-        CALL_GetProgramNamedParameterdvNV(GET_DISPATCH(), ((GLuint)
-                                                           bswap_CARD32(pc + 0),
-                                                           len,
-                                                           (const GLubyte *) (pc
-                                                                              +
-                                                                              8),
-                                                           params));
-        (void) bswap_64_array((uint64_t *) params, 4);
-        __glXSendReplySwap(cl->client, params, 4, 8, GL_TRUE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDispSwap_GetProgramNamedParameterfvNV(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLsizei len = (GLsizei) bswap_CARD32(pc + 4);
-
-        GLfloat params[4];
-
-        CALL_GetProgramNamedParameterfvNV(GET_DISPATCH(), ((GLuint)
-                                                           bswap_CARD32(pc + 0),
-                                                           len,
-                                                           (const GLubyte *) (pc
-                                                                              +
-                                                                              8),
-                                                           params));
-        (void) bswap_32_array((uint32_t *) params, 4);
-        __glXSendReplySwap(cl->client, params, 4, 4, GL_TRUE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-void
-__glXDispSwap_ProgramNamedParameter4dvNV(GLbyte * pc)
-{
-    const GLsizei len = (GLsizei) bswap_CARD32(pc + 36);
-
-#ifdef __GLX_ALIGN64
-    const GLuint cmdlen = 44 + __GLX_PAD(len) - 4;
-
-    if ((unsigned long) (pc) & 7) {
-        (void) memmove(pc - 4, pc, cmdlen);
-        pc -= 4;
-    }
-#endif
-
-    CALL_ProgramNamedParameter4dvNV(GET_DISPATCH(), ((GLuint)
-                                                     bswap_CARD32(pc + 32), len,
-                                                     (const GLubyte *) (pc +
-                                                                        40),
-                                                     (const GLdouble *)
-                                                     bswap_64_array((uint64_t
-                                                                     *) (pc +
-                                                                         0), 4)
-                                    ));
-}
-
-void
-__glXDispSwap_ProgramNamedParameter4fvNV(GLbyte * pc)
-{
-    const GLsizei len = (GLsizei) bswap_CARD32(pc + 4);
-
-    CALL_ProgramNamedParameter4fvNV(GET_DISPATCH(), ((GLuint)
-                                                     bswap_CARD32(pc + 0), len,
-                                                     (const GLubyte *) (pc +
-                                                                        24),
-                                                     (const GLfloat *)
-                                                     bswap_32_array((uint32_t
-                                                                     *) (pc +
-                                                                         8), 4)
-                                    ));
-}
-
-void
-__glXDispSwap_BlendEquationSeparateEXT(GLbyte * pc)
-{
-    CALL_BlendEquationSeparateEXT(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                   (GLenum) bswap_ENUM(pc + 4)
-                                  ));
-}
-
-void
-__glXDispSwap_BindFramebufferEXT(GLbyte * pc)
-{
-    CALL_BindFramebufferEXT(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                             (GLuint) bswap_CARD32(pc + 4)
-                            ));
-}
-
-void
-__glXDispSwap_BindRenderbufferEXT(GLbyte * pc)
-{
-    CALL_BindRenderbufferEXT(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                              (GLuint) bswap_CARD32(pc + 4)
-                             ));
-}
-
-int
-__glXDispSwap_CheckFramebufferStatusEXT(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLenum retval;
-
-        retval = CALL_CheckFramebufferStatusEXT(GET_DISPATCH(), ((GLenum)
-                                                                 bswap_ENUM(pc +
-                                                                            0)
-                                                ));
-        __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
-        error = Success;
-    }
-
-    return error;
-}
-
-void
-__glXDispSwap_DeleteFramebuffersEXT(GLbyte * pc)
-{
-    const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
-
-    CALL_DeleteFramebuffersEXT(GET_DISPATCH(), (n,
-                                                (const GLuint *)
-                                                bswap_32_array((uint32_t *) (pc
-                                                                             +
-                                                                             4),
-                                                               0)
-                               ));
-}
-
-void
-__glXDispSwap_DeleteRenderbuffersEXT(GLbyte * pc)
-{
-    const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
-
-    CALL_DeleteRenderbuffersEXT(GET_DISPATCH(), (n,
-                                                 (const GLuint *)
-                                                 bswap_32_array((uint32_t *) (pc
-                                                                              +
-                                                                              4),
-                                                                0)
-                                ));
-}
-
-void
-__glXDispSwap_FramebufferRenderbufferEXT(GLbyte * pc)
-{
-    CALL_FramebufferRenderbufferEXT(GET_DISPATCH(), ((GLenum)
-                                                     bswap_ENUM(pc + 0),
-                                                     (GLenum) bswap_ENUM(pc +
-                                                                         4),
-                                                     (GLenum) bswap_ENUM(pc +
-                                                                         8),
-                                                     (GLuint) bswap_CARD32(pc +
-                                                                           12)
-                                    ));
-}
-
-void
-__glXDispSwap_FramebufferTexture1DEXT(GLbyte * pc)
-{
-    CALL_FramebufferTexture1DEXT(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                  (GLenum) bswap_ENUM(pc + 4),
-                                                  (GLenum) bswap_ENUM(pc + 8),
-                                                  (GLuint) bswap_CARD32(pc +
-                                                                        12),
-                                                  (GLint) bswap_CARD32(pc + 16)
-                                 ));
-}
-
-void
-__glXDispSwap_FramebufferTexture2DEXT(GLbyte * pc)
-{
-    CALL_FramebufferTexture2DEXT(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                  (GLenum) bswap_ENUM(pc + 4),
-                                                  (GLenum) bswap_ENUM(pc + 8),
-                                                  (GLuint) bswap_CARD32(pc +
-                                                                        12),
-                                                  (GLint) bswap_CARD32(pc + 16)
-                                 ));
-}
-
-void
-__glXDispSwap_FramebufferTexture3DEXT(GLbyte * pc)
-{
-    CALL_FramebufferTexture3DEXT(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                  (GLenum) bswap_ENUM(pc + 4),
-                                                  (GLenum) bswap_ENUM(pc + 8),
-                                                  (GLuint) bswap_CARD32(pc +
-                                                                        12),
-                                                  (GLint) bswap_CARD32(pc + 16),
-                                                  (GLint) bswap_CARD32(pc + 20)
-                                 ));
-}
-
-int
-__glXDispSwap_GenFramebuffersEXT(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
-
-        GLuint answerBuffer[200];
-        GLuint *framebuffers =
-            __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
-                                 4);
-        CALL_GenFramebuffersEXT(GET_DISPATCH(), (n, framebuffers));
-        (void) bswap_32_array((uint32_t *) framebuffers, n);
-        __glXSendReplySwap(cl->client, framebuffers, n, 4, GL_TRUE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDispSwap_GenRenderbuffersEXT(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        const GLsizei n = (GLsizei) bswap_CARD32(pc + 0);
-
-        GLuint answerBuffer[200];
-        GLuint *renderbuffers =
-            __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
-                                 4);
-        CALL_GenRenderbuffersEXT(GET_DISPATCH(), (n, renderbuffers));
-        (void) bswap_32_array((uint32_t *) renderbuffers, n);
-        __glXSendReplySwap(cl->client, renderbuffers, n, 4, GL_TRUE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-void
-__glXDispSwap_GenerateMipmapEXT(GLbyte * pc)
-{
-    CALL_GenerateMipmapEXT(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0)
-                           ));
-}
-
-int
-__glXDispSwap_GetFramebufferAttachmentParameterivEXT(__GLXclientState * cl,
-                                                     GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLint params[1];
-
-        CALL_GetFramebufferAttachmentParameterivEXT(GET_DISPATCH(), ((GLenum)
-                                                                     bswap_ENUM
-                                                                     (pc + 0),
-                                                                     (GLenum)
-                                                                     bswap_ENUM
-                                                                     (pc + 4),
-                                                                     (GLenum)
-                                                                     bswap_ENUM
-                                                                     (pc + 8),
-                                                                     params));
-        (void) bswap_32_array((uint32_t *) params, 1);
-        __glXSendReplySwap(cl->client, params, 1, 4, GL_FALSE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDispSwap_GetRenderbufferParameterivEXT(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLint params[1];
-
-        CALL_GetRenderbufferParameterivEXT(GET_DISPATCH(), ((GLenum)
-                                                            bswap_ENUM(pc + 0),
-                                                            (GLenum)
-                                                            bswap_ENUM(pc + 4),
-                                                            params));
-        (void) bswap_32_array((uint32_t *) params, 1);
-        __glXSendReplySwap(cl->client, params, 1, 4, GL_FALSE, 0);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDispSwap_IsFramebufferEXT(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLboolean retval;
-
-        retval = CALL_IsFramebufferEXT(GET_DISPATCH(), ((GLuint)
-                                                        bswap_CARD32(pc + 0)
-                                       ));
-        __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
-        error = Success;
-    }
-
-    return error;
-}
-
-int
-__glXDispSwap_IsRenderbufferEXT(__GLXclientState * cl, GLbyte * pc)
-{
-    xGLXVendorPrivateReq *const req = (xGLXVendorPrivateReq *) pc;
-    int error;
-    __GLXcontext *const cx =
-        __glXForceCurrent(cl, bswap_CARD32(&req->contextTag), &error);
-
-    pc += __GLX_VENDPRIV_HDR_SIZE;
-    if (cx != NULL) {
-        GLboolean retval;
-
-        retval = CALL_IsRenderbufferEXT(GET_DISPATCH(), ((GLuint)
-                                                         bswap_CARD32(pc + 0)
-                                        ));
-        __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
-        error = Success;
-    }
-
-    return error;
-}
-
-void
-__glXDispSwap_RenderbufferStorageEXT(GLbyte * pc)
-{
-    CALL_RenderbufferStorageEXT(GET_DISPATCH(), ((GLenum) bswap_ENUM(pc + 0),
-                                                 (GLenum) bswap_ENUM(pc + 4),
-                                                 (GLsizei) bswap_CARD32(pc + 8),
-                                                 (GLsizei) bswap_CARD32(pc + 12)
-                                ));
-}
-
-void
-__glXDispSwap_BlitFramebufferEXT(GLbyte * pc)
-{
-    CALL_BlitFramebufferEXT(GET_DISPATCH(), ((GLint) bswap_CARD32(pc + 0),
-                                             (GLint) bswap_CARD32(pc + 4),
-                                             (GLint) bswap_CARD32(pc + 8),
-                                             (GLint) bswap_CARD32(pc + 12),
-                                             (GLint) bswap_CARD32(pc + 16),
-                                             (GLint) bswap_CARD32(pc + 20),
-                                             (GLint) bswap_CARD32(pc + 24),
-                                             (GLint) bswap_CARD32(pc + 28),
-                                             (GLbitfield) bswap_CARD32(pc + 32),
-                                             (GLenum) bswap_ENUM(pc + 36)
-                            ));
-}
-
-void
-__glXDispSwap_FramebufferTextureLayerEXT(GLbyte * pc)
-{
-    CALL_FramebufferTextureLayerEXT(GET_DISPATCH(), ((GLenum)
-                                                     bswap_ENUM(pc + 0),
-                                                     (GLenum) bswap_ENUM(pc +
-                                                                         4),
-                                                     (GLuint) bswap_CARD32(pc +
-                                                                           8),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          12),
-                                                     (GLint) bswap_CARD32(pc +
-                                                                          16)
-                                    ));
+    glActiveStencilFaceEXT((GLenum) bswap_ENUM(pc + 0));
 }
diff --git a/glx/indirect_program.c b/glx/indirect_program.c
index 0114d73..db22d84 100644
--- a/glx/indirect_program.c
+++ b/glx/indirect_program.c
@@ -40,28 +40,15 @@
 #include "unpack.h"
 #include "indirect_size_get.h"
 #include "indirect_dispatch.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
-
-static int DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc,
-                              unsigned get_programiv_offset,
-                              unsigned get_program_string_offset, Bool do_swap);
 
 /**
  * Handle both types of glGetProgramString calls.
- *
- * This single function handles both \c glGetProgramStringARB and
- * \c glGetProgramStringNV.  The dispatch offsets for the functions to use
- * for \c glGetProgramivARB and \c glGetProgramStringARB are passed in by the
- * caller.  These can be the offsets of either the ARB versions or the NV
- * versions.
  */
-int
+static int
 DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc,
-                   unsigned get_programiv_offset,
-                   unsigned get_program_string_offset, Bool do_swap)
+                   PFNGLGETPROGRAMIVARBPROC get_programiv,
+                   PFNGLGETPROGRAMSTRINGARBPROC get_program_string,
+                   Bool do_swap)
 {
     xGLXVendorPrivateWithReplyReq *const req =
         (xGLXVendorPrivateWithReplyReq *) pc;
@@ -88,19 +75,13 @@ DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc,
         /* The value of the GL_PROGRAM_LENGTH_ARB and GL_PROGRAM_LENGTH_NV
          * enumerants is the same.
          */
-        CALL_by_offset(GET_DISPATCH(),
-                       (void (GLAPIENTRYP) (GLuint, GLenum, GLint *)),
-                       get_programiv_offset,
-                       (target, GL_PROGRAM_LENGTH_ARB, &compsize));
+        get_programiv(target, GL_PROGRAM_LENGTH_ARB, &compsize);
 
         if (compsize != 0) {
             __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
             __glXClearErrorOccured();
 
-            CALL_by_offset(GET_DISPATCH(),
-                           (void (GLAPIENTRYP) (GLuint, GLenum, GLubyte *)),
-                           get_program_string_offset,
-                           (target, pname, (GLubyte *) answer));
+            get_program_string(target, pname, (GLubyte *) answer);
         }
 
         if (__glXErrorOccured()) {
@@ -123,27 +104,29 @@ DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc,
 int
 __glXDisp_GetProgramStringARB(struct __GLXclientStateRec *cl, GLbyte * pc)
 {
-    return DoGetProgramString(cl, pc, _gloffset_GetProgramivARB,
-                              _gloffset_GetProgramStringARB, False);
+    return DoGetProgramString(cl, pc, glGetProgramivARB,
+                              glGetProgramStringARB, False);
 }
 
 int
 __glXDispSwap_GetProgramStringARB(struct __GLXclientStateRec *cl, GLbyte * pc)
 {
-    return DoGetProgramString(cl, pc, _gloffset_GetProgramivARB,
-                              _gloffset_GetProgramStringARB, True);
+    return DoGetProgramString(cl, pc, glGetProgramivARB,
+                              glGetProgramStringARB, True);
 }
 
 int
 __glXDisp_GetProgramStringNV(struct __GLXclientStateRec *cl, GLbyte * pc)
 {
-    return DoGetProgramString(cl, pc, _gloffset_GetProgramivNV,
-                              _gloffset_GetProgramStringNV, False);
+    return DoGetProgramString(cl, pc, (PFNGLGETPROGRAMIVARBPROC)glGetProgramivNV,
+                              (PFNGLGETPROGRAMSTRINGARBPROC)glGetProgramStringNV,
+                              False);
 }
 
 int
 __glXDispSwap_GetProgramStringNV(struct __GLXclientStateRec *cl, GLbyte * pc)
 {
-    return DoGetProgramString(cl, pc, _gloffset_GetProgramivNV,
-                              _gloffset_GetProgramStringNV, True);
+    return DoGetProgramString(cl, pc, (PFNGLGETPROGRAMIVARBPROC)glGetProgramivNV,
+                              (PFNGLGETPROGRAMSTRINGARBPROC)glGetProgramStringNV,
+                              True);
 }
diff --git a/glx/indirect_reqsize.c b/glx/indirect_reqsize.c
index 86ea970..026afb6 100644
--- a/glx/indirect_reqsize.c
+++ b/glx/indirect_reqsize.c
@@ -613,7 +613,7 @@ __glXTexSubImage3DReqSize(const GLbyte * pc, Bool swap)
 }
 
 int
-__glXCompressedTexImage1DARBReqSize(const GLbyte * pc, Bool swap)
+__glXCompressedTexImage1DReqSize(const GLbyte * pc, Bool swap)
 {
     GLsizei imageSize = *(GLsizei *) (pc + 20);
 
@@ -625,7 +625,7 @@ __glXCompressedTexImage1DARBReqSize(const GLbyte * pc, Bool swap)
 }
 
 int
-__glXCompressedTexImage2DARBReqSize(const GLbyte * pc, Bool swap)
+__glXCompressedTexImage2DReqSize(const GLbyte * pc, Bool swap)
 {
     GLsizei imageSize = *(GLsizei *) (pc + 24);
 
@@ -637,7 +637,7 @@ __glXCompressedTexImage2DARBReqSize(const GLbyte * pc, Bool swap)
 }
 
 int
-__glXCompressedTexImage3DARBReqSize(const GLbyte * pc, Bool swap)
+__glXCompressedTexImage3DReqSize(const GLbyte * pc, Bool swap)
 {
     GLsizei imageSize = *(GLsizei *) (pc + 28);
 
@@ -649,7 +649,7 @@ __glXCompressedTexImage3DARBReqSize(const GLbyte * pc, Bool swap)
 }
 
 int
-__glXCompressedTexSubImage3DARBReqSize(const GLbyte * pc, Bool swap)
+__glXCompressedTexSubImage3DReqSize(const GLbyte * pc, Bool swap)
 {
     GLsizei imageSize = *(GLsizei *) (pc + 36);
 
@@ -661,31 +661,7 @@ __glXCompressedTexSubImage3DARBReqSize(const GLbyte * pc, Bool swap)
 }
 
 int
-__glXProgramStringARBReqSize(const GLbyte * pc, Bool swap)
-{
-    GLsizei len = *(GLsizei *) (pc + 8);
-
-    if (swap) {
-        len = bswap_32(len);
-    }
-
-    return __GLX_PAD(len);
-}
-
-int
-__glXDrawBuffersARBReqSize(const GLbyte * pc, Bool swap)
-{
-    GLsizei n = *(GLsizei *) (pc + 0);
-
-    if (swap) {
-        n = bswap_32(n);
-    }
-
-    return __GLX_PAD((n * 4));
-}
-
-int
-__glXPointParameterfvEXTReqSize(const GLbyte * pc, Bool swap)
+__glXPointParameterfvReqSize(const GLbyte * pc, Bool swap)
 {
     GLenum pname = *(GLenum *) (pc + 0);
     GLsizei compsize;
@@ -694,32 +670,32 @@ __glXPointParameterfvEXTReqSize(const GLbyte * pc, Bool swap)
         pname = bswap_32(pname);
     }
 
-    compsize = __glPointParameterfvEXT_size(pname);
+    compsize = __glPointParameterfv_size(pname);
     return __GLX_PAD((compsize * 4));
 }
 
 int
-__glXProgramParameters4dvNVReqSize(const GLbyte * pc, Bool swap)
+__glXDrawBuffersReqSize(const GLbyte * pc, Bool swap)
 {
-    GLsizei num = *(GLsizei *) (pc + 8);
+    GLsizei n = *(GLsizei *) (pc + 0);
 
     if (swap) {
-        num = bswap_32(num);
+        n = bswap_32(n);
     }
 
-    return __GLX_PAD((num * 32));
+    return __GLX_PAD((n * 4));
 }
 
 int
-__glXProgramParameters4fvNVReqSize(const GLbyte * pc, Bool swap)
+__glXProgramStringARBReqSize(const GLbyte * pc, Bool swap)
 {
-    GLsizei num = *(GLsizei *) (pc + 8);
+    GLsizei len = *(GLsizei *) (pc + 8);
 
     if (swap) {
-        num = bswap_32(num);
+        len = bswap_32(len);
     }
 
-    return __GLX_PAD((num * 16));
+    return __GLX_PAD(len);
 }
 
 int
@@ -794,18 +770,6 @@ __glXVertexAttribs4dvNVReqSize(const GLbyte * pc, Bool swap)
     return __GLX_PAD((n * 32));
 }
 
-int
-__glXProgramNamedParameter4fvNVReqSize(const GLbyte * pc, Bool swap)
-{
-    GLsizei len = *(GLsizei *) (pc + 4);
-
-    if (swap) {
-        len = bswap_32(len);
-    }
-
-    return __GLX_PAD(len);
-}
-
 ALIAS(Fogiv, Fogfv)
     ALIAS(Lightiv, Lightfv)
     ALIAS(LightModeliv, LightModelfv)
@@ -816,10 +780,11 @@ ALIAS(Fogiv, Fogfv)
     ALIAS(PixelMapuiv, PixelMapfv)
     ALIAS(ColorTableParameteriv, ColorTableParameterfv)
     ALIAS(ConvolutionParameteriv, ConvolutionParameterfv)
-    ALIAS(CompressedTexSubImage1DARB, CompressedTexImage1DARB)
-    ALIAS(CompressedTexSubImage2DARB, CompressedTexImage3DARB)
-    ALIAS(LoadProgramNV, ProgramStringARB)
-    ALIAS(RequestResidentProgramsNV, DrawBuffersARB)
+    ALIAS(CompressedTexSubImage1D, CompressedTexImage1D)
+    ALIAS(CompressedTexSubImage2D, CompressedTexImage3D)
+    ALIAS(PointParameteriv, PointParameterfv)
+    ALIAS(DeleteFramebuffers, DrawBuffers)
+    ALIAS(DeleteRenderbuffers, DrawBuffers)
     ALIAS(VertexAttribs1fvNV, PixelMapfv)
     ALIAS(VertexAttribs1svNV, PixelMapusv)
     ALIAS(VertexAttribs2fvNV, VertexAttribs1dvNV)
@@ -827,7 +792,3 @@ ALIAS(Fogiv, Fogfv)
     ALIAS(VertexAttribs4fvNV, VertexAttribs2dvNV)
     ALIAS(VertexAttribs4svNV, VertexAttribs1dvNV)
     ALIAS(VertexAttribs4ubvNV, PixelMapfv)
-    ALIAS(PointParameterivNV, PointParameterfvEXT)
-    ALIAS(ProgramNamedParameter4dvNV, CompressedTexSubImage3DARB)
-    ALIAS(DeleteFramebuffersEXT, DrawBuffersARB)
-    ALIAS(DeleteRenderbuffersEXT, DrawBuffersARB)
diff --git a/glx/indirect_reqsize.h b/glx/indirect_reqsize.h
index d2c1da7..43e1e69 100644
--- a/glx/indirect_reqsize.h
+++ b/glx/indirect_reqsize.h
@@ -96,32 +96,29 @@ extern PURE _X_HIDDEN int __glXSeparableFilter2DReqSize(const GLbyte * pc,
 extern PURE _X_HIDDEN int __glXTexImage3DReqSize(const GLbyte * pc, Bool swap);
 extern PURE _X_HIDDEN int __glXTexSubImage3DReqSize(const GLbyte * pc,
                                                     Bool swap);
-extern PURE _X_HIDDEN int __glXCompressedTexImage1DARBReqSize(const GLbyte * pc,
+extern PURE _X_HIDDEN int __glXCompressedTexImage1DReqSize(const GLbyte * pc,
+                                                           Bool swap);
+extern PURE _X_HIDDEN int __glXCompressedTexImage2DReqSize(const GLbyte * pc,
+                                                           Bool swap);
+extern PURE _X_HIDDEN int __glXCompressedTexImage3DReqSize(const GLbyte * pc,
+                                                           Bool swap);
+extern PURE _X_HIDDEN int __glXCompressedTexSubImage1DReqSize(const GLbyte * pc,
                                                               Bool swap);
-extern PURE _X_HIDDEN int __glXCompressedTexImage2DARBReqSize(const GLbyte * pc,
+extern PURE _X_HIDDEN int __glXCompressedTexSubImage2DReqSize(const GLbyte * pc,
                                                               Bool swap);
-extern PURE _X_HIDDEN int __glXCompressedTexImage3DARBReqSize(const GLbyte * pc,
+extern PURE _X_HIDDEN int __glXCompressedTexSubImage3DReqSize(const GLbyte * pc,
                                                               Bool swap);
-extern PURE _X_HIDDEN int __glXCompressedTexSubImage1DARBReqSize(const GLbyte *
-                                                                 pc, Bool swap);
-extern PURE _X_HIDDEN int __glXCompressedTexSubImage2DARBReqSize(const GLbyte *
-                                                                 pc, Bool swap);
-extern PURE _X_HIDDEN int __glXCompressedTexSubImage3DARBReqSize(const GLbyte *
-                                                                 pc, Bool swap);
+extern PURE _X_HIDDEN int __glXPointParameterfvReqSize(const GLbyte * pc,
+                                                       Bool swap);
+extern PURE _X_HIDDEN int __glXPointParameterivReqSize(const GLbyte * pc,
+                                                       Bool swap);
+extern PURE _X_HIDDEN int __glXDrawBuffersReqSize(const GLbyte * pc, Bool swap);
 extern PURE _X_HIDDEN int __glXProgramStringARBReqSize(const GLbyte * pc,
                                                        Bool swap);
-extern PURE _X_HIDDEN int __glXDrawBuffersARBReqSize(const GLbyte * pc,
-                                                     Bool swap);
-extern PURE _X_HIDDEN int __glXPointParameterfvEXTReqSize(const GLbyte * pc,
+extern PURE _X_HIDDEN int __glXDeleteFramebuffersReqSize(const GLbyte * pc,
+                                                         Bool swap);
+extern PURE _X_HIDDEN int __glXDeleteRenderbuffersReqSize(const GLbyte * pc,
                                                           Bool swap);
-extern PURE _X_HIDDEN int __glXLoadProgramNVReqSize(const GLbyte * pc,
-                                                    Bool swap);
-extern PURE _X_HIDDEN int __glXProgramParameters4dvNVReqSize(const GLbyte * pc,
-                                                             Bool swap);
-extern PURE _X_HIDDEN int __glXProgramParameters4fvNVReqSize(const GLbyte * pc,
-                                                             Bool swap);
-extern PURE _X_HIDDEN int __glXRequestResidentProgramsNVReqSize(const GLbyte *
-                                                                pc, Bool swap);
 extern PURE _X_HIDDEN int __glXVertexAttribs1dvNVReqSize(const GLbyte * pc,
                                                          Bool swap);
 extern PURE _X_HIDDEN int __glXVertexAttribs1fvNVReqSize(const GLbyte * pc,
@@ -148,16 +145,6 @@ extern PURE _X_HIDDEN int __glXVertexAttribs4svNVReqSize(const GLbyte * pc,
                                                          Bool swap);
 extern PURE _X_HIDDEN int __glXVertexAttribs4ubvNVReqSize(const GLbyte * pc,
                                                           Bool swap);
-extern PURE _X_HIDDEN int __glXPointParameterivNVReqSize(const GLbyte * pc,
-                                                         Bool swap);
-extern PURE _X_HIDDEN int __glXProgramNamedParameter4dvNVReqSize(const GLbyte *
-                                                                 pc, Bool swap);
-extern PURE _X_HIDDEN int __glXProgramNamedParameter4fvNVReqSize(const GLbyte *
-                                                                 pc, Bool swap);
-extern PURE _X_HIDDEN int __glXDeleteFramebuffersEXTReqSize(const GLbyte * pc,
-                                                            Bool swap);
-extern PURE _X_HIDDEN int __glXDeleteRenderbuffersEXTReqSize(const GLbyte * pc,
-                                                             Bool swap);
 
 #undef PURE
 
diff --git a/glx/indirect_size.h b/glx/indirect_size.h
index 56ffc1c..fec7ed3 100644
--- a/glx/indirect_size.h
+++ b/glx/indirect_size.h
@@ -72,12 +72,14 @@ extern _X_INTERNAL PURE FASTCALL GLint __glMap2d_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint __glMap2f_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint __glColorTableParameterfv_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint __glColorTableParameteriv_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glConvolutionParameterfv_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glConvolutionParameteriv_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glPointParameterfvEXT_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glPointParameterivNV_size(GLenum);
+extern _X_INTERNAL PURE FASTCALL GLint
+__glConvolutionParameterfv_size(GLenum);
+extern _X_INTERNAL PURE FASTCALL GLint
+__glConvolutionParameteriv_size(GLenum);
+extern _X_INTERNAL PURE FASTCALL GLint __glPointParameterfv_size(GLenum);
+extern _X_INTERNAL PURE FASTCALL GLint __glPointParameteriv_size(GLenum);
 
 #undef PURE
 #undef FASTCALL
 
-#endif                          /* !defined( _INDIRECT_SIZE_H_ ) */
+#endif /* !defined( _INDIRECT_SIZE_H_ ) */
diff --git a/glx/indirect_size_get.c b/glx/indirect_size_get.c
index da3a6cb..f879311 100644
--- a/glx/indirect_size_get.c
+++ b/glx/indirect_size_get.c
@@ -25,6 +25,7 @@
  * SOFTWARE.
  */
 
+
 #include <X11/Xfuncproto.h>
 #include <GL/gl.h>
 #include "indirect_size_get.h"
@@ -44,6 +45,7 @@
 #define FASTCALL
 #endif
 
+
 #if defined(__CYGWIN__) || defined(__MINGW32__) || defined(GLX_USE_APPLEGL)
 #undef HAVE_ALIAS
 #endif
@@ -58,6 +60,7 @@
     { return __gl ## to ## _size( e ); }
 #endif
 
+
 _X_INTERNAL PURE FASTCALL GLint
 __glCallLists_size(GLenum e)
 {
@@ -599,6 +602,7 @@ __glGetBooleanv_size(GLenum e)
     case GL_OCCLUSION_TEST_HP:
     case GL_OCCLUSION_TEST_RESULT_HP:
     case GL_LIGHT_MODEL_COLOR_CONTROL:
+    case GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB:
     case GL_RESET_NOTIFICATION_STRATEGY_ARB:
     case GL_CURRENT_FOG_COORD:
     case GL_FOG_COORDINATE_ARRAY_TYPE:
@@ -664,11 +668,11 @@ __glGetBooleanv_size(GLenum e)
     case GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI:
     case GL_FRAGMENT_PROGRAM_ARB:
     case GL_MAX_DRAW_BUFFERS_ARB:
-/*      case GL_MAX_DRAW_BUFFERS_NV:*/
+/*      case GL_MAX_DRAW_BUFFERS_ATI:*/
     case GL_DRAW_BUFFER0_ARB:
 /*      case GL_DRAW_BUFFER0_ATI:*/
     case GL_DRAW_BUFFER1_ARB:
-/*      case GL_DRAW_BUFFER1_NV:*/
+/*      case GL_DRAW_BUFFER1_ATI:*/
     case GL_DRAW_BUFFER2_ARB:
 /*      case GL_DRAW_BUFFER2_ATI:*/
     case GL_DRAW_BUFFER3_ARB:
@@ -686,15 +690,15 @@ __glGetBooleanv_size(GLenum e)
     case GL_DRAW_BUFFER9_ARB:
 /*      case GL_DRAW_BUFFER9_ATI:*/
     case GL_DRAW_BUFFER10_ARB:
-/*      case GL_DRAW_BUFFER10_NV:*/
+/*      case GL_DRAW_BUFFER10_ATI:*/
     case GL_DRAW_BUFFER11_ARB:
-/*      case GL_DRAW_BUFFER11_NV:*/
+/*      case GL_DRAW_BUFFER11_ATI:*/
     case GL_DRAW_BUFFER12_ARB:
 /*      case GL_DRAW_BUFFER12_ATI:*/
     case GL_DRAW_BUFFER13_ARB:
 /*      case GL_DRAW_BUFFER13_ATI:*/
     case GL_DRAW_BUFFER14_ARB:
-/*      case GL_DRAW_BUFFER14_NV:*/
+/*      case GL_DRAW_BUFFER14_ATI:*/
     case GL_DRAW_BUFFER15_ARB:
 /*      case GL_DRAW_BUFFER15_ATI:*/
     case GL_BLEND_EQUATION_ALPHA_EXT:
@@ -708,6 +712,7 @@ __glGetBooleanv_size(GLenum e)
     case GL_MATRIX_INDEX_ARRAY_TYPE_ARB:
     case GL_MATRIX_INDEX_ARRAY_STRIDE_ARB:
     case GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT:
+    case GL_TEXTURE_CUBE_MAP_SEAMLESS:
     case GL_POINT_SPRITE_ARB:
 /*      case GL_POINT_SPRITE_NV:*/
     case GL_POINT_SPRITE_R_MODE_NV:
@@ -726,7 +731,6 @@ __glGetBooleanv_size(GLenum e)
     case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
     case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
     case GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB:
-    case GL_TEXTURE_CUBE_MAP_SEAMLESS:
     case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
     case GL_STENCIL_TEST_TWO_SIDE_EXT:
     case GL_ACTIVE_STENCIL_FACE_EXT:
@@ -744,6 +748,9 @@ __glGetBooleanv_size(GLenum e)
     case GL_MAX_SAMPLES:
 /*      case GL_MAX_SAMPLES_EXT:*/
     case GL_MAX_SERVER_WAIT_TIMEOUT:
+    case GL_MAX_DEBUG_MESSAGE_LENGTH_ARB:
+    case GL_MAX_DEBUG_LOGGED_MESSAGES_ARB:
+    case GL_DEBUG_LOGGED_MESSAGES_ARB:
     case GL_RASTER_POSITION_UNCLIPPED_IBM:
         return 1;
     case GL_SMOOTH_POINT_SIZE_RANGE:
@@ -917,6 +924,18 @@ __glGetTexLevelParameterfv_size(GLenum e)
 }
 
 _X_INTERNAL PURE FASTCALL GLint
+__glGetPointerv_size(GLenum e)
+{
+    switch (e) {
+    case GL_DEBUG_CALLBACK_FUNCTION_ARB:
+    case GL_DEBUG_CALLBACK_USER_PARAM_ARB:
+        return 1;
+    default:
+        return 0;
+    }
+}
+
+_X_INTERNAL PURE FASTCALL GLint
 __glColorTableParameterfv_size(GLenum e)
 {
     switch (e) {
@@ -1036,6 +1055,56 @@ __glGetMinmaxParameterfv_size(GLenum e)
 }
 
 _X_INTERNAL PURE FASTCALL GLint
+__glPointParameterfv_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;
+    }
+}
+
+_X_INTERNAL PURE FASTCALL GLint
+__glGetQueryObjectiv_size(GLenum e)
+{
+    switch (e) {
+    case GL_QUERY_RESULT_ARB:
+    case GL_QUERY_RESULT_AVAILABLE_ARB:
+        return 1;
+    default:
+        return 0;
+    }
+}
+
+_X_INTERNAL PURE FASTCALL GLint
+__glGetQueryiv_size(GLenum e)
+{
+    switch (e) {
+    case GL_QUERY_COUNTER_BITS_ARB:
+    case GL_CURRENT_QUERY_ARB:
+    case GL_ANY_SAMPLES_PASSED:
+        return 1;
+    default:
+        return 0;
+    }
+}
+
+_X_INTERNAL PURE FASTCALL GLint
 __glGetProgramivARB_size(GLenum e)
 {
     switch (e) {
@@ -1089,106 +1158,25 @@ __glGetProgramivARB_size(GLenum e)
 }
 
 _X_INTERNAL PURE FASTCALL GLint
-__glGetVertexAttribdvARB_size(GLenum e)
-{
-    switch (e) {
-    case GL_VERTEX_PROGRAM_ARB:
-    case GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB:
-    case GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB:
-    case GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB:
-    case GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB:
-    case GL_CURRENT_VERTEX_ATTRIB_ARB:
-    case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB:
-        return 1;
-    default:
-        return 0;
-    }
-}
-
-_X_INTERNAL PURE FASTCALL GLint
-__glGetQueryObjectivARB_size(GLenum e)
-{
-    switch (e) {
-    case GL_QUERY_RESULT_ARB:
-    case GL_QUERY_RESULT_AVAILABLE_ARB:
-        return 1;
-    default:
-        return 0;
-    }
-}
-
-_X_INTERNAL PURE FASTCALL GLint
-__glGetQueryivARB_size(GLenum e)
-{
-    switch (e) {
-    case GL_QUERY_COUNTER_BITS_ARB:
-    case GL_CURRENT_QUERY_ARB:
-        return 1;
-    default:
-        return 0;
-    }
-}
-
-_X_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;
-    }
-}
-
-_X_INTERNAL PURE FASTCALL GLint
-__glGetProgramivNV_size(GLenum e)
-{
-    switch (e) {
-    case GL_PROGRAM_LENGTH_NV:
-    case GL_PROGRAM_TARGET_NV:
-    case GL_PROGRAM_RESIDENT_NV:
-        return 1;
-    default:
-        return 0;
-    }
-}
-
-_X_INTERNAL PURE FASTCALL GLint
-__glGetVertexAttribdvNV_size(GLenum e)
-{
-    switch (e) {
-    case GL_ATTRIB_ARRAY_SIZE_NV:
-    case GL_ATTRIB_ARRAY_STRIDE_NV:
-    case GL_ATTRIB_ARRAY_TYPE_NV:
-    case GL_CURRENT_ATTRIB_NV:
-        return 1;
-    default:
-        return 0;
-    }
-}
-
-_X_INTERNAL PURE FASTCALL GLint
-__glGetFramebufferAttachmentParameterivEXT_size(GLenum e)
+__glGetFramebufferAttachmentParameteriv_size(GLenum e)
 {
     switch (e) {
-    case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT:
-    case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT:
-    case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT:
-    case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT:
+    case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:
+    case GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:
+    case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE:
+    case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:
+    case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:
+    case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:
+    case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:
+    case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:
+    case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:
+/*      case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT:*/
+    case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:
+/*      case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT:*/
+    case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:
+/*      case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT:*/
+    case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:
+/*      case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT:*/
     case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT:
         return 1;
     default:
@@ -1226,11 +1214,7 @@ ALIAS(Fogiv, Fogfv)
     ALIAS(GetConvolutionParameteriv, GetConvolutionParameterfv)
     ALIAS(GetHistogramParameteriv, GetHistogramParameterfv)
     ALIAS(GetMinmaxParameteriv, GetMinmaxParameterfv)
-    ALIAS(GetVertexAttribfvARB, GetVertexAttribdvARB)
-    ALIAS(GetVertexAttribivARB, GetVertexAttribdvARB)
-    ALIAS(GetQueryObjectuivARB, GetQueryObjectivARB)
-    ALIAS(GetVertexAttribfvNV, GetVertexAttribdvNV)
-    ALIAS(GetVertexAttribivNV, GetVertexAttribdvNV)
-    ALIAS(PointParameterivNV, PointParameterfvEXT)
+    ALIAS(PointParameteriv, PointParameterfv)
+    ALIAS(GetQueryObjectuiv, GetQueryObjectiv)
 #undef PURE
 #undef FASTCALL
diff --git a/glx/indirect_size_get.h b/glx/indirect_size_get.h
index 4cfb3a6..9b62036 100644
--- a/glx/indirect_size_get.h
+++ b/glx/indirect_size_get.h
@@ -67,6 +67,7 @@ extern _X_INTERNAL PURE FASTCALL GLint __glGetTexParameterfv_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint __glGetTexParameteriv_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint __glGetTexLevelParameterfv_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint __glGetTexLevelParameteriv_size(GLenum);
+extern _X_INTERNAL PURE FASTCALL GLint __glGetPointerv_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint
 __glGetColorTableParameterfv_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint
@@ -79,19 +80,12 @@ extern _X_INTERNAL PURE FASTCALL GLint __glGetHistogramParameterfv_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint __glGetHistogramParameteriv_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint __glGetMinmaxParameterfv_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint __glGetMinmaxParameteriv_size(GLenum);
+extern _X_INTERNAL PURE FASTCALL GLint __glGetQueryObjectiv_size(GLenum);
+extern _X_INTERNAL PURE FASTCALL GLint __glGetQueryObjectuiv_size(GLenum);
+extern _X_INTERNAL PURE FASTCALL GLint __glGetQueryiv_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint __glGetProgramivARB_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glGetVertexAttribdvARB_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glGetVertexAttribfvARB_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glGetVertexAttribivARB_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glGetQueryObjectivARB_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glGetQueryObjectuivARB_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glGetQueryivARB_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glGetProgramivNV_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glGetVertexAttribdvNV_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glGetVertexAttribfvNV_size(GLenum);
-extern _X_INTERNAL PURE FASTCALL GLint __glGetVertexAttribivNV_size(GLenum);
 extern _X_INTERNAL PURE FASTCALL GLint
-__glGetFramebufferAttachmentParameterivEXT_size(GLenum);
+__glGetFramebufferAttachmentParameteriv_size(GLenum);
 
 #undef PURE
 #undef FASTCALL
diff --git a/glx/indirect_table.c b/glx/indirect_table.c
index 8922e43..33e3d6a 100644
--- a/glx/indirect_table.c
+++ b/glx/indirect_table.c
@@ -213,17 +213,16 @@ static const void *Single_function_table[112][2] = {
                           __glXDispSwap_GetMinmaxParameterfv},
     /* [ 103] =   159 */ {__glXDisp_GetMinmaxParameteriv,
                           __glXDispSwap_GetMinmaxParameteriv},
-    /* [ 104] =   160 */ {__glXDisp_GetCompressedTexImageARB,
-                          __glXDispSwap_GetCompressedTexImageARB},
-    /* [ 105] =   161 */ {__glXDisp_DeleteQueriesARB,
-                          __glXDispSwap_DeleteQueriesARB},
-    /* [ 106] =   162 */ {__glXDisp_GenQueriesARB, __glXDispSwap_GenQueriesARB},
-    /* [ 107] =   163 */ {__glXDisp_IsQueryARB, __glXDispSwap_IsQueryARB},
-    /* [ 108] =   164 */ {__glXDisp_GetQueryivARB, __glXDispSwap_GetQueryivARB},
-    /* [ 109] =   165 */ {__glXDisp_GetQueryObjectivARB,
-                          __glXDispSwap_GetQueryObjectivARB},
-    /* [ 110] =   166 */ {__glXDisp_GetQueryObjectuivARB,
-                          __glXDispSwap_GetQueryObjectuivARB},
+    /* [ 104] =   160 */ {__glXDisp_GetCompressedTexImage,
+                          __glXDispSwap_GetCompressedTexImage},
+    /* [ 105] =   161 */ {__glXDisp_DeleteQueries, __glXDispSwap_DeleteQueries},
+    /* [ 106] =   162 */ {__glXDisp_GenQueries, __glXDispSwap_GenQueries},
+    /* [ 107] =   163 */ {__glXDisp_IsQuery, __glXDispSwap_IsQuery},
+    /* [ 108] =   164 */ {__glXDisp_GetQueryiv, __glXDispSwap_GetQueryiv},
+    /* [ 109] =   165 */ {__glXDisp_GetQueryObjectiv,
+                          __glXDispSwap_GetQueryObjectiv},
+    /* [ 110] =   166 */ {__glXDisp_GetQueryObjectuiv,
+                          __glXDispSwap_GetQueryObjectuiv},
     /* [ 111] =   167 */ {NULL, NULL},
 };
 
@@ -576,52 +575,51 @@ static const void *Render_function_table[408][2] = {
     /* [ 195] =   195 */ {__glXDisp_ColorSubTable, __glXDispSwap_ColorSubTable},
     /* [ 196] =   196 */ {__glXDisp_CopyColorSubTable,
                           __glXDispSwap_CopyColorSubTable},
-    /* [ 197] =   197 */ {__glXDisp_ActiveTextureARB,
-                          __glXDispSwap_ActiveTextureARB},
-    /* [ 198] =   198 */ {__glXDisp_MultiTexCoord1dvARB,
-                          __glXDispSwap_MultiTexCoord1dvARB},
+    /* [ 197] =   197 */ {__glXDisp_ActiveTexture, __glXDispSwap_ActiveTexture},
+    /* [ 198] =   198 */ {__glXDisp_MultiTexCoord1dv,
+                          __glXDispSwap_MultiTexCoord1dv},
     /* [ 199] =   199 */ {__glXDisp_MultiTexCoord1fvARB,
                           __glXDispSwap_MultiTexCoord1fvARB},
-    /* [ 200] =   200 */ {__glXDisp_MultiTexCoord1ivARB,
-                          __glXDispSwap_MultiTexCoord1ivARB},
-    /* [ 201] =   201 */ {__glXDisp_MultiTexCoord1svARB,
-                          __glXDispSwap_MultiTexCoord1svARB},
-    /* [ 202] =   202 */ {__glXDisp_MultiTexCoord2dvARB,
-                          __glXDispSwap_MultiTexCoord2dvARB},
+    /* [ 200] =   200 */ {__glXDisp_MultiTexCoord1iv,
+                          __glXDispSwap_MultiTexCoord1iv},
+    /* [ 201] =   201 */ {__glXDisp_MultiTexCoord1sv,
+                          __glXDispSwap_MultiTexCoord1sv},
+    /* [ 202] =   202 */ {__glXDisp_MultiTexCoord2dv,
+                          __glXDispSwap_MultiTexCoord2dv},
     /* [ 203] =   203 */ {__glXDisp_MultiTexCoord2fvARB,
                           __glXDispSwap_MultiTexCoord2fvARB},
-    /* [ 204] =   204 */ {__glXDisp_MultiTexCoord2ivARB,
-                          __glXDispSwap_MultiTexCoord2ivARB},
-    /* [ 205] =   205 */ {__glXDisp_MultiTexCoord2svARB,
-                          __glXDispSwap_MultiTexCoord2svARB},
-    /* [ 206] =   206 */ {__glXDisp_MultiTexCoord3dvARB,
-                          __glXDispSwap_MultiTexCoord3dvARB},
+    /* [ 204] =   204 */ {__glXDisp_MultiTexCoord2iv,
+                          __glXDispSwap_MultiTexCoord2iv},
+    /* [ 205] =   205 */ {__glXDisp_MultiTexCoord2sv,
+                          __glXDispSwap_MultiTexCoord2sv},
+    /* [ 206] =   206 */ {__glXDisp_MultiTexCoord3dv,
+                          __glXDispSwap_MultiTexCoord3dv},
     /* [ 207] =   207 */ {__glXDisp_MultiTexCoord3fvARB,
                           __glXDispSwap_MultiTexCoord3fvARB},
-    /* [ 208] =   208 */ {__glXDisp_MultiTexCoord3ivARB,
-                          __glXDispSwap_MultiTexCoord3ivARB},
-    /* [ 209] =   209 */ {__glXDisp_MultiTexCoord3svARB,
-                          __glXDispSwap_MultiTexCoord3svARB},
-    /* [ 210] =   210 */ {__glXDisp_MultiTexCoord4dvARB,
-                          __glXDispSwap_MultiTexCoord4dvARB},
+    /* [ 208] =   208 */ {__glXDisp_MultiTexCoord3iv,
+                          __glXDispSwap_MultiTexCoord3iv},
+    /* [ 209] =   209 */ {__glXDisp_MultiTexCoord3sv,
+                          __glXDispSwap_MultiTexCoord3sv},
+    /* [ 210] =   210 */ {__glXDisp_MultiTexCoord4dv,
+                          __glXDispSwap_MultiTexCoord4dv},
     /* [ 211] =   211 */ {__glXDisp_MultiTexCoord4fvARB,
                           __glXDispSwap_MultiTexCoord4fvARB},
-    /* [ 212] =   212 */ {__glXDisp_MultiTexCoord4ivARB,
-                          __glXDispSwap_MultiTexCoord4ivARB},
-    /* [ 213] =   213 */ {__glXDisp_MultiTexCoord4svARB,
-                          __glXDispSwap_MultiTexCoord4svARB},
-    /* [ 214] =   214 */ {__glXDisp_CompressedTexImage1DARB,
-                          __glXDispSwap_CompressedTexImage1DARB},
-    /* [ 215] =   215 */ {__glXDisp_CompressedTexImage2DARB,
-                          __glXDispSwap_CompressedTexImage2DARB},
-    /* [ 216] =   216 */ {__glXDisp_CompressedTexImage3DARB,
-                          __glXDispSwap_CompressedTexImage3DARB},
-    /* [ 217] =   217 */ {__glXDisp_CompressedTexSubImage1DARB,
-                          __glXDispSwap_CompressedTexSubImage1DARB},
-    /* [ 218] =   218 */ {__glXDisp_CompressedTexSubImage2DARB,
-                          __glXDispSwap_CompressedTexSubImage2DARB},
-    /* [ 219] =   219 */ {__glXDisp_CompressedTexSubImage3DARB,
-                          __glXDispSwap_CompressedTexSubImage3DARB},
+    /* [ 212] =   212 */ {__glXDisp_MultiTexCoord4iv,
+                          __glXDispSwap_MultiTexCoord4iv},
+    /* [ 213] =   213 */ {__glXDisp_MultiTexCoord4sv,
+                          __glXDispSwap_MultiTexCoord4sv},
+    /* [ 214] =   214 */ {__glXDisp_CompressedTexImage1D,
+                          __glXDispSwap_CompressedTexImage1D},
+    /* [ 215] =   215 */ {__glXDisp_CompressedTexImage2D,
+                          __glXDispSwap_CompressedTexImage2D},
+    /* [ 216] =   216 */ {__glXDisp_CompressedTexImage3D,
+                          __glXDispSwap_CompressedTexImage3D},
+    /* [ 217] =   217 */ {__glXDisp_CompressedTexSubImage1D,
+                          __glXDispSwap_CompressedTexSubImage1D},
+    /* [ 218] =   218 */ {__glXDisp_CompressedTexSubImage2D,
+                          __glXDispSwap_CompressedTexSubImage2D},
+    /* [ 219] =   219 */ {__glXDisp_CompressedTexSubImage3D,
+                          __glXDispSwap_CompressedTexSubImage3D},
     /* [ 220] =   220 */ {NULL, NULL},
     /* [ 221] =   221 */ {NULL, NULL},
     /* [ 222] =   222 */ {NULL, NULL},
@@ -631,25 +629,21 @@ static const void *Render_function_table[408][2] = {
     /* [ 226] =   226 */ {NULL, NULL},
     /* [ 227] =   227 */ {NULL, NULL},
     /* [ 228] =   228 */ {NULL, NULL},
-    /* [ 229] =   229 */ {__glXDisp_SampleCoverageARB,
-                          __glXDispSwap_SampleCoverageARB},
-    /* [ 230] =   230 */ {__glXDisp_WindowPos3fvMESA,
-                          __glXDispSwap_WindowPos3fvMESA},
-    /* [ 231] =   231 */ {__glXDisp_BeginQueryARB, __glXDispSwap_BeginQueryARB},
-    /* [ 232] =   232 */ {__glXDisp_EndQueryARB, __glXDispSwap_EndQueryARB},
-    /* [ 233] =   233 */ {__glXDisp_DrawBuffersARB,
-                          __glXDispSwap_DrawBuffersARB},
-    /* [ 234] =   234 */ {__glXDisp_ClampColorARB, __glXDispSwap_ClampColorARB},
+    /* [ 229] =   229 */ {__glXDisp_SampleCoverage,
+                          __glXDispSwap_SampleCoverage},
+    /* [ 230] =   230 */ {__glXDisp_WindowPos3fv, __glXDispSwap_WindowPos3fv},
+    /* [ 231] =   231 */ {__glXDisp_BeginQuery, __glXDispSwap_BeginQuery},
+    /* [ 232] =   232 */ {__glXDisp_EndQuery, __glXDispSwap_EndQuery},
+    /* [ 233] =   233 */ {__glXDisp_DrawBuffers, __glXDispSwap_DrawBuffers},
+    /* [ 234] =   234 */ {__glXDisp_ClampColor, __glXDispSwap_ClampColor},
     /* [ 235] =   235 */ {NULL, NULL},
     /* [ 236] =   236 */ {NULL, NULL},
-    /* [ 237] =   237 */ {__glXDisp_FramebufferTextureLayerEXT,
-                          __glXDispSwap_FramebufferTextureLayerEXT},
+    /* [ 237] =   237 */ {__glXDisp_FramebufferTextureLayer,
+                          __glXDispSwap_FramebufferTextureLayer},
     /* [ 238] =   238 */ {NULL, NULL},
     /* [ 239] =   239 */ {NULL, NULL},
-    /* [ 240] =  2048 */ {__glXDisp_SampleMaskSGIS,
-                          __glXDispSwap_SampleMaskSGIS},
-    /* [ 241] =  2049 */ {__glXDisp_SamplePatternSGIS,
-                          __glXDispSwap_SamplePatternSGIS},
+    /* [ 240] =  2048 */ {NULL, NULL},
+    /* [ 241] =  2049 */ {NULL, NULL},
     /* [ 242] =  2050 */ {NULL, NULL},
     /* [ 243] =  2051 */ {NULL, NULL},
     /* [ 244] =  2052 */ {NULL, NULL},
@@ -668,10 +662,10 @@ static const void *Render_function_table[408][2] = {
     /* [ 254] =  2062 */ {NULL, NULL},
     /* [ 255] =  2063 */ {NULL, NULL},
     /* [ 256] =  2064 */ {NULL, NULL},
-    /* [ 257] =  2065 */ {__glXDisp_PointParameterfEXT,
-                          __glXDispSwap_PointParameterfEXT},
-    /* [ 258] =  2066 */ {__glXDisp_PointParameterfvEXT,
-                          __glXDispSwap_PointParameterfvEXT},
+    /* [ 257] =  2065 */ {__glXDisp_PointParameterf,
+                          __glXDispSwap_PointParameterf},
+    /* [ 258] =  2066 */ {__glXDisp_PointParameterfv,
+                          __glXDispSwap_PointParameterfv},
     /* [ 259] =  2067 */ {NULL, NULL},
     /* [ 260] =  2068 */ {NULL, NULL},
     /* [ 261] =  2069 */ {NULL, NULL},
@@ -722,38 +716,35 @@ static const void *Render_function_table[408][2] = {
     /* [ 291] =  4123 */ {__glXDisp_CopyTexSubImage3D,
                           __glXDispSwap_CopyTexSubImage3D},
     /* [ 292] =  4124 */ {__glXDisp_FogCoordfvEXT, __glXDispSwap_FogCoordfvEXT},
-    /* [ 293] =  4125 */ {__glXDisp_FogCoorddvEXT, __glXDispSwap_FogCoorddvEXT},
-    /* [ 294] =  4126 */ {__glXDisp_SecondaryColor3bvEXT,
-                          __glXDispSwap_SecondaryColor3bvEXT},
-    /* [ 295] =  4127 */ {__glXDisp_SecondaryColor3svEXT,
-                          __glXDispSwap_SecondaryColor3svEXT},
+    /* [ 293] =  4125 */ {__glXDisp_FogCoorddv, __glXDispSwap_FogCoorddv},
+    /* [ 294] =  4126 */ {__glXDisp_SecondaryColor3bv,
+                          __glXDispSwap_SecondaryColor3bv},
+    /* [ 295] =  4127 */ {__glXDisp_SecondaryColor3sv,
+                          __glXDispSwap_SecondaryColor3sv},
     /* [ 296] =  4176 */ {NULL, NULL},
     /* [ 297] =  4177 */ {NULL, NULL},
     /* [ 298] =  4178 */ {NULL, NULL},
     /* [ 299] =  4179 */ {NULL, NULL},
-    /* [ 300] =  4180 */ {__glXDisp_BindProgramNV, __glXDispSwap_BindProgramNV},
-    /* [ 301] =  4181 */ {__glXDisp_ExecuteProgramNV,
-                          __glXDispSwap_ExecuteProgramNV},
-    /* [ 302] =  4182 */ {__glXDisp_RequestResidentProgramsNV,
-                          __glXDispSwap_RequestResidentProgramsNV},
-    /* [ 303] =  4183 */ {__glXDisp_LoadProgramNV, __glXDispSwap_LoadProgramNV},
+    /* [ 300] =  4180 */ {__glXDisp_BindProgramARB,
+                          __glXDispSwap_BindProgramARB},
+    /* [ 301] =  4181 */ {NULL, NULL},
+    /* [ 302] =  4182 */ {NULL, NULL},
+    /* [ 303] =  4183 */ {NULL, NULL},
     /* [ 304] =  4184 */ {__glXDisp_ProgramEnvParameter4fvARB,
                           __glXDispSwap_ProgramEnvParameter4fvARB},
     /* [ 305] =  4185 */ {__glXDisp_ProgramEnvParameter4dvARB,
                           __glXDispSwap_ProgramEnvParameter4dvARB},
-    /* [ 306] =  4186 */ {__glXDisp_ProgramParameters4fvNV,
-                          __glXDispSwap_ProgramParameters4fvNV},
-    /* [ 307] =  4187 */ {__glXDisp_ProgramParameters4dvNV,
-                          __glXDispSwap_ProgramParameters4dvNV},
-    /* [ 308] =  4188 */ {__glXDisp_TrackMatrixNV, __glXDispSwap_TrackMatrixNV},
-    /* [ 309] =  4189 */ {__glXDisp_VertexAttrib1svARB,
-                          __glXDispSwap_VertexAttrib1svARB},
-    /* [ 310] =  4190 */ {__glXDisp_VertexAttrib2svARB,
-                          __glXDispSwap_VertexAttrib2svARB},
-    /* [ 311] =  4191 */ {__glXDisp_VertexAttrib3svARB,
-                          __glXDispSwap_VertexAttrib3svARB},
-    /* [ 312] =  4192 */ {__glXDisp_VertexAttrib4svARB,
-                          __glXDispSwap_VertexAttrib4svARB},
+    /* [ 306] =  4186 */ {NULL, NULL},
+    /* [ 307] =  4187 */ {NULL, NULL},
+    /* [ 308] =  4188 */ {NULL, NULL},
+    /* [ 309] =  4189 */ {__glXDisp_VertexAttrib1sv,
+                          __glXDispSwap_VertexAttrib1sv},
+    /* [ 310] =  4190 */ {__glXDisp_VertexAttrib2sv,
+                          __glXDispSwap_VertexAttrib2sv},
+    /* [ 311] =  4191 */ {__glXDisp_VertexAttrib3sv,
+                          __glXDispSwap_VertexAttrib3sv},
+    /* [ 312] =  4192 */ {__glXDisp_VertexAttrib4sv,
+                          __glXDispSwap_VertexAttrib4sv},
     /* [ 313] =  4193 */ {__glXDisp_VertexAttrib1fvARB,
                           __glXDispSwap_VertexAttrib1fvARB},
     /* [ 314] =  4194 */ {__glXDisp_VertexAttrib2fvARB,
@@ -762,16 +753,16 @@ static const void *Render_function_table[408][2] = {
                           __glXDispSwap_VertexAttrib3fvARB},
     /* [ 316] =  4196 */ {__glXDisp_VertexAttrib4fvARB,
                           __glXDispSwap_VertexAttrib4fvARB},
-    /* [ 317] =  4197 */ {__glXDisp_VertexAttrib1dvARB,
-                          __glXDispSwap_VertexAttrib1dvARB},
-    /* [ 318] =  4198 */ {__glXDisp_VertexAttrib2dvARB,
-                          __glXDispSwap_VertexAttrib2dvARB},
-    /* [ 319] =  4199 */ {__glXDisp_VertexAttrib3dvARB,
-                          __glXDispSwap_VertexAttrib3dvARB},
-    /* [ 320] =  4200 */ {__glXDisp_VertexAttrib4dvARB,
-                          __glXDispSwap_VertexAttrib4dvARB},
-    /* [ 321] =  4201 */ {__glXDisp_VertexAttrib4NubvARB,
-                          __glXDispSwap_VertexAttrib4NubvARB},
+    /* [ 317] =  4197 */ {__glXDisp_VertexAttrib1dv,
+                          __glXDispSwap_VertexAttrib1dv},
+    /* [ 318] =  4198 */ {__glXDisp_VertexAttrib2dv,
+                          __glXDispSwap_VertexAttrib2dv},
+    /* [ 319] =  4199 */ {__glXDisp_VertexAttrib3dv,
+                          __glXDispSwap_VertexAttrib3dv},
+    /* [ 320] =  4200 */ {__glXDisp_VertexAttrib4dv,
+                          __glXDispSwap_VertexAttrib4dv},
+    /* [ 321] =  4201 */ {__glXDisp_VertexAttrib4Nubv,
+                          __glXDispSwap_VertexAttrib4Nubv},
     /* [ 322] =  4202 */ {__glXDisp_VertexAttribs1svNV,
                           __glXDispSwap_VertexAttribs1svNV},
     /* [ 323] =  4203 */ {__glXDisp_VertexAttribs2svNV,
@@ -804,82 +795,80 @@ static const void *Render_function_table[408][2] = {
                           __glXDispSwap_ProgramLocalParameter4dvARB},
     /* [ 337] =  4217 */ {__glXDisp_ProgramStringARB,
                           __glXDispSwap_ProgramStringARB},
-    /* [ 338] =  4218 */ {__glXDisp_ProgramNamedParameter4fvNV,
-                          __glXDispSwap_ProgramNamedParameter4fvNV},
-    /* [ 339] =  4219 */ {__glXDisp_ProgramNamedParameter4dvNV,
-                          __glXDispSwap_ProgramNamedParameter4dvNV},
+    /* [ 338] =  4218 */ {NULL, NULL},
+    /* [ 339] =  4219 */ {NULL, NULL},
     /* [ 340] =  4220 */ {__glXDisp_ActiveStencilFaceEXT,
                           __glXDispSwap_ActiveStencilFaceEXT},
-    /* [ 341] =  4221 */ {__glXDisp_PointParameteriNV,
-                          __glXDispSwap_PointParameteriNV},
-    /* [ 342] =  4222 */ {__glXDisp_PointParameterivNV,
-                          __glXDispSwap_PointParameterivNV},
+    /* [ 341] =  4221 */ {__glXDisp_PointParameteri,
+                          __glXDispSwap_PointParameteri},
+    /* [ 342] =  4222 */ {__glXDisp_PointParameteriv,
+                          __glXDispSwap_PointParameteriv},
     /* [ 343] =  4223 */ {NULL, NULL},
     /* [ 344] =  4224 */ {NULL, NULL},
     /* [ 345] =  4225 */ {NULL, NULL},
     /* [ 346] =  4226 */ {NULL, NULL},
     /* [ 347] =  4227 */ {NULL, NULL},
-    /* [ 348] =  4228 */ {__glXDisp_BlendEquationSeparateEXT,
-                          __glXDispSwap_BlendEquationSeparateEXT},
+    /* [ 348] =  4228 */ {__glXDisp_BlendEquationSeparate,
+                          __glXDispSwap_BlendEquationSeparate},
     /* [ 349] =  4229 */ {NULL, NULL},
-    /* [ 350] =  4230 */ {__glXDisp_VertexAttrib4bvARB,
-                          __glXDispSwap_VertexAttrib4bvARB},
-    /* [ 351] =  4231 */ {__glXDisp_VertexAttrib4ivARB,
-                          __glXDispSwap_VertexAttrib4ivARB},
-    /* [ 352] =  4232 */ {__glXDisp_VertexAttrib4ubvARB,
-                          __glXDispSwap_VertexAttrib4ubvARB},
-    /* [ 353] =  4233 */ {__glXDisp_VertexAttrib4usvARB,
-                          __glXDispSwap_VertexAttrib4usvARB},
-    /* [ 354] =  4234 */ {__glXDisp_VertexAttrib4uivARB,
-                          __glXDispSwap_VertexAttrib4uivARB},
-    /* [ 355] =  4235 */ {__glXDisp_VertexAttrib4NbvARB,
-                          __glXDispSwap_VertexAttrib4NbvARB},
-    /* [ 356] =  4236 */ {__glXDisp_VertexAttrib4NsvARB,
-                          __glXDispSwap_VertexAttrib4NsvARB},
-    /* [ 357] =  4237 */ {__glXDisp_VertexAttrib4NivARB,
-                          __glXDispSwap_VertexAttrib4NivARB},
-    /* [ 358] =  4238 */ {__glXDisp_VertexAttrib4NusvARB,
-                          __glXDispSwap_VertexAttrib4NusvARB},
-    /* [ 359] =  4239 */ {__glXDisp_VertexAttrib4NuivARB,
-                          __glXDispSwap_VertexAttrib4NuivARB},
-    /* [ 360] =  4320 */ {__glXDisp_DeleteFramebuffersEXT,
-                          __glXDispSwap_DeleteFramebuffersEXT},
-    /* [ 361] =  4321 */ {__glXDisp_FramebufferTexture1DEXT,
-                          __glXDispSwap_FramebufferTexture1DEXT},
-    /* [ 362] =  4322 */ {__glXDisp_FramebufferTexture2DEXT,
-                          __glXDispSwap_FramebufferTexture2DEXT},
-    /* [ 363] =  4323 */ {__glXDisp_FramebufferTexture3DEXT,
-                          __glXDispSwap_FramebufferTexture3DEXT},
-    /* [ 364] =  4324 */ {__glXDisp_FramebufferRenderbufferEXT,
-                          __glXDispSwap_FramebufferRenderbufferEXT},
-    /* [ 365] =  4325 */ {__glXDisp_GenerateMipmapEXT,
-                          __glXDispSwap_GenerateMipmapEXT},
+    /* [ 350] =  4230 */ {__glXDisp_VertexAttrib4bv,
+                          __glXDispSwap_VertexAttrib4bv},
+    /* [ 351] =  4231 */ {__glXDisp_VertexAttrib4iv,
+                          __glXDispSwap_VertexAttrib4iv},
+    /* [ 352] =  4232 */ {__glXDisp_VertexAttrib4ubv,
+                          __glXDispSwap_VertexAttrib4ubv},
+    /* [ 353] =  4233 */ {__glXDisp_VertexAttrib4usv,
+                          __glXDispSwap_VertexAttrib4usv},
+    /* [ 354] =  4234 */ {__glXDisp_VertexAttrib4uiv,
+                          __glXDispSwap_VertexAttrib4uiv},
+    /* [ 355] =  4235 */ {__glXDisp_VertexAttrib4Nbv,
+                          __glXDispSwap_VertexAttrib4Nbv},
+    /* [ 356] =  4236 */ {__glXDisp_VertexAttrib4Nsv,
+                          __glXDispSwap_VertexAttrib4Nsv},
+    /* [ 357] =  4237 */ {__glXDisp_VertexAttrib4Niv,
+                          __glXDispSwap_VertexAttrib4Niv},
+    /* [ 358] =  4238 */ {__glXDisp_VertexAttrib4Nusv,
+                          __glXDispSwap_VertexAttrib4Nusv},
+    /* [ 359] =  4239 */ {__glXDisp_VertexAttrib4Nuiv,
+                          __glXDispSwap_VertexAttrib4Nuiv},
+    /* [ 360] =  4320 */ {__glXDisp_DeleteFramebuffers,
+                          __glXDispSwap_DeleteFramebuffers},
+    /* [ 361] =  4321 */ {__glXDisp_FramebufferTexture1D,
+                          __glXDispSwap_FramebufferTexture1D},
+    /* [ 362] =  4322 */ {__glXDisp_FramebufferTexture2D,
+                          __glXDispSwap_FramebufferTexture2D},
+    /* [ 363] =  4323 */ {__glXDisp_FramebufferTexture3D,
+                          __glXDispSwap_FramebufferTexture3D},
+    /* [ 364] =  4324 */ {__glXDisp_FramebufferRenderbuffer,
+                          __glXDispSwap_FramebufferRenderbuffer},
+    /* [ 365] =  4325 */ {__glXDisp_GenerateMipmap,
+                          __glXDispSwap_GenerateMipmap},
     /* [ 366] =  4326 */ {NULL, NULL},
     /* [ 367] =  4327 */ {NULL, NULL},
     /* [ 368] =  4328 */ {NULL, NULL},
     /* [ 369] =  4329 */ {NULL, NULL},
-    /* [ 370] =  4330 */ {__glXDisp_BlitFramebufferEXT,
-                          __glXDispSwap_BlitFramebufferEXT},
+    /* [ 370] =  4330 */ {__glXDisp_BlitFramebuffer,
+                          __glXDispSwap_BlitFramebuffer},
     /* [ 371] =  4331 */ {__glXDisp_RenderbufferStorageMultisample,
                           __glXDispSwap_RenderbufferStorageMultisample},
     /* [ 372] =  4332 */ {NULL, NULL},
     /* [ 373] =  4333 */ {NULL, NULL},
     /* [ 374] =  4334 */ {NULL, NULL},
     /* [ 375] =  4335 */ {NULL, NULL},
-    /* [ 376] =  4128 */ {__glXDisp_SecondaryColor3ivEXT,
-                          __glXDispSwap_SecondaryColor3ivEXT},
+    /* [ 376] =  4128 */ {__glXDisp_SecondaryColor3iv,
+                          __glXDispSwap_SecondaryColor3iv},
     /* [ 377] =  4129 */ {__glXDisp_SecondaryColor3fvEXT,
                           __glXDispSwap_SecondaryColor3fvEXT},
-    /* [ 378] =  4130 */ {__glXDisp_SecondaryColor3dvEXT,
-                          __glXDispSwap_SecondaryColor3dvEXT},
-    /* [ 379] =  4131 */ {__glXDisp_SecondaryColor3ubvEXT,
-                          __glXDispSwap_SecondaryColor3ubvEXT},
-    /* [ 380] =  4132 */ {__glXDisp_SecondaryColor3usvEXT,
-                          __glXDispSwap_SecondaryColor3usvEXT},
-    /* [ 381] =  4133 */ {__glXDisp_SecondaryColor3uivEXT,
-                          __glXDispSwap_SecondaryColor3uivEXT},
-    /* [ 382] =  4134 */ {__glXDisp_BlendFuncSeparateEXT,
-                          __glXDispSwap_BlendFuncSeparateEXT},
+    /* [ 378] =  4130 */ {__glXDisp_SecondaryColor3dv,
+                          __glXDispSwap_SecondaryColor3dv},
+    /* [ 379] =  4131 */ {__glXDisp_SecondaryColor3ubv,
+                          __glXDispSwap_SecondaryColor3ubv},
+    /* [ 380] =  4132 */ {__glXDisp_SecondaryColor3usv,
+                          __glXDispSwap_SecondaryColor3usv},
+    /* [ 381] =  4133 */ {__glXDisp_SecondaryColor3uiv,
+                          __glXDispSwap_SecondaryColor3uiv},
+    /* [ 382] =  4134 */ {__glXDisp_BlendFuncSeparate,
+                          __glXDispSwap_BlendFuncSeparate},
     /* [ 383] =  4135 */ {NULL, NULL},
     /* [ 384] =  4264 */ {NULL, NULL},
     /* [ 385] =  4265 */ {__glXDisp_VertexAttrib1svNV,
@@ -914,14 +903,14 @@ static const void *Render_function_table[408][2] = {
     /* [ 401] =  4313 */ {NULL, NULL},
     /* [ 402] =  4314 */ {NULL, NULL},
     /* [ 403] =  4315 */ {NULL, NULL},
-    /* [ 404] =  4316 */ {__glXDisp_BindRenderbufferEXT,
-                          __glXDispSwap_BindRenderbufferEXT},
-    /* [ 405] =  4317 */ {__glXDisp_DeleteRenderbuffersEXT,
-                          __glXDispSwap_DeleteRenderbuffersEXT},
-    /* [ 406] =  4318 */ {__glXDisp_RenderbufferStorageEXT,
-                          __glXDispSwap_RenderbufferStorageEXT},
-    /* [ 407] =  4319 */ {__glXDisp_BindFramebufferEXT,
-                          __glXDispSwap_BindFramebufferEXT},
+    /* [ 404] =  4316 */ {__glXDisp_BindRenderbuffer,
+                          __glXDispSwap_BindRenderbuffer},
+    /* [ 405] =  4317 */ {__glXDisp_DeleteRenderbuffers,
+                          __glXDispSwap_DeleteRenderbuffers},
+    /* [ 406] =  4318 */ {__glXDisp_RenderbufferStorage,
+                          __glXDispSwap_RenderbufferStorage},
+    /* [ 407] =  4319 */ {__glXDisp_BindFramebuffer,
+                          __glXDispSwap_BindFramebuffer},
 };
 
 static const int_fast16_t Render_size_table[408][2] = {
@@ -1165,8 +1154,8 @@ static const int_fast16_t Render_size_table[408][2] = {
     /* [237] =   237 */ {24, ~0},
     /* [238] =   238 */ {0, ~0},
     /* [239] =   239 */ {0, ~0},
-    /* [240] =  2048 */ {12, ~0},
-    /* [241] =  2049 */ {8, ~0},
+    /* [240] =  2048 */ {0, ~0},
+    /* [241] =  2049 */ {0, ~0},
     /* [242] =  2050 */ {0, ~0},
     /* [243] =  2051 */ {0, ~0},
     /* [244] =  2052 */ {0, ~0},
@@ -1226,14 +1215,14 @@ static const int_fast16_t Render_size_table[408][2] = {
     /* [298] =  4178 */ {0, ~0},
     /* [299] =  4179 */ {0, ~0},
     /* [300] =  4180 */ {12, ~0},
-    /* [301] =  4181 */ {28, ~0},
-    /* [302] =  4182 */ {8, 51},
-    /* [303] =  4183 */ {16, 52},
+    /* [301] =  4181 */ {0, ~0},
+    /* [302] =  4182 */ {0, ~0},
+    /* [303] =  4183 */ {0, ~0},
     /* [304] =  4184 */ {28, ~0},
     /* [305] =  4185 */ {44, ~0},
-    /* [306] =  4186 */ {16, 53},
-    /* [307] =  4187 */ {16, 54},
-    /* [308] =  4188 */ {20, ~0},
+    /* [306] =  4186 */ {0, ~0},
+    /* [307] =  4187 */ {0, ~0},
+    /* [308] =  4188 */ {0, ~0},
     /* [309] =  4189 */ {12, ~0},
     /* [310] =  4190 */ {12, ~0},
     /* [311] =  4191 */ {16, ~0},
@@ -1247,27 +1236,27 @@ static const int_fast16_t Render_size_table[408][2] = {
     /* [319] =  4199 */ {32, ~0},
     /* [320] =  4200 */ {40, ~0},
     /* [321] =  4201 */ {12, ~0},
-    /* [322] =  4202 */ {12, 55},
-    /* [323] =  4203 */ {12, 56},
-    /* [324] =  4204 */ {12, 57},
-    /* [325] =  4205 */ {12, 58},
-    /* [326] =  4206 */ {12, 59},
-    /* [327] =  4207 */ {12, 60},
-    /* [328] =  4208 */ {12, 61},
-    /* [329] =  4209 */ {12, 62},
-    /* [330] =  4210 */ {12, 63},
-    /* [331] =  4211 */ {12, 64},
-    /* [332] =  4212 */ {12, 65},
-    /* [333] =  4213 */ {12, 66},
-    /* [334] =  4214 */ {12, 67},
+    /* [322] =  4202 */ {12, 51},
+    /* [323] =  4203 */ {12, 52},
+    /* [324] =  4204 */ {12, 53},
+    /* [325] =  4205 */ {12, 54},
+    /* [326] =  4206 */ {12, 55},
+    /* [327] =  4207 */ {12, 56},
+    /* [328] =  4208 */ {12, 57},
+    /* [329] =  4209 */ {12, 58},
+    /* [330] =  4210 */ {12, 59},
+    /* [331] =  4211 */ {12, 60},
+    /* [332] =  4212 */ {12, 61},
+    /* [333] =  4213 */ {12, 62},
+    /* [334] =  4214 */ {12, 63},
     /* [335] =  4215 */ {28, ~0},
     /* [336] =  4216 */ {44, ~0},
-    /* [337] =  4217 */ {16, 68},
-    /* [338] =  4218 */ {28, 69},
-    /* [339] =  4219 */ {44, 70},
+    /* [337] =  4217 */ {16, 64},
+    /* [338] =  4218 */ {0, ~0},
+    /* [339] =  4219 */ {0, ~0},
     /* [340] =  4220 */ {8, ~0},
     /* [341] =  4221 */ {12, ~0},
-    /* [342] =  4222 */ {8, 71},
+    /* [342] =  4222 */ {8, 65},
     /* [343] =  4223 */ {0, ~0},
     /* [344] =  4224 */ {0, ~0},
     /* [345] =  4225 */ {0, ~0},
@@ -1285,7 +1274,7 @@ static const int_fast16_t Render_size_table[408][2] = {
     /* [357] =  4237 */ {24, ~0},
     /* [358] =  4238 */ {16, ~0},
     /* [359] =  4239 */ {24, ~0},
-    /* [360] =  4320 */ {8, 72},
+    /* [360] =  4320 */ {8, 66},
     /* [361] =  4321 */ {24, ~0},
     /* [362] =  4322 */ {24, ~0},
     /* [363] =  4323 */ {28, ~0},
@@ -1330,12 +1319,12 @@ static const int_fast16_t Render_size_table[408][2] = {
     /* [402] =  4314 */ {0, ~0},
     /* [403] =  4315 */ {0, ~0},
     /* [404] =  4316 */ {12, ~0},
-    /* [405] =  4317 */ {8, 73},
+    /* [405] =  4317 */ {8, 67},
     /* [406] =  4318 */ {20, ~0},
     /* [407] =  4319 */ {12, ~0},
 };
 
-static const gl_proto_size_func Render_size_func_table[74] = {
+static const gl_proto_size_func Render_size_func_table[68] = {
     __glXCallListsReqSize,
     __glXBitmapReqSize,
     __glXFogfvReqSize,
@@ -1366,17 +1355,17 @@ static const gl_proto_size_func Render_size_func_table[74] = {
     __glXDrawPixelsReqSize,
     __glXDrawArraysReqSize,
     __glXColorSubTableReqSize,
-    __glXCompressedTexImage1DARBReqSize,
-    __glXCompressedTexImage2DARBReqSize,
-    __glXCompressedTexImage3DARBReqSize,
-    __glXCompressedTexSubImage1DARBReqSize,
-    __glXCompressedTexSubImage2DARBReqSize,
-    __glXCompressedTexSubImage3DARBReqSize,
-    __glXDrawBuffersARBReqSize,
+    __glXCompressedTexImage1DReqSize,
+    __glXCompressedTexImage2DReqSize,
+    __glXCompressedTexImage3DReqSize,
+    __glXCompressedTexSubImage1DReqSize,
+    __glXCompressedTexSubImage2DReqSize,
+    __glXCompressedTexSubImage3DReqSize,
+    __glXDrawBuffersReqSize,
     __glXColorTableReqSize,
     __glXColorTableParameterfvReqSize,
     __glXColorTableParameterivReqSize,
-    __glXPointParameterfvEXTReqSize,
+    __glXPointParameterfvReqSize,
     __glXTexSubImage1DReqSize,
     __glXTexSubImage2DReqSize,
     __glXConvolutionFilter1DReqSize,
@@ -1387,10 +1376,6 @@ static const gl_proto_size_func Render_size_func_table[74] = {
     __glXTexImage3DReqSize,
     __glXTexSubImage3DReqSize,
     __glXPrioritizeTexturesReqSize,
-    __glXRequestResidentProgramsNVReqSize,
-    __glXLoadProgramNVReqSize,
-    __glXProgramParameters4fvNVReqSize,
-    __glXProgramParameters4dvNVReqSize,
     __glXVertexAttribs1svNVReqSize,
     __glXVertexAttribs2svNVReqSize,
     __glXVertexAttribs3svNVReqSize,
@@ -1405,11 +1390,9 @@ static const gl_proto_size_func Render_size_func_table[74] = {
     __glXVertexAttribs4dvNVReqSize,
     __glXVertexAttribs4ubvNVReqSize,
     __glXProgramStringARBReqSize,
-    __glXProgramNamedParameter4fvNVReqSize,
-    __glXProgramNamedParameter4dvNVReqSize,
-    __glXPointParameterivNVReqSize,
-    __glXDeleteFramebuffersEXTReqSize,
-    __glXDeleteRenderbuffersEXTReqSize,
+    __glXPointParameterivReqSize,
+    __glXDeleteFramebuffersReqSize,
+    __glXDeleteRenderbuffersReqSize,
 };
 
 const struct __glXDispatchInfo Render_dispatch_info = {
@@ -1711,19 +1694,13 @@ static const void *VendorPriv_function_table[104][2] = {
                          __glXDispSwap_GetProgramEnvParameterfvARB},
     /* [ 25] =  1297 */ {__glXDisp_GetProgramEnvParameterdvARB,
                          __glXDispSwap_GetProgramEnvParameterdvARB},
-    /* [ 26] =  1298 */ {__glXDisp_GetProgramivNV,
-                         __glXDispSwap_GetProgramivNV},
-    /* [ 27] =  1299 */ {__glXDisp_GetProgramStringNV,
-                         __glXDispSwap_GetProgramStringNV},
-    /* [ 28] =  1300 */ {__glXDisp_GetTrackMatrixivNV,
-                         __glXDispSwap_GetTrackMatrixivNV},
-    /* [ 29] =  1301 */ {__glXDisp_GetVertexAttribdvARB,
-                         __glXDispSwap_GetVertexAttribdvARB},
-    /* [ 30] =  1302 */ {__glXDisp_GetVertexAttribfvARB,
-                         __glXDispSwap_GetVertexAttribfvARB},
-    /* [ 31] =  1303 */ {__glXDisp_GetVertexAttribivNV,
-                         __glXDispSwap_GetVertexAttribivNV},
-    /* [ 32] =  1304 */ {__glXDisp_IsProgramNV, __glXDispSwap_IsProgramNV},
+    /* [ 26] =  1298 */ {NULL, NULL},
+    /* [ 27] =  1299 */ {NULL, NULL},
+    /* [ 28] =  1300 */ {NULL, NULL},
+    /* [ 29] =  1301 */ {NULL, NULL},
+    /* [ 30] =  1302 */ {NULL, NULL},
+    /* [ 31] =  1303 */ {NULL, NULL},
+    /* [ 32] =  1304 */ {__glXDisp_IsProgramARB, __glXDispSwap_IsProgramARB},
     /* [ 33] =  1305 */ {__glXDisp_GetProgramLocalParameterfvARB,
                          __glXDispSwap_GetProgramLocalParameterfvARB},
     /* [ 34] =  1306 */ {__glXDisp_GetProgramLocalParameterdvARB,
@@ -1733,20 +1710,18 @@ static const void *VendorPriv_function_table[104][2] = {
     /* [ 36] =  1308 */ {__glXDisp_GetProgramStringARB,
                          __glXDispSwap_GetProgramStringARB},
     /* [ 37] =  1309 */ {NULL, NULL},
-    /* [ 38] =  1310 */ {__glXDisp_GetProgramNamedParameterfvNV,
-                         __glXDispSwap_GetProgramNamedParameterfvNV},
-    /* [ 39] =  1311 */ {__glXDisp_GetProgramNamedParameterdvNV,
-                         __glXDispSwap_GetProgramNamedParameterdvNV},
+    /* [ 38] =  1310 */ {NULL, NULL},
+    /* [ 39] =  1311 */ {NULL, NULL},
     /* [ 40] =  1288 */ {NULL, NULL},
     /* [ 41] =  1289 */ {NULL, NULL},
     /* [ 42] =  1290 */ {NULL, NULL},
     /* [ 43] =  1291 */ {NULL, NULL},
     /* [ 44] =  1292 */ {NULL, NULL},
-    /* [ 45] =  1293 */ {__glXDisp_AreProgramsResidentNV,
-                         __glXDispSwap_AreProgramsResidentNV},
-    /* [ 46] =  1294 */ {__glXDisp_DeleteProgramsNV,
-                         __glXDispSwap_DeleteProgramsNV},
-    /* [ 47] =  1295 */ {__glXDisp_GenProgramsNV, __glXDispSwap_GenProgramsNV},
+    /* [ 45] =  1293 */ {NULL, NULL},
+    /* [ 46] =  1294 */ {__glXDisp_DeleteProgramsARB,
+                         __glXDispSwap_DeleteProgramsARB},
+    /* [ 47] =  1295 */ {__glXDisp_GenProgramsARB,
+                         __glXDispSwap_GenProgramsARB},
     /* [ 48] =  1328 */ {NULL, NULL},
     /* [ 49] =  1329 */ {NULL, NULL},
     /* [ 50] =  1330 */ {__glXDisp_BindTexImageEXT,
@@ -1763,20 +1738,19 @@ static const void *VendorPriv_function_table[104][2] = {
     /* [ 59] =  1419 */ {NULL, NULL},
     /* [ 60] =  1420 */ {NULL, NULL},
     /* [ 61] =  1421 */ {NULL, NULL},
-    /* [ 62] =  1422 */ {__glXDisp_IsRenderbufferEXT,
-                         __glXDispSwap_IsRenderbufferEXT},
-    /* [ 63] =  1423 */ {__glXDisp_GenRenderbuffersEXT,
-                         __glXDispSwap_GenRenderbuffersEXT},
-    /* [ 64] =  1424 */ {__glXDisp_GetRenderbufferParameterivEXT,
-                         __glXDispSwap_GetRenderbufferParameterivEXT},
-    /* [ 65] =  1425 */ {__glXDisp_IsFramebufferEXT,
-                         __glXDispSwap_IsFramebufferEXT},
-    /* [ 66] =  1426 */ {__glXDisp_GenFramebuffersEXT,
-                         __glXDispSwap_GenFramebuffersEXT},
-    /* [ 67] =  1427 */ {__glXDisp_CheckFramebufferStatusEXT,
-                         __glXDispSwap_CheckFramebufferStatusEXT},
-    /* [ 68] =  1428 */ {__glXDisp_GetFramebufferAttachmentParameterivEXT,
-                         __glXDispSwap_GetFramebufferAttachmentParameterivEXT},
+    /* [ 62] =  1422 */ {__glXDisp_IsRenderbuffer,
+                         __glXDispSwap_IsRenderbuffer},
+    /* [ 63] =  1423 */ {__glXDisp_GenRenderbuffers,
+                         __glXDispSwap_GenRenderbuffers},
+    /* [ 64] =  1424 */ {__glXDisp_GetRenderbufferParameteriv,
+                         __glXDispSwap_GetRenderbufferParameteriv},
+    /* [ 65] =  1425 */ {__glXDisp_IsFramebuffer, __glXDispSwap_IsFramebuffer},
+    /* [ 66] =  1426 */ {__glXDisp_GenFramebuffers,
+                         __glXDispSwap_GenFramebuffers},
+    /* [ 67] =  1427 */ {__glXDisp_CheckFramebufferStatus,
+                         __glXDispSwap_CheckFramebufferStatus},
+    /* [ 68] =  1428 */ {__glXDisp_GetFramebufferAttachmentParameteriv,
+                         __glXDispSwap_GetFramebufferAttachmentParameteriv},
     /* [ 69] =  1429 */ {NULL, NULL},
     /* [ 70] =  1430 */ {NULL, NULL},
     /* [ 71] =  1431 */ {NULL, NULL},
diff --git a/glx/indirect_texture_compression.c b/glx/indirect_texture_compression.c
index 5c2d06b..94de47d 100644
--- a/glx/indirect_texture_compression.c
+++ b/glx/indirect_texture_compression.c
@@ -34,13 +34,9 @@
 #include "unpack.h"
 #include "indirect_size_get.h"
 #include "indirect_dispatch.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 
 int
-__glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte * pc)
+__glXDisp_GetCompressedTexImage(struct __GLXclientStateRec *cl, GLbyte * pc)
 {
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
@@ -54,16 +50,13 @@ __glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte * pc)
         GLint compsize = 0;
         char *answer = NULL, answerBuffer[200];
 
-        CALL_GetTexLevelParameteriv(GET_DISPATCH(),
-                                    (target, level,
-                                     GL_TEXTURE_COMPRESSED_IMAGE_SIZE,
-                                     &compsize));
+        glGetTexLevelParameteriv(target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE,
+                                 &compsize);
 
         if (compsize != 0) {
             __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
             __glXClearErrorOccured();
-            CALL_GetCompressedTexImageARB(GET_DISPATCH(),
-                                          (target, level, answer));
+            glGetCompressedTexImageARB(target, level, answer);
         }
 
         if (__glXErrorOccured()) {
@@ -84,8 +77,7 @@ __glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte * pc)
 }
 
 int
-__glXDispSwap_GetCompressedTexImageARB(struct __GLXclientStateRec *cl,
-                                       GLbyte * pc)
+__glXDispSwap_GetCompressedTexImage(struct __GLXclientStateRec *cl, GLbyte * pc)
 {
     xGLXSingleReq *const req = (xGLXSingleReq *) pc;
     int error;
@@ -100,16 +92,13 @@ __glXDispSwap_GetCompressedTexImageARB(struct __GLXclientStateRec *cl,
         GLint compsize = 0;
         char *answer = NULL, answerBuffer[200];
 
-        CALL_GetTexLevelParameteriv(GET_DISPATCH(),
-                                    (target, level,
-                                     GL_TEXTURE_COMPRESSED_IMAGE_SIZE,
-                                     &compsize));
+        glGetTexLevelParameteriv(target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE,
+                                 &compsize);
 
         if (compsize != 0) {
             __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
             __glXClearErrorOccured();
-            CALL_GetCompressedTexImageARB(GET_DISPATCH(),
-                                          (target, level, answer));
+            glGetCompressedTexImageARB(target, level, answer);
         }
 
         if (__glXErrorOccured()) {
diff --git a/glx/indirect_util.c b/glx/indirect_util.c
index a30b1f8..f9d1243 100644
--- a/glx/indirect_util.c
+++ b/glx/indirect_util.c
@@ -39,10 +39,6 @@
 #include "glxserver.h"
 #include "glxbyteorder.h"
 #include "singlesize.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 #include "glxext.h"
 #include "indirect_table.h"
 #include "indirect_util.h"
@@ -57,8 +53,7 @@ __glGetBooleanv_variable_size(GLenum e)
     if (e == GL_COMPRESSED_TEXTURE_FORMATS) {
         GLint temp;
 
-        CALL_GetIntegerv(GET_DISPATCH(),
-                         (GL_NUM_COMPRESSED_TEXTURE_FORMATS, &temp));
+        glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &temp);
         return temp;
     }
     else {
diff --git a/glx/render2.c b/glx/render2.c
index 8cf74a6..5a2f482 100644
--- a/glx/render2.c
+++ b/glx/render2.c
@@ -36,10 +36,6 @@
 #include "unpack.h"
 #include "indirect_size.h"
 #include "indirect_dispatch.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 
 void
 __glXDisp_Map1f(GLbyte * pc)
@@ -55,7 +51,7 @@ __glXDisp_Map1f(GLbyte * pc)
     points = (GLfloat *) (pc + 16);
     k = __glMap1f_size(target);
 
-    CALL_Map1f(GET_DISPATCH(), (target, u1, u2, k, order, points));
+    glMap1f(target, u1, u2, k, order, points);
 }
 
 void
@@ -78,9 +74,7 @@ __glXDisp_Map2f(GLbyte * pc)
     ustride = vorder * k;
     vstride = k;
 
-    CALL_Map2f(GET_DISPATCH(),
-               (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder,
-                points));
+    glMap2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
 }
 
 void
@@ -126,7 +120,7 @@ __glXDisp_Map1d(GLbyte * pc)
 #else
     points = (GLdouble *) pc;
 #endif
-    CALL_Map1d(GET_DISPATCH(), (target, u1, u2, k, order, points));
+    glMap1d(target, u1, u2, k, order, points);
 }
 
 void
@@ -178,9 +172,7 @@ __glXDisp_Map2d(GLbyte * pc)
 #else
     points = (GLdouble *) pc;
 #endif
-    CALL_Map2d(GET_DISPATCH(),
-               (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder,
-                points));
+    glMap2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
 }
 
 void
@@ -215,39 +207,36 @@ __glXDisp_DrawArrays(GLbyte * pc)
 
         switch (component) {
         case GL_VERTEX_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_VERTEX_ARRAY));
-            CALL_VertexPointer(GET_DISPATCH(), (numVals, datatype, stride, pc));
+            glEnableClientState(GL_VERTEX_ARRAY);
+            glVertexPointer(numVals, datatype, stride, pc);
             break;
         case GL_NORMAL_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_NORMAL_ARRAY));
-            CALL_NormalPointer(GET_DISPATCH(), (datatype, stride, pc));
+            glEnableClientState(GL_NORMAL_ARRAY);
+            glNormalPointer(datatype, stride, pc);
             break;
         case GL_COLOR_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_COLOR_ARRAY));
-            CALL_ColorPointer(GET_DISPATCH(), (numVals, datatype, stride, pc));
+            glEnableClientState(GL_COLOR_ARRAY);
+            glColorPointer(numVals, datatype, stride, pc);
             break;
         case GL_INDEX_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_INDEX_ARRAY));
-            CALL_IndexPointer(GET_DISPATCH(), (datatype, stride, pc));
+            glEnableClientState(GL_INDEX_ARRAY);
+            glIndexPointer(datatype, stride, pc);
             break;
         case GL_TEXTURE_COORD_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_TEXTURE_COORD_ARRAY));
-            CALL_TexCoordPointer(GET_DISPATCH(),
-                                 (numVals, datatype, stride, pc));
+            glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+            glTexCoordPointer(numVals, datatype, stride, pc);
             break;
         case GL_EDGE_FLAG_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_EDGE_FLAG_ARRAY));
-            CALL_EdgeFlagPointer(GET_DISPATCH(),
-                                 (stride, (const GLboolean *) pc));
+            glEnableClientState(GL_EDGE_FLAG_ARRAY);
+            glEdgeFlagPointer(stride, (const GLboolean *) pc);
             break;
         case GL_SECONDARY_COLOR_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_SECONDARY_COLOR_ARRAY));
-            CALL_SecondaryColorPointerEXT(GET_DISPATCH(),
-                                          (numVals, datatype, stride, pc));
+            glEnableClientState(GL_SECONDARY_COLOR_ARRAY);
+            glSecondaryColorPointerEXT(numVals, datatype, stride, pc);
             break;
         case GL_FOG_COORD_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_FOG_COORD_ARRAY));
-            CALL_FogCoordPointerEXT(GET_DISPATCH(), (datatype, stride, pc));
+            glEnableClientState(GL_FOG_COORD_ARRAY);
+            glFogCoordPointerEXT(datatype, stride, pc);
             break;
         default:
             break;
@@ -256,15 +245,15 @@ __glXDisp_DrawArrays(GLbyte * pc)
         pc += __GLX_PAD(numVals * __glXTypeSize(datatype));
     }
 
-    CALL_DrawArrays(GET_DISPATCH(), (primType, 0, numVertexes));
+    glDrawArrays(primType, 0, numVertexes);
 
     /* turn off anything we might have turned on */
-    CALL_DisableClientState(GET_DISPATCH(), (GL_VERTEX_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_NORMAL_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_COLOR_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_INDEX_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_TEXTURE_COORD_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_EDGE_FLAG_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_SECONDARY_COLOR_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_FOG_COORD_ARRAY));
+    glDisableClientState(GL_VERTEX_ARRAY);
+    glDisableClientState(GL_NORMAL_ARRAY);
+    glDisableClientState(GL_COLOR_ARRAY);
+    glDisableClientState(GL_INDEX_ARRAY);
+    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+    glDisableClientState(GL_EDGE_FLAG_ARRAY);
+    glDisableClientState(GL_SECONDARY_COLOR_ARRAY);
+    glDisableClientState(GL_FOG_COORD_ARRAY);
 }
diff --git a/glx/render2swap.c b/glx/render2swap.c
index 8b5d9da..e6f73b8 100644
--- a/glx/render2swap.c
+++ b/glx/render2swap.c
@@ -36,10 +36,6 @@
 #include "unpack.h"
 #include "indirect_size.h"
 #include "indirect_dispatch.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 
 void
 __glXDispSwap_Map1f(GLbyte * pc)
@@ -73,7 +69,7 @@ __glXDispSwap_Map1f(GLbyte * pc)
     }
     __GLX_SWAP_FLOAT_ARRAY(points, compsize);
 
-    CALL_Map1f(GET_DISPATCH(), (target, u1, u2, k, order, points));
+    glMap1f(target, u1, u2, k, order, points);
 }
 
 void
@@ -117,9 +113,7 @@ __glXDispSwap_Map2f(GLbyte * pc)
     }
     __GLX_SWAP_FLOAT_ARRAY(points, compsize);
 
-    CALL_Map2f(GET_DISPATCH(),
-               (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder,
-                points));
+    glMap2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
 }
 
 void
@@ -167,7 +161,7 @@ __glXDispSwap_Map1d(GLbyte * pc)
 #else
     points = (GLdouble *) pc;
 #endif
-    CALL_Map1d(GET_DISPATCH(), (target, u1, u2, k, order, points));
+    glMap1d(target, u1, u2, k, order, points);
 }
 
 void
@@ -223,9 +217,7 @@ __glXDispSwap_Map2d(GLbyte * pc)
 #else
     points = (GLdouble *) pc;
 #endif
-    CALL_Map2d(GET_DISPATCH(),
-               (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder,
-                points));
+    glMap2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
 }
 
 static void
@@ -337,39 +329,36 @@ __glXDispSwap_DrawArrays(GLbyte * pc)
 
         switch (component) {
         case GL_VERTEX_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_VERTEX_ARRAY));
-            CALL_VertexPointer(GET_DISPATCH(), (numVals, datatype, stride, pc));
+            glEnableClientState(GL_VERTEX_ARRAY);
+            glVertexPointer(numVals, datatype, stride, pc);
             break;
         case GL_NORMAL_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_NORMAL_ARRAY));
-            CALL_NormalPointer(GET_DISPATCH(), (datatype, stride, pc));
+            glEnableClientState(GL_NORMAL_ARRAY);
+            glNormalPointer(datatype, stride, pc);
             break;
         case GL_COLOR_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_COLOR_ARRAY));
-            CALL_ColorPointer(GET_DISPATCH(), (numVals, datatype, stride, pc));
+            glEnableClientState(GL_COLOR_ARRAY);
+            glColorPointer(numVals, datatype, stride, pc);
             break;
         case GL_INDEX_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_INDEX_ARRAY));
-            CALL_IndexPointer(GET_DISPATCH(), (datatype, stride, pc));
+            glEnableClientState(GL_INDEX_ARRAY);
+            glIndexPointer(datatype, stride, pc);
             break;
         case GL_TEXTURE_COORD_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_TEXTURE_COORD_ARRAY));
-            CALL_TexCoordPointer(GET_DISPATCH(),
-                                 (numVals, datatype, stride, pc));
+            glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+            glTexCoordPointer(numVals, datatype, stride, pc);
             break;
         case GL_EDGE_FLAG_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_EDGE_FLAG_ARRAY));
-            CALL_EdgeFlagPointer(GET_DISPATCH(),
-                                 (stride, (const GLboolean *) pc));
+            glEnableClientState(GL_EDGE_FLAG_ARRAY);
+            glEdgeFlagPointer(stride, (const GLboolean *) pc);
             break;
         case GL_SECONDARY_COLOR_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_SECONDARY_COLOR_ARRAY));
-            CALL_SecondaryColorPointerEXT(GET_DISPATCH(),
-                                          (numVals, datatype, stride, pc));
+            glEnableClientState(GL_SECONDARY_COLOR_ARRAY);
+            glSecondaryColorPointerEXT(numVals, datatype, stride, pc);
             break;
         case GL_FOG_COORD_ARRAY:
-            CALL_EnableClientState(GET_DISPATCH(), (GL_FOG_COORD_ARRAY));
-            CALL_FogCoordPointerEXT(GET_DISPATCH(), (datatype, stride, pc));
+            glEnableClientState(GL_FOG_COORD_ARRAY);
+            glFogCoordPointerEXT(datatype, stride, pc);
             break;
         default:
             break;
@@ -378,15 +367,15 @@ __glXDispSwap_DrawArrays(GLbyte * pc)
         pc += __GLX_PAD(numVals * __glXTypeSize(datatype));
     }
 
-    CALL_DrawArrays(GET_DISPATCH(), (primType, 0, numVertexes));
+    glDrawArrays(primType, 0, numVertexes);
 
     /* turn off anything we might have turned on */
-    CALL_DisableClientState(GET_DISPATCH(), (GL_VERTEX_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_NORMAL_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_COLOR_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_INDEX_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_TEXTURE_COORD_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_EDGE_FLAG_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_SECONDARY_COLOR_ARRAY));
-    CALL_DisableClientState(GET_DISPATCH(), (GL_FOG_COORD_ARRAY));
+    glDisableClientState(GL_VERTEX_ARRAY);
+    glDisableClientState(GL_NORMAL_ARRAY);
+    glDisableClientState(GL_COLOR_ARRAY);
+    glDisableClientState(GL_INDEX_ARRAY);
+    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+    glDisableClientState(GL_EDGE_FLAG_ARRAY);
+    glDisableClientState(GL_SECONDARY_COLOR_ARRAY);
+    glDisableClientState(GL_FOG_COORD_ARRAY);
 }
diff --git a/glx/renderpix.c b/glx/renderpix.c
index 6fccde6..91ba911 100644
--- a/glx/renderpix.c
+++ b/glx/renderpix.c
@@ -35,10 +35,6 @@
 #include "glxserver.h"
 #include "unpack.h"
 #include "indirect_dispatch.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 
 void
 __glXDisp_SeparableFilter2D(GLbyte * pc)
@@ -49,12 +45,12 @@ __glXDisp_SeparableFilter2D(GLbyte * pc)
 
     hdrlen = __GLX_PAD(__GLX_CONV_FILT_CMD_DISPATCH_HDR_SIZE);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, hdr->alignment));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, hdr->alignment);
 
     /* XXX check this usage - internal code called
      ** a version without the packing parameters
@@ -64,10 +60,8 @@ __glXDisp_SeparableFilter2D(GLbyte * pc)
                                hdr->alignment);
     image1len = __GLX_PAD(image1len);
 
-    CALL_SeparableFilter2D(GET_DISPATCH(), (hdr->target, hdr->internalformat,
-                                            hdr->width, hdr->height,
-                                            hdr->format, hdr->type,
-                                            ((GLubyte *) hdr + hdrlen),
-                                            ((GLubyte *) hdr + hdrlen +
-                                             image1len)));
+    glSeparableFilter2D(hdr->target, hdr->internalformat, hdr->width,
+                        hdr->height, hdr->format, hdr->type,
+                        ((GLubyte *) hdr + hdrlen),
+                        ((GLubyte *) hdr + hdrlen + image1len));
 }
diff --git a/glx/renderpixswap.c b/glx/renderpixswap.c
index 24423cd..a4cb246 100644
--- a/glx/renderpixswap.c
+++ b/glx/renderpixswap.c
@@ -35,10 +35,6 @@
 #include "glxserver.h"
 #include "unpack.h"
 #include "indirect_dispatch.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 
 void
 __glXDispSwap_SeparableFilter2D(GLbyte * pc)
@@ -67,12 +63,12 @@ __glXDispSwap_SeparableFilter2D(GLbyte * pc)
      ** Just invert swapBytes flag; the GL will figure out if it needs to swap
      ** the pixel data.
      */
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, !hdr->swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, hdr->rowLength));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, hdr->skipRows));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, hdr->skipPixels));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, hdr->alignment));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, !hdr->swapBytes);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, hdr->rowLength);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, hdr->skipRows);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, hdr->skipPixels);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, hdr->alignment);
 
     /* XXX check this usage - internal code called
      ** a version without the packing parameters
@@ -82,10 +78,8 @@ __glXDispSwap_SeparableFilter2D(GLbyte * pc)
                                hdr->alignment);
     image1len = __GLX_PAD(image1len);
 
-    CALL_SeparableFilter2D(GET_DISPATCH(), (hdr->target, hdr->internalformat,
-                                            hdr->width, hdr->height,
-                                            hdr->format, hdr->type,
-                                            ((GLubyte *) hdr + hdrlen),
-                                            ((GLubyte *) hdr + hdrlen +
-                                             image1len)));
+    glSeparableFilter2D(hdr->target, hdr->internalformat, hdr->width,
+                        hdr->height, hdr->format, hdr->type,
+                        ((GLubyte *) hdr + hdrlen),
+                        ((GLubyte *) hdr + hdrlen + image1len));
 }
diff --git a/glx/single2.c b/glx/single2.c
index 9597d29..53b661d 100644
--- a/glx/single2.c
+++ b/glx/single2.c
@@ -41,10 +41,6 @@
 #include "glxext.h"
 #include "indirect_dispatch.h"
 #include "unpack.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 
 int
 __glXDisp_FeedbackBuffer(__GLXclientState * cl, GLbyte * pc)
@@ -72,7 +68,7 @@ __glXDisp_FeedbackBuffer(__GLXclientState * cl, GLbyte * pc)
         }
         cx->feedbackBufSize = size;
     }
-    CALL_FeedbackBuffer(GET_DISPATCH(), (size, type, cx->feedbackBuf));
+    glFeedbackBuffer(size, type, cx->feedbackBuf);
     cx->hasUnflushedCommands = GL_TRUE;
     return Success;
 }
@@ -100,7 +96,7 @@ __glXDisp_SelectBuffer(__GLXclientState * cl, GLbyte * pc)
         }
         cx->selectBufSize = size;
     }
-    CALL_SelectBuffer(GET_DISPATCH(), (size, cx->selectBuf));
+    glSelectBuffer(size, cx->selectBuf);
     cx->hasUnflushedCommands = GL_TRUE;
     return Success;
 }
@@ -123,10 +119,10 @@ __glXDisp_RenderMode(__GLXclientState * cl, GLbyte * pc)
 
     pc += __GLX_SINGLE_HDR_SIZE;
     newMode = *(GLenum *) pc;
-    retval = CALL_RenderMode(GET_DISPATCH(), (newMode));
+    retval = glRenderMode(newMode);
 
     /* Check that render mode worked */
-    CALL_GetIntegerv(GET_DISPATCH(), (GL_RENDER_MODE, &newModeCheck));
+    glGetIntegerv(GL_RENDER_MODE, &newModeCheck);
     if (newModeCheck != newMode) {
         /* Render mode change failed.  Bail */
         newMode = newModeCheck;
@@ -219,7 +215,7 @@ __glXDisp_Flush(__GLXclientState * cl, GLbyte * pc)
         return error;
     }
 
-    CALL_Flush(GET_DISPATCH(), ());
+    glFlush();
     cx->hasUnflushedCommands = GL_FALSE;
     return Success;
 }
@@ -237,7 +233,7 @@ __glXDisp_Finish(__GLXclientState * cl, GLbyte * pc)
     }
 
     /* Do a local glFinish */
-    CALL_Finish(GET_DISPATCH(), ());
+    glFinish();
     cx->hasUnflushedCommands = GL_FALSE;
 
     /* Send empty reply packet to indicate finish is finished */
@@ -346,7 +342,7 @@ DoGetString(__GLXclientState * cl, GLbyte * pc, GLboolean need_swap)
 
     pc += __GLX_SINGLE_HDR_SIZE;
     name = *(GLenum *) (pc + 0);
-    string = (const char *) CALL_GetString(GET_DISPATCH(), (name));
+    string = (const char *) glGetString(name);
     client = cl->client;
 
     if (string == NULL)
diff --git a/glx/single2swap.c b/glx/single2swap.c
index 1ca5328..764501f 100644
--- a/glx/single2swap.c
+++ b/glx/single2swap.c
@@ -37,10 +37,6 @@
 #include "glxext.h"
 #include "indirect_dispatch.h"
 #include "unpack.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 
 int
 __glXDispSwap_FeedbackBuffer(__GLXclientState * cl, GLbyte * pc)
@@ -73,7 +69,7 @@ __glXDispSwap_FeedbackBuffer(__GLXclientState * cl, GLbyte * pc)
         }
         cx->feedbackBufSize = size;
     }
-    CALL_FeedbackBuffer(GET_DISPATCH(), (size, type, cx->feedbackBuf));
+    glFeedbackBuffer(size, type, cx->feedbackBuf);
     cx->hasUnflushedCommands = GL_TRUE;
     return Success;
 }
@@ -105,7 +101,7 @@ __glXDispSwap_SelectBuffer(__GLXclientState * cl, GLbyte * pc)
         }
         cx->selectBufSize = size;
     }
-    CALL_SelectBuffer(GET_DISPATCH(), (size, cx->selectBuf));
+    glSelectBuffer(size, cx->selectBuf);
     cx->hasUnflushedCommands = GL_TRUE;
     return Success;
 }
@@ -133,10 +129,10 @@ __glXDispSwap_RenderMode(__GLXclientState * cl, GLbyte * pc)
     pc += __GLX_SINGLE_HDR_SIZE;
     __GLX_SWAP_INT(pc);
     newMode = *(GLenum *) pc;
-    retval = CALL_RenderMode(GET_DISPATCH(), (newMode));
+    retval = glRenderMode(newMode);
 
     /* Check that render mode worked */
-    CALL_GetIntegerv(GET_DISPATCH(), (GL_RENDER_MODE, &newModeCheck));
+    glGetIntegerv(GL_RENDER_MODE, &newModeCheck);
     if (newModeCheck != newMode) {
         /* Render mode change failed.  Bail */
         newMode = newModeCheck;
@@ -239,7 +235,7 @@ __glXDispSwap_Flush(__GLXclientState * cl, GLbyte * pc)
         return error;
     }
 
-    CALL_Flush(GET_DISPATCH(), ());
+    glFlush();
     cx->hasUnflushedCommands = GL_FALSE;
     return Success;
 }
@@ -260,7 +256,7 @@ __glXDispSwap_Finish(__GLXclientState * cl, GLbyte * pc)
     }
 
     /* Do a local glFinish */
-    CALL_Finish(GET_DISPATCH(), ());
+    glFinish();
     cx->hasUnflushedCommands = GL_FALSE;
 
     /* Send empty reply packet to indicate finish is finished */
diff --git a/glx/singlepix.c b/glx/singlepix.c
index fb6868d..506fdaa 100644
--- a/glx/singlepix.c
+++ b/glx/singlepix.c
@@ -38,10 +38,6 @@
 #include "unpack.h"
 #include "indirect_size_get.h"
 #include "indirect_dispatch.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 
 int
 __glXDisp_ReadPixels(__GLXclientState * cl, GLbyte * pc)
@@ -71,16 +67,13 @@ __glXDisp_ReadPixels(__GLXclientState * cl, GLbyte * pc)
     if (compsize < 0)
         compsize = 0;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_LSB_FIRST, lsbFirst));
+    glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
+    glPixelStorei(GL_PACK_LSB_FIRST, lsbFirst);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
     __glXClearErrorOccured();
-    CALL_ReadPixels(GET_DISPATCH(), (*(GLint *) (pc + 0),
-                                     *(GLint *) (pc + 4),
-                                     *(GLsizei *) (pc + 8),
-                                     *(GLsizei *) (pc + 12),
-                                     *(GLenum *) (pc + 16),
-                                     *(GLenum *) (pc + 20), answer));
+    glReadPixels(*(GLint *) (pc + 0), *(GLint *) (pc + 4),
+                 *(GLsizei *) (pc + 8), *(GLsizei *) (pc + 12),
+                 *(GLenum *) (pc + 16), *(GLenum *) (pc + 20), answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -119,13 +112,10 @@ __glXDisp_GetTexImage(__GLXclientState * cl, GLbyte * pc)
     target = *(GLenum *) (pc + 0);
     swapBytes = *(GLboolean *) (pc + 16);
 
-    CALL_GetTexLevelParameteriv(GET_DISPATCH(),
-                                (target, level, GL_TEXTURE_WIDTH, &width));
-    CALL_GetTexLevelParameteriv(GET_DISPATCH(),
-                                (target, level, GL_TEXTURE_HEIGHT, &height));
+    glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &width);
+    glGetTexLevelParameteriv(target, level, GL_TEXTURE_HEIGHT, &height);
     if (target == GL_TEXTURE_3D) {
-        CALL_GetTexLevelParameteriv(GET_DISPATCH(),
-                                    (target, level, GL_TEXTURE_DEPTH, &depth));
+        glGetTexLevelParameteriv(target, level, GL_TEXTURE_DEPTH, &depth);
     }
     /*
      * The three queries above might fail if we're in a state where queries
@@ -136,13 +126,11 @@ __glXDisp_GetTexImage(__GLXclientState * cl, GLbyte * pc)
     if (compsize < 0)
         compsize = 0;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
+    glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
     __glXClearErrorOccured();
-    CALL_GetTexImage(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                      *(GLint *) (pc + 4),
-                                      *(GLenum *) (pc + 8),
-                                      *(GLenum *) (pc + 12), answer));
+    glGetTexImage(*(GLenum *) (pc + 0), *(GLint *) (pc + 4),
+                  *(GLenum *) (pc + 8), *(GLenum *) (pc + 12), answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -177,11 +165,11 @@ __glXDisp_GetPolygonStipple(__GLXclientState * cl, GLbyte * pc)
     pc += __GLX_SINGLE_HDR_SIZE;
     lsbFirst = *(GLboolean *) (pc + 0);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_LSB_FIRST, lsbFirst));
+    glPixelStorei(GL_PACK_LSB_FIRST, lsbFirst);
     __GLX_GET_ANSWER_BUFFER(answer, cl, 128, 1);
 
     __glXClearErrorOccured();
-    CALL_GetPolygonStipple(GET_DISPATCH(), ((GLubyte *) answer));
+    glGetPolygonStipple((GLubyte *) answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -220,10 +208,8 @@ GetSeparableFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     /* target must be SEPARABLE_2D, however I guess we can let the GL
        barf on this one.... */
 
-    CALL_GetConvolutionParameteriv(GET_DISPATCH(),
-                                   (target, GL_CONVOLUTION_WIDTH, &width));
-    CALL_GetConvolutionParameteriv(GET_DISPATCH(),
-                                   (target, GL_CONVOLUTION_HEIGHT, &height));
+    glGetConvolutionParameteriv(target, GL_CONVOLUTION_WIDTH, &width);
+    glGetConvolutionParameteriv(target, GL_CONVOLUTION_HEIGHT, &height);
     /*
      * The two queries above might fail if we're in a state where queries
      * are illegal, but then width and height would still be zero anyway.
@@ -238,13 +224,11 @@ GetSeparableFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     compsize = __GLX_PAD(compsize);
     compsize2 = __GLX_PAD(compsize2);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
+    glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize + compsize2, 1);
     __glXClearErrorOccured();
-    CALL_GetSeparableFilter(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                             *(GLenum *) (pc + 4),
-                                             *(GLenum *) (pc + 8),
-                                             answer, answer + compsize, NULL));
+    glGetSeparableFilter(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                         *(GLenum *) (pc + 8), answer, answer + compsize, NULL);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -299,15 +283,12 @@ GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     target = *(GLenum *) (pc + 0);
     swapBytes = *(GLboolean *) (pc + 12);
 
-    CALL_GetConvolutionParameteriv(GET_DISPATCH(),
-                                   (target, GL_CONVOLUTION_WIDTH, &width));
+    glGetConvolutionParameteriv(target, GL_CONVOLUTION_WIDTH, &width);
     if (target == GL_CONVOLUTION_1D) {
         height = 1;
     }
     else {
-        CALL_GetConvolutionParameteriv(GET_DISPATCH(),
-                                       (target, GL_CONVOLUTION_HEIGHT,
-                                        &height));
+        glGetConvolutionParameteriv(target, GL_CONVOLUTION_HEIGHT, &height);
     }
     /*
      * The two queries above might fail if we're in a state where queries
@@ -317,12 +298,11 @@ GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     if (compsize < 0)
         compsize = 0;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
+    glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
     __glXClearErrorOccured();
-    CALL_GetConvolutionFilter(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                               *(GLenum *) (pc + 4),
-                                               *(GLenum *) (pc + 8), answer));
+    glGetConvolutionFilter(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                           *(GLenum *) (pc + 8), answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -378,8 +358,7 @@ GetHistogram(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     swapBytes = *(GLboolean *) (pc + 12);
     reset = *(GLboolean *) (pc + 13);
 
-    CALL_GetHistogramParameteriv(GET_DISPATCH(),
-                                 (target, GL_HISTOGRAM_WIDTH, &width));
+    glGetHistogramParameteriv(target, GL_HISTOGRAM_WIDTH, &width);
     /*
      * The one query above might fail if we're in a state where queries
      * are illegal, but then width would still be zero anyway.
@@ -388,10 +367,10 @@ GetHistogram(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     if (compsize < 0)
         compsize = 0;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
+    glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
     __glXClearErrorOccured();
-    CALL_GetHistogram(GET_DISPATCH(), (target, reset, format, type, answer));
+    glGetHistogram(target, reset, format, type, answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -449,10 +428,10 @@ GetMinmax(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     if (compsize < 0)
         compsize = 0;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
+    glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
     __glXClearErrorOccured();
-    CALL_GetMinmax(GET_DISPATCH(), (target, reset, format, type, answer));
+    glGetMinmax(target, reset, format, type, answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -505,8 +484,7 @@ GetColorTable(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     type = *(GLenum *) (pc + 8);
     swapBytes = *(GLboolean *) (pc + 12);
 
-    CALL_GetColorTableParameteriv(GET_DISPATCH(),
-                                  (target, GL_COLOR_TABLE_WIDTH, &width));
+    glGetColorTableParameteriv(target, GL_COLOR_TABLE_WIDTH, &width);
     /*
      * The one query above might fail if we're in a state where queries
      * are illegal, but then width would still be zero anyway.
@@ -515,12 +493,11 @@ GetColorTable(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     if (compsize < 0)
         compsize = 0;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
+    glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
     __glXClearErrorOccured();
-    CALL_GetColorTable(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                        *(GLenum *) (pc + 4),
-                                        *(GLenum *) (pc + 8), answer));
+    glGetColorTable(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                    *(GLenum *) (pc + 8), answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
diff --git a/glx/singlepixswap.c b/glx/singlepixswap.c
index c777cea..8469101 100644
--- a/glx/singlepixswap.c
+++ b/glx/singlepixswap.c
@@ -38,10 +38,6 @@
 #include "unpack.h"
 #include "indirect_dispatch.h"
 #include "indirect_size_get.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 
 int
 __glXDispSwap_ReadPixels(__GLXclientState * cl, GLbyte * pc)
@@ -81,17 +77,13 @@ __glXDispSwap_ReadPixels(__GLXclientState * cl, GLbyte * pc)
     if (compsize < 0)
         compsize = 0;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_LSB_FIRST, lsbFirst));
+    glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
+    glPixelStorei(GL_PACK_LSB_FIRST, lsbFirst);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
     __glXClearErrorOccured();
-    CALL_ReadPixels(GET_DISPATCH(),
-                    (*(GLint *) (pc + 0),
-                     *(GLint *) (pc + 4),
-                     *(GLsizei *) (pc + 8),
-                     *(GLsizei *) (pc + 12),
-                     *(GLenum *) (pc + 16), *(GLenum *) (pc + 20), answer)
-        );
+    glReadPixels(*(GLint *) (pc + 0), *(GLint *) (pc + 4),
+                 *(GLsizei *) (pc + 8), *(GLsizei *) (pc + 12),
+                 *(GLenum *) (pc + 16), *(GLenum *) (pc + 20), answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -140,13 +132,10 @@ __glXDispSwap_GetTexImage(__GLXclientState * cl, GLbyte * pc)
     target = *(GLenum *) (pc + 0);
     swapBytes = *(GLboolean *) (pc + 16);
 
-    CALL_GetTexLevelParameteriv(GET_DISPATCH(),
-                                (target, level, GL_TEXTURE_WIDTH, &width));
-    CALL_GetTexLevelParameteriv(GET_DISPATCH(),
-                                (target, level, GL_TEXTURE_HEIGHT, &height));
+    glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &width);
+    glGetTexLevelParameteriv(target, level, GL_TEXTURE_HEIGHT, &height);
     if (target == GL_TEXTURE_3D) {
-        CALL_GetTexLevelParameteriv(GET_DISPATCH(),
-                                    (target, level, GL_TEXTURE_DEPTH, &depth));
+        glGetTexLevelParameteriv(target, level, GL_TEXTURE_DEPTH, &depth);
     }
     /*
      * The three queries above might fail if we're in a state where queries
@@ -157,13 +146,11 @@ __glXDispSwap_GetTexImage(__GLXclientState * cl, GLbyte * pc)
     if (compsize < 0)
         compsize = 0;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
+    glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
     __glXClearErrorOccured();
-    CALL_GetTexImage(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                      *(GLint *) (pc + 4),
-                                      *(GLenum *) (pc + 8),
-                                      *(GLenum *) (pc + 12), answer));
+    glGetTexImage(*(GLenum *) (pc + 0), *(GLint *) (pc + 4),
+                  *(GLenum *) (pc + 8), *(GLenum *) (pc + 12), answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -205,11 +192,11 @@ __glXDispSwap_GetPolygonStipple(__GLXclientState * cl, GLbyte * pc)
     pc += __GLX_SINGLE_HDR_SIZE;
     lsbFirst = *(GLboolean *) (pc + 0);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_LSB_FIRST, lsbFirst));
+    glPixelStorei(GL_PACK_LSB_FIRST, lsbFirst);
     __GLX_GET_ANSWER_BUFFER(answer, cl, 128, 1);
 
     __glXClearErrorOccured();
-    CALL_GetPolygonStipple(GET_DISPATCH(), ((GLubyte *) answer));
+    glGetPolygonStipple((GLubyte *) answer);
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
         __GLX_SWAP_REPLY_HEADER();
@@ -255,10 +242,8 @@ GetSeparableFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     /* target must be SEPARABLE_2D, however I guess we can let the GL
        barf on this one.... */
 
-    CALL_GetConvolutionParameteriv(GET_DISPATCH(),
-                                   (target, GL_CONVOLUTION_WIDTH, &width));
-    CALL_GetConvolutionParameteriv(GET_DISPATCH(),
-                                   (target, GL_CONVOLUTION_HEIGHT, &height));
+    glGetConvolutionParameteriv(target, GL_CONVOLUTION_WIDTH, &width);
+    glGetConvolutionParameteriv(target, GL_CONVOLUTION_HEIGHT, &height);
     /*
      * The two queries above might fail if we're in a state where queries
      * are illegal, but then width and height would still be zero anyway.
@@ -273,13 +258,11 @@ GetSeparableFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     compsize = __GLX_PAD(compsize);
     compsize2 = __GLX_PAD(compsize2);
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
+    glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize + compsize2, 1);
     __glXClearErrorOccured();
-    CALL_GetSeparableFilter(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                             *(GLenum *) (pc + 4),
-                                             *(GLenum *) (pc + 8),
-                                             answer, answer + compsize, NULL));
+    glGetSeparableFilter(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                         *(GLenum *) (pc + 8), answer, answer + compsize, NULL);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -342,15 +325,12 @@ GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     target = *(GLenum *) (pc + 0);
     swapBytes = *(GLboolean *) (pc + 12);
 
-    CALL_GetConvolutionParameteriv(GET_DISPATCH(),
-                                   (target, GL_CONVOLUTION_WIDTH, &width));
+    glGetConvolutionParameteriv(target, GL_CONVOLUTION_WIDTH, &width);
     if (target == GL_CONVOLUTION_2D) {
         height = 1;
     }
     else {
-        CALL_GetConvolutionParameteriv(GET_DISPATCH(),
-                                       (target, GL_CONVOLUTION_HEIGHT,
-                                        &height));
+        glGetConvolutionParameteriv(target, GL_CONVOLUTION_HEIGHT, &height);
     }
     /*
      * The two queries above might fail if we're in a state where queries
@@ -360,12 +340,11 @@ GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     if (compsize < 0)
         compsize = 0;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
+    glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
     __glXClearErrorOccured();
-    CALL_GetConvolutionFilter(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                               *(GLenum *) (pc + 4),
-                                               *(GLenum *) (pc + 8), answer));
+    glGetConvolutionFilter(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                           *(GLenum *) (pc + 8), answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -429,8 +408,7 @@ GetHistogram(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     swapBytes = *(GLboolean *) (pc + 12);
     reset = *(GLboolean *) (pc + 13);
 
-    CALL_GetHistogramParameteriv(GET_DISPATCH(),
-                                 (target, GL_HISTOGRAM_WIDTH, &width));
+    glGetHistogramParameteriv(target, GL_HISTOGRAM_WIDTH, &width);
     /*
      * The one query above might fail if we're in a state where queries
      * are illegal, but then width would still be zero anyway.
@@ -439,10 +417,10 @@ GetHistogram(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     if (compsize < 0)
         compsize = 0;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
+    glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
     __glXClearErrorOccured();
-    CALL_GetHistogram(GET_DISPATCH(), (target, reset, format, type, answer));
+    glGetHistogram(target, reset, format, type, answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -507,10 +485,10 @@ GetMinmax(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     if (compsize < 0)
         compsize = 0;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
+    glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
     __glXClearErrorOccured();
-    CALL_GetMinmax(GET_DISPATCH(), (target, reset, format, type, answer));
+    glGetMinmax(target, reset, format, type, answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
@@ -569,8 +547,7 @@ GetColorTable(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     target = *(GLenum *) (pc + 0);
     swapBytes = *(GLboolean *) (pc + 12);
 
-    CALL_GetColorTableParameteriv(GET_DISPATCH(),
-                                  (target, GL_COLOR_TABLE_WIDTH, &width));
+    glGetColorTableParameteriv(target, GL_COLOR_TABLE_WIDTH, &width);
     /*
      * The one query above might fail if we're in a state where queries
      * are illegal, but then width would still be zero anyway.
@@ -579,12 +556,11 @@ GetColorTable(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
     if (compsize < 0)
         compsize = 0;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
+    glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
     __glXClearErrorOccured();
-    CALL_GetColorTable(GET_DISPATCH(), (*(GLenum *) (pc + 0),
-                                        *(GLenum *) (pc + 4),
-                                        *(GLenum *) (pc + 8), answer));
+    glGetColorTable(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                    *(GLenum *) (pc + 8), answer);
 
     if (__glXErrorOccured()) {
         __GLX_BEGIN_REPLY(0);
diff --git a/glx/singlesize.c b/glx/singlesize.c
index 777ebb3..4c60b69 100644
--- a/glx/singlesize.c
+++ b/glx/singlesize.c
@@ -36,10 +36,6 @@
 #include "glxserver.h"
 #include "singlesize.h"
 #include "indirect_size_get.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 
 /*
 ** These routines compute the size of variable-size returned parameters.
@@ -75,7 +71,7 @@ __glGetMap_size(GLenum target, GLenum query)
         switch (query) {
         case GL_COEFF:
             k = __glMap1d_size(target);
-            CALL_GetMapiv(GET_DISPATCH(), (target, GL_ORDER, &order));
+            glGetMapiv(target, GL_ORDER, &order);
             /*
              ** The query above might fail, but then order will be zero anyway.
              */
@@ -99,7 +95,7 @@ __glGetMap_size(GLenum target, GLenum query)
         case GL_COEFF:
             k = __glMap2d_size(target);
             majorMinor[0] = majorMinor[1] = 0;
-            CALL_GetMapiv(GET_DISPATCH(), (target, GL_ORDER, majorMinor));
+            glGetMapiv(target, GL_ORDER, majorMinor);
             /*
              ** The query above might fail, but then majorMinor will be zeroes
              */
@@ -172,7 +168,7 @@ __glGetPixelMap_size(GLenum map)
     default:
         return -1;
     }
-    CALL_GetIntegerv(GET_DISPATCH(), (query, &size));
+    glGetIntegerv(query, &size);
     return size;
 }
 
diff --git a/glx/swap_interval.c b/glx/swap_interval.c
index 7533d26..17bc992 100644
--- a/glx/swap_interval.c
+++ b/glx/swap_interval.c
@@ -33,10 +33,6 @@
 #include "unpack.h"
 #include "indirect_size_get.h"
 #include "indirect_dispatch.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 #include "glxbyteorder.h"
 
 static int DoSwapInterval(__GLXclientState * cl, GLbyte * pc, int do_swap);
diff --git a/glx/xfont.c b/glx/xfont.c
index b203866..83a455d 100644
--- a/glx/xfont.c
+++ b/glx/xfont.c
@@ -35,10 +35,6 @@
 #include "glxserver.h"
 #include "glxutil.h"
 #include "unpack.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
 #include "indirect_dispatch.h"
 #include <GL/gl.h>
 #include <pixmapstr.h>
@@ -94,10 +90,8 @@ __glXMakeBitmapFromGlyph(FontPtr font, CharInfoPtr pci)
         pglyph -= widthPadded;
         p += widthPadded;
     }
-    CALL_Bitmap(GET_DISPATCH(), (w, h, -pci->metrics.leftSideBearing,
-                                 pci->metrics.descent,
-                                 pci->metrics.characterWidth, 0,
-                                 allocbuf ? allocbuf : buf));
+    glBitmap(w, h, -pci->metrics.leftSideBearing, pci->metrics.descent,
+             pci->metrics.characterWidth, 0, allocbuf ? allocbuf : buf);
 
     free(allocbuf);
     return Success;
@@ -118,13 +112,12 @@ MakeBitmapsFromFont(FontPtr pFont, int first, int count, int list_base)
     int rv;                     /* return value */
     int encoding = (FONTLASTROW(pFont) == 0) ? Linear16Bit : TwoD16Bit;
 
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, FALSE));
-    CALL_PixelStorei(GET_DISPATCH(),
-                     (GL_UNPACK_LSB_FIRST, BITMAP_BIT_ORDER == LSBFirst));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, 0));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, 0));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, 0));
-    CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, GLYPHPADBYTES));
+    glPixelStorei(GL_UNPACK_SWAP_BYTES, FALSE);
+    glPixelStorei(GL_UNPACK_LSB_FIRST, BITMAP_BIT_ORDER == LSBFirst);
+    glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
+    glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
+    glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
+    glPixelStorei(GL_UNPACK_ALIGNMENT, GLYPHPADBYTES);
     for (i = 0; i < count; i++) {
         chs[0] = (first + i) >> 8;      /* high byte is first byte */
         chs[1] = first + i;
@@ -135,14 +128,14 @@ MakeBitmapsFromFont(FontPtr pFont, int first, int count, int list_base)
         /*
          ** Define a display list containing just a glBitmap() call.
          */
-        CALL_NewList(GET_DISPATCH(), (list_base + i, GL_COMPILE));
+        glNewList(list_base + i, GL_COMPILE);
         if (nglyphs) {
             rv = __glXMakeBitmapFromGlyph(pFont, pci);
             if (rv) {
                 return rv;
             }
         }
-        CALL_EndList(GET_DISPATCH(), ());
+        glEndList();
     }
     return Success;
 }
@@ -167,8 +160,7 @@ __glXDisp_UseXFont(__GLXclientState * cl, GLbyte * pc)
         return error;
     }
 
-    CALL_GetIntegerv(GET_DISPATCH(),
-                     (GL_LIST_INDEX, (GLint *) &currentListIndex));
+    glGetIntegerv(GL_LIST_INDEX, (GLint *) &currentListIndex);
     if (currentListIndex != 0) {
         /*
          ** A display list is currently being made.  It is an error
commit 8aacf47e1778d8b72811b025a82452b933d3c1f2
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Oct 4 12:58:19 2013 -0400

    glx: Remove DRI1 AIGLX (v2)
    
    Mesa doesn't ship DRI1 drivers as of 8.0, which is about 18 months and
    three releases ago.  The main reason to have wanted DRI1 AIGLX was to
    get a GLX compositor working, but DRI1's (lack of) memory management API
    meant that the cost of a GLX compositor was breaking direct GLX apps,
    which isn't a great tradeoff.
    
    Of the DRI1 drivers Mesa has dropped, I believe only mga stands to lose
    some functionality here, since it and only it has support for
    NV_texture_rectangle.  Since that's required for every extant GLX
    compositor I know of, I conclude that anybody with a savage, say, would
    probably not notice AIGLX going away, since they wouldn't be running a
    GLX compositor in the first place.
    
    In the future we'd like to use GL in the server in a more natural way,
    as just another EGL client, including in the GLX implementation itself.
    Since there's no EGL implemented for DRI1 drivers, this would already
    doom AIGLX on DRI1 (short of entirely forking the GLX implementation,
    which I'm not enthusiastic about).
    
    v2: Remove DRI1 from AIGLX conditionals in configure.ac [anholt]
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/configure.ac b/configure.ac
index 7b4e70f..ff6cfc5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1080,10 +1080,10 @@ if test "x$GLX" = xno; then
         AIGLX=no
 fi
 
-if test "x$AIGLX" = xyes -a \( "x$DRI" = xyes -o "x$DRI2" = xyes \); then
+if test "x$AIGLX" = xyes -a \( "x$DRI2" = xyes \); then
 	AC_DEFINE(AIGLX, 1, [Build AIGLX loader])
 fi
-AM_CONDITIONAL(AIGLX_DRI_LOADER, { test "x$DRI" = xyes || test "x$DRI2" = xyes; } && test "x$AIGLX" = xyes)
+AM_CONDITIONAL(AIGLX_DRI_LOADER, { test "x$DRI2" = xyes; } && test "x$AIGLX" = xyes)
 
 if test "x$GLX_USE_TLS" = xyes ; then
 	GLX_DEFINES="-DGLX_USE_TLS -DPTHREADS"
diff --git a/glx/Makefile.am b/glx/Makefile.am
index d1c203d..f22a1b6 100644
--- a/glx/Makefile.am
+++ b/glx/Makefile.am
@@ -47,10 +47,6 @@ glapi_sources =					\
 
 libglxdri_la_SOURCES =
 
-if DRI
-libglxdri_la_SOURCES += glxdri.c
-endif
-
 if DRI2_AIGLX
 libglxdri_la_SOURCES += glxdri2.c
 endif
diff --git a/glx/glxdri.c b/glx/glxdri.c
deleted file mode 100644
index 1ac6839..0000000
--- a/glx/glxdri.c
+++ /dev/null
@@ -1,1172 +0,0 @@
-/*
- * Copyright © 2006 Red Hat, Inc
- *
- * Permission to use, copy, modify, distribute, and sell this software
- * and its documentation for any purpose is hereby granted without
- * fee, provided that the above copyright notice appear in all copies
- * and that both that copyright notice and this permission notice
- * appear in supporting documentation, and that the name of Red Hat,
- * Inc not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission.  Red Hat, Inc makes no representations about the
- * suitability of this software for any purpose.  It is provided "as
- * is" without express or implied warranty.
- *
- * RED HAT, INC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
- * NO EVENT SHALL RED HAT, INC BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL 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 PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/time.h>
-#include <dlfcn.h>
-
-#include <drm.h>
-#include <GL/gl.h>
-#include <GL/internal/dri_interface.h>
-#include <GL/glxtokens.h>
-
-#include <windowstr.h>
-#include <os.h>
-#include <damage.h>
-
-#define _XF86DRI_SERVER_
-#include <drm_sarea.h>
-#include <xf86drm.h>
-#include <X11/dri/xf86driproto.h>
-#include <xf86str.h>
-#include <xf86.h>
-#include <dri.h>
-
-#include "servermd.h"
-
-#define DRI_NEW_INTERFACE_ONLY
-#include "glxserver.h"
-#include "glxutil.h"
-#include "glxdricommon.h"
-
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
-#include "extension_string.h"
-
-typedef struct __GLXDRIscreen __GLXDRIscreen;
-typedef struct __GLXDRIcontext __GLXDRIcontext;
-typedef struct __GLXDRIdrawable __GLXDRIdrawable;
-
-struct __GLXDRIscreen {
-    __GLXscreen base;
-    __DRIscreen *driScreen;
-    void *driver;
-
-    xf86EnterVTProc *enterVT;
-    xf86LeaveVTProc *leaveVT;
-
-    const __DRIcoreExtension *core;
-    const __DRIlegacyExtension *legacy;
-    const __DRIcopySubBufferExtension *copySubBuffer;
-    const __DRIswapControlExtension *swapControl;
-    const __DRIconfig **driConfigs;
-
-#ifdef __DRI_TEX_OFFSET
-    const __DRItexOffsetExtension *texOffset;
-    DRITexOffsetStartProcPtr texOffsetStart;
-    DRITexOffsetFinishProcPtr texOffsetFinish;
-    __GLXDRIdrawable *texOffsetOverride[16];
-    GLuint lastTexOffsetOverride;
-#endif
-
-    unsigned char glx_enable_bits[__GLX_EXT_BYTES];
-};
-
-struct __GLXDRIcontext {
-    __GLXcontext base;
-    __DRIcontext *driContext;
-    XID hwContextID;
-};
-
-struct __GLXDRIdrawable {
-    __GLXdrawable base;
-    __DRIdrawable *driDrawable;
-
-    /* Pulled in from old __GLXpixmap */
-#ifdef __DRI_TEX_OFFSET
-    GLint texname;
-    __GLXDRIcontext *ctx;
-    unsigned long long offset;
-    DamagePtr pDamage;
-#endif
-};
-
-static void
-__glXDRIleaveServer(GLboolean rendering)
-{
-    int i;
-
-    for (i = 0; rendering && i < screenInfo.numScreens; i++) {
-        __GLXDRIscreen *const screen =
-            (__GLXDRIscreen *) glxGetScreen(screenInfo.screens[i]);
-        GLuint lastOverride = screen->lastTexOffsetOverride;
-
-        if (lastOverride) {
-            __GLXDRIdrawable **texOffsetOverride = screen->texOffsetOverride;
-            int j;
-
-            for (j = 0; j < lastOverride; j++) {
-                __GLXDRIdrawable *pGlxPix = texOffsetOverride[j];
-
-                if (pGlxPix && pGlxPix->texname) {
-                    pGlxPix->offset =
-                        screen->texOffsetStart((PixmapPtr) pGlxPix->base.pDraw);
-                }
-            }
-        }
-    }
-
-    DRIBlockHandler(NULL, NULL, NULL);
-
-    for (i = 0; rendering && i < screenInfo.numScreens; i++) {
-        __GLXDRIscreen *const screen =
-            (__GLXDRIscreen *) glxGetScreen(screenInfo.screens[i]);
-        GLuint lastOverride = screen->lastTexOffsetOverride;
-
-        if (lastOverride) {
-            __GLXDRIdrawable **texOffsetOverride = screen->texOffsetOverride;
-            int j;
-
-            for (j = 0; j < lastOverride; j++) {
-                __GLXDRIdrawable *pGlxPix = texOffsetOverride[j];
-
-                if (pGlxPix && pGlxPix->texname) {
-                    screen->texOffset->setTexOffset(pGlxPix->ctx->driContext,
-                                                    pGlxPix->texname,
-                                                    pGlxPix->offset,
-                                                    pGlxPix->base.pDraw->depth,
-                                                    ((PixmapPtr) pGlxPix->base.
-                                                     pDraw)->devKind);
-                }
-            }
-        }
-    }
-}
-
-static void
-__glXDRIenterServer(GLboolean rendering)
-{
-    int i;
-
-    for (i = 0; rendering && i < screenInfo.numScreens; i++) {
-        __GLXDRIscreen *const screen = (__GLXDRIscreen *)
-            glxGetScreen(screenInfo.screens[i]);
-
-        if (screen->lastTexOffsetOverride) {
-            CALL_Flush(GET_DISPATCH(), ());
-            break;
-        }
-    }
-
-    DRIWakeupHandler(NULL, 0, NULL);
-}
-
-static void
-__glXDRIdoReleaseTexImage(__GLXDRIscreen * screen, __GLXDRIdrawable * drawable)
-{
-    GLuint lastOverride = screen->lastTexOffsetOverride;
-
-    if (lastOverride) {
-        __GLXDRIdrawable **texOffsetOverride = screen->texOffsetOverride;
-        int i;
-
-        for (i = 0; i < lastOverride; i++) {
-            if (texOffsetOverride[i] == drawable) {
-                if (screen->texOffsetFinish)
-                    screen->texOffsetFinish((PixmapPtr) drawable->base.pDraw);
-
-                texOffsetOverride[i] = NULL;
-
-                if (i + 1 == lastOverride) {
-                    lastOverride = 0;
-
-                    while (i--) {
-                        if (texOffsetOverride[i]) {
-                            lastOverride = i + 1;
-                            break;
-                        }
-                    }
-
-                    screen->lastTexOffsetOverride = lastOverride;
-
-                    break;
-                }
-            }
-        }
-    }
-}
-
-static void
-__glXDRIdrawableDestroy(__GLXdrawable * drawable)
-{
-    __GLXDRIdrawable *private = (__GLXDRIdrawable *) drawable;
-    __GLXDRIscreen *screen;
-    int i;
-
-    for (i = 0; i < screenInfo.numScreens; i++) {
-        screen = (__GLXDRIscreen *) glxGetScreen(screenInfo.screens[i]);
-        __glXDRIdoReleaseTexImage(screen, private);
-    }
-
-    /* If the X window was destroyed, the dri DestroyWindow hook will
-     * aready have taken care of this, so only call if pDraw isn't NULL. */
-    if (drawable->pDraw != NULL) {
-        screen = (__GLXDRIscreen *) glxGetScreen(drawable->pDraw->pScreen);
-        (*screen->core->destroyDrawable) (private->driDrawable);
-
-        __glXenterServer(GL_FALSE);
-        DRIDestroyDrawable(drawable->pDraw->pScreen,
-                           serverClient, drawable->pDraw);
-        __glXleaveServer(GL_FALSE);
-    }
-
-    __glXDrawableRelease(drawable);
-
-    free(private);
-}
-
-static GLboolean
-__glXDRIdrawableSwapBuffers(ClientPtr client, __GLXdrawable * basePrivate)
-{
-    __GLXDRIdrawable *private = (__GLXDRIdrawable *) basePrivate;
-    __GLXDRIscreen *screen =
-        (__GLXDRIscreen *) glxGetScreen(basePrivate->pDraw->pScreen);
-
-    (*screen->core->swapBuffers) (private->driDrawable);
-
-    return TRUE;
-}
-
-static int
-__glXDRIdrawableSwapInterval(__GLXdrawable * baseDrawable, int interval)
-{
-    __GLXDRIdrawable *draw = (__GLXDRIdrawable *) baseDrawable;
-    __GLXDRIscreen *screen =
-        (__GLXDRIscreen *) glxGetScreen(baseDrawable->pDraw->pScreen);
-
-    if (screen->swapControl)
-        screen->swapControl->setSwapInterval(draw->driDrawable, interval);
-
-    return 0;
-}
-
-static void
-__glXDRIdrawableCopySubBuffer(__GLXdrawable * basePrivate,
-                              int x, int y, int w, int h)
-{
-    __GLXDRIdrawable *private = (__GLXDRIdrawable *) basePrivate;
-    __GLXDRIscreen *screen = (__GLXDRIscreen *)
-        glxGetScreen(basePrivate->pDraw->pScreen);
-
-    if (screen->copySubBuffer)
-        screen->copySubBuffer->copySubBuffer(private->driDrawable, x, y, w, h);
-}
-
-static void
-__glXDRIcontextDestroy(__GLXcontext * baseContext)
-{
-    __GLXDRIcontext *context = (__GLXDRIcontext *) baseContext;
-    __GLXDRIscreen *screen = (__GLXDRIscreen *) context->base.pGlxScreen;
-    Bool retval;
-
-    screen->core->destroyContext(context->driContext);
-
-    __glXenterServer(GL_FALSE);
-    retval = DRIDestroyContext(baseContext->pGlxScreen->pScreen,
-                               context->hwContextID);
-    __glXleaveServer(GL_FALSE);
-
-    __glXContextDestroy(&context->base);
-    free(context);
-}
-
-static int
-__glXDRIcontextMakeCurrent(__GLXcontext * baseContext)
-{
-    __GLXDRIcontext *context = (__GLXDRIcontext *) baseContext;
-    __GLXDRIscreen *screen = (__GLXDRIscreen *) context->base.pGlxScreen;
-    __GLXDRIdrawable *draw = (__GLXDRIdrawable *) baseContext->drawPriv;
-    __GLXDRIdrawable *read = (__GLXDRIdrawable *) baseContext->readPriv;
-
-    return (*screen->core->bindContext) (context->driContext,
-                                         draw->driDrawable, read->driDrawable);
-}
-
-static int
-__glXDRIcontextLoseCurrent(__GLXcontext * baseContext)
-{
-    __GLXDRIcontext *context = (__GLXDRIcontext *) baseContext;
-    __GLXDRIscreen *screen = (__GLXDRIscreen *) context->base.pGlxScreen;
-
-    return (*screen->core->unbindContext) (context->driContext);
-}
-
-static int
-__glXDRIcontextCopy(__GLXcontext * baseDst, __GLXcontext * baseSrc,
-                    unsigned long mask)
-{
-    __GLXDRIcontext *dst = (__GLXDRIcontext *) baseDst;
-    __GLXDRIcontext *src = (__GLXDRIcontext *) baseSrc;
-    __GLXDRIscreen *screen = (__GLXDRIscreen *) dst->base.pGlxScreen;
-
-    return (*screen->core->copyContext) (dst->driContext,
-                                         src->driContext, mask);
-}
-
-static void
-glxFillAlphaChannel(CARD32 *pixels, CARD32 rowstride, int width, int height)
-{
-    int i;
-    CARD32 *p, *end;
-
-    rowstride /= 4;
-
-    for (i = 0; i < height; i++) {
-        p = pixels;
-        end = p + width;
-        while (p < end)
-            *p++ |= 0xFF000000;
-        pixels += rowstride;
-    }
-}
-
-static Bool
-testTexOffset(__GLXDRIscreen * const screen, PixmapPtr pPixmap)
-{
-    Bool ret;
-
-    if (!screen->texOffsetStart || !screen->texOffset)
-        return FALSE;
-
-    __glXenterServer(GL_FALSE);
-    ret = screen->texOffsetStart(pPixmap) != ~0ULL;
-    __glXleaveServer(GL_FALSE);
-
-    return ret;
-}
-
-/*
- * (sticking this here for lack of a better place)
- * Known issues with the GLX_EXT_texture_from_pixmap implementation:
- * - In general we ignore the fbconfig, lots of examples follow
- * - No fbconfig handling for multiple mipmap levels
- * - No fbconfig handling for 1D textures
- * - No fbconfig handling for TEXTURE_TARGET
- * - No fbconfig exposure of Y inversion state
- * - No GenerateMipmapEXT support (due to no FBO support)
- * - No support for anything but 16bpp and 32bpp-sparse pixmaps
- */
-
-static int
-__glXDRIbindTexImage(__GLXcontext * baseContext,
-                     int buffer, __GLXdrawable * glxPixmap)
-{
-    RegionPtr pRegion = NULL;
-    PixmapPtr pixmap;
-    int bpp, override = 0, texname;
-    GLenum format, type;
-    ScreenPtr pScreen = glxPixmap->pDraw->pScreen;
-    __GLXDRIdrawable *driDraw = (__GLXDRIdrawable *) glxPixmap;
-    __GLXDRIscreen *const screen = (__GLXDRIscreen *) glxGetScreen(pScreen);
-
-    CALL_GetIntegerv(GET_DISPATCH(), (glxPixmap->target == GL_TEXTURE_2D ?
-                                      GL_TEXTURE_BINDING_2D :
-                                      GL_TEXTURE_BINDING_RECTANGLE_NV,
-                                      &texname));
-
-    if (!texname)
-        return __glXError(GLXBadContextState);
-
-    pixmap = (PixmapPtr) glxPixmap->pDraw;
-
-    if (testTexOffset(screen, pixmap)) {
-        __GLXDRIdrawable **texOffsetOverride = screen->texOffsetOverride;
-        int i, firstEmpty = 16;
-
-        for (i = 0; i < 16; i++) {
-            if (texOffsetOverride[i] == driDraw)
-                goto alreadyin;
-
-            if (firstEmpty == 16 && !texOffsetOverride[i])
-                firstEmpty = i;
-        }
-
-        if (firstEmpty == 16) {
-            ErrorF("%s: Failed to register texture offset override\n",
-                   __func__);
-            goto nooverride;
-        }
-
-        if (firstEmpty >= screen->lastTexOffsetOverride)
-            screen->lastTexOffsetOverride = firstEmpty + 1;
-
-        texOffsetOverride[firstEmpty] = driDraw;
-
- alreadyin:
-        override = 1;
-
-        driDraw->ctx = (__GLXDRIcontext *) baseContext;
-
-        if (texname == driDraw->texname)
-            return Success;
-
-        driDraw->texname = texname;
-
-        screen->texOffset->setTexOffset(driDraw->ctx->driContext, texname, 0,
-                                        pixmap->drawable.depth,
-                                        pixmap->devKind);
-    }
- nooverride:
-
-    if (!driDraw->pDamage) {
-        if (!override) {
-            driDraw->pDamage = DamageCreate(NULL, NULL, DamageReportNone,
-                                            TRUE, pScreen, NULL);
-            if (!driDraw->pDamage)
-                return BadAlloc;
-
-            DamageRegister((DrawablePtr) pixmap, driDraw->pDamage);
-        }
-
-        pRegion = NULL;
-    }
-    else {
-        pRegion = DamageRegion(driDraw->pDamage);
-        if (RegionNil(pRegion))
-            return Success;
-    }
-
-    /* XXX 24bpp packed, 8, etc */
-    if (pixmap->drawable.depth >= 24) {
-        bpp = 4;
-        format = GL_BGRA;
-        type =
-#if X_BYTE_ORDER == X_BIG_ENDIAN
-            !override ? GL_UNSIGNED_INT_8_8_8_8_REV :
-#endif
-            GL_UNSIGNED_BYTE;
-    }
-    else {
-        bpp = 2;
-        format = GL_RGB;
-        type = GL_UNSIGNED_SHORT_5_6_5;
-    }
-
-    if (pRegion == NULL) {
-        void *data = NULL;
-
-        if (!override) {
-            unsigned pitch = PixmapBytePad(pixmap->drawable.width,
-                                           pixmap->drawable.depth);
-
-            data = malloc(pitch * pixmap->drawable.height);
-
-            __glXenterServer(GL_FALSE);
-            pScreen->GetImage(&pixmap->drawable, 0 /*pixmap->drawable.x */ ,
-                              0 /*pixmap->drawable.y */ ,
-                              pixmap->drawable.width,
-                              pixmap->drawable.height, ZPixmap, ~0, data);
-            __glXleaveServer(GL_FALSE);
-
-            if (pixmap->drawable.depth == 24)
-                glxFillAlphaChannel(data,
-                                    pitch,
-                                    pixmap->drawable.width,
-                                    pixmap->drawable.height);
-
-            CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH,
-                                              pitch / bpp));
-            CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, 0));
-            CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, 0));
-        }
-
-        CALL_TexImage2D(GET_DISPATCH(),
-                        (glxPixmap->target,
-                         0,
-                         bpp == 4 ? 4 : 3,
-                         pixmap->drawable.width,
-                         pixmap->drawable.height, 0, format, type, data));
-
-        free(data);
-    }
-    else if (!override) {
-        int i, numRects;
-        BoxPtr p;
-
-        numRects = RegionNumRects(pRegion);
-        p = RegionRects(pRegion);
-
-        CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS, 0));
-        CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, 0));
-
-        for (i = 0; i < numRects; i++) {
-            unsigned pitch = PixmapBytePad(p[i].x2 - p[i].x1,
-                                           pixmap->drawable.depth);
-            void *data = malloc(pitch * (p[i].y2 - p[i].y1));
-
-            __glXenterServer(GL_FALSE);
-            pScreen->GetImage(&pixmap->drawable, /*pixmap->drawable.x + */
-                              p[i].x1,
-                              /*pixmap->drawable.y */ +p[i].y1,
-                              p[i].x2 - p[i].x1,
-                              p[i].y2 - p[i].y1, ZPixmap, ~0, data);
-            __glXleaveServer(GL_FALSE);
-
-            if (pixmap->drawable.depth == 24)
-                glxFillAlphaChannel(data,
-                                    pitch,
-                                    p[i].x2 - p[i].x1, p[i].y2 - p[i].y1);
-
-            CALL_PixelStorei(GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH,
-                                              pitch / bpp));
-
-            CALL_TexSubImage2D(GET_DISPATCH(),
-                               (glxPixmap->target,
-                                0,
-                                p[i].x1, p[i].y1,
-                                p[i].x2 - p[i].x1, p[i].y2 - p[i].y1,
-                                format, type, data));
-
-            free(data);
-        }
-    }
-
-    if (!override)
-        DamageEmpty(driDraw->pDamage);
-
-    return Success;
-}
-
-static int
-__glXDRIreleaseTexImage(__GLXcontext * baseContext,
-                        int buffer, __GLXdrawable * pixmap)
-{
-    __GLXDRIscreen *screen =
-        (__GLXDRIscreen *) glxGetScreen(pixmap->pDraw->pScreen);
-    __GLXDRIdrawable *drawable = (__GLXDRIdrawable *) pixmap;
-
-    __glXDRIdoReleaseTexImage(screen, drawable);
-
-    return Success;
-}
-
-static __GLXtextureFromPixmap __glXDRItextureFromPixmap = {
-    __glXDRIbindTexImage,
-    __glXDRIreleaseTexImage
-};
-
-static void
-__glXDRIscreenDestroy(__GLXscreen * baseScreen)
-{
-    int i;
-
-    __GLXDRIscreen *screen = (__GLXDRIscreen *) baseScreen;
-
-    screen->core->destroyScreen(screen->driScreen);
-
-    dlclose(screen->driver);
-
-    __glXScreenDestroy(baseScreen);
-
-    if (screen->driConfigs) {
-        for (i = 0; screen->driConfigs[i] != NULL; i++)
-            free((__DRIconfig **) screen->driConfigs[i]);
-        free(screen->driConfigs);
-    }
-
-    free(screen);
-}
-
-static __GLXcontext *
-__glXDRIscreenCreateContext(__GLXscreen * baseScreen,
-                            __GLXconfig * glxConfig,
-                            __GLXcontext * baseShareContext,
-                            unsigned num_attribs,
-                            const uint32_t *attribs,
-                            int *error)
-{
-    __GLXDRIscreen *screen = (__GLXDRIscreen *) baseScreen;
-    __GLXDRIcontext *context, *shareContext;
-    __GLXDRIconfig *config = (__GLXDRIconfig *) glxConfig;
-    VisualPtr visual;
-    int i;
-    GLboolean retval;
-    __DRIcontext *driShare;
-    drm_context_t hwContext;
-    ScreenPtr pScreen = baseScreen->pScreen;
-
-    /* DRI1 cannot support createContextAttribs, so these parameters will
-     * never be used.
-     */
-    (void) num_attribs;
-    (void) attribs;
-    (void) error;
-
-    shareContext = (__GLXDRIcontext *) baseShareContext;
-    if (shareContext)
-        driShare = shareContext->driContext;
-    else
-        driShare = NULL;
-
-    if (baseShareContext && baseShareContext->isDirect)
-        return NULL;
-
-    context = calloc(1, sizeof *context);
-    if (context == NULL)
-        return NULL;
-
-    context->base.destroy = __glXDRIcontextDestroy;
-    context->base.makeCurrent = __glXDRIcontextMakeCurrent;
-    context->base.loseCurrent = __glXDRIcontextLoseCurrent;
-    context->base.copy = __glXDRIcontextCopy;
-
-    context->base.textureFromPixmap = &__glXDRItextureFromPixmap;
-    /* Find the requested X visual */
-    visual = pScreen->visuals;
-    for (i = 0; i < pScreen->numVisuals; i++, visual++)
-        if (visual->vid == glxConfig->visualID)
-            break;
-    if (i == pScreen->numVisuals) {
-        free(context);
-        return NULL;
-    }
-
-    context->hwContextID = FakeClientID(0);
-
-    __glXenterServer(GL_FALSE);
-    retval = DRICreateContext(baseScreen->pScreen, visual,
-                              context->hwContextID, &hwContext);
-    __glXleaveServer(GL_FALSE);
-
-    if (!retval) {
-        free(context);
-        return NULL;
-    }
-
-    context->driContext = screen->legacy->createNewContext(screen->driScreen, config->driConfig, 0,     /* render type */
-                                                           driShare,
-                                                           hwContext, context);
-
-    if (context->driContext == NULL) {
-        __glXenterServer(GL_FALSE);
-        retval = DRIDestroyContext(baseScreen->pScreen, context->hwContextID);
-        __glXleaveServer(GL_FALSE);
-        free(context);
-        return NULL;
-    }
-
-    return &context->base;
-}
-
-static __GLXdrawable *
-__glXDRIscreenCreateDrawable(ClientPtr client,
-                             __GLXscreen * screen,
-                             DrawablePtr pDraw,
-                             XID drawId,
-                             int type, XID glxDrawId, __GLXconfig * glxConfig)
-{
-    __GLXDRIscreen *driScreen = (__GLXDRIscreen *) screen;
-    __GLXDRIconfig *config = (__GLXDRIconfig *) glxConfig;
-    __GLXDRIdrawable *private;
-    GLboolean retval;
-    drm_drawable_t hwDrawable;
-
-    private = calloc(1, sizeof *private);
-    if (private == NULL)
-        return NULL;
-
-    if (!__glXDrawableInit(&private->base, screen,
-                           pDraw, type, glxDrawId, glxConfig)) {
-        free(private);
-        return NULL;
-    }
-
-    private->base.destroy = __glXDRIdrawableDestroy;
-    private->base.swapBuffers = __glXDRIdrawableSwapBuffers;
-    private->base.copySubBuffer = __glXDRIdrawableCopySubBuffer;
-    private->base.waitX = NULL;
-    private->base.waitGL = NULL;
-
-    __glXenterServer(GL_FALSE);
-    retval = DRICreateDrawable(screen->pScreen, serverClient,
-                               pDraw, &hwDrawable);
-    __glXleaveServer(GL_FALSE);
-
-    if (!retval) {
-        free(private);
-        return NULL;
-    }
-
-    /* The last argument is 'attrs', which is used with pbuffers which
-     * we currently don't support. */
-
-    private->driDrawable =
-        (driScreen->legacy->createNewDrawable) (driScreen->driScreen,
-                                                config->driConfig,
-                                                hwDrawable, 0, NULL, private);
-
-    if (private->driDrawable == NULL) {
-        __glXenterServer(GL_FALSE);
-        DRIDestroyDrawable(screen->pScreen, serverClient, pDraw);
-        __glXleaveServer(GL_FALSE);
-        free(private);
-        return NULL;
-    }
-
-    return &private->base;
-}
-
-static GLboolean
-getDrawableInfo(__DRIdrawable * driDrawable,
-                unsigned int *index, unsigned int *stamp,
-                int *x, int *y, int *width, int *height,
-                int *numClipRects, drm_clip_rect_t ** ppClipRects,
-                int *backX, int *backY,
-                int *numBackClipRects, drm_clip_rect_t ** ppBackClipRects,
-                void *data)
-{
-    __GLXDRIdrawable *drawable = data;
-    ScreenPtr pScreen;
-    drm_clip_rect_t *pClipRects, *pBackClipRects;
-    GLboolean retval;
-    size_t size;
-
-    /* If the X window has been destroyed, give up here. */
-    if (drawable->base.pDraw == NULL)
-        return GL_FALSE;
-
-    pScreen = drawable->base.pDraw->pScreen;
-    __glXenterServer(GL_FALSE);
-    retval = DRIGetDrawableInfo(pScreen, drawable->base.pDraw, index, stamp,
-                                x, y, width, height,
-                                numClipRects, &pClipRects,
-                                backX, backY,
-                                numBackClipRects, &pBackClipRects);
-    __glXleaveServer(GL_FALSE);
-
-    if (retval && *numClipRects > 0) {
-        size = sizeof(drm_clip_rect_t) * *numClipRects;
-        *ppClipRects = malloc(size);
-
-        /* Clip cliprects to screen dimensions (redirected windows) */
-        if (*ppClipRects != NULL) {
-            int i, j;
-
-            for (i = 0, j = 0; i < *numClipRects; i++) {
-                (*ppClipRects)[j].x1 = max(pClipRects[i].x1, 0);
-                (*ppClipRects)[j].y1 = max(pClipRects[i].y1, 0);
-                (*ppClipRects)[j].x2 = min(pClipRects[i].x2, pScreen->width);
-                (*ppClipRects)[j].y2 = min(pClipRects[i].y2, pScreen->height);
-
-                if ((*ppClipRects)[j].x1 < (*ppClipRects)[j].x2 &&
-                    (*ppClipRects)[j].y1 < (*ppClipRects)[j].y2) {
-                    j++;
-                }
-            }
-
-            if (*numClipRects != j) {
-                *numClipRects = j;
-                *ppClipRects = realloc(*ppClipRects,
-                                       sizeof(drm_clip_rect_t) * *numClipRects);
-            }
-        }
-        else
-            *numClipRects = 0;
-    }
-    else {
-        *ppClipRects = NULL;
-        *numClipRects = 0;
-    }
-
-    if (retval && *numBackClipRects > 0) {
-        size = sizeof(drm_clip_rect_t) * *numBackClipRects;
-        *ppBackClipRects = malloc(size);
-        if (*ppBackClipRects != NULL)
-            memcpy(*ppBackClipRects, pBackClipRects, size);
-        else
-            *numBackClipRects = 0;
-    }
-    else {
-        *ppBackClipRects = NULL;
-        *numBackClipRects = 0;
-    }
-
-    return retval;
-}
-
-static void
-__glXReportDamage(__DRIdrawable * driDraw,
-                  int x, int y,
-                  drm_clip_rect_t * rects, int num_rects,
-                  GLboolean front_buffer, void *data)
-{
-    __GLXDRIdrawable *drawable = data;
-    DrawablePtr pDraw = drawable->base.pDraw;
-    RegionRec region;
-
-    __glXenterServer(GL_FALSE);
-
-    if (RegionInitBoxes(&region, (BoxPtr) rects, num_rects)) {
-        RegionTranslate(&region, pDraw->x, pDraw->y);
-        DamageDamageRegion(pDraw, &region);
-        RegionUninit(&region);
-    }
-    else {
-        while (num_rects--) {
-            RegionInit(&region, (BoxPtr) rects++, 1);
-            RegionTranslate(&region, pDraw->x, pDraw->y);
-            DamageDamageRegion(pDraw, &region);
-            RegionUninit(&region);
-        }
-    }
-
-    __glXleaveServer(GL_FALSE);
-}
-
-static const __DRIgetDrawableInfoExtension getDrawableInfoExtension = {
-    {__DRI_GET_DRAWABLE_INFO, __DRI_GET_DRAWABLE_INFO_VERSION},
-    getDrawableInfo
-};
-
-static const __DRIdamageExtension damageExtension = {
-    {__DRI_DAMAGE, __DRI_DAMAGE_VERSION},
-    __glXReportDamage,
-};
-
-static const __DRIextension *loader_extensions[] = {
-    &systemTimeExtension.base,
-    &getDrawableInfoExtension.base,
-    &damageExtension.base,
-    NULL
-};
-
-static Bool
-glxDRIEnterVT(ScrnInfoPtr scrn)
-{
-    Bool ret;
-    __GLXDRIscreen *screen = (__GLXDRIscreen *)
-        glxGetScreen(xf86ScrnToScreen(scrn));
-
-    LogMessage(X_INFO, "AIGLX: Resuming AIGLX clients after VT switch\n");
-
-    scrn->EnterVT = screen->enterVT;
-
-    ret = scrn->EnterVT(scrn);
-
-    screen->enterVT = scrn->EnterVT;
-    scrn->EnterVT = glxDRIEnterVT;
-
-    if (!ret)
-        return FALSE;
-
-    glxResumeClients();
-
-    return TRUE;
-}
-
-static void
-glxDRILeaveVT(ScrnInfoPtr scrn)
-{
-    __GLXDRIscreen *screen = (__GLXDRIscreen *)
-        glxGetScreen(xf86ScrnToScreen(scrn));
-
-    LogMessageVerbSigSafe(X_INFO, -1, "AIGLX: Suspending AIGLX clients for VT switch\n");
-
-    glxSuspendClients();
-
-    scrn->LeaveVT = screen->leaveVT;
-    (*screen->leaveVT) (scrn);
-    screen->leaveVT = scrn->LeaveVT;
-    scrn->LeaveVT = glxDRILeaveVT;
-}
-
-static void
-initializeExtensions(__GLXDRIscreen * screen)
-{
-    const __DRIextension **extensions;
-    int i;
-
-    extensions = screen->core->getExtensions(screen->driScreen);
-
-    for (i = 0; extensions[i]; i++) {
-#ifdef __DRI_READ_DRAWABLE
-        if (strcmp(extensions[i]->name, __DRI_READ_DRAWABLE) == 0) {
-            __glXEnableExtension(screen->glx_enable_bits,
-                                 "GLX_SGI_make_current_read");
-
-            LogMessage(X_INFO, "AIGLX: enabled GLX_SGI_make_current_read\n");
-        }
-#endif
-
-#ifdef __DRI_COPY_SUB_BUFFER
-        if (strcmp(extensions[i]->name, __DRI_COPY_SUB_BUFFER) == 0) {
-            screen->copySubBuffer =
-                (__DRIcopySubBufferExtension *) extensions[i];
-            __glXEnableExtension(screen->glx_enable_bits,
-                                 "GLX_MESA_copy_sub_buffer");
-
-            LogMessage(X_INFO, "AIGLX: enabled GLX_MESA_copy_sub_buffer\n");
-        }
-#endif
-
-#ifdef __DRI_SWAP_CONTROL
-        if (strcmp(extensions[i]->name, __DRI_SWAP_CONTROL) == 0) {
-            screen->swapControl = (__DRIswapControlExtension *) extensions[i];
-            __glXEnableExtension(screen->glx_enable_bits,
-                                 "GLX_SGI_swap_control");
-            __glXEnableExtension(screen->glx_enable_bits,
-                                 "GLX_MESA_swap_control");
-
-            LogMessage(X_INFO,
-                       "AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control\n");
-        }
-#endif
-
-#ifdef __DRI_TEX_OFFSET
-        if (strcmp(extensions[i]->name, __DRI_TEX_OFFSET) == 0) {
-            screen->texOffset = (__DRItexOffsetExtension *) extensions[i];
-            LogMessage(X_INFO,
-                       "AIGLX: enabled GLX_texture_from_pixmap with driver support\n");
-        }
-#endif
-        /* Ignore unknown extensions */
-    }
-}
-
-static __GLXscreen *
-__glXDRIscreenProbe(ScreenPtr pScreen)
-{
-    drm_handle_t hSAREA;
-    drmAddress pSAREA = NULL;
-    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;
-    __GLXDRIscreen *screen;
-    Bool isCapable;
-    size_t buffer_size;
-    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
-
-    framebuffer.base = NULL;
-
-    if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable") ||
-        !DRIQueryDirectRenderingCapable(pScreen, &isCapable) || !isCapable) {
-        LogMessage(X_INFO,
-                   "AIGLX: Screen %d is not DRI capable\n", pScreen->myNum);
-        return NULL;
-    }
-
-    screen = calloc(1, sizeof *screen);
-    if (screen == NULL)
-        return NULL;
-
-    screen->base.destroy = __glXDRIscreenDestroy;
-    screen->base.createContext = __glXDRIscreenCreateContext;
-    screen->base.createDrawable = __glXDRIscreenCreateDrawable;
-    screen->base.swapInterval = __glXDRIdrawableSwapInterval;
-    screen->base.pScreen = pScreen;
-
-    __glXInitExtensionEnableBits(screen->glx_enable_bits);
-
-    /* DRI protocol version. */
-    dri_version.major = XF86DRI_MAJOR_VERSION;
-    dri_version.minor = XF86DRI_MINOR_VERSION;
-    dri_version.patch = XF86DRI_PATCH_VERSION;
-
-    if (!DRIOpenConnection(pScreen, &hSAREA, &BusID)) {
-        LogMessage(X_ERROR, "AIGLX error: DRIOpenConnection failed\n");
-        goto handle_error;
-    }
-
-    fd = drmOpenOnce(NULL, BusID, &newlyopened);
-
-    if (fd < 0) {
-        LogMessage(X_ERROR, "AIGLX error: drmOpenOnce failed (%s)\n",
-                   strerror(-fd));
-        goto handle_error;
-    }
-
-    if (drmGetMagic(fd, &magic)) {
-        LogMessage(X_ERROR, "AIGLX error: 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 && !DRIAuthConnection(pScreen, magic)) {
-        LogMessage(X_ERROR, "AIGLX error: DRIAuthConnection 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 (!DRIGetClientDriverName(pScreen,
-                                &ddx_version.major,
-                                &ddx_version.minor,
-                                &ddx_version.patch, &driverName)) {
-        LogMessage(X_ERROR, "AIGLX error: DRIGetClientDriverName failed\n");
-        goto handle_error;
-    }
-
-    screen->driver = glxProbeDriver(driverName,
-                                    (void **) &screen->core,
-                                    __DRI_CORE, __DRI_CORE_VERSION,
-                                    (void **) &screen->legacy,
-                                    __DRI_LEGACY, __DRI_LEGACY_VERSION);
-    if (screen->driver == NULL) {
-        goto handle_error;
-    }
-
-    /*
-     * 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 (!DRIGetDeviceInfo(pScreen, &hFB, &junk,
-                          &framebuffer.size, &framebuffer.stride,
-                          &framebuffer.dev_priv_size, &framebuffer.dev_priv)) {
-        LogMessage(X_ERROR, "AIGLX error: XF86DRIGetDeviceInfo failed\n");
-        goto handle_error;
-    }
-
-    framebuffer.width = pScreen->width;
-    framebuffer.height = pScreen->height;
-
-    /* Map the framebuffer region. */
-    status = drmMap(fd, hFB, framebuffer.size,
-                    (drmAddressPtr) &framebuffer.base);
-    if (status != 0) {
-        LogMessage(X_ERROR, "AIGLX error: drmMap of framebuffer failed (%s)\n",
-                   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) {
-        LogMessage(X_ERROR, "AIGLX error: drmMap of SAREA failed (%s)\n",
-                   strerror(-status));
-        goto handle_error;
-    }
-
-    screen->driScreen =
-        (*screen->legacy->createNewScreen) (pScreen->myNum,
-                                            &ddx_version,
-                                            &dri_version,
-                                            &drm_version,
-                                            &framebuffer,
-                                            pSAREA,
-                                            fd,
-                                            loader_extensions,
-                                            &screen->driConfigs, screen);
-
-    if (screen->driScreen == NULL) {
-        LogMessage(X_ERROR, "AIGLX error: Calling driver entry point failed\n");
-        goto handle_error;
-    }
-
-    screen->base.fbconfigs = glxConvertConfigs(screen->core,
-                                               screen->driConfigs,
-                                               GLX_WINDOW_BIT);
-
-    initializeExtensions(screen);
-
-    DRIGetTexOffsetFuncs(pScreen, &screen->texOffsetStart,
-                         &screen->texOffsetFinish);
-
-    __glXScreenInit(&screen->base, pScreen);
-
-    /* The first call simply determines the length of the extension string.
-     * This allows us to allocate some memory to hold the extension string,
-     * but it requires that we call __glXGetExtensionString a second time.
-     */
-    buffer_size = __glXGetExtensionString(screen->glx_enable_bits, NULL);
-    if (buffer_size > 0) {
-        free(screen->base.GLXextensions);
-
-        screen->base.GLXextensions = xnfalloc(buffer_size);
-        (void) __glXGetExtensionString(screen->glx_enable_bits,
-                                       screen->base.GLXextensions);
-    }
-
-    __glXsetEnterLeaveServerFuncs(__glXDRIenterServer, __glXDRIleaveServer);
-
-    screen->enterVT = pScrn->EnterVT;
-    pScrn->EnterVT = glxDRIEnterVT;
-    screen->leaveVT = pScrn->LeaveVT;
-    pScrn->LeaveVT = glxDRILeaveVT;
-
-    LogMessage(X_INFO, "AIGLX: Loaded and initialized %s\n", driverName);
-
-    return &screen->base;
-
- handle_error:
-    if (pSAREA != NULL)
-        drmUnmap(pSAREA, SAREA_MAX);
-
-    if (framebuffer.base != NULL)
-        drmUnmap((drmAddress) framebuffer.base, framebuffer.size);
-
-    if (fd >= 0)
-        drmCloseOnce(fd);
-
-    DRICloseConnection(pScreen);
-
-    if (screen->driver)
-        dlclose(screen->driver);
-
-    free(screen);
-
-    LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n");
-
-    return NULL;
-}
-
-_X_EXPORT __GLXprovider __glXDRIProvider = {
-    __glXDRIscreenProbe,
-    "DRI",
-    NULL
-};
diff --git a/hw/xfree86/dixmods/glxmodule.c b/hw/xfree86/dixmods/glxmodule.c
index e6bb736..133a2a6 100644
--- a/hw/xfree86/dixmods/glxmodule.c
+++ b/hw/xfree86/dixmods/glxmodule.c
@@ -85,9 +85,6 @@ glxSetup(pointer module, pointer opts, int *errmaj, int *errmin)
     xf86Msg(xf86Info.aiglxFrom, "AIGLX %s\n",
             xf86Info.aiglx ? "enabled" : "disabled");
     if (xf86Info.aiglx) {
-        provider = LoaderSymbol("__glXDRIProvider");
-        if (provider)
-            GlxPushProvider(provider);
         provider = LoaderSymbol("__glXDRI2Provider");
         if (provider)
             GlxPushProvider(provider);
commit 7f5adf73a0f9a951a6df201532b4031d38054369
Author: Adam Jackson <ajax at redhat.com>
Date:   Wed Oct 2 17:38:05 2013 -0400

    glx: Simplify glXDestroyContext
    
    We can just free the resource unconditionally here.  ContextGone (which
    FreeResourceByType will call) already does:
    
        cx->idExists = GL_FALSE;
        if (!cx->currentClient) {
            __glXFreeContext(cx);
        }
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index f7ca826..0fc7362 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -406,9 +406,7 @@ __glXDisp_DestroyContext(__GLXclientState * cl, GLbyte * pc)
                          &glxc, &err))
         return err;
 
-    glxc->idExists = GL_FALSE;
-    if (!glxc->currentClient)
-        FreeResourceByType(req->context, __glXContextRes, FALSE);
+    FreeResourceByType(req->context, __glXContextRes, FALSE);
 
     return Success;
 }
commit 53653f4889dcaea0cf67f8a4180af71eeb4b2f6b
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Aug 5 15:46:11 2013 -0400

    glx: Fix a corner case in DrawableGone
    
    Losing the drawable does not change our notion of current client.  Since
    the GL under us doesn't understand having a current context without
    current drawables (sigh), we do still need to loseCurrent so that we
    re-bind the context on the next request.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=65030
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxext.c b/glx/glxext.c
index dcefecd..c2c90d2 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -139,8 +139,8 @@ DrawableGone(__GLXdrawable * glxPriv, XID xid)
         next = c->next;
         if (c->currentClient &&
 		(c->drawPriv == glxPriv || c->readPriv == glxPriv)) {
+            /* just force a re-bind the next time through */
             (*c->loseCurrent) (c);
-            c->currentClient = NULL;
             if (c == __glXLastContext)
                 __glXFlushContextCache();
         }
commit 276d8057aa7f6e36c9c874257a6383f416c5cedd
Author: Adam Jackson <ajax at redhat.com>
Date:   Sat Aug 3 09:47:55 2013 -0400

    glx: Fix memory leak in context garbage collection (v2)
    
    I broke this, back in:
    
        commit a48dadc98a28c969741979b70b7a639f24f4cbbd
        Author: Adam Jackson <ajax at redhat.com>
        Date:   Mon Mar 21 11:59:29 2011 -0400
    
    	glx: Reimplement context tags
    
    In that, I changed the glx client state to not explicitly track the list
    of current contexts for the client (since that was what we were deriving
    tags from).  The bug was that I removed the code for same from
    glxClientCallback without noticing that it had the side effect of
    effectively de-currenting those contexts, so that ContextGone could free
    them.  So, if you had a client exit with a context still current, the
    context's memory would leak.  Not a huge deal for direct clients, but
    viciously bad for indirect, since the swrast context state at the bottom
    of Mesa is like 15M.
    
    Fix this by promoting Bool isCurrent to ClientPtr currentClient, so that
    we have a back-pointer to chase when walking the list of contexts when
    ClientStateGone happens.
    
    v2: Explicitly call __glXFreeContext on the ClientStateGone path.  Our
    current context might be one we got from EXT_import_context and whose
    creating client has since died.  Without the explicit call, the creating
    client's FreeClientResources would not free the context because it's
    still current, and the using client's FreeClientResources would not free
    the context because it's not an XID it created.  This matches the logic
    from a48dadc.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/createcontext.c b/glx/createcontext.c
index 13d21cc..78792da 100644
--- a/glx/createcontext.c
+++ b/glx/createcontext.c
@@ -320,7 +320,7 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc)
     ctx->id = req->context;
     ctx->share_id = req->shareList;
     ctx->idExists = True;
-    ctx->isCurrent = False;
+    ctx->currentClient = False;
     ctx->isDirect = req->isDirect;
     ctx->hasUnflushedCommands = False;
     ctx->renderMode = GL_RENDER;
diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index df738b1..f7ca826 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -299,7 +299,7 @@ DoCreateContext(__GLXclientState * cl, GLXContextID gcId,
     glxc->id = gcId;
     glxc->share_id = shareList;
     glxc->idExists = GL_TRUE;
-    glxc->isCurrent = GL_FALSE;
+    glxc->currentClient = NULL;
     glxc->isDirect = isDirect;
     glxc->hasUnflushedCommands = GL_FALSE;
     glxc->renderMode = GL_RENDER;
@@ -407,7 +407,7 @@ __glXDisp_DestroyContext(__GLXclientState * cl, GLbyte * pc)
         return err;
 
     glxc->idExists = GL_FALSE;
-    if (!glxc->isCurrent)
+    if (!glxc->currentClient)
         FreeResourceByType(req->context, __glXContextRes, FALSE);
 
     return Success;
@@ -444,7 +444,7 @@ StopUsingContext(__GLXcontext * glxc)
             /* Tell server GL library */
             __glXLastContext = 0;
         }
-        glxc->isCurrent = GL_FALSE;
+        glxc->currentClient = NULL;
         if (!glxc->idExists) {
             FreeResourceByType(glxc->id, __glXContextRes, FALSE);
         }
@@ -454,8 +454,8 @@ StopUsingContext(__GLXcontext * glxc)
 static void
 StartUsingContext(__GLXclientState * cl, __GLXcontext * glxc)
 {
-    glxc->isCurrent = GL_TRUE;
     __glXLastContext = glxc;
+    glxc->currentClient = cl->client;
 }
 
 /**
@@ -589,7 +589,7 @@ DoMakeCurrent(__GLXclientState * cl,
 
         if (!validGlxContext(client, contextId, DixUseAccess, &glxc, &error))
             return error;
-        if ((glxc != prevglxc) && glxc->isCurrent) {
+        if ((glxc != prevglxc) && glxc->currentClient) {
             /* Context is current to somebody else */
             return BadAccess;
         }
@@ -652,7 +652,7 @@ DoMakeCurrent(__GLXclientState * cl,
             return __glXError(GLXBadContext);
         }
 
-        glxc->isCurrent = GL_TRUE;
+        glxc->currentClient = client;
     }
 
     StopUsingContext(prevglxc);
@@ -873,7 +873,7 @@ __glXDisp_CopyContext(__GLXclientState * cl, GLbyte * pc)
     /*
      ** The destination context must not be current for any client.
      */
-    if (dst->isCurrent) {
+    if (dst->currentClient) {
         client->errorValue = dest;
         return BadAccess;
     }
diff --git a/glx/glxcontext.h b/glx/glxcontext.h
index 3d08c99..677898a 100644
--- a/glx/glxcontext.h
+++ b/glx/glxcontext.h
@@ -69,6 +69,11 @@ struct __GLXcontext {
     __GLXscreen *pGlxScreen;
 
     /*
+     ** If this context is current for a client, this will be that client
+     */
+    ClientPtr currentClient;
+
+    /*
      ** The XID of this context.
      */
     XID id;
@@ -84,11 +89,6 @@ struct __GLXcontext {
     GLboolean idExists;
 
     /*
-     ** Whether this context is current for some client.
-     */
-    GLboolean isCurrent;
-
-    /*
      ** Whether this context is a direct rendering context.
      */
     GLboolean isDirect;
diff --git a/glx/glxext.c b/glx/glxext.c
index 2c3f5ed..dcefecd 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -95,16 +95,15 @@ __glXResetLargeCommandStatus(__GLXclientState * cl)
 }
 
 /*
-** This procedure is called when the client who created the context goes
-** away OR when glXDestroyContext is called.  In either case, all we do is
-** flag that the ID is no longer valid, and (maybe) free the context.
-** use.
-*/
+ * This procedure is called when the client who created the context goes away
+ * OR when glXDestroyContext is called.  In either case, all we do is flag that
+ * the ID is no longer valid, and (maybe) free the context.
+ */
 static int
 ContextGone(__GLXcontext * cx, XID id)
 {
     cx->idExists = GL_FALSE;
-    if (!cx->isCurrent) {
+    if (!cx->currentClient) {
         __glXFreeContext(cx);
     }
 
@@ -138,9 +137,10 @@ DrawableGone(__GLXdrawable * glxPriv, XID xid)
 
     for (c = glxAllContexts; c; c = next) {
         next = c->next;
-        if (c->isCurrent && (c->drawPriv == glxPriv || c->readPriv == glxPriv)) {
+        if (c->currentClient &&
+		(c->drawPriv == glxPriv || c->readPriv == glxPriv)) {
             (*c->loseCurrent) (c);
-            c->isCurrent = GL_FALSE;
+            c->currentClient = NULL;
             if (c == __glXLastContext)
                 __glXFlushContextCache();
         }
@@ -196,17 +196,17 @@ __glXRemoveFromContextList(__GLXcontext * cx)
 GLboolean
 __glXFreeContext(__GLXcontext * cx)
 {
-    if (cx->idExists || cx->isCurrent)
+    if (cx->idExists || cx->currentClient)
         return GL_FALSE;
 
+    __glXRemoveFromContextList(cx);
+
     free(cx->feedbackBuf);
     free(cx->selectBuf);
     if (cx == __glXLastContext) {
         __glXFlushContextCache();
     }
 
-    __glXRemoveFromContextList(cx);
-
     /* We can get here through both regular dispatching from
      * __glXDispatch() or as a callback from the resource manager.  In
      * the latter case we need to lift the DRI lock manually. */
@@ -283,6 +283,7 @@ glxClientCallback(CallbackListPtr *list, pointer closure, pointer data)
     NewClientInfoRec *clientinfo = (NewClientInfoRec *) data;
     ClientPtr pClient = clientinfo->client;
     __GLXclientState *cl = glxGetClient(pClient);
+    __GLXcontext *c, *next;
 
     switch (pClient->clientState) {
     case ClientStateRunning:
@@ -290,6 +291,16 @@ glxClientCallback(CallbackListPtr *list, pointer closure, pointer data)
         break;
 
     case ClientStateGone:
+        /* detach from all current contexts */
+        for (c = glxAllContexts; c; c = next) {
+            next = c->next;
+            if (c->currentClient == pClient) {
+                c->loseCurrent(c);
+                c->currentClient = NULL;
+                __glXFreeContext(c);
+            }
+        }
+
         free(cl->returnBuf);
         free(cl->largeCmdBuf);
         free(cl->GLClientextensions);
commit 75b362763cca8b6139582ad85e3b58f0b2e30a1c
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 8 15:02:44 2013 -0400

    glx: Only take a Pixmap reference if creating the GLXPixmap succeeded
    
    Reviewed-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 73e76ca..df738b1 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -1249,7 +1249,8 @@ DoCreateGLXPixmap(ClientPtr client, __GLXscreen * pGlxScreen,
     err = DoCreateGLXDrawable(client, pGlxScreen, config, pDraw, drawableId,
                               glxDrawableId, GLX_DRAWABLE_PIXMAP);
 
-    ((PixmapPtr) pDraw)->refcnt++;
+    if (err == Success)
+        ((PixmapPtr) pDraw)->refcnt++;
 
     return err;
 }
commit 4292a39c8014f9f4920bed3001802e4a3e523c5e
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Mon Oct 28 12:10:10 2013 +1000

    Xi: fix logic error when calculating emulated motion events
    
    gcc -Wlogical-op
    exevents.c: In function 'DeliverEmulatedMotionEvent':
    exevents.c:1480:13: warning: logical 'or' of collectively exhaustive
    tests is always true [-Wlogical-op]
    
    The relevant snippet of exevents.c:
    
    1479         if (ti->listeners[0].type != LISTENER_POINTER_REGULAR ||
    1480             ti->listeners[0].type != LISTENER_POINTER_GRAB)
    1481             return;
    
    This condition was always true, causing dropped motion events.
    
    Reported-by: Alan Coopersmith <alan.coopersmith at oracle.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>

diff --git a/Xi/exevents.c b/Xi/exevents.c
index fd4b80c..5dc9020 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1476,7 +1476,7 @@ DeliverEmulatedMotionEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
         GrabPtr grab;
         XI2Mask *mask;
 
-        if (ti->listeners[0].type != LISTENER_POINTER_REGULAR ||
+        if (ti->listeners[0].type != LISTENER_POINTER_REGULAR &&
             ti->listeners[0].type != LISTENER_POINTER_GRAB)
             return;
 
commit c671e935e7c44d4711ba9588ee96cb9796b879e6
Author: Daniel Czarnowski <daniel.czarnowski at intel.com>
Date:   Mon Oct 21 19:48:38 2013 +0200

    glx: Enable GLX_ARB_fbconfig_float for DRI2 drivers
    
    v2 (idr): Maintain sort order of extension list.  Fixed rebase error
    (comment header for initializeExtensions was in front of
    __glXDRIinvalidateBuffers).  Re-write commit message.
    
    Signed-off-by: Daniel Czarnowski <daniel.czarnowski at intel.com>
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

diff --git a/glx/extension_string.c b/glx/extension_string.c
index 58f930f..4bef96f 100644
--- a/glx/extension_string.c
+++ b/glx/extension_string.c
@@ -65,12 +65,17 @@ struct extension_info {
     unsigned char driver_support;
 };
 
+/**
+ * List of known GLX Extensions.
+ * The last Y/N switch informs whether the support of this extension is always enabled.
+ */
 static const struct extension_info known_glx_extensions[] = {
 /*   GLX_ARB_get_proc_address is implemented on the client. */
     /* *INDENT-OFF* */
     { GLX(ARB_create_context),          VER(0,0), N, },
     { GLX(ARB_create_context_profile),  VER(0,0), N, },
     { GLX(ARB_create_context_robustness), VER(0,0), N, },
+    { GLX(ARB_fbconfig_float),          VER(0,0), N, },
     { GLX(ARB_framebuffer_sRGB),        VER(0,0), N, },
     { GLX(ARB_multisample),             VER(1,4), Y, },
 
diff --git a/glx/extension_string.h b/glx/extension_string.h
index 81b7de3..e7d3932 100644
--- a/glx/extension_string.h
+++ b/glx/extension_string.h
@@ -39,6 +39,7 @@ enum {
     ARB_create_context_bit = 0,
     ARB_create_context_profile_bit,
     ARB_create_context_robustness_bit,
+    ARB_fbconfig_float_bit,
     ARB_framebuffer_sRGB_bit,
     ARB_multisample_bit,
     EXT_create_context_es2_profile_bit,
diff --git a/glx/glxdri2.c b/glx/glxdri2.c
index f662b21..843f603 100644
--- a/glx/glxdri2.c
+++ b/glx/glxdri2.c
@@ -845,6 +845,11 @@ glxDRILeaveVT(ScrnInfoPtr scrn)
     scrn->LeaveVT = glxDRILeaveVT;
 }
 
+/**
+ * Initialize extension flags in glx_enable_bits when a new screen is created
+ *
+ * @param screen The screen where glx_enable_bits are to be set.
+ */
 static void
 initializeExtensions(__GLXDRIscreen * screen)
 {
@@ -889,6 +894,12 @@ initializeExtensions(__GLXDRIscreen * screen)
         LogMessage(X_INFO, "AIGLX: enabled GLX_EXT_framebuffer_sRGB\n");
     }
 
+    /* enable ARB_fbconfig_float extension (even if there are no float fbconfigs) */
+    {
+        __glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_fbconfig_float");
+        LogMessage(X_INFO, "AIGLX: enabled GLX_ARB_fbconfig_float\n");
+    }
+
     for (i = 0; extensions[i]; i++) {
 #ifdef __DRI_READ_DRAWABLE
         if (strcmp(extensions[i]->name, __DRI_READ_DRAWABLE) == 0) {
commit ccc8bb1153ec669f7540a174a81a8ec0e0d6dd67
Author: Daniel Czarnowski <daniel.czarnowski at intel.com>
Date:   Wed Oct 23 12:53:59 2013 +0200

    glx: Handle float config types in glxConvertConfigs
    
    Replaces old use of floatMode attribute with new, extended range of
    values in __DRI_ATTRIB_RENDER_TYPE. Also adds new conditions, where the
    float modes support requires it. Enables support for not only float
    configs, but packed float configs as well.
    
    v2 (idr): Whitespace and formatting fixes.  Refactor render type
    vs. pbuffer checking to a separate function that includes a quote from
    the spec.  Re-write commit message.  Fix compiler warnings:
    
    glxdricommon.c: In function 'glxConvertConfigs':
    glxdricommon.c:212:35: warning: pointer targets in passing argument 3 of 'core->getConfigAttrib' differ in signedness [-Wpointer-sign]
    glxdricommon.c:212:35: note: expected 'unsigned int *' but argument is of type 'int *'
    glxdricommon.c:230:35: warning: pointer targets in passing argument 3 of 'core->getConfigAttrib' differ in signedness [-Wpointer-sign]
    glxdricommon.c:230:35: note: expected 'unsigned int *' but argument is of type 'int *'
    
    Signed-off-by: Daniel Czarnowski <daniel.czarnowski at intel.com>
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

diff --git a/configure.ac b/configure.ac
index 7b4e70f..c47937a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -809,7 +809,7 @@ LIBAPPLEWM="applewm >= 1.4"
 LIBDMX="dmx >= 1.0.99.1"
 LIBDRI="dri >= 7.8.0"
 LIBDRM="libdrm >= 2.3.0"
-LIBGL="gl >= 7.1.0"
+LIBGL="gl >= 9.2.0"
 LIBXEXT="xext >= 1.0.99.4"
 LIBXFONT="xfont >= 1.4.2"
 LIBXI="xi >= 1.2.99.1"
diff --git a/glx/glxdricommon.c b/glx/glxdricommon.c
index 0ab3e30..48f0bce 100644
--- a/glx/glxdricommon.c
+++ b/glx/glxdricommon.c
@@ -36,6 +36,7 @@
 #include <GL/internal/dri_interface.h>
 #include <os.h>
 #include "glxserver.h"
+#include "glxext.h"
 #include "glxcontext.h"
 #include "glxscreens.h"
 #include "glxdricommon.h"
@@ -127,6 +128,7 @@ createModeFromConfig(const __DRIcoreExtension * core,
                      unsigned int visualType, unsigned int drawableType)
 {
     __GLXDRIconfig *config;
+    GLint renderType = 0;
     unsigned int attrib, value;
     int i;
 
@@ -138,11 +140,14 @@ createModeFromConfig(const __DRIcoreExtension * core,
     while (core->indexConfigAttrib(driConfig, i++, &attrib, &value)) {
         switch (attrib) {
         case __DRI_ATTRIB_RENDER_TYPE:
-            config->config.renderType = 0;
             if (value & __DRI_ATTRIB_RGBA_BIT)
-                config->config.renderType |= GLX_RGBA_BIT;
+                renderType |= GLX_RGBA_BIT;
             if (value & __DRI_ATTRIB_COLOR_INDEX_BIT)
-                config->config.renderType |= GLX_COLOR_INDEX_BIT;
+                renderType |= GLX_COLOR_INDEX_BIT;
+            if (value & __DRI_ATTRIB_FLOAT_BIT)
+                renderType |= GLX_RGBA_FLOAT_BIT_ARB;
+            if (value & __DRI_ATTRIB_UNSIGNED_FLOAT_BIT)
+                renderType |= GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT;
             break;
         case __DRI_ATTRIB_CONFIG_CAVEAT:
             if (value & __DRI_ATTRIB_NON_CONFORMANT_CONFIG)
@@ -171,11 +176,26 @@ createModeFromConfig(const __DRIcoreExtension * core,
     config->config.next = NULL;
     config->config.xRenderable = GL_TRUE;
     config->config.visualType = visualType;
+    config->config.renderType = renderType;
     config->config.drawableType = drawableType;
 
     return &config->config;
 }
 
+static Bool
+render_type_is_pbuffer_only(unsigned renderType)
+{
+    /* The GL_ARB_color_buffer_float spec says:
+     *
+     *     "Note that floating point rendering is only supported for
+     *     GLXPbuffer drawables.  The GLX_DRAWABLE_TYPE attribute of the
+     *     GLXFBConfig must have the GLX_PBUFFER_BIT bit set and the
+     *     GLX_RENDER_TYPE attribute must have the GLX_RGBA_FLOAT_BIT set."
+     */
+    return !!(renderType & (__DRI_ATTRIB_UNSIGNED_FLOAT_BIT
+                            | __DRI_ATTRIB_FLOAT_BIT));
+}
+
 __GLXconfig *
 glxConvertConfigs(const __DRIcoreExtension * core,
                   const __DRIconfig ** configs, unsigned int drawableType)
@@ -187,6 +207,14 @@ glxConvertConfigs(const __DRIcoreExtension * core,
     head.next = NULL;
 
     for (i = 0; configs[i]; i++) {
+        unsigned renderType = 0;
+        if (core->getConfigAttrib(configs[i], __DRI_ATTRIB_RENDER_TYPE,
+                                  &renderType)) {
+            if (render_type_is_pbuffer_only(renderType) &&
+                !(drawableType & GLX_PBUFFER_BIT))
+                continue;
+        }
+        /* Add all the others */
         tail->next = createModeFromConfig(core,
                                           configs[i], GLX_TRUE_COLOR,
                                           drawableType);
@@ -197,6 +225,14 @@ glxConvertConfigs(const __DRIcoreExtension * core,
     }
 
     for (i = 0; configs[i]; i++) {
+        int renderType = 0;
+        if (core->getConfigAttrib(configs[i], __DRI_ATTRIB_RENDER_TYPE,
+                                  &renderType)) {
+            if (render_type_is_pbuffer_only(renderType) &&
+                !(drawableType & GLX_PBUFFER_BIT))
+                continue;
+        }
+        /* Add all the others */
         tail->next = createModeFromConfig(core,
                                           configs[i], GLX_DIRECT_COLOR,
                                           drawableType);
diff --git a/hw/xwin/glx/indirect.c b/hw/xwin/glx/indirect.c
index b79f023..4f09652 100644
--- a/hw/xwin/glx/indirect.c
+++ b/hw/xwin/glx/indirect.c
@@ -386,7 +386,9 @@ fbConfigsDump(unsigned int n, __GLXconfig * c)
                c->accumAlphaBits, c->sampleBuffers, c->samples,
                (c->drawableType & GLX_WINDOW_BIT) ? "y" : ".",
                (c->drawableType & GLX_PIXMAP_BIT) ? "y" : ".",
-               (c->drawableType & GLX_PBUFFER_BIT) ? "y" : ".", ".",
+               (c->drawableType & GLX_PBUFFER_BIT) ? "y" : ".",
+               (c->renderType & (GLX_RGBA_FLOAT_BIT_ARB |
+                   GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT)) ? "y" : ".",
                (c->transparentPixel != GLX_NONE_EXT) ? "y" : ".",
                c->visualSelectGroup,
                (c->visualRating == GLX_SLOW_VISUAL_EXT) ? "*" : " ");
commit 4e5eb15b4cc170499cf87e6633c1737f0b1c514b
Author: Daniel Czarnowski <daniel.czarnowski at intel.com>
Date:   Mon Oct 21 19:57:53 2013 +0200

    glx: Correctly set render type enum
    
    The type specified is bits, but the context wants an enum.
    
    v2 (idr): Fix various whitespace and formatting problems.  Rename
    convFBconfRenderTypeBits2CtxRenderType to
    renderTypeBitsToRenderTypeEnum.  Re-write commit message.
    
    Signed-off-by: Daniel Czarnowski <daniel.czarnowski at intel.com>
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

diff --git a/hw/dmx/dmx_glxvisuals.c b/hw/dmx/dmx_glxvisuals.c
index 56bd67b..b3bd3b7 100644
--- a/hw/dmx/dmx_glxvisuals.c
+++ b/hw/dmx/dmx_glxvisuals.c
@@ -448,7 +448,12 @@ GetGLXFBConfigs(Display * dpy, int glxMajorOpcode, int *nconfigs)
         /* Fill in derived values */
         config->screen = screen;
 
-        config->rgbMode = config->renderType & GLX_RGBA_BIT;
+        /* The rgbMode should be true for any mode which has distinguishible
+         * R, G and B components
+         */
+        config->rgbMode = (config->renderType
+                           & (GLX_RGBA_BIT | GLX_RGBA_FLOAT_BIT_ARB
+                              | GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT)) != 0;
         config->colorIndexMode = !config->rgbMode;
 
         config->haveAccumBuffer =
diff --git a/hw/dmx/glxProxy/glxcmds.c b/hw/dmx/glxProxy/glxcmds.c
index 335da37..190eeef 100644
--- a/hw/dmx/glxProxy/glxcmds.c
+++ b/hw/dmx/glxProxy/glxcmds.c
@@ -123,6 +123,28 @@ GetBackEndDisplay(__GLXclientState * cl, int s)
     return cl->be_displays[s];
 }
 
+/**
+ * Convert the render type bits from fbconfig into context render type.
+ */
+static int
+renderTypeBitsToRenderTypeEnum(int fbRenderType)
+{
+    if (fbRenderType & GLX_RGBA_BIT)
+        return GLX_RGBA_TYPE;
+
+    if (fbRenderType & GLX_COLOR_INDEX_BIT)
+        return  GLX_COLOR_INDEX_TYPE;
+
+    if (fbRenderType & GLX_RGBA_FLOAT_BIT_ARB)
+        return GLX_RGBA_FLOAT_TYPE_ARB;
+
+    if (fbRenderType & GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT)
+        return GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT;
+
+    /* There's no recognized renderType in the config */
+    return GLX_RGBA_TYPE;
+}
+
 /*
 ** Create a GL context with the given properties.
 */
@@ -308,12 +330,14 @@ CreateContext(__GLXclientState * cl,
         /* send the create context request to the back-end server */
         dpy = GetBackEndDisplay(cl, screen);
         if (glxc->pFBConfig) {
-            /*Since for a certain visual both RGB and COLOR INDEX
-             *can be on then the only parmeter to choose the renderType
-             * should be the class of the colormap since all 4 first 
-             * classes does not support RGB mode only COLOR INDEX ,
-             * and so TrueColor and DirectColor does not support COLOR INDEX*/
-            int renderType = glxc->pFBConfig->renderType;
+            /* For a specific visual, multiple render types (i.e., both RGB
+             * and COLOR INDEX) can be accessible. The only parameter to
+             * choose the renderType should be the class of the colormap,
+             * since the first classes do not support RGB mode (only COLOR
+             * INDEX), and TrueColor and DirectColor do not support COLOR
+             * INDEX.
+             */
+            int renderType = GLX_RGBA_TYPE;
 
             if (pVisual) {
                 switch (pVisual->class) {
@@ -329,7 +353,11 @@ CreateContext(__GLXclientState * cl,
                     renderType = GLX_RGBA_TYPE;
                     break;
                 }
+            } else {
+                renderType =
+                    renderTypeBitsToRenderTypeEnum(glxc->pFBConfig->renderType);
             }
+
             if (__GLX_IS_VERSION_SUPPORTED(1, 3)) {
                 LockDisplay(dpy);
                 GetReq(GLXCreateNewContext, be_new_req);
@@ -3210,7 +3238,7 @@ __glXQueryContext(__GLXclientState * cl, GLbyte * pc)
     *pSendBuf++ = GLX_FBCONFIG_ID;
     *pSendBuf++ = (int) (ctx->pFBConfig->id);
     *pSendBuf++ = GLX_RENDER_TYPE;
-    *pSendBuf++ = (int) (ctx->pFBConfig->renderType);
+    *pSendBuf++ = renderTypeBitsToRenderTypeEnum(ctx->pFBConfig->renderType);
     *pSendBuf++ = GLX_SCREEN;
     *pSendBuf++ = (int) (ctx->pScreen->myNum);
 
commit eabb523aa45f3d8940cadac197ef1225fbfd5c56
Author: Daniel Czarnowski <daniel.czarnowski at intel.com>
Date:   Mon Oct 21 19:45:35 2013 +0200

    glx: Allow float renderType in glXCreateContextAttribsARB
    
    This enables GLX_RGBA_FLOAT_TYPE_ARB and
    GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT as valid renderType parameters to
    glXCreateContextAttribsARB.
    
    v2 (idr) : Use C-style comments and fix word wrapping.  Re-write commit
    message.
    
    Signed-off-by: Daniel Czarnowski <daniel.czarnowski at intel.com>
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

diff --git a/glx/createcontext.c b/glx/createcontext.c
index 13d21cc..41ecd11 100644
--- a/glx/createcontext.c
+++ b/glx/createcontext.c
@@ -68,6 +68,8 @@ validate_render_type(uint32_t render_type)
     switch (render_type) {
     case GLX_RGBA_TYPE:
     case GLX_COLOR_INDEX_TYPE:
+    case GLX_RGBA_FLOAT_TYPE_ARB:
+    case GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT:
         return True;
     default:
         return False;
diff --git a/glx/glxext.h b/glx/glxext.h
index 9b0978b..3f2dee6 100644
--- a/glx/glxext.h
+++ b/glx/glxext.h
@@ -35,6 +35,22 @@
  * Silicon Graphics, Inc.
  */
 
+/* doing #include <GL/glx.h> & #include <GL/glxext.h> could cause problems
+ * with overlapping definitions, so let's use the easy way
+ */
+#ifndef GLX_RGBA_FLOAT_BIT_ARB
+#define GLX_RGBA_FLOAT_BIT_ARB             0x00000004
+#endif
+#ifndef GLX_RGBA_FLOAT_TYPE_ARB
+#define GLX_RGBA_FLOAT_TYPE_ARB            0x20B9
+#endif
+#ifndef GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT
+#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT    0x00000008
+#endif
+#ifndef GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT
+#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT   0x20B1
+#endif
+
 extern GLboolean __glXFreeContext(__GLXcontext * glxc);
 extern void __glXFlushContextCache(void);
 
commit 7ecfab47eb221dbb996ea6c033348b8eceaeb893
Author: Eric Anholt <eric at anholt.net>
Date:   Tue Oct 22 14:22:04 2013 -0700

    glx: Add support for the new DRI loader entrypoint.
    
    This is going to be exposed (and not the old entrypoint) for some DRI
    drivers once the megadrivers series lands, and the plan is to
    eventually transition all drivers to that.  Hopefully this is
    unobtrusive enough to merge to stable X servers so that they can be
    compatible with new Mesa versions.
    
    v2: typo fix in the comment
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/glx/glxdricommon.c b/glx/glxdricommon.c
index b027f24..0ab3e30 100644
--- a/glx/glxdricommon.c
+++ b/glx/glxdricommon.c
@@ -211,6 +211,14 @@ glxConvertConfigs(const __DRIcoreExtension * core,
 
 static const char dri_driver_path[] = DRI_DRIVER_PATH;
 
+/* Temporary define to allow building without a dri_interface.h from
+ * updated Mesa.  Some day when we don't care about Mesa that old any
+ * more this can be removed.
+ */
+#ifndef __DRI_DRIVER_GET_EXTENSIONS
+#define __DRI_DRIVER_GET_EXTENSIONS "__driDriverGetExtensions"
+#endif
+
 void *
 glxProbeDriver(const char *driverName,
                void **coreExt, const char *coreName, int coreVersion,
@@ -219,7 +227,8 @@ glxProbeDriver(const char *driverName,
     int i;
     void *driver;
     char filename[PATH_MAX];
-    const __DRIextension **extensions;
+    char *get_extensions_name;
+    const __DRIextension **extensions = NULL;
 
     snprintf(filename, sizeof filename, "%s/%s_dri.so",
              dri_driver_path, driverName);
@@ -231,7 +240,18 @@ glxProbeDriver(const char *driverName,
         goto cleanup_failure;
     }
 
-    extensions = dlsym(driver, __DRI_DRIVER_EXTENSIONS);
+    if (asprintf(&get_extensions_name, "%s_%s",
+                 __DRI_DRIVER_GET_EXTENSIONS, driverName) != -1) {
+        const __DRIextension **(*get_extensions)(void);
+
+        get_extensions = dlsym(driver, get_extensions_name);
+        if (get_extensions)
+            extensions = get_extensions();
+        free(get_extensions_name);
+    }
+
+    if (!extensions)
+        extensions = dlsym(driver, __DRI_DRIVER_EXTENSIONS);
     if (extensions == NULL) {
         LogMessage(X_ERROR, "AIGLX error: %s exports no extensions (%s)\n",
                    driverName, dlerror());
commit 83bb366e71ef41165998eed2934208f84714a37e
Author: Strake <strake888 at gmail.com>
Date:   Thu Oct 17 23:20:20 2013 -0500

    unbreak KdEnableInput
    
    pi = ki = 0 here, so not follow them.
    
    Signed-off-by: Strake <strake888 at gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index 527c7a2..d845830 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -308,21 +308,22 @@ KdEnableInput(void)
 
     kdInputEnabled = TRUE;
 
+    ev.any.time = GetTimeInMillis();
+
     for (ki = kdKeyboards; ki; ki = ki->next) {
         if (ki->driver && ki->driver->Enable)
             (*ki->driver->Enable) (ki);
+        /* reset screen saver */
+        NoticeEventTime (&ev, ki->dixdev);
     }
 
     for (pi = kdPointers; pi; pi = pi->next) {
         if (pi->driver && pi->driver->Enable)
             (*pi->driver->Enable) (pi);
+        /* reset screen saver */
+        NoticeEventTime (&ev, pi->dixdev);
     }
 
-    /* reset screen saver */
-    ev.any.time = GetTimeInMillis();
-    NoticeEventTime(&ev, pi->dixdev);
-    NoticeEventTime(&ev, ki->dixdev);
-
     OsReleaseSIGIO();
 }
 
commit 8db4121a3c7104548fd4a138ac1d1bdea5fd22d9
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Oct 18 17:31:01 2013 -0700

    Update to version 1.14.99.3
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 67ef3c2..7b4e70f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.14.99.2, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2013-10-04"
-RELEASE_NAME="Chicory Coffee"
+AC_INIT([xorg-server], 1.14.99.3, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2013-10-18"
+RELEASE_NAME="Bundaberg"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 
commit e3220d7bae4548bf64e5879c981ad070ac1f78f7
Merge: 73b2660 2523a44
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Oct 18 17:22:52 2013 -0700

    Merge commit '2523a445a09a75a8baf642608d099a5e12d5437f'
    
    This is merging the commits along Peter's for-keith branch, without
    also merging in the spurious merge at the top of that branch.

commit f8662a133690773692dfa392ecfa3b8b56af8fa9
Merge: 7cf1b59 2523a44
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Fri Oct 18 16:50:12 2013 +1000

    Merge branch 'xsync-transition-bug-59644' into for-keith

commit 2523a445a09a75a8baf642608d099a5e12d5437f
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Thu Oct 17 12:02:27 2013 +1000

    sync: split updating and triggering a counter up
    
    Now that the brackets are always the nearest change points (regardless of
    transition) we need to update the counters whenever we check for any updates.
    
    Otherwise we end up with a situation where counter->value is out of date and
    an alarm doesn't trigger because we're still using the value from last time
    something actually triggered.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/Xext/sync.c b/Xext/sync.c
index ad3dec2..b2ee92e 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -699,6 +699,14 @@ SyncAwaitTriggerFired(SyncTrigger * pTrigger)
     FreeResource(pAwaitUnion->header.delete_id, RT_NONE);
 }
 
+static CARD64
+SyncUpdateCounter(SyncCounter *pCounter, CARD64 newval)
+{
+    CARD64 oldval = pCounter->value;
+    pCounter->value = newval;
+    return oldval;
+}
+
 /*  This function should always be used to change a counter's value so that
  *  any triggers depending on the counter will be checked.
  */
@@ -708,8 +716,7 @@ SyncChangeCounter(SyncCounter * pCounter, CARD64 newval)
     SyncTriggerList *ptl, *pnext;
     CARD64 oldval;
 
-    oldval = pCounter->value;
-    pCounter->value = newval;
+    oldval = SyncUpdateCounter(pCounter, newval);
 
     /* run through triggers to see if any become true */
     for (ptl = pCounter->sync.pTriglist; ptl; ptl = pnext) {
@@ -2712,6 +2719,8 @@ IdleTimeCheckBrackets(SyncCounter *counter, XSyncValue idle, XSyncValue *less, X
         (less && XSyncValueLessOrEqual(idle, *less))) {
         SyncChangeCounter(counter, idle);
     }
+    else
+        SyncUpdateCounter(counter, idle);
 }
 
 static void
commit e57ec99b03b2ad840c384a97ab2766ce9da0f5cc
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Oct 16 16:31:15 2013 +1000

    sync: always set the brackets (#59644)
    
    The current code sets bracket_greater to the first trigger after the current
    value, and bracket_less to the last trigger before the current value.
    
    For example, the idle timer with three negative and three positive transitions
    would set this:
    
             nt1       nt2                 nt3
    |--------|------|--|------- idle --|---|--|-----> t
                   pt1                pt2    pt3
    bracket_less == nt2
    bracket_greater == pt2
    
    This is an optimization so we can skip code paths in the block/wakeup handlers
    if the current value doesn't meet any of the trigger requirements. Those
    handlers largely do a
       if (bracket_less is less than current value &&
           bracket_greater is greater than current value)
            return, nothing to do
    
    However, unless the bracket values are updated at the correct time, the
    following may happen:
    
                                          nt
    |--------------|---------- idle ------|--------> t
                   pt
    
    In this case, neither bracket is set, we're past the pos transition and not
    yet at the neg transition. idle may now go past nt, but the brackets are not
    updated. If idle is then reset to 0, no alarm is triggered for nt. Likewise,
    idle may now go past pt and no alarm is triggered.
    
    Changing an alarm or triggering an alarm will re-calculate the brackets, so
    this bug is somewhat random. If any other client triggers an alarm when the
    brackets are wrongly NULL, the recalculation will set them this bug may not
    appear.
    
    This patch changes the behavior, so that the brackets are always the nearest
    positive or negative transitions to the current counter value. In the example
    above, nt will trigger a wakeup and a re-calculation of the brackets, so that
    going past it in the negative direction will then cause the proper alarm
    triggers.
    
    Or, in Keith's words:
    
      Timer currently past a positive trigger
          No bracket values, because no trigger in range
    
      Timer moves backwards before the positive trigger
          Brackets not reset, even though there is now a trigger in range
    
      Timer moves forward past the positive trigger
          Trigger doesn't fire because brackets not set
    
    Setting the LT bracket in this case will cause everything to get
    re-evaluated when the sync value moves backwards before the trigger
    value.
    
    X.Org Bug 59644 <http://bugs.freedesktop.org/show_bug.cgi?id=59644>
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/Xext/sync.c b/Xext/sync.c
index ab46d89..ad3dec2 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -1019,6 +1019,11 @@ SyncComputeBracketValues(SyncCounter * pCounter)
                 psci->bracket_greater = pTrigger->test_value;
                 pnewgtval = &psci->bracket_greater;
             }
+            else if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
+                     XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less)) {
+                    psci->bracket_less = pTrigger->test_value;
+                    pnewltval = &psci->bracket_less;
+            }
         }
         else if (pTrigger->test_type == XSyncNegativeComparison &&
                  ct != XSyncCounterNeverDecreases) {
@@ -1028,6 +1033,11 @@ SyncComputeBracketValues(SyncCounter * pCounter)
                 psci->bracket_less = pTrigger->test_value;
                 pnewltval = &psci->bracket_less;
             }
+            else if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
+                     XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater)) {
+                    psci->bracket_greater = pTrigger->test_value;
+                    pnewgtval = &psci->bracket_greater;
+            }
         }
         else if (pTrigger->test_type == XSyncNegativeTransition &&
                  ct != XSyncCounterNeverIncreases) {
@@ -1041,6 +1051,11 @@ SyncComputeBracketValues(SyncCounter * pCounter)
                     psci->bracket_less = pTrigger->test_value;
                     pnewltval = &psci->bracket_less;
             }
+            else if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
+                     XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater)) {
+                    psci->bracket_greater = pTrigger->test_value;
+                    pnewgtval = &psci->bracket_greater;
+            }
         }
         else if (pTrigger->test_type == XSyncPositiveTransition &&
                  ct != XSyncCounterNeverDecreases) {
@@ -1055,6 +1070,11 @@ SyncComputeBracketValues(SyncCounter * pCounter)
                     psci->bracket_greater = pTrigger->test_value;
                     pnewgtval = &psci->bracket_greater;
             }
+            else if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
+                     XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less)) {
+                    psci->bracket_less = pTrigger->test_value;
+                    pnewltval = &psci->bracket_less;
+            }
         }
     }                           /* end for each trigger */
 
commit 06b87aa528d7a739ba20101a1f83b1a428691a01
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Oct 16 10:08:46 2013 +1000

    sync: if the idle time was reset, force alarms to trigger (#70476)
    
    The time between the idle reset and the IdleTimeWakeupHandler to be called is
    indeterminate. Clients with an PositiveTransition or NegativeTransition alarm
    on a low threshold may miss an alarm.
    
    Work around this by keeping a reset flag for each device. When the
    WakeupHandler triggers and the reset flag is set, we force a re-calculation of
    everything and pretend the current idle time is zero. Immediately after is the
    next calculation with the real idle time.
    
    Relatively reproducible test case: Set up a XSyncNegativeTransition alarm for
    a threshold of 1 ms. May trigger, may not.
    
    X.Org Bug 70476 <http://bugs.freedesktop.org/show_bug.cgi?id=70476>
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/Xext/sync.c b/Xext/sync.c
index ed891b1..ab46d89 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -2686,6 +2686,15 @@ IdleTimeBlockHandler(pointer pCounter, struct timeval **wt, pointer LastSelectMa
 }
 
 static void
+IdleTimeCheckBrackets(SyncCounter *counter, XSyncValue idle, XSyncValue *less, XSyncValue *greater)
+{
+    if ((greater && XSyncValueGreaterOrEqual(idle, *greater)) ||
+        (less && XSyncValueLessOrEqual(idle, *less))) {
+        SyncChangeCounter(counter, idle);
+    }
+}
+
+static void
 IdleTimeWakeupHandler(pointer pCounter, int rc, pointer LastSelectMask)
 {
     SyncCounter *counter = pCounter;
@@ -2699,10 +2708,24 @@ IdleTimeWakeupHandler(pointer pCounter, int rc, pointer LastSelectMask)
 
     IdleTimeQueryValue(pCounter, &idle);
 
-    if ((greater && XSyncValueGreaterOrEqual(idle, *greater)) ||
-        (less && XSyncValueLessOrEqual(idle, *less))) {
-        SyncChangeCounter(counter, idle);
+    /*
+      There is no guarantee for the WakeupHandler to be called within a specific
+      timeframe. Idletime may go to 0, but by the time we get here, it may be
+      non-zero and alarms for a pos. transition on 0 won't get triggered.
+      https://bugs.freedesktop.org/show_bug.cgi?id=70476
+      */
+    if (LastEventTimeWasReset(priv->deviceid)) {
+        LastEventTimeToggleResetFlag(priv->deviceid, FALSE);
+        if (!XSyncValueIsZero(idle)) {
+            XSyncValue zero;
+            XSyncIntsToValue(&zero, 0, 0);
+            IdleTimeCheckBrackets(counter, zero, less, greater);
+            less = priv->value_less;
+            greater = priv->value_greater;
+        }
     }
+
+    IdleTimeCheckBrackets(counter, idle, less, greater);
 }
 
 static void
@@ -2720,6 +2743,9 @@ IdleTimeBracketValues(pointer pCounter, CARD64 * pbracket_less,
                                      IdleTimeWakeupHandler, pCounter);
     }
     else if (!registered && (pbracket_less || pbracket_greater)) {
+        /* Reset flag must be zero so we don't force a idle timer reset on
+           the first wakeup */
+        LastEventTimeToggleResetAll(FALSE);
         RegisterBlockAndWakeupHandlers(IdleTimeBlockHandler,
                                        IdleTimeWakeupHandler, pCounter);
     }
diff --git a/dix/events.c b/dix/events.c
index c803721..4632bb7 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -262,7 +262,10 @@ InputInfo inputInfo;
 
 EventSyncInfoRec syncEvents;
 
-static TimeStamp lastDeviceEventTime[MAXDEVICES];
+static struct DeviceEventTime {
+    Bool reset;
+    TimeStamp time;
+} lastDeviceEventTime[MAXDEVICES];
 
 /**
  * The root window the given device is currently on.
@@ -1060,8 +1063,11 @@ MonthChangedOrBadTime(CARD32 *ms)
 void
 NoticeTime(const DeviceIntPtr dev, TimeStamp time)
 {
-    lastDeviceEventTime[XIAllDevices] = currentTime;
-    lastDeviceEventTime[dev->id] = currentTime;
+    lastDeviceEventTime[XIAllDevices].time = currentTime;
+    lastDeviceEventTime[dev->id].time = currentTime;
+
+    LastEventTimeToggleResetFlag(dev->id, TRUE);
+    LastEventTimeToggleResetFlag(XIAllDevices, TRUE);
 }
 
 static void
@@ -1085,7 +1091,30 @@ NoticeEventTime(InternalEvent *ev, DeviceIntPtr dev)
 TimeStamp
 LastEventTime(int deviceid)
 {
-    return lastDeviceEventTime[deviceid];
+    return lastDeviceEventTime[deviceid].time;
+}
+
+Bool
+LastEventTimeWasReset(int deviceid)
+{
+    return lastDeviceEventTime[deviceid].reset;
+}
+
+void
+LastEventTimeToggleResetFlag(int deviceid, Bool state)
+{
+    lastDeviceEventTime[deviceid].reset = state;
+}
+
+void
+LastEventTimeToggleResetAll(Bool state)
+{
+    DeviceIntPtr dev;
+    nt_list_for_each_entry(dev, inputInfo.devices, next) {
+        LastEventTimeToggleResetFlag(dev->id, FALSE);
+    }
+    LastEventTimeToggleResetFlag(XIAllDevices, FALSE);
+    LastEventTimeToggleResetFlag(XIAllMasterDevices, FALSE);
 }
 
 /**************************************************************************
@@ -5297,6 +5326,7 @@ InitEvents(void)
 
         dummy.id = i;
         NoticeTime(&dummy, currentTime);
+        LastEventTimeToggleResetFlag(i, FALSE);
     }
 
     syncEvents.replayDev = (DeviceIntPtr) NULL;
diff --git a/include/dix.h b/include/dix.h
index fd2490f..fa7ccd4 100644
--- a/include/dix.h
+++ b/include/dix.h
@@ -322,6 +322,12 @@ NoticeEventTime(InternalEvent *ev,
                 DeviceIntPtr dev);
 extern _X_EXPORT TimeStamp
 LastEventTime(int deviceid);
+extern _X_EXPORT Bool
+LastEventTimeWasReset(int deviceid);
+extern _X_EXPORT void
+LastEventTimeToggleResetFlag(int deviceid, Bool state);
+extern _X_EXPORT void
+LastEventTimeToggleResetAll(Bool state);
 
 extern void
 EnqueueEvent(InternalEvent * /* ev */ ,
commit efc1035ca958f2c9d266338a308518a0834b1773
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Oct 16 09:36:01 2013 +1000

    dix: provide accessor methods for the last device event time
    
    And now that we have the accessors, localize it. No functional changes, just
    preparing for a future change.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/Xext/saver.c b/Xext/saver.c
index fe81bc4..e06f408 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -392,9 +392,7 @@ ScreenSaverFreeSuspend(pointer value, XID id)
             DeviceIntPtr dev;
             UpdateCurrentTimeIf();
             nt_list_for_each_entry(dev, inputInfo.devices, next)
-                lastDeviceEventTime[dev->id] = currentTime;
-            lastDeviceEventTime[XIAllDevices] = currentTime;
-            lastDeviceEventTime[XIAllMasterDevices] = currentTime;
+                NoticeTime(dev, currentTime);
             SetScreenSaverTimer();
         }
     }
@@ -681,7 +679,7 @@ ProcScreenSaverQueryInfo(ClientPtr client)
     pPriv = GetScreenPrivate(pDraw->pScreen);
 
     UpdateCurrentTime();
-    lastInput = GetTimeInMillis() - lastDeviceEventTime[XIAllDevices].milliseconds;
+    lastInput = GetTimeInMillis() - LastEventTime(XIAllDevices).milliseconds;
 
     rep = (xScreenSaverQueryInfoReply) {
         .type = X_Reply,
diff --git a/Xext/sync.c b/Xext/sync.c
index f8eb02a..ed891b1 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -2605,7 +2605,7 @@ IdleTimeQueryValue(pointer pCounter, CARD64 * pValue_return)
     }
     else
         deviceid = XIAllDevices;
-    idle = GetTimeInMillis() - lastDeviceEventTime[deviceid].milliseconds;
+    idle = GetTimeInMillis() - LastEventTime(deviceid).milliseconds;
     XSyncIntsToValue(pValue_return, idle, 0);
 }
 
diff --git a/dix/events.c b/dix/events.c
index 7a1b1c3..c803721 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -262,6 +262,8 @@ InputInfo inputInfo;
 
 EventSyncInfoRec syncEvents;
 
+static TimeStamp lastDeviceEventTime[MAXDEVICES];
+
 /**
  * The root window the given device is currently on.
  */
@@ -1043,33 +1045,47 @@ XineramaGetCursorScreen(DeviceIntPtr pDev)
 #define TIMESLOP (5 * 60 * 1000)        /* 5 minutes */
 
 static void
-MonthChangedOrBadTime(InternalEvent *ev)
+MonthChangedOrBadTime(CARD32 *ms)
 {
     /* If the ddx/OS is careless about not processing timestamped events from
      * different sources in sorted order, then it's possible for time to go
      * backwards when it should not.  Here we ensure a decent time.
      */
-    if ((currentTime.milliseconds - ev->any.time) > TIMESLOP)
+    if ((currentTime.milliseconds - *ms) > TIMESLOP)
         currentTime.months++;
     else
-        ev->any.time = currentTime.milliseconds;
+        *ms = currentTime.milliseconds;
 }
 
-static void
-NoticeTime(InternalEvent *ev, DeviceIntPtr dev)
+void
+NoticeTime(const DeviceIntPtr dev, TimeStamp time)
 {
-    if (ev->any.time < currentTime.milliseconds)
-        MonthChangedOrBadTime(ev);
-    currentTime.milliseconds = ev->any.time;
     lastDeviceEventTime[XIAllDevices] = currentTime;
     lastDeviceEventTime[dev->id] = currentTime;
 }
 
+static void
+NoticeTimeMillis(const DeviceIntPtr dev, CARD32 *ms)
+{
+    TimeStamp time;
+    if (*ms < currentTime.milliseconds)
+        MonthChangedOrBadTime(ms);
+    time.months = currentTime.months;
+    time.milliseconds = *ms;
+    NoticeTime(dev, time);
+}
+
 void
 NoticeEventTime(InternalEvent *ev, DeviceIntPtr dev)
 {
     if (!syncEvents.playingEvents)
-        NoticeTime(ev, dev);
+        NoticeTimeMillis(dev, &ev->any.time);
+}
+
+TimeStamp
+LastEventTime(int deviceid)
+{
+    return lastDeviceEventTime[deviceid];
 }
 
 /**************************************************************************
@@ -1093,7 +1109,7 @@ EnqueueEvent(InternalEvent *ev, DeviceIntPtr device)
     if (!xorg_list_is_empty(&syncEvents.pending))
         tail = xorg_list_last_entry(&syncEvents.pending, QdEventRec, next);
 
-    NoticeTime((InternalEvent *)event, device);
+    NoticeTimeMillis(device, &ev->any.time);
 
     /* Fix for key repeating bug. */
     if (device->key != NULL && device->key->xkbInfo != NULL &&
@@ -5276,8 +5292,11 @@ InitEvents(void)
     inputInfo.pointer = (DeviceIntPtr) NULL;
 
     for (i = 0; i < MAXDEVICES; i++) {
+        DeviceIntRec dummy;
         memcpy(&event_filters[i], default_filter, sizeof(default_filter));
-        lastDeviceEventTime[i] = currentTime;
+
+        dummy.id = i;
+        NoticeTime(&dummy, currentTime);
     }
 
     syncEvents.replayDev = (DeviceIntPtr) NULL;
diff --git a/dix/globals.c b/dix/globals.c
index 332b91f..ad9145b 100644
--- a/dix/globals.c
+++ b/dix/globals.c
@@ -122,7 +122,6 @@ Bool party_like_its_1989 = FALSE;
 Bool whiteRoot = FALSE;
 
 TimeStamp currentTime;
-TimeStamp lastDeviceEventTime[MAXDEVICES];
 
 int defaultColorVisualClass = -1;
 int monitorResolution = 0;
diff --git a/dix/window.c b/dix/window.c
index cff341b..92df1eb 100644
--- a/dix/window.c
+++ b/dix/window.c
@@ -3089,9 +3089,7 @@ dixSaveScreens(ClientPtr client, int on, int mode)
             DeviceIntPtr dev;
             UpdateCurrentTimeIf();
             nt_list_for_each_entry(dev, inputInfo.devices, next)
-                lastDeviceEventTime[dev->id] = currentTime;
-            lastDeviceEventTime[XIAllDevices] = currentTime;
-            lastDeviceEventTime[XIAllMasterDevices] = currentTime;
+                NoticeTime(dev, currentTime);
         }
         SetScreenSaverTimer();
     }
diff --git a/include/dix.h b/include/dix.h
index 171e56e..fd2490f 100644
--- a/include/dix.h
+++ b/include/dix.h
@@ -315,8 +315,13 @@ extern _X_EXPORT WindowPtr
 GetSpriteWindow(DeviceIntPtr pDev);
 
 extern _X_EXPORT void
+NoticeTime(const DeviceIntPtr dev,
+           TimeStamp time);
+extern _X_EXPORT void
 NoticeEventTime(InternalEvent *ev,
                 DeviceIntPtr dev);
+extern _X_EXPORT TimeStamp
+LastEventTime(int deviceid);
 
 extern void
 EnqueueEvent(InternalEvent * /* ev */ ,
diff --git a/include/dixstruct.h b/include/dixstruct.h
index 0be7f0e..7711cde 100644
--- a/include/dixstruct.h
+++ b/include/dixstruct.h
@@ -144,7 +144,6 @@ typedef struct _WorkQueue {
 } WorkQueueRec;
 
 extern _X_EXPORT TimeStamp currentTime;
-extern _X_EXPORT TimeStamp lastDeviceEventTime[MAXDEVICES];
 
 extern _X_EXPORT int
 CompareTimeStamps(TimeStamp /*a */ ,
diff --git a/os/WaitFor.c b/os/WaitFor.c
index 393890f..c5f4cd7 100644
--- a/os/WaitFor.c
+++ b/os/WaitFor.c
@@ -561,7 +561,7 @@ NextDPMSTimeout(INT32 timeout)
 static CARD32
 ScreenSaverTimeoutExpire(OsTimerPtr timer, CARD32 now, pointer arg)
 {
-    INT32 timeout = now - lastDeviceEventTime[XIAllDevices].milliseconds;
+    INT32 timeout = now - LastEventTime(XIAllDevices).milliseconds;
     CARD32 nextTimeout = 0;
 
 #ifdef DPMSExtension
diff --git a/os/xdmcp.c b/os/xdmcp.c
index 0538ac5..11f1133 100644
--- a/os/xdmcp.c
+++ b/os/xdmcp.c
@@ -1391,7 +1391,7 @@ recv_alive_msg(unsigned length)
         if (SessionRunning && AliveSessionID == SessionID) {
             /* backoff dormancy period */
             state = XDM_RUN_SESSION;
-            if ((GetTimeInMillis() - lastDeviceEventTime[XIAllDevices].milliseconds) >
+            if ((GetTimeInMillis() - LastEventTime(XIAllDevices).milliseconds) >
                 keepaliveDormancy * 1000) {
                 keepaliveDormancy <<= 1;
                 if (keepaliveDormancy > XDM_MAX_DORMANCY)
commit b7c9bd9cf276e92a73be57ff2ed32b47a80f13fb
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Oct 16 09:21:47 2013 +1000

    sync: supply the counter from IdleTimeBlockHandler
    
    The main idletime counter has an initialized deviceid, might as well be
    supplying it properly. Without this, we'd only ever check the XIAllDevices
    counter, so the wait would never be adjusted for the device-specific triggers.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/Xext/sync.c b/Xext/sync.c
index eaf0637..f8eb02a 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -2624,7 +2624,7 @@ IdleTimeBlockHandler(pointer pCounter, struct timeval **wt, pointer LastSelectMa
         return;
 
     old_idle = counter->value;
-    IdleTimeQueryValue(NULL, &idle);
+    IdleTimeQueryValue(counter, &idle);
     counter->value = idle;      /* push, so CheckTrigger works */
 
     if (less && XSyncValueLessOrEqual(idle, *less)) {
commit 2efe49c1029f959fe80879bcf50df42e8b80451d
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Oct 16 13:01:01 2013 +1000

    sync: always call BracketValues when recalculating upper/lower brackets
    
    Both ServertimeBracketValues and IdleTimeBracketValues copy the value into
    there SysCounter privates. Call it for a NULL set as well, so we don't end up
    with stale pointers and we can remove the block/wakeup handlers.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/Xext/sync.c b/Xext/sync.c
index f93ac18..eaf0637 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -1058,9 +1058,8 @@ SyncComputeBracketValues(SyncCounter * pCounter)
         }
     }                           /* end for each trigger */
 
-    if (pnewgtval || pnewltval) {
-        (*psci->BracketValues) ((pointer) pCounter, pnewltval, pnewgtval);
-    }
+    (*psci->BracketValues) ((pointer) pCounter, pnewltval, pnewgtval);
+
 }
 
 /*
commit 5c7cfd4c6978834551848e1be62af240102e39b5
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Oct 15 10:11:20 2013 +1000

    sync: compress two if statements
    
    No functional changes, just merges a > and == condition into a >= condition.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/Xext/sync.c b/Xext/sync.c
index 9ae5b39..f93ac18 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -1031,42 +1031,29 @@ SyncComputeBracketValues(SyncCounter * pCounter)
         }
         else if (pTrigger->test_type == XSyncNegativeTransition &&
                  ct != XSyncCounterNeverIncreases) {
-            if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
-                XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less))
-            {
-                psci->bracket_less = pTrigger->test_value;
-                pnewltval = &psci->bracket_less;
-            }
-            else if (XSyncValueEqual(pCounter->value, pTrigger->test_value) &&
-                     XSyncValueGreaterThan(pTrigger->test_value,
-                                           psci->bracket_less)) {
-                /*
-                 * The value is exactly equal to our threshold.  We want one
-                 * more event in the negative direction to ensure we pick up
-                 * when the value is less than this threshold.
-                 */
-                psci->bracket_less = pTrigger->test_value;
-                pnewltval = &psci->bracket_less;
+            if (XSyncValueGreaterOrEqual(pCounter->value, pTrigger->test_value) &&
+                XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less)) {
+                    /*
+                     * If the value is exactly equal to our threshold, we want one
+                     * more event in the negative direction to ensure we pick up
+                     * when the value is less than this threshold.
+                     */
+                    psci->bracket_less = pTrigger->test_value;
+                    pnewltval = &psci->bracket_less;
             }
         }
         else if (pTrigger->test_type == XSyncPositiveTransition &&
                  ct != XSyncCounterNeverDecreases) {
-            if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
-                XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater))
-            {
-                psci->bracket_greater = pTrigger->test_value;
-                pnewgtval = &psci->bracket_greater;
-            }
-            else if (XSyncValueEqual(pCounter->value, pTrigger->test_value) &&
-                     XSyncValueLessThan(pTrigger->test_value,
-                                        psci->bracket_greater)) {
-                /*
-                 * The value is exactly equal to our threshold.  We want one
-                 * more event in the positive direction to ensure we pick up
-                 * when the value *exceeds* this threshold.
-                 */
-                psci->bracket_greater = pTrigger->test_value;
-                pnewgtval = &psci->bracket_greater;
+            if (XSyncValueLessOrEqual(pCounter->value, pTrigger->test_value) &&
+                XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater)) {
+                    /*
+                     * If the value is exactly equal to our threshold, we
+                     * want one more event in the positive direction to
+                     * ensure we pick up when the value *exceeds* this
+                     * threshold.
+                     */
+                    psci->bracket_greater = pTrigger->test_value;
+                    pnewgtval = &psci->bracket_greater;
             }
         }
     }                           /* end for each trigger */
commit 73b2660d7273d175d279d22f8ca0c3932a14ff1c
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date:   Mon Sep 16 21:47:16 2013 -0700

    Avoid use-after-free in dix/dixfonts.c: doImageText() [CVE-2013-4396]
    
    Save a pointer to the passed in closure structure before copying it
    and overwriting the *c pointer to point to our copy instead of the
    original.  If we hit an error, once we free(c), reset c to point to
    the original structure before jumping to the cleanup code that
    references *c.
    
    Since one of the errors being checked for is whether the server was
    able to malloc(c->nChars * itemSize), the client can potentially pass
    a number of characters chosen to cause the malloc to fail and the
    error path to be taken, resulting in the read from freed memory.
    
    Since the memory is accessed almost immediately afterwards, and the
    X server is mostly single threaded, the odds of the free memory having
    invalid contents are low with most malloc implementations when not using
    memory debugging features, but some allocators will definitely overwrite
    the memory there, leading to a likely crash.
    
    Reported-by: Pedro Ribeiro <pedrib at gmail.com>
    Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/dix/dixfonts.c b/dix/dixfonts.c
index feb765d..2e34d37 100644
--- a/dix/dixfonts.c
+++ b/dix/dixfonts.c
@@ -1425,6 +1425,7 @@ doImageText(ClientPtr client, ITclosurePtr c)
             GC *pGC;
             unsigned char *data;
             ITclosurePtr new_closure;
+            ITclosurePtr old_closure;
 
             /* We're putting the client to sleep.  We need to
                save some state.  Similar problem to that handled
@@ -1436,12 +1437,14 @@ doImageText(ClientPtr client, ITclosurePtr c)
                 err = BadAlloc;
                 goto bail;
             }
+            old_closure = c;
             *new_closure = *c;
             c = new_closure;
 
             data = malloc(c->nChars * itemSize);
             if (!data) {
                 free(c);
+                c = old_closure;
                 err = BadAlloc;
                 goto bail;
             }
@@ -1452,6 +1455,7 @@ doImageText(ClientPtr client, ITclosurePtr c)
             if (!pGC) {
                 free(c->data);
                 free(c);
+                c = old_closure;
                 err = BadAlloc;
                 goto bail;
             }
@@ -1464,6 +1468,7 @@ doImageText(ClientPtr client, ITclosurePtr c)
                 FreeScratchGC(pGC);
                 free(c->data);
                 free(c);
+                c = old_closure;
                 err = BadAlloc;
                 goto bail;
             }
commit 8afe20d4e34adcfd29bdf43a01d55335ea2c5dba
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date:   Mon Sep 16 21:45:29 2013 -0700

    Update GLX dependencies now that DRI & DRI2 are builtins, not modules
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>

diff --git a/hw/xfree86/dixmods/Makefile.am b/hw/xfree86/dixmods/Makefile.am
index 9933bc8..3c43640 100644
--- a/hw/xfree86/dixmods/Makefile.am
+++ b/hw/xfree86/dixmods/Makefile.am
@@ -32,7 +32,7 @@ libglx_la_LIBADD = $(top_builddir)/glx/libglx.la $(GLX_SYS_LIBS)
 if AIGLX_DRI_LOADER
 libglx_la_LIBADD += $(top_builddir)/glx/libglxdri.la
 if NO_UNDEFINED
-libglx_la_LIBADD += ../dri/libdri.la ../dri2/libdri2.la
+libglx_la_LIBADD += $(LIBDRM_LIBS) $(PIXMAN_LIBS)
 endif
 endif
 libglx_la_SOURCES = glxmodule.c
commit 2704bdb24a2c7bac65b90e05f1a68438b34ecf58
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date:   Tue Sep 3 22:53:28 2013 -0700

    DMX glxproxy: Don't allocate & copy data just to free it unused
    
    Two functions in the DMX glxproxy code loop over all the backend
    screens, starting at the highest numbered and counting down to
    the lowest.
    
    Previously, for each screen, the code would allocate a buffer
    large enough to read the reply from the backend, copy that reply
    into the buffer, and then if it wasn't the final screen, free it.
    Only the buffer from the final screen is used, to pass on to the
    client in the reply.
    
    This modifies it to just immediately discard the responses from
    the screens as we loop through it, only doing the allocate & copy
    work for the one buffer we pass back to the client.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
    Reviewed-by: Alex Deucher <aleander.deucher at amd.com>

diff --git a/hw/dmx/glxProxy/glxsingle.c b/hw/dmx/glxProxy/glxsingle.c
index abfb880..679a302 100644
--- a/hw/dmx/glxProxy/glxsingle.c
+++ b/hw/dmx/glxProxy/glxsingle.c
@@ -349,25 +349,29 @@ __glXForwardAllWithReply(__GLXclientState * cl, GLbyte * pc)
          * get the reply from the back-end server
          */
         _XReply(dpy, (xReply *) &be_reply, 0, False);
-        be_buf_size = be_reply.length << 2;
-        if (be_buf_size > 0) {
-            be_buf = (char *) malloc(be_buf_size);
-            if (be_buf) {
-                _XRead(dpy, be_buf, be_buf_size);
+        if (s == from_screen) {
+            /* Save data from last reply to send on to client */
+            be_buf_size = be_reply.length << 2;
+            if (be_buf_size > 0) {
+                be_buf = malloc(be_buf_size);
+                if (be_buf) {
+                    _XRead(dpy, be_buf, be_buf_size);
+                }
+                else {
+                    /* Throw data on the floor */
+                    _XEatDataWords(dpy, be_reply.length);
+                    return BadAlloc;
+                }
             }
-            else {
-                /* Throw data on the floor */
+        }
+        else {
+            /* Just discard data from all replies before the last one */
+            if (be_reply.length > 0)
                 _XEatDataWords(dpy, be_reply.length);
-                return BadAlloc;
-            }
         }
 
         UnlockDisplay(dpy);
         SyncHandle();
-
-        if (s > from_screen && be_buf_size > 0) {
-            free(be_buf);
-        }
     }
 
     /*
diff --git a/hw/dmx/glxProxy/glxvendor.c b/hw/dmx/glxProxy/glxvendor.c
index 50d505c..b475daf 100644
--- a/hw/dmx/glxProxy/glxvendor.c
+++ b/hw/dmx/glxProxy/glxvendor.c
@@ -332,25 +332,29 @@ __glXVForwardAllWithReply(__GLXclientState * cl, GLbyte * pc)
          * get the reply from the back-end server
          */
         _XReply(dpy, (xReply *) &be_reply, 0, False);
-        be_buf_size = be_reply.length << 2;
-        if (be_buf_size > 0) {
-            be_buf = (char *) malloc(be_buf_size);
-            if (be_buf) {
-                _XRead(dpy, be_buf, be_buf_size);
+        if (s == from_screen) {
+            /* Save data from last reply to send on to client */
+            be_buf_size = be_reply.length << 2;
+            if (be_buf_size > 0) {
+                be_buf = malloc(be_buf_size);
+                if (be_buf) {
+                    _XRead(dpy, be_buf, be_buf_size);
+                }
+                else {
+                    /* Throw data on the floor */
+                    _XEatDataWords(dpy, be_reply.length);
+                    return BadAlloc;
+                }
             }
-            else {
-                /* Throw data on the floor */
+        }
+        else {
+            /* Just discard data from all replies before the last one */
+            if (be_reply.length > 0)
                 _XEatDataWords(dpy, be_reply.length);
-                return BadAlloc;
-            }
         }
 
         UnlockDisplay(dpy);
         SyncHandle();
-
-        if (s > from_screen && be_buf_size > 0) {
-            free(be_buf);
-        }
     }
 
     /*
commit 6c06c268adbab63ebe7490489aa030724cbdc54b
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date:   Sun Aug 18 18:02:49 2013 -0700

    Skip damage calls if DamageCreate fails in exa functions
    
    Fixes parfait errors such as:
       Null pointer dereference (CWE 476): Write to null pointer pDamage
            at line 1833 of miext/damage/damage.c in function 'DamageRegister'.
              Function DamageCreate may return constant 'NULL' at line 1775,
                  called at line 232 of exa/exa_migration_mixed.c
                  in function 'exaPrepareAccessReg_mixed'.
              Constant 'NULL' passed into function DamageRegister,
                  argument pDamage, from call at line 237.
              Null pointer introduced at line 1775 of miext/damage/damage.c
                  in function 'DamageCreate'.
       Null pointer dereference (CWE 476): Write to null pointer pDamage
            at line 1833 of miext/damage/damage.c in function 'DamageRegister'.
              Function DamageCreate may return constant 'NULL' at line 1775,
                  called at line 104 of exa/exa_mixed.c
                  in function 'exaCreatePixmap_mixed'.
              Constant 'NULL' passed into function DamageRegister,
                  argument pDamage, from call at line 109.
              Null pointer introduced at line 1775 of miext/damage/damage.c
                  in function 'DamageCreate'.
    
    Checks are similar to handling results of other calls to DamageCreate.
    
    [ This bug was found by the Parfait 1.3.0 bug checking tool.
      http://labs.oracle.com/pls/apex/f?p=labs:49:::::P49_PROJECT_ID:13 ]
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>

diff --git a/exa/exa_migration_mixed.c b/exa/exa_migration_mixed.c
index 5e0bf15..cf66327 100644
--- a/exa/exa_migration_mixed.c
+++ b/exa/exa_migration_mixed.c
@@ -233,10 +233,13 @@ exaPrepareAccessReg_mixed(PixmapPtr pPixmap, int index, RegionPtr pReg)
                                                pPixmap->drawable.pScreen,
                                                pPixmap);
 
-            DamageRegister(&pPixmap->drawable, pExaPixmap->pDamage);
-            /* This ensures that pending damage reflects the current operation. */
-            /* This is used by exa to optimize migration. */
-            DamageSetReportAfterOp(pExaPixmap->pDamage, TRUE);
+            if (pExaPixmap->pDamage) {
+                DamageRegister(&pPixmap->drawable, pExaPixmap->pDamage);
+                /* This ensures that pending damage reflects the current
+                 * operation. This is used by exa to optimize migration.
+                 */
+                DamageSetReportAfterOp(pExaPixmap->pDamage, TRUE);
+            }
 
             if (has_gpu_copy) {
                 exaPixmapDirty(pPixmap, 0, 0, pPixmap->drawable.width,
diff --git a/exa/exa_mixed.c b/exa/exa_mixed.c
index 3e2dcf2..b43dfec 100644
--- a/exa/exa_mixed.c
+++ b/exa/exa_mixed.c
@@ -106,10 +106,13 @@ exaCreatePixmap_mixed(ScreenPtr pScreen, int w, int h, int depth,
                                                pPixmap->drawable.pScreen,
                                                pPixmap);
 
-            DamageRegister(&pPixmap->drawable, pExaPixmap->pDamage);
-            /* This ensures that pending damage reflects the current operation. */
-            /* This is used by exa to optimize migration. */
-            DamageSetReportAfterOp(pExaPixmap->pDamage, TRUE);
+            if (pExaPixmap->pDamage) {
+                DamageRegister(&pPixmap->drawable, pExaPixmap->pDamage);
+                /* This ensures that pending damage reflects the current
+                 * operation. This is used by exa to optimize migration.
+                 */
+                DamageSetReportAfterOp(pExaPixmap->pDamage, TRUE);
+            }
         }
     }
 
commit 7cf1b595c8c8f9776a39559d2878cf90af3f2859
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Sep 4 15:34:29 2013 +1000

    dix: only deliver for the current grab type
    
    Use the grabtype to determine which type of event to send - all other events
    are pointless and may result in erroneous events being delivered.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/dix/events.c b/dix/events.c
index 452fc3b..7a1b1c3 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -4256,17 +4256,8 @@ DeliverGrabbedEvent(InternalEvent *event, DeviceIntPtr thisDev,
 
         sendCore = (IsMaster(thisDev) && thisDev->coreEvents);
         /* try core event */
-        if (sendCore && grab->grabtype == CORE) {
-            deliveries = DeliverOneGrabbedEvent(event, thisDev, CORE);
-        }
-
-        if (!deliveries) {
-            deliveries = DeliverOneGrabbedEvent(event, thisDev, XI2);
-        }
-
-        if (!deliveries) {
-            deliveries = DeliverOneGrabbedEvent(event, thisDev, XI);
-        }
+        if ((sendCore && grab->grabtype == CORE) || grab->grabtype != CORE)
+            deliveries = DeliverOneGrabbedEvent(event, thisDev, grab->grabtype);
 
         if (deliveries && (event->any.type == ET_Motion))
             thisDev->valuator->motionHintWindow = grab->window;
commit 78944d62ffc7fec6f75b6f514ab7a139ba9bc77b
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Sep 4 15:34:28 2013 +1000

    dix: don't attempt to deliver an event for a different grabtype
    
    For an active grab, grab->eventMask can be either the core or the XI1 mask.
    With the overlap of event filters, calling DeliverOneGrabbedEvent(XI1) for a
    ProximityOut event will trigger if the client has selected for enter events -
    the filter is the same for both.
    
    Thus, we end up delivering a proximity event to a client not expecting one.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/dix/events.c b/dix/events.c
index d63db95..452fc3b 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -4142,6 +4142,9 @@ DeliverOneGrabbedEvent(InternalEvent *event, DeviceIntPtr dev,
     GrabPtr grab = grabinfo->grab;
     Mask filter;
 
+    if (grab->grabtype != level)
+        return 0;
+
     switch (level) {
     case XI2:
         rc = EventToXI2(event, &xE);
commit 6159811a1aaf848016dbfa7bde68df097027870c
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Sep 4 15:34:27 2013 +1000

    include: change grabtypes to start at 1
    
    Avoid erroneous detection of an unset grabtype as CORE
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/include/input.h b/include/input.h
index 1745e9a..350daba 100644
--- a/include/input.h
+++ b/include/input.h
@@ -113,9 +113,9 @@ SOFTWARE.
 #endif
 
 enum InputLevel {
-    CORE,
-    XI,
-    XI2,
+    CORE = 1,
+    XI = 2,
+    XI2 = 3,
 };
 
 typedef unsigned long Leds;
commit be6ea80b79b3d6eb97106ea142e01acbdf059995
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Sep 4 15:34:26 2013 +1000

    dix: only allow button and key events to freeze a sync'd pointer
    
    If a client calls XAllowEvents(SyncPointer) it expects events as normal until
    the next button press or release event - that freezes the device. An e.g.
    proximity event must thus not freeze the pointer.
    
    As per the spec, only button and key events may do so, so narrow it to these
    cases.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/dix/events.c b/dix/events.c
index 086601a..d63db95 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -4268,7 +4268,11 @@ DeliverGrabbedEvent(InternalEvent *event, DeviceIntPtr thisDev,
         if (deliveries && (event->any.type == ET_Motion))
             thisDev->valuator->motionHintWindow = grab->window;
     }
-    if (deliveries && !deactivateGrab && event->any.type != ET_Motion) {
+    if (deliveries && !deactivateGrab &&
+        (event->any.type == ET_KeyPress ||
+         event->any.type == ET_KeyRelease ||
+         event->any.type == ET_ButtonPress ||
+         event->any.type == ET_ButtonRelease)) {
         switch (grabinfo->sync.state) {
         case FREEZE_BOTH_NEXT_EVENT:
             dev = GetPairedDevice(thisDev);
commit 93a27b2dd0d7ed51120f42456a91a7c59902ebc2
Author: Michele Baldessari <michele at acksyn.org>
Date:   Sun Sep 15 19:30:38 2013 +0100

    Xephyr: restore cursor visibility
    
      Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=69388
    
    Commit c100211034ab69ce453a1644fb61c6808d7e3eda (dix: only show the cursor
    if a window defines one (#58398)) broke the default cursor behaviour in
    Xephyr (unless run with -retro). Restore the default cursor visibility
    so that '-retro' or '-host-cursor' are not needed to have a visible
    cursor.
    
    Signed-off-by: Michele Baldessari <michele at acksyn.org>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    
    as of ba387cf21f7d95987211f75d8024601e7d64e322 "ephyr: Use host (HW) cursors
    by default." this only applies if -sw-cursor is given on the cmdline.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index d985571..5fa33b9 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -28,6 +28,7 @@
 #endif
 
 #include "hostx.h"
+#include "input.h"
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -436,6 +437,7 @@ hostx_init(void)
     xcb_change_gc(HostX.conn, HostX.gc, XCB_GC_FOREGROUND, &pixel);
 
     if (!hostx_want_host_cursor ()) {
+        CursorVisible = TRUE;
         /* Ditch the cursor, we provide our 'own' */
         cursor_pxm = xcb_generate_id(HostX.conn);
         xcb_create_pixmap(HostX.conn, 1, cursor_pxm, HostX.winroot, 1, 1);
commit 70efc799cbeec26f19831b3b14c0d4646198a077
Author: Michele Baldessari <michele at acksyn.org>
Date:   Sun Sep 15 19:56:34 2013 +0100

    Fix Xephyr compilation when DEBUG is enabled
    
    When DEBUG is enabled Xephyr compilation fails:
    ephyrdriext.c:343:133: error: 'is_ok' undeclared (first use in this
    function)
         EPHYR_LOG("leave. is_ok:%d\n", is_ok);
    
    Just reemove bogus is_ok variable.
    
    Signed-off-by: Michele Baldessari <michele at acksyn.org>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c
index 13df60a..e2b33db 100644
--- a/hw/kdrive/ephyr/ephyrdriext.c
+++ b/hw/kdrive/ephyr/ephyrdriext.c
@@ -343,7 +343,7 @@ ephyrDRIClipNotify(WindowPtr a_win, int a_x, int a_y)
     free(rects);
     rects = NULL;
 
-    EPHYR_LOG("leave. is_ok:%d\n", is_ok);
+    EPHYR_LOG("leave.\n");
     /*do cleanup here */
 }
 
commit 5ac4bfca64bd75474e550b26bc1195a5ca245752
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Sep 10 14:18:18 2013 -0400

    input: calloc minimization for xi2mask_new
    
    There's no reason to do this as (nmasks + 2) callocs, and it's a
    surprisingly hot path.  Turns out you hit this ~once per passive grab,
    and you do a few bajillion passive grab changes every time you enter or
    leave the overview in gnome-shell.  According to a callgrind of Xorg
    with gnome-shell-perf-tool run against it:
    
    Ir before: 721437275
    Ir after:  454227086
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Jasper St. Pierre <jstpierre at mecheye.net>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/dix/inpututils.c b/dix/inpututils.c
index 9e38e17..a10a7c7 100644
--- a/dix/inpututils.c
+++ b/dix/inpututils.c
@@ -960,8 +960,15 @@ XI2Mask *
 xi2mask_new_with_size(size_t nmasks, size_t size)
 {
     int i;
+    int alloc_size;
+    unsigned char *cursor;
+    XI2Mask *mask;
 
-    XI2Mask *mask = calloc(1, sizeof(*mask));
+    alloc_size = sizeof(struct _XI2Mask)
+	       + nmasks * sizeof(unsigned char *)
+	       + nmasks * size;
+
+    mask = calloc(1, alloc_size);
 
     if (!mask)
         return NULL;
@@ -969,20 +976,14 @@ xi2mask_new_with_size(size_t nmasks, size_t size)
     mask->nmasks = nmasks;
     mask->mask_size = size;
 
-    mask->masks = calloc(mask->nmasks, sizeof(*mask->masks));
-    if (!mask->masks)
-        goto unwind;
+    mask->masks = (unsigned char **)(mask + 1);
+    cursor = (unsigned char *)(mask + 1) + nmasks * sizeof(unsigned char *);
 
-    for (i = 0; i < mask->nmasks; i++) {
-        mask->masks[i] = calloc(1, mask->mask_size);
-        if (!mask->masks[i])
-            goto unwind;
+    for (i = 0; i < nmasks; i++) {
+        mask->masks[i] = cursor;
+	cursor += size;
     }
     return mask;
-
- unwind:
-    xi2mask_free(&mask);
-    return NULL;
 }
 
 /**
@@ -1003,14 +1004,9 @@ xi2mask_new(void)
 void
 xi2mask_free(XI2Mask **mask)
 {
-    int i;
-
     if (!(*mask))
         return;
 
-    for (i = 0; (*mask)->masks && i < (*mask)->nmasks; i++)
-        free((*mask)->masks[i]);
-    free((*mask)->masks);
     free((*mask));
     *mask = NULL;
 }
commit 44d502c6f1d03a9e548f0941cde0228b6fde8394
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Sun Oct 6 16:45:52 2013 +0100

    hw/xwin: Fix for "glx: Remove screen number from __GLXconfig"
    
    Fix compilation after commit c3c976f54c3c282d6fa6c8360688e036bc43d210 "glx:
    Remove screen number from __GLXconfig"
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/xwin/glx/indirect.c b/hw/xwin/glx/indirect.c
index 02f9b0e..b79f023 100644
--- a/hw/xwin/glx/indirect.c
+++ b/hw/xwin/glx/indirect.c
@@ -2014,9 +2014,6 @@ glxWinCreateConfigs(HDC hdc, glxWinScreen * screen)
         else
             c->base.swapMethod = GLX_SWAP_UNDEFINED_OML;
 
-        /* EXT_import_context */
-        c->base.screen = screen->base.pScreen->myNum;
-
         /* EXT_texture_from_pixmap */
         c->base.bindToTextureRgb = -1;
         c->base.bindToTextureRgba = -1;
@@ -2393,9 +2390,6 @@ glxWinCreateConfigsExt(HDC hdc, glxWinScreen * screen)
             c->base.swapMethod = GLX_SWAP_UNDEFINED_OML;
         }
 
-        /* EXT_import_context */
-        c->base.screen = screen->base.pScreen->myNum;
-
         /* EXT_texture_from_pixmap */
         /*
            Mesa's DRI configs always have bindToTextureRgb/Rgba TRUE (see driCreateConfigs(), so setting
commit 6a9bd103cb993e873cb82664b677ceed73c0bd85
Merge: ea3b7db 8aae28e
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Oct 7 17:29:38 2013 -0700

    Merge remote-tracking branch 'jeremyhu/master'

commit ea3b7db4b747f883ef7b8b524ee13bf8a63add14
Author: Emil Velikov <emil.l.velikov at gmail.com>
Date:   Mon Oct 7 18:29:25 2013 +0100

    configure.ac: Include missing proto declarations in SDK_REQUIRED_MODULES
    
    Commits a1d41e311c21e, 7d859bd87834d & 3ed2c6e11298c made extinit.h require
    the XF86 Big Font, XRes & ScrnSaver proto headers, but failed to add them
    to the SDK_REQUIRED_MODULES so pkg-config would find them for driver builds.
    
    Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
    Reviewed-by: Daniel Stone <daniel at fooishbar.org>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 3df579a..67ef3c2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1035,12 +1035,14 @@ AM_CONDITIONAL(SCREENSAVER, [test "x$SCREENSAVER" = xyes])
 if test "x$SCREENSAVER" = xyes; then
 	AC_DEFINE(SCREENSAVER, 1, [Support MIT-SCREEN-SAVER extension])
 	REQUIRED_MODULES="$REQUIRED_MODULES $SCRNSAVERPROTO"
+	SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $SCRNSAVERPROTO"
 fi
 
 AM_CONDITIONAL(RES, [test "x$RES" = xyes])
 if test "x$RES" = xyes; then
 	AC_DEFINE(RES, 1, [Support X resource extension])
 	REQUIRED_MODULES="$REQUIRED_MODULES $RESOURCEPROTO"
+	SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $RESOURCEPROTO"
 fi
 
 # The XRes extension may support client ID tracking only if it has
@@ -1184,6 +1186,7 @@ AM_CONDITIONAL(XF86BIGFONT, [test "x$XF86BIGFONT" = xyes])
 if test "x$XF86BIGFONT" = xyes; then
 	AC_DEFINE(XF86BIGFONT, 1, [Support XF86 Big font extension])
 	REQUIRED_MODULES="$REQUIRED_MODULES $BIGFONTPROTO"
+	SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $BIGFONTPROTO"
 fi
 
 AM_CONDITIONAL(DPMSExtension, [test "x$DPMSExtension" = xyes])
commit 8aae28e3cbdd49bfa8d940a4a517c94a53b94f86
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Sun Oct 6 09:20:45 2013 -0700

    XQuartz: Dont't set screen on __GLXConfig
    
    Fixes regression introduced by c3c976f54c3c282d6fa6c8360688e036bc43d210
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>

diff --git a/hw/xquartz/GL/visualConfigs.c b/hw/xquartz/GL/visualConfigs.c
index 92142cb..687bf80 100644
--- a/hw/xquartz/GL/visualConfigs.c
+++ b/hw/xquartz/GL/visualConfigs.c
@@ -140,8 +140,6 @@ __GLXconfig *__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
                                         c->visualType = GLX_TRUE_COLOR;
                                         c->next = c + 1;
 
-                                        c->screen = screenNumber;
-
                                         c->level = 0;
                                         c->indexBits = 0;
 
commit c5f8eb968efa970201712105a1ac880b517e7b6d
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Sun Oct 6 09:18:15 2013 -0700

    rootless: Use miCopyRegion instead of fbCopyRegion
    
    Fixes regression introduced by e657635dbe6b92875b0e88370557c2cbab673a49
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>

diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c
index cfcb6e5..7e3c281 100644
--- a/miext/rootless/rootlessWindow.c
+++ b/miext/rootless/rootlessWindow.c
@@ -684,7 +684,7 @@ RootlessResizeCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
     if (gResizeDeathCount == 1) {
         /* Simple case, we only have a single source pixmap. */
 
-        fbCopyRegion(&gResizeDeathPix[0]->drawable,
+        miCopyRegion(&gResizeDeathPix[0]->drawable,
                      &pScreen->GetWindowPixmap(pWin)->drawable, 0,
                      &rgnDst, dx, dy, fbCopyWindowProc, 0, 0);
     }
@@ -700,7 +700,7 @@ RootlessResizeCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
             RegionNull(&clipped);
             RegionIntersect(&rgnDst, &clip, &clipped);
 
-            fbCopyRegion(&gResizeDeathPix[i]->drawable,
+            miCopyRegion(&gResizeDeathPix[i]->drawable,
                          &pScreen->GetWindowPixmap(pWin)->drawable, 0,
                          &clipped, dx, dy, fbCopyWindowProc, 0, 0);
 
@@ -778,7 +778,7 @@ RootlessCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
     else {
         RootlessStartDrawing(pWin);
 
-        fbCopyRegion((DrawablePtr) pWin, (DrawablePtr) pWin,
+        miCopyRegion((DrawablePtr) pWin, (DrawablePtr) pWin,
                      0, &rgnDst, dx, dy, fbCopyWindowProc, 0, 0);
 
         /* prgnSrc has been translated to dst position */
commit ccbe17b1c6da1ad9d085fc8133cdd15dc7004a4a
Author: Pino Toscano <toscano.pino at tiscali.it>
Date:   Wed Aug 28 17:15:03 2013 +0200

    os: move <arpa/inet.h> for any !win32 system
    
    It is needed in IPv6 configurations (for inet_pton) also when
    SIOCGIFCONF is not defined.
    
    Signed-off-by: Pino Toscano <toscano.pino at tiscali.it>
    Acked-by: Samuel Thibault <samuel.thibault at ens-lyon.org>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/os/access.c b/os/access.c
index 88a44d9..6d991b3 100644
--- a/os/access.c
+++ b/os/access.c
@@ -163,6 +163,10 @@ SOFTWARE.
 /* #endif */
 #endif
 
+#if defined(IPv6) && defined(AF_INET6)
+#include <arpa/inet.h>
+#endif
+
 #endif                          /* WIN32 */
 
 #define X_INCLUDE_NETDB_H
@@ -461,10 +465,6 @@ DefineSelf(int fd)
 #endif
 
 #if defined(IPv6) && defined(AF_INET6)
-#include <arpa/inet.h>
-#endif
-
-#if defined(IPv6) && defined(AF_INET6)
 static void
 in6_fillscopeid(struct sockaddr_in6 *sin6)
 {
commit c079b8e675dd2762c9e07fe5d8c07612299dceb7
Author: Pino Toscano <toscano.pino at tiscali.it>
Date:   Wed Aug 28 17:04:48 2013 +0200

    xfree86/hurd: include <hurd.h>
    
    Needed for using get_privileged_port.
    
    Signed-off-by: Pino Toscano <toscano.pino at tiscali.it>
    Acked-by: Samuel Thibault <samuel.thibault at ens-lyon.org>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/xfree86/os-support/hurd/hurd_init.c b/hw/xfree86/os-support/hurd/hurd_init.c
index 185b2b9..fe1a764 100644
--- a/hw/xfree86/os-support/hurd/hurd_init.c
+++ b/hw/xfree86/os-support/hurd/hurd_init.c
@@ -42,6 +42,7 @@
 #include <sys/file.h>
 #include <assert.h>
 #include <mach.h>
+#include <hurd.h>
 
 int
 xf86ProcessArgument(int argc, char **argv, int i)
diff --git a/hw/xfree86/os-support/hurd/hurd_mmap.c b/hw/xfree86/os-support/hurd/hurd_mmap.c
index 6ac9efd..8e089ca 100644
--- a/hw/xfree86/os-support/hurd/hurd_mmap.c
+++ b/hw/xfree86/os-support/hurd/hurd_mmap.c
@@ -27,6 +27,7 @@
 #include<mach.h>
 #include<device/device.h>
 #include<mach/machine/mach_i386.h>
+#include <hurd.h>
 
 #include <X11/X.h>
 
diff --git a/hw/xfree86/os-support/hurd/hurd_video.c b/hw/xfree86/os-support/hurd/hurd_video.c
index 72474ba..b3b94c9 100644
--- a/hw/xfree86/os-support/hurd/hurd_video.c
+++ b/hw/xfree86/os-support/hurd/hurd_video.c
@@ -28,6 +28,7 @@
 #include <mach.h>
 #include <device/device.h>
 #include <mach/machine/mach_i386.h>
+#include <hurd.h>
 
 #include <X11/X.h>
 #include "input.h"
commit f0659a7f68a5a334879af01a6a63742eab1bf5de
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Oct 4 16:44:46 2013 -0700

    Bump version to 1.14.99.2
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index f322a8b..3df579a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.14.99.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2013-04-24"
-RELEASE_NAME="Sweet Tea"
+AC_INIT([xorg-server], 1.14.99.2, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2013-10-04"
+RELEASE_NAME="Chicory Coffee"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 
commit f2d149b6d10edea7233d93c7e19f71decf11dc62
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Oct 4 16:43:41 2013 -0700

    kdrive/ephyr: Remove duplicate ephyrExtensions and ephyrExtensionInit decls
    
    These were duplicated when GLX support was re-added on two different branches.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index 80b7a6a..cf8bc90 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -48,22 +48,6 @@ extern KdKeyboardDriver LinuxEvdevKeyboardDriver;
 
 void processScreenArg(const char *screen_size, char *parent_id);
 
-static const
-ExtensionModule ephyrExtensions[] = {
-#ifdef GLXEXT
-    {GlxExtensionInit, "GLX", &noGlxExtension},
-#endif
-};
-
-static void
-ephyrExtensionInit(void)
-{
-    int i;
-
-    for (i = 0; i < ARRAY_SIZE(ephyrExtensions); i++)
-        LoadExtension(&ephyrExtensions[i], TRUE);
-}
-
 void
 InitCard(char *name)
 {
commit e0a678f0596f3547b98d74d5f0438b484b059458
Author: Gaetan Nadon <memsize at videotron.ca>
Date:   Sat Sep 28 15:26:38 2013 -0400

    xfree86: add a comment as to why the logdir is created
    
    Without the logdir, the xserver will write the content of the log file on the
    terminal stating that it cannot be written and will stop.
    
    Refer to https://bugs.freedesktop.org/show_bug.cgi?id=3889
    
    Reviewed-By:  Matt Dew <marcoz at osource.org>
    Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index aed631b..59cfb5f 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -84,6 +84,7 @@ os-support/solaris/solaris- at SOLARIS_INOUT_ARCH@.il:
 	 $(MAKE) $(AM_MAKEFLAGS) solaris- at SOLARIS_INOUT_ARCH@.il
 endif
 
+# Without logdir, X will post an error on the terminal and will not start
 install-data-local:
 	$(AM_V_GEN)$(MKDIR_P) $(DESTDIR)$(logdir)
 if CYGWIN
commit 5bdbf2dba3f7da4a593b286020eab0c7857e940c
Author: Gaetan Nadon <memsize at videotron.ca>
Date:   Sat Sep 28 15:26:37 2013 -0400

    xfree86: Use $(MKDIR_P) for better code portability
    
    Still true that we should not use the lower case $(mkdir_p) version.
    However, remove the 2005 comment as the MKDIR_P is widely used now.
    
    Reviewed-By:  Matt Dew <marcoz at osource.org>
    Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index 3410e4a..aed631b 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -84,9 +84,8 @@ os-support/solaris/solaris- at SOLARIS_INOUT_ARCH@.il:
 	 $(MAKE) $(AM_MAKEFLAGS) solaris- at SOLARIS_INOUT_ARCH@.il
 endif
 
-# do not use $(mkdir_p) if you want automake 1.7 to work
 install-data-local:
-	mkdir -p $(DESTDIR)$(logdir)
+	$(AM_V_GEN)$(MKDIR_P) $(DESTDIR)$(logdir)
 if CYGWIN
 	$(INSTALL_DATA) libXorg.exe.a $(DESTDIR)$(libdir)/libXorg.exe.a
 endif
commit b8cfb0dc8426754b477b561bc158b8a24c143ddf
Author: Gaetan Nadon <memsize at videotron.ca>
Date:   Sat Sep 28 15:26:36 2013 -0400

    Uninstall X link and CYGWIN libXorg.exe.a in local install targets
    
    It is our duty to uninstall any files and/or directories that we installed
    through install-data-local and install-exec-hook.
    
    Currently the X symbolic link to Xorg remains on disk after running
    make uninstall.
    
    Note the exception for logdir which is usually shared by other modules.
    
    Reviewed-By:  Matt Dew <marcoz at osource.org>
    Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index 4b0edeb..3410e4a 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -98,6 +98,14 @@ if INSTALL_SETUID
 	chmod u+s $(DESTDIR)$(bindir)/Xorg
 endif
 
+uninstall-local:
+if CYGWIN
+	$(AM_V_at)rm -f $(DESTDIR)$(libdir)/libXorg.exe.a
+endif
+
+uninstall-hook:
+	$(AM_V_at)rm -f $(DESTDIR)$(bindir)/X
+
 # Use variables from XORG_MANPAGE_SECTIONS and X Server configuration
 # Do not include manpages.am as values are not appropriate for rc files
 CONF_SUBSTS =	-e 's|__filemansuffix__|$(FILE_MAN_SUFFIX)|g' \
commit 35a528e49269c3df75486cc606e51a8c1c083c06
Author: Gaetan Nadon <memsize at videotron.ca>
Date:   Sat Sep 28 15:26:35 2013 -0400

    Xorg binary: use install-exec-hook rather than install-exec-local
    
    The former was explicitly designed to execute additional code after the binary
    has been installed. The latter can be executed in any order, hence it's
    current dependency on install-binPROGRAMS as a workaround.
    
    The CYGWIN libXorg.exe.a target is an installation target rather than
    a post-installation one, so it should not be done as a hook. It does not depend
    on the Xorg executable being installed.
    
    Automake:
    "These hooks are run after all other install rules of the appropriate type,
    exec or data, have completed. So, for instance, it is possible to perform
    post-installation modifications using an install hook".
    
    "With the -local targets, there is no particular guarantee of execution order;
    typically, they are run early, but with parallel make, there is no way
    to be sure of that".
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index 73bddab..4b0edeb 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -87,17 +87,16 @@ endif
 # do not use $(mkdir_p) if you want automake 1.7 to work
 install-data-local:
 	mkdir -p $(DESTDIR)$(logdir)
+if CYGWIN
+	$(INSTALL_DATA) libXorg.exe.a $(DESTDIR)$(libdir)/libXorg.exe.a
+endif
 
-
-install-exec-local: install-binPROGRAMS
+install-exec-hook:
 	(cd $(DESTDIR)$(bindir) && rm -f X && $(LN_S) Xorg$(EXEEXT) X)
 if INSTALL_SETUID
 	chown root $(DESTDIR)$(bindir)/Xorg
 	chmod u+s $(DESTDIR)$(bindir)/Xorg
 endif
-if CYGWIN
-	$(INSTALL_DATA) libXorg.exe.a $(DESTDIR)$(libdir)/libXorg.exe.a
-endif
 
 # Use variables from XORG_MANPAGE_SECTIONS and X Server configuration
 # Do not include manpages.am as values are not appropriate for rc files
commit a1d87576a30008253eb0cc92b44c9718f6665062
Author: Gaetan Nadon <memsize at videotron.ca>
Date:   Sat Sep 28 15:26:34 2013 -0400

    Use $(LN_S) provided by AC_PROG_LN_S macro to create links
    
    For better code portability.
    
    Reviewed-By:  Matt Dew <marcoz at osource.org>
    Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index 6b66732..73bddab 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -90,7 +90,7 @@ install-data-local:
 
 
 install-exec-local: install-binPROGRAMS
-	(cd $(DESTDIR)$(bindir) && rm -f X && ln -s Xorg$(EXEEXT) X)
+	(cd $(DESTDIR)$(bindir) && rm -f X && $(LN_S) Xorg$(EXEEXT) X)
 if INSTALL_SETUID
 	chown root $(DESTDIR)$(bindir)/Xorg
 	chmod u+s $(DESTDIR)$(bindir)/Xorg
commit 28c8e1910797970dbf1d40794f1804a8fcc812bc
Author: Gaetan Nadon <memsize at videotron.ca>
Date:   Sat Sep 28 15:26:33 2013 -0400

    The Xorg binary is missing the extension $(EXEEXT) in the makefile
    
    This is not a problem on UNIX platforms, but on CYGWIN it creates a broken
    link to Xorg rather than a link to Xorg.exe.
    
    From the CYGWIN log on tinderbox, we can see that the executable Xorg.exe is
    installed correctly. We can see the command used to create the link:
    
    (cd /jhbuild/install/[...]/install/bin && rm -f X && ln -s Xorg X)
    
    Note that the "relink" makefile target correctly appends $(EXEEXT) to Xorg.
    
    Reviewed-By:  Matt Dew <marcoz at osource.org>
    Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index d568e0d..6b66732 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -90,7 +90,7 @@ install-data-local:
 
 
 install-exec-local: install-binPROGRAMS
-	(cd $(DESTDIR)$(bindir) && rm -f X && ln -s Xorg X)
+	(cd $(DESTDIR)$(bindir) && rm -f X && ln -s Xorg$(EXEEXT) X)
 if INSTALL_SETUID
 	chown root $(DESTDIR)$(bindir)/Xorg
 	chmod u+s $(DESTDIR)$(bindir)/Xorg
commit f3b529bf25db2700addbafc7aa4fc5b126ba9929
Merge: 4399bd3 abc2bfc
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Oct 4 14:04:48 2013 -0700

    Merge remote-tracking branch 'anholt/ephyr-fixes'

commit 4399bd38326b81f7b92365346504d7c6354772a9
Author: Gaetan Nadon <memsize at videotron.ca>
Date:   Mon Sep 30 13:30:46 2013 -0400

    miext/shadow: missing c2p_core.h breaks "make distcheck" target.
    
    Reviewed-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/miext/shadow/Makefile.am b/miext/shadow/Makefile.am
index 1db8a26..27cf414 100644
--- a/miext/shadow/Makefile.am
+++ b/miext/shadow/Makefile.am
@@ -7,6 +7,7 @@ sdk_HEADERS = shadow.h
 endif
 
 libshadow_la_SOURCES =		\
+	c2p_core.h		\
 	shadow.c		\
 	shadow.h		\
 	shafb4.c		\
commit 9ccb4a63982942fdce19609d2cadbd8e51708462
Merge: 5d2ec69 da5e201
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Oct 4 13:54:55 2013 -0700

    Merge remote-tracking branch 'whot/for-keith'

commit 5d2ec6933f6bb5116666ca1bfb07f0f20bf2a0b5
Merge: 7d3d4ae 6ee4d9f
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Oct 4 13:50:04 2013 -0700

    Merge remote-tracking branch 'ajax/xserver-next'

commit da5e20127a5b6e11a47eb6e61f3ea87b056cdf5f
Author: Gaetan Nadon <memsize at videotron.ca>
Date:   Thu Sep 19 19:13:35 2013 -0400

    test: add new os executable to .gitignore
    
    Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/test/.gitignore b/test/.gitignore
index 363d4b6..acbda7a 100644
--- a/test/.gitignore
+++ b/test/.gitignore
@@ -3,6 +3,7 @@ hashtabletest
 input
 list
 misc
+os
 string
 touch
 xfree86
commit c73c36b537f996574628e69681833ea37dec2b6e
Author: Laércio de Sousa <lbsousajr at gmail.com>
Date:   Wed Sep 18 13:42:17 2013 -0300

    xserver: enable InputClass option "GrabDevice" by default for non-seat0 seats (#69478)
    
    This patch contributes to fill the remaining gaps which make
    systemd-multi-seat-x wrapper still necessary in some multiseat setups.
    
    This also replaces previous evdev patch that does the same thing
    for that particular driver.
    
    When option "-seat" is passed with an argument different from "seat0",
    option "GrabDevice" for input devices is enabled by default
    (no need of enabling it in xorg.conf's "InputClass" section).
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=69478
    
    Signed-off-by: Laércio de Sousa <lbsousajr at gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/config/udev.c b/config/udev.c
index de89241..b55b78e 100644
--- a/config/udev.c
+++ b/config/udev.c
@@ -226,6 +226,10 @@ device_added(struct udev_device *udev_device)
 
     input_options = input_option_new(input_options, "config_info", config_info);
 
+    /* Default setting needed for non-seat0 seats */
+    if (ServerIsNotSeat0())
+        input_options = input_option_new(input_options, "GrabDevice", "on");
+
     LogMessage(X_INFO, "config/udev: Adding input device %s (%s)\n",
                name, path);
     rc = NewInputDeviceRequest(input_options, &attrs, &dev);
commit 160c2db32d0b9ee5316a44179a6af4f4722e3d0a
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Sep 18 16:04:44 2013 +1000

    dmx: provide enough space for axis mappings
    
    relmap/absmap is used as a evdev-axis-to-x-axis mapping. ABS_X maps to
    axis 0, ABS_Y to 1, etc. skipping over non-existing axes so that the third bit
    set in the ABS_* range is axis 2, and so on. This requires us to actually have
    enough space to have all the ABS_*/REL_* range.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>

diff --git a/hw/dmx/input/usb-private.h b/hw/dmx/input/usb-private.h
index 096607a..2ecfdf6 100644
--- a/hw/dmx/input/usb-private.h
+++ b/hw/dmx/input/usb-private.h
@@ -102,8 +102,8 @@ typedef struct _myPrivate {
     int fd;                                 /**< File descriptor */
     unsigned char mask[EV_MAX / 8 + 1];     /**< Mask */
     int numRel, numAbs, numLeds;            /**< Counts */
-    int relmap[DMX_MAX_AXES];               /**< Relative axis map */
-    int absmap[DMX_MAX_AXES];               /**< Absolute axis map */
+    int relmap[REL_CNT];                    /**< Relative axis map */
+    int absmap[ABS_CNT];                    /**< Absolute axis map */
 
     CARD32 kbdState[NUM_STATE_ENTRIES];         /**< Keyboard state */
     DeviceIntPtr pKeyboard;                     /** Keyboard device */
commit 7d3d4ae55dd6ee338439e2424ac423b1df80501b
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Sep 20 14:43:41 2013 -0500

    damage: Must translate initial window damage by window offset
    
    Damage is reported relative to the drawable origin, but the window
    borderClip is absolute. Translate the region by the window position
    before reporting damage to adjust.
    
    Reported-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/damageext/damageext.c b/damageext/damageext.c
index a942ffa..cf6b63b 100644
--- a/damageext/damageext.c
+++ b/damageext/damageext.c
@@ -223,7 +223,9 @@ ProcDamageCreate(ClientPtr client)
 
     if (pDrawable->type == DRAWABLE_WINDOW) {
         pRegion = &((WindowPtr) pDrawable)->borderClip;
+        RegionTranslate(pRegion, -pDrawable->x, -pDrawable->y);
         DamageReportDamage(pDamageExt->pDamage, pRegion);
+        RegionTranslate(pRegion, pDrawable->x, pDrawable->y);
     }
 
     return Success;
commit 8010d3a48bd0b224dcb0883e39c2351ad364d846
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Sun Sep 15 08:10:33 2013 -0700

    XQuartz: pbproxy: Fix build with -DDEBUG
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>

diff --git a/hw/xquartz/pbproxy/x-selection.m b/hw/xquartz/pbproxy/x-selection.m
index 57ddb74..f4f4de8 100644
--- a/hw/xquartz/pbproxy/x-selection.m
+++ b/hw/xquartz/pbproxy/x-selection.m
@@ -85,8 +85,7 @@ static struct propdata null_propdata = {
 static void
 dump_prefs()
 {
-    ErrorF(fp,
-           "pbproxy preferences:\n"
+    ErrorF("pbproxy preferences:\n"
            "\tactive %u\n"
            "\tprimary_on_grab %u\n"
            "\tclipboard_to_pasteboard %u\n"
commit 39c548da0cf0522ad246630605b96751ab6d39c0
Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
Date:   Sun Sep 15 08:07:44 2013 -0700

    XQuartz: Fix build with moved pseudoramiX
    
    Regression from: e716baedc4d8e52a60f43ef21aba771b340d8c8b
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
    Reviewed-by: Jon TURNEY <jon.turney at dronecode.org.uk>

diff --git a/hw/xquartz/Makefile.am b/hw/xquartz/Makefile.am
index 2e894d7..2ca953c 100644
--- a/hw/xquartz/Makefile.am
+++ b/hw/xquartz/Makefile.am
@@ -8,6 +8,7 @@ AM_CPPFLAGS = \
 	-DUSE_NEW_CLUT \
 	-DXFree86Server \
 	-I$(top_srcdir)/miext/rootless \
+	-I$(top_builddir)/pseudoramiX \
 	-DX11LIBDIR=\"$(libdir)\"
 
 if GLX
diff --git a/hw/xquartz/xpr/Makefile.am b/hw/xquartz/xpr/Makefile.am
index 763a7cd..c654ee5 100644
--- a/hw/xquartz/xpr/Makefile.am
+++ b/hw/xquartz/xpr/Makefile.am
@@ -3,6 +3,7 @@ noinst_LTLIBRARIES = libXquartzXpr.la
 AM_CFLAGS =  $(DIX_CFLAGS)
 AM_CPPFLAGS = \
 	-I$(srcdir) -I$(srcdir)/.. \
+	-I$(top_builddir)/pseudoramiX \
 	-I$(top_srcdir)/miext \
 	-I$(top_srcdir)/miext/rootless
 
commit 6ee4d9f94ae2cc27c39381d7554134d9b4807a65
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Jul 9 11:19:11 2013 -0400

    glx: Fill in some missing attributes from DoGetFBConfigs
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 0ab2ed5..73e76ca 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -1032,7 +1032,7 @@ __glXDisp_GetVisualConfigs(__GLXclientState * cl, GLbyte * pc)
     return Success;
 }
 
-#define __GLX_TOTAL_FBCONFIG_ATTRIBS (37)
+#define __GLX_TOTAL_FBCONFIG_ATTRIBS (44)
 #define __GLX_FBCONFIG_ATTRIBS_LENGTH (__GLX_TOTAL_FBCONFIG_ATTRIBS * 2)
 /**
  * Send the set of GLXFBConfigs to the client.  There is not currently
@@ -1117,13 +1117,23 @@ DoGetFBConfigs(__GLXclientState * cl, unsigned screen)
         WRITE_PAIR(GLX_SWAP_METHOD_OML, modes->swapMethod);
         WRITE_PAIR(GLX_SAMPLES_SGIS, modes->samples);
         WRITE_PAIR(GLX_SAMPLE_BUFFERS_SGIS, modes->sampleBuffers);
-        /* GLX_VISUAL_SELECT_GROUP_SGIX ? */
+        WRITE_PAIR(GLX_VISUAL_SELECT_GROUP_SGIX, modes->visualSelectGroup);
         WRITE_PAIR(GLX_DRAWABLE_TYPE, modes->drawableType);
         WRITE_PAIR(GLX_BIND_TO_TEXTURE_RGB_EXT, modes->bindToTextureRgb);
         WRITE_PAIR(GLX_BIND_TO_TEXTURE_RGBA_EXT, modes->bindToTextureRgba);
         WRITE_PAIR(GLX_BIND_TO_MIPMAP_TEXTURE_EXT, modes->bindToMipmapTexture);
         WRITE_PAIR(GLX_BIND_TO_TEXTURE_TARGETS_EXT,
                    modes->bindToTextureTargets);
+	WRITE_PAIR(GLX_Y_INVERTED_EXT, modes->yInverted);
+	if (modes->drawableType & GLX_PBUFFER_BIT) {
+	    WRITE_PAIR(GLX_MAX_PBUFFER_WIDTH, modes->maxPbufferWidth);
+	    WRITE_PAIR(GLX_MAX_PBUFFER_HEIGHT, modes->maxPbufferHeight);
+	    WRITE_PAIR(GLX_MAX_PBUFFER_PIXELS, modes->maxPbufferPixels);
+	    WRITE_PAIR(GLX_OPTIMAL_PBUFFER_WIDTH_SGIX,
+		       modes->optimalPbufferWidth);
+	    WRITE_PAIR(GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX,
+		       modes->optimalPbufferHeight);
+	}
         /* Add attribute only if its value is not default. */
         if (modes->sRGBCapable != GL_FALSE) {
             WRITE_PAIR(GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT, modes->sRGBCapable);
commit b257fabff00ae925bb7e70364dd1d738634087c9
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 4 10:31:40 2013 -0400

    glx: Remove a dead comment
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxext.c b/glx/glxext.c
index bc7fe82..2c3f5ed 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -286,10 +286,6 @@ glxClientCallback(CallbackListPtr *list, pointer closure, pointer data)
 
     switch (pClient->clientState) {
     case ClientStateRunning:
-        /*
-         ** By default, assume that the client supports
-         ** GLX major version 1 minor version 0 protocol.
-         */
         cl->client = pClient;
         break;
 
commit abd086502123086ce3d1fba25c159bb022d2750f
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Jul 8 17:01:13 2013 -0400

    glx: Catch another failure case in drawable creation
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 9deadb7..0ab2ed5 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -515,6 +515,10 @@ __glXGetDrawable(__GLXcontext * glxc, GLXDrawable drawId, ClientPtr client,
                                                 pDraw, drawId,
                                                 GLX_DRAWABLE_WINDOW,
                                                 drawId, glxc->config);
+    if (!pGlxDraw) {
+	*error = BadAlloc;
+	return NULL;
+    }
 
     /* since we are creating the drawablePrivate, drawId should be new */
     if (!AddResource(drawId, __glXDrawableRes, pGlxDraw)) {
commit c3c976f54c3c282d6fa6c8360688e036bc43d210
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Jul 8 12:28:56 2013 -0400

    glx: Remove screen number from __GLXconfig
    
    Not used.  There's no real reason to match against this instead of
    matching against fbconfig or visual ID anyway.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxscreens.h b/glx/glxscreens.h
index 19a2599..c8119fd 100644
--- a/glx/glxscreens.h
+++ b/glx/glxscreens.h
@@ -92,8 +92,6 @@ struct __GLXconfig {
     /* OML_swap_method */
     GLint swapMethod;
 
-    GLint screen;
-
     /* EXT_texture_from_pixmap */
     GLint bindToTextureRgb;
     GLint bindToTextureRgba;
commit 1d1484e9bd55d1fa8316b1574754f28d5d31a076
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Jul 8 12:09:13 2013 -0400

    glx: Remove pixmapMode from __GLXconfig
    
    This has never been filled in with anything meaningful afaict, and you
    can't get to it from the client in any event.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxscreens.h b/glx/glxscreens.h
index 7a0a515..19a2599 100644
--- a/glx/glxscreens.h
+++ b/glx/glxscreens.h
@@ -54,8 +54,6 @@ struct __GLXconfig {
 
     GLint level;
 
-    GLint pixmapMode;
-
     /* GLX */
     GLint visualID;
     GLint visualType;     /**< One of the GLX X visual types. (i.e., 
diff --git a/hw/xquartz/GL/glcontextmodes.c b/hw/xquartz/GL/glcontextmodes.c
index dc97f89..1ce3570 100644
--- a/hw/xquartz/GL/glcontextmodes.c
+++ b/hw/xquartz/GL/glcontextmodes.c
@@ -555,7 +555,6 @@ _gl_context_modes_are_same(const __GLcontextModes * a,
             (a->stencilBits == b->stencilBits) &&
             (a->numAuxBuffers == b->numAuxBuffers) &&
             (a->level == b->level) &&
-            (a->pixmapMode == b->pixmapMode) &&
             (a->visualRating == b->visualRating) &&
 
             (a->transparentPixel == b->transparentPixel) &&
diff --git a/hw/xquartz/GL/visualConfigs.c b/hw/xquartz/GL/visualConfigs.c
index a00abf2..92142cb 100644
--- a/hw/xquartz/GL/visualConfigs.c
+++ b/hw/xquartz/GL/visualConfigs.c
@@ -144,7 +144,6 @@ __GLXconfig *__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
 
                                         c->level = 0;
                                         c->indexBits = 0;
-                                        c->pixmapMode = 0; // TODO: What should this be?
 
                                         if(conf->accelerated) {
                                             c->visualRating = GLX_NONE;
diff --git a/hw/xwin/glx/indirect.c b/hw/xwin/glx/indirect.c
index 14a4711..02f9b0e 100644
--- a/hw/xwin/glx/indirect.c
+++ b/hw/xwin/glx/indirect.c
@@ -1715,7 +1715,6 @@ fbConfigToPixelFormat(__GLXconfig * mode, PIXELFORMATDESCRIPTOR * pfdret,
     pfd.cAuxBuffers = mode->numAuxBuffers;
 
     /* mode->level ? */
-    /* mode->pixmapMode ? */
 
     *pfdret = pfd;
 
@@ -1925,7 +1924,6 @@ glxWinCreateConfigs(HDC hdc, glxWinScreen * screen)
         // pfd.dwLayerMask; // ignored
         // pfd.dwDamageMask;  // ignored
 
-        c->base.pixmapMode = 0;
         c->base.visualID = -1;  // will be set by __glXScreenInit()
 
         /* EXT_visual_rating / GLX 1.2 */
@@ -2263,7 +2261,6 @@ glxWinCreateConfigsExt(HDC hdc, glxWinScreen * screen)
         }
         c->base.level = 0;
 
-        c->base.pixmapMode = 0; // ???
         c->base.visualID = -1;  // will be set by __glXScreenInit()
 
         /* EXT_visual_rating / GLX 1.2 */
commit 34e6e60105796ad015469c10921c5ff09acf7eb0
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Jul 2 12:33:36 2013 -0400

    glx: Remove support for NV_vertex_program and NV_fragment_program
    
    Mesa doesn't implement these anymore, never really did outside of swrast
    anyway.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxscreens.c b/glx/glxscreens.c
index 6a07af9..78769f4 100644
--- a/glx/glxscreens.c
+++ b/glx/glxscreens.c
@@ -128,7 +128,6 @@ static const char GLServerExtensions[] =
     "GL_NV_blend_square "
     "GL_NV_depth_clamp "
     "GL_NV_fog_distance "
-    "GL_NV_fragment_program "
     "GL_NV_fragment_program_option "
     "GL_NV_fragment_program2 "
     "GL_NV_light_max_exponent "
@@ -139,9 +138,6 @@ static const char GLServerExtensions[] =
     "GL_NV_texture_env_combine4 "
     "GL_NV_texture_expand_normal "
     "GL_NV_texture_rectangle "
-    "GL_NV_vertex_program "
-    "GL_NV_vertex_program1_1 "
-    "GL_NV_vertex_program2 "
     "GL_NV_vertex_program2_option "
     "GL_NV_vertex_program3 "
     "GL_OES_compressed_paletted_texture "
commit acf14c1de766c4ea206cd7ce7f25b780a589d33c
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Jul 2 10:35:19 2013 -0400

    glx: realloc style fix in RenderLarge
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index b817e5a..9deadb7 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -2176,15 +2176,12 @@ __glXDisp_RenderLarge(__GLXclientState * cl, GLbyte * pc)
          ** Make enough space in the buffer, then copy the entire request.
          */
         if (cl->largeCmdBufSize < cmdlen) {
-            if (!cl->largeCmdBuf) {
-                cl->largeCmdBuf = (GLbyte *) malloc(cmdlen);
-            }
-            else {
-                cl->largeCmdBuf = (GLbyte *) realloc(cl->largeCmdBuf, cmdlen);
-            }
-            if (!cl->largeCmdBuf) {
-                return BadAlloc;
-            }
+	    GLbyte *newbuf = cl->largeCmdBuf;
+
+	    if (!(newbuf = realloc(newbuf, cmdlen)))
+		return BadAlloc;
+
+	    cl->largeCmdBuf = newbuf;
             cl->largeCmdBufSize = cmdlen;
         }
         memcpy(cl->largeCmdBuf, pc, dataBytes);
commit 9ebf739a6864c9ec38bf72f63ef2e3b9cd1951db
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Jul 2 10:30:40 2013 -0400

    glx: Eliminate a small malloc from QueryContext
    
    No reason to have that be a failure path.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 9426fc1..b817e5a 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -1687,15 +1687,14 @@ DoQueryContext(__GLXclientState * cl, GLXContextID gcId)
     ClientPtr client = cl->client;
     __GLXcontext *ctx;
     xGLXQueryContextInfoEXTReply reply;
-    int nProps;
-    int *sendBuf, *pSendBuf;
+    int nProps = 3;
+    int sendBuf[nProps * 2];
     int nReplyBytes;
     int err;
 
     if (!validGlxContext(cl->client, gcId, DixReadAccess, &ctx, &err))
         return err;
 
-    nProps = 3;
     reply = (xGLXQueryContextInfoEXTReply) {
         .type = X_Reply,
         .sequenceNumber = client->sequence,
@@ -1704,17 +1703,12 @@ DoQueryContext(__GLXclientState * cl, GLXContextID gcId)
     };
 
     nReplyBytes = reply.length << 2;
-    sendBuf = (int *) malloc((size_t) nReplyBytes);
-    if (sendBuf == NULL) {
-        return __glXError(GLXBadContext);       /* XXX: Is this correct? */
-    }
-    pSendBuf = sendBuf;
-    *pSendBuf++ = GLX_SHARE_CONTEXT_EXT;
-    *pSendBuf++ = (int) (ctx->share_id);
-    *pSendBuf++ = GLX_VISUAL_ID_EXT;
-    *pSendBuf++ = (int) (ctx->config->visualID);
-    *pSendBuf++ = GLX_SCREEN_EXT;
-    *pSendBuf++ = (int) (ctx->pGlxScreen->pScreen->myNum);
+    sendBuf[0] = GLX_SHARE_CONTEXT_EXT;
+    sendBuf[1] = (int) (ctx->share_id);
+    sendBuf[2] = GLX_VISUAL_ID_EXT;
+    sendBuf[3] = (int) (ctx->config->visualID);
+    sendBuf[4] = GLX_SCREEN_EXT;
+    sendBuf[5] = (int) (ctx->pGlxScreen->pScreen->myNum);
 
     if (client->swapped) {
         __glXSwapQueryContextInfoEXTReply(client, &reply, sendBuf);
@@ -1723,7 +1717,6 @@ DoQueryContext(__GLXclientState * cl, GLXContextID gcId)
         WriteToClient(client, sz_xGLXQueryContextInfoEXTReply, &reply);
         WriteToClient(client, nReplyBytes, sendBuf);
     }
-    free((char *) sendBuf);
 
     return Success;
 }
commit b99f7975407f111b99d772cd28224d7dc1b34fe4
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Nov 9 18:05:27 2012 -0500

    glx: Handle failure to create the pixmap backing the pbuffer
    
    We happen not to sanitize the width/height we pass to CreatePixmap here,
    oops.  It's not exploitable, but it's certainly a crash, so let's just
    throw BadAlloc instead.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 27a68aa..9426fc1 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -1416,6 +1416,8 @@ DoCreatePbuffer(ClientPtr client, int screenNum, XID fbconfigId,
                                                     width, height,
                                                     config->rgbBits, 0);
     __glXleaveServer(GL_FALSE);
+    if (!pPixmap)
+        return BadAlloc;
 
     /* Assign the pixmap the same id as the pbuffer and add it as a
      * resource so it and the DRI2 drawable will be reclaimed when the
commit 22fbfdcb31f335c22053a0e29f0e73c03cd70a76
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Nov 9 17:52:12 2012 -0500

    glx: Implement GLX_PRESERVED_CONTENTS drawable attribute
    
    We back pixmaps with pbuffers so they're never actually clobbered.  Say
    so when asked.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 553b3b6..27a68aa 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -1457,7 +1457,6 @@ __glXDisp_CreatePbuffer(__GLXclientState * cl, GLbyte * pc)
             height = attrs[i * 2 + 1];
             break;
         case GLX_LARGEST_PBUFFER:
-        case GLX_PRESERVED_CONTENTS:
             /* FIXME: huh... */
             break;
         }
@@ -1475,6 +1474,10 @@ __glXDisp_CreateGLXPbufferSGIX(__GLXclientState * cl, GLbyte * pc)
 
     REQUEST_AT_LEAST_SIZE(xGLXCreateGLXPbufferSGIXReq);
 
+    /*
+     * We should really handle attributes correctly, but this extension
+     * is so rare I have difficulty caring.
+     */
     return DoCreatePbuffer(cl->client, req->screen, req->fbconfig,
                            req->width, req->height, req->pbuffer);
 }
@@ -1892,7 +1895,7 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId)
     ClientPtr client = cl->client;
     xGLXGetDrawableAttributesReply reply;
     __GLXdrawable *pGlxDraw;
-    CARD32 attributes[12];
+    CARD32 attributes[14];
     int numAttribs = 0, error;
 
     if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_ANY,
@@ -1918,6 +1921,11 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId)
     attributes[10] = GLX_FBCONFIG_ID;
     attributes[11] = pGlxDraw->config->fbconfigID;
     numAttribs++;
+    if (pGlxDraw->type == GLX_DRAWABLE_PBUFFER) {
+        attributes[12] = GLX_PRESERVED_CONTENTS;
+        attributes[13] = GL_TRUE;
+        numAttribs++;
+    }
 
     reply = (xGLXGetDrawableAttributesReply) {
         .type = X_Reply,
commit 2e20b8382cdf37ae5a2802f85b8f06a370f9645d
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Nov 9 17:12:49 2012 -0500

    glx: Implement GLX_FBCONFIG_ID in GetDrawableAttributes
    
    Required by GLX 1.4, section 3.3.6, "Querying Attributes".
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 4a343a6..553b3b6 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -1892,7 +1892,7 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId)
     ClientPtr client = cl->client;
     xGLXGetDrawableAttributesReply reply;
     __GLXdrawable *pGlxDraw;
-    CARD32 attributes[10];
+    CARD32 attributes[12];
     int numAttribs = 0, error;
 
     if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_ANY,
@@ -1915,6 +1915,9 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId)
     attributes[8] = GLX_HEIGHT;
     attributes[9] = pGlxDraw->pDraw->height;
     numAttribs++;
+    attributes[10] = GLX_FBCONFIG_ID;
+    attributes[11] = pGlxDraw->config->fbconfigID;
+    numAttribs++;
 
     reply = (xGLXGetDrawableAttributesReply) {
         .type = X_Reply,
commit 0d76191baeee005982754ac18ca995742e32d8c1
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Nov 9 17:10:57 2012 -0500

    glx: Implement GLX_{WIDTH,HEIGHT} in GetDrawableAttributes
    
    Required by GLX 1.4, section 3.3.6, "Querying Attributes".
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index cecbf7b..4a343a6 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -1892,7 +1892,7 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId)
     ClientPtr client = cl->client;
     xGLXGetDrawableAttributesReply reply;
     __GLXdrawable *pGlxDraw;
-    CARD32 attributes[6];
+    CARD32 attributes[10];
     int numAttribs = 0, error;
 
     if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_ANY,
@@ -1909,6 +1909,12 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId)
     attributes[4] = GLX_EVENT_MASK;
     attributes[5] = pGlxDraw->eventMask;
     numAttribs++;
+    attributes[6] = GLX_WIDTH;
+    attributes[7] = pGlxDraw->pDraw->width;
+    numAttribs++;
+    attributes[8] = GLX_HEIGHT;
+    attributes[9] = pGlxDraw->pDraw->height;
+    numAttribs++;
 
     reply = (xGLXGetDrawableAttributesReply) {
         .type = X_Reply,
commit d11f13e383dda1e9cabe32793d261d46edc44418
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Nov 9 17:07:20 2012 -0500

    glx: Compute number of attributes in GetDrawableAttributes on the fly
    
    This doesn't have any effect yet, but is needed to properly build the
    reply for pbuffers.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index cbbdae8..cecbf7b 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -1893,27 +1893,29 @@ DoGetDrawableAttributes(__GLXclientState * cl, XID drawId)
     xGLXGetDrawableAttributesReply reply;
     __GLXdrawable *pGlxDraw;
     CARD32 attributes[6];
-    int numAttribs, error;
+    int numAttribs = 0, error;
 
     if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_ANY,
                           DixGetAttrAccess, &pGlxDraw, &error))
         return error;
 
-    numAttribs = 3;
-    reply = (xGLXGetDrawableAttributesReply) {
-        .type = X_Reply,
-        .sequenceNumber = client->sequence,
-        .length = numAttribs << 1,
-        .numAttribs = numAttribs
-    };
-
     attributes[0] = GLX_TEXTURE_TARGET_EXT;
     attributes[1] = pGlxDraw->target == GL_TEXTURE_2D ? GLX_TEXTURE_2D_EXT :
         GLX_TEXTURE_RECTANGLE_EXT;
+    numAttribs++;
     attributes[2] = GLX_Y_INVERTED_EXT;
     attributes[3] = GL_FALSE;
+    numAttribs++;
     attributes[4] = GLX_EVENT_MASK;
     attributes[5] = pGlxDraw->eventMask;
+    numAttribs++;
+
+    reply = (xGLXGetDrawableAttributesReply) {
+        .type = X_Reply,
+        .sequenceNumber = client->sequence,
+        .length = numAttribs << 1,
+        .numAttribs = numAttribs
+    };
 
     if (client->swapped) {
         __glXSwapGetDrawableAttributesReply(client, &reply, attributes);
commit 468b57324f838144d79e3a9d85a0bde853578c4b
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Nov 9 16:48:16 2012 -0500

    glx: Style fixes
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxscreens.c b/glx/glxscreens.c
index 3724d19..6a07af9 100644
--- a/glx/glxscreens.c
+++ b/glx/glxscreens.c
@@ -154,7 +154,9 @@ static const char GLServerExtensions[] =
     "GL_SGIS_texture_edge_clamp "
     "GL_SGIS_texture_lod "
     "GL_SGIX_depth_texture "
-    "GL_SGIX_shadow " "GL_SGIX_shadow_ambient " "GL_SUN_slice_accum ";
+    "GL_SGIX_shadow "
+    "GL_SGIX_shadow_ambient "
+    "GL_SUN_slice_accum ";
 
 /*
 ** We have made the simplifying assuption that the same extensions are 
@@ -168,12 +170,14 @@ static char GLXServerExtensions[] =
     "GLX_EXT_visual_rating "
     "GLX_EXT_import_context "
     "GLX_EXT_texture_from_pixmap "
-    "GLX_OML_swap_method " "GLX_SGI_make_current_read "
+    "GLX_OML_swap_method "
+    "GLX_SGI_make_current_read "
 #ifndef __APPLE__
     "GLX_SGIS_multisample "
 #endif
     "GLX_SGIX_fbconfig "
-    "GLX_SGIX_pbuffer " "GLX_MESA_copy_sub_buffer ";
+    "GLX_SGIX_pbuffer "
+    "GLX_MESA_copy_sub_buffer ";
 
 static Bool
 glxCloseScreen(ScreenPtr pScreen)
commit 2b181ad0952851f47f23dcb1a36471685313c13e
Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Nov 9 16:33:54 2012 -0500

    glx: Pull GLX vendor string out of __GLXscreen
    
    Given how we're currently implementing GLX this can't meaningfully vary
    per-screen.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 5b7a628..cbbdae8 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -50,6 +50,8 @@
 #include "indirect_table.h"
 #include "indirect_util.h"
 
+static char GLXServerVendorName[] = "SGI";
+
 _X_HIDDEN int
 validGlxScreen(ClientPtr client, int screen, __GLXscreen ** pGlxScreen,
                int *err)
@@ -2384,7 +2386,7 @@ __glXDisp_QueryServerString(__GLXclientState * cl, GLbyte * pc)
 
     switch (req->name) {
     case GLX_VENDOR:
-        ptr = pGlxScreen->GLXvendor;
+        ptr = GLXServerVendorName;
         break;
     case GLX_VERSION:
         /* Return to the server version rather than the screen version
diff --git a/glx/glxscreens.c b/glx/glxscreens.c
index 61d590c..3724d19 100644
--- a/glx/glxscreens.c
+++ b/glx/glxscreens.c
@@ -160,7 +160,6 @@ static const char GLServerExtensions[] =
 ** We have made the simplifying assuption that the same extensions are 
 ** supported across all screens in a multi-screen system.
 */
-static char GLXServerVendorName[] = "SGI";
 unsigned glxMajorVersion = SERVER_GLX_MAJOR_VERSION;
 unsigned glxMinorVersion = SERVER_GLX_MINOR_VERSION;
 static char GLXServerExtensions[] =
@@ -330,7 +329,6 @@ __glXScreenInit(__GLXscreen * pGlxScreen, ScreenPtr pScreen)
 
     pGlxScreen->pScreen = pScreen;
     pGlxScreen->GLextensions = strdup(GLServerExtensions);
-    pGlxScreen->GLXvendor = strdup(GLXServerVendorName);
     pGlxScreen->GLXextensions = strdup(GLXServerExtensions);
 
     /* All GLX providers must support all of the functionality required for at
@@ -420,7 +418,6 @@ __glXScreenInit(__GLXscreen * pGlxScreen, ScreenPtr pScreen)
 void
 __glXScreenDestroy(__GLXscreen * screen)
 {
-    free(screen->GLXvendor);
     free(screen->GLXextensions);
     free(screen->GLextensions);
     free(screen->visuals);
diff --git a/glx/glxscreens.h b/glx/glxscreens.h
index 0a7b604..7a0a515 100644
--- a/glx/glxscreens.h
+++ b/glx/glxscreens.h
@@ -145,7 +145,6 @@ struct __GLXscreen {
 
     char *GLextensions;
 
-    char *GLXvendor;
     char *GLXextensions;
 
     /**
commit b9c489cf13e1ad35b7d9bea9de8d85e929374d17
Author: Adam Jackson <ajax at redhat.com>
Date:   Wed Oct 31 10:05:24 2012 -0400

    glx: Remove unused bits from the context struct
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxcontext.h b/glx/glxcontext.h
index 4764e56..3d08c99 100644
--- a/glx/glxcontext.h
+++ b/glx/glxcontext.h
@@ -55,7 +55,6 @@ struct __GLXcontext {
     /*
      ** list of context structs
      */
-    __GLXcontext *last;
     __GLXcontext *next;
 
     /*
commit f579cc85c29f52b575c62e6ae1e16eb87c506bd3
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 4 10:08:40 2013 -0400

    glxproxy: Don't track GLCLientm{aj,in}orVersion
    
    Basically just a port of 62f06b0d to glxproxy.
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/dmx/glxProxy/glxcmds.c b/hw/dmx/glxProxy/glxcmds.c
index 8cdb25e..335da37 100644
--- a/hw/dmx/glxProxy/glxcmds.c
+++ b/hw/dmx/glxProxy/glxcmds.c
@@ -2734,8 +2734,6 @@ __glXClientInfo(__GLXclientState * cl, GLbyte * pc)
     int to_screen = 0;
     int s;
 
-    cl->GLClientmajorVersion = req->major;
-    cl->GLClientminorVersion = req->minor;
     free(cl->GLClientextensions);
     buf = (const char *) (req + 1);
     cl->GLClientextensions = strdup(buf);
diff --git a/hw/dmx/glxProxy/glxext.c b/hw/dmx/glxProxy/glxext.c
index e72a040..b469708 100644
--- a/hw/dmx/glxProxy/glxext.c
+++ b/hw/dmx/glxProxy/glxext.c
@@ -88,12 +88,6 @@ ResetClientState(int clientIndex)
     memset(cl, 0, sizeof(__GLXclientState));
     cl->be_displays = keep_be_displays;
 
-    /*
-     ** By default, assume that the client supports
-     ** GLX major version 1 minor version 0 protocol.
-     */
-    cl->GLClientmajorVersion = 1;
-    cl->GLClientminorVersion = 0;
     free(cl->GLClientextensions);
 
     memset(cl->be_displays, 0, screenInfo.numScreens * sizeof(Display *));
diff --git a/hw/dmx/glxProxy/glxserver.h b/hw/dmx/glxProxy/glxserver.h
index ad94966..754ad30 100644
--- a/hw/dmx/glxProxy/glxserver.h
+++ b/hw/dmx/glxProxy/glxserver.h
@@ -119,8 +119,6 @@ struct __GLXclientStateRec {
     /* Back pointer to X client record */
     ClientPtr client;
 
-    int GLClientmajorVersion;
-    int GLClientminorVersion;
     char *GLClientextensions;
 
     GLXContextTag *be_currentCTag;
commit e549ffb5f19cf044bc3e2d368a6f081f8b84bfaa
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 30 18:20:43 2012 -0400

    dmx/glx: Remove unused __glXNop
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/dmx/glxProxy/Makefile.am b/hw/dmx/glxProxy/Makefile.am
index 4ee1036..c3df169 100644
--- a/hw/dmx/glxProxy/Makefile.am
+++ b/hw/dmx/glxProxy/Makefile.am
@@ -22,7 +22,6 @@ libglxproxy_a_SOURCES = compsize.c \
                         glxsingle.h \
                         glxswap.c \
                         glxswap.h \
-                        glxutil.c \
                         glxutil.h \
                         glxvendor.c \
                         glxvendor.h \
diff --git a/hw/dmx/glxProxy/glxutil.c b/hw/dmx/glxProxy/glxutil.c
deleted file mode 100644
index f90dbf1..0000000
--- a/hw/dmx/glxProxy/glxutil.c
+++ /dev/null
@@ -1,37 +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 "glxserver.h"
-#include "glxutil.h"
-
-void
-__glXNop(void)
-{
-}
diff --git a/hw/dmx/glxProxy/glxutil.h b/hw/dmx/glxProxy/glxutil.h
index d3c7286..605c07b 100644
--- a/hw/dmx/glxProxy/glxutil.h
+++ b/hw/dmx/glxProxy/glxutil.h
@@ -31,8 +31,6 @@
  * Silicon Graphics, Inc.
  */
 
-extern void __glXNop(void);
-
 /* context helper routines */
 extern __GLXcontext *__glXLookupContextByTag(__GLXclientState *, GLXContextTag);
 extern DrawablePtr __glXLookupDrawableByTag(__GLXclientState * cl,
commit d962b8ed272d4a8921c0dadf16cd926484e30d10
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Aug 22 16:42:23 2013 -0400

    damageext: Style fix
    
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/damageext/damageext.c b/damageext/damageext.c
index db0a753..01b88ef 100644
--- a/damageext/damageext.c
+++ b/damageext/damageext.c
@@ -306,11 +306,14 @@ static const int version_requests[] = {
 #define NUM_VERSION_REQUESTS	(sizeof (version_requests) / sizeof (version_requests[0]))
 
 static int (*ProcDamageVector[XDamageNumberRequests]) (ClientPtr) = {
-/*************** Version 1 ******************/
+    /*************** Version 1 ******************/
     ProcDamageQueryVersion,
-        ProcDamageCreate, ProcDamageDestroy, ProcDamageSubtract,
-/*************** Version 1.1 ****************/
-ProcDamageAdd,};
+    ProcDamageCreate,
+    ProcDamageDestroy,
+    ProcDamageSubtract,
+    /*************** Version 1.1 ****************/
+    ProcDamageAdd,
+};
 
 static int
 ProcDamageDispatch(ClientPtr client)
@@ -386,11 +389,14 @@ SProcDamageAdd(ClientPtr client)
 }
 
 static int (*SProcDamageVector[XDamageNumberRequests]) (ClientPtr) = {
-/*************** Version 1 ******************/
+    /*************** Version 1 ******************/
     SProcDamageQueryVersion,
-        SProcDamageCreate, SProcDamageDestroy, SProcDamageSubtract,
-/*************** Version 1.1 ****************/
-SProcDamageAdd,};
+    SProcDamageCreate,
+    SProcDamageDestroy,
+    SProcDamageSubtract,
+    /*************** Version 1.1 ****************/
+    SProcDamageAdd,
+};
 
 static int
 SProcDamageDispatch(ClientPtr client)
commit c90add0f1ce0c85aea7a60635de765848d778266
Author: Adam Jackson <ajax at redhat.com>
Date:   Wed Aug 21 11:57:24 2013 -0400

    damage: Remove "post-rendering" hooks
    
    This is a revert of 974db58f5b730c3770ee461665a02dd4334d1dea.  There are
    no consumers of this API, we must not need it.
    
    Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/miext/damage/damage.c b/miext/damage/damage.c
index 0fef53f..cc02991 100644
--- a/miext/damage/damage.c
+++ b/miext/damage/damage.c
@@ -119,51 +119,6 @@ getDrawableDamageRef(DrawablePtr pDrawable)
     DamagePtr	*pPrev = (DamagePtr *) \
 	dixLookupPrivateAddr(&(pWindow)->devPrivates, damageWinPrivateKey)
 
-static void
-damageReportDamagePostRendering(DamagePtr pDamage, RegionPtr pOldDamage,
-                                RegionPtr pDamageRegion)
-{
-    BoxRec tmpBox;
-    RegionRec tmpRegion, newDamage;
-    Bool was_empty;
-
-    RegionUnion(&newDamage, pOldDamage, pDamageRegion);
-
-    switch (pDamage->damageLevel) {
-    case DamageReportRawRegion:
-        (*pDamage->damageReportPostRendering) (pDamage, pDamageRegion,
-                                               pDamage->closure);
-        break;
-    case DamageReportDeltaRegion:
-        RegionNull(&tmpRegion);
-        RegionSubtract(&tmpRegion, pDamageRegion, pOldDamage);
-        if (RegionNotEmpty(&tmpRegion)) {
-            (*pDamage->damageReportPostRendering) (pDamage, &tmpRegion,
-                                                   pDamage->closure);
-        }
-        RegionUninit(&tmpRegion);
-        break;
-    case DamageReportBoundingBox:
-        tmpBox = *RegionExtents(pOldDamage);
-        if (!BOX_SAME(&tmpBox, RegionExtents(&newDamage))) {
-            (*pDamage->damageReportPostRendering) (pDamage, &newDamage,
-                                                   pDamage->closure);
-        }
-        break;
-    case DamageReportNonEmpty:
-        was_empty = !RegionNotEmpty(pOldDamage);
-        if (was_empty && RegionNotEmpty(&newDamage)) {
-            (*pDamage->damageReportPostRendering) (pDamage, &newDamage,
-                                                   pDamage->closure);
-        }
-        break;
-    case DamageReportNone:
-        break;
-    }
-
-    RegionUninit(&newDamage);
-}
-
 #if DAMAGE_DEBUG_ENABLE
 static void
 _damageRegionAppend(DrawablePtr pDrawable, RegionPtr pRegion, Bool clip,
@@ -299,14 +254,10 @@ damageRegionAppend(DrawablePtr pDrawable, RegionPtr pRegion, Bool clip,
             RegionTranslate(pDamageRegion, -draw_x, -draw_y);
 
         /* Store damage region if needed after submission. */
-        if (pDamage->reportAfter || pDamage->damageMarker)
+        if (pDamage->reportAfter)
             RegionUnion(&pDamage->pendingDamage,
                         &pDamage->pendingDamage, pDamageRegion);
 
-        /* Duplicate current damage if needed. */
-        if (pDamage->damageMarker)
-            RegionCopy(&pDamage->backupDamage, &pDamage->damage);
-
         /* Report damage now, if desired. */
         if (!pDamage->reportAfter) {
             if (pDamage->damageReport)
@@ -335,12 +286,6 @@ damageRegionProcessPending(DrawablePtr pDrawable)
     drawableDamage(pDrawable);
 
     for (; pDamage != NULL; pDamage = pDamage->pNext) {
-        /* submit damage marker whenever possible. */
-        if (pDamage->damageMarker)
-            (*pDamage->damageMarker) (pDrawable, pDamage,
-                                      &pDamage->backupDamage,
-                                      &pDamage->pendingDamage,
-                                      pDamage->closure);
         if (pDamage->reportAfter) {
             /* It's possible that there is only interest in postRendering reporting. */
             if (pDamage->damageReport)
@@ -350,10 +295,8 @@ damageRegionProcessPending(DrawablePtr pDrawable)
                             &pDamage->pendingDamage);
         }
 
-        if (pDamage->reportAfter || pDamage->damageMarker)
+        if (pDamage->reportAfter)
             RegionEmpty(&pDamage->pendingDamage);
-        if (pDamage->damageMarker)
-            RegionEmpty(&pDamage->backupDamage);
     }
 
 }
@@ -1762,9 +1705,7 @@ DamageCreate(DamageReportFunc damageReport,
     pDamage->reportAfter = FALSE;
 
     pDamage->damageReport = damageReport;
-    pDamage->damageReportPostRendering = NULL;
     pDamage->damageDestroy = damageDestroy;
-    pDamage->damageMarker = NULL;
     pDamage->pScreen = pScreen;
 
     (*pScrPriv->funcs.Create) (pDamage);
@@ -1936,17 +1877,6 @@ DamageRegionProcessPending(DrawablePtr pDrawable)
     damageRegionProcessPending(pDrawable);
 }
 
-/* If a damage marker is provided, then this function must be called after rendering is done. */
-/* Please do call back so any future enhancements can assume this function is called. */
-/* There are no strict timing requirements for calling this function, just as soon as (is cheaply) possible. */
-void
-DamageRegionRendered(DrawablePtr pDrawable, DamagePtr pDamage,
-                     RegionPtr pOldDamage, RegionPtr pRegion)
-{
-    if (pDamage->damageReportPostRendering)
-        damageReportDamagePostRendering(pDamage, pOldDamage, pRegion);
-}
-
 /* This call is very odd, i'm leaving it intact for API sake, but please don't use it. */
 void
 DamageDamageRegion(DrawablePtr pDrawable, RegionPtr pRegion)
@@ -1966,15 +1896,6 @@ DamageSetReportAfterOp(DamagePtr pDamage, Bool reportAfter)
     pDamage->reportAfter = reportAfter;
 }
 
-void
-DamageSetPostRenderingFunctions(DamagePtr pDamage,
-                                DamageReportFunc damageReportPostRendering,
-                                DamageMarkerFunc damageMarker)
-{
-    pDamage->damageReportPostRendering = damageReportPostRendering;
-    pDamage->damageMarker = damageMarker;
-}
-
 DamageScreenFuncsPtr
 DamageGetScreenFuncs(ScreenPtr pScreen)
 {
diff --git a/miext/damage/damage.h b/miext/damage/damage.h
index e5d6913..525b2db 100644
--- a/miext/damage/damage.h
+++ b/miext/damage/damage.h
@@ -41,12 +41,6 @@ typedef void (*DamageReportFunc) (DamagePtr pDamage, RegionPtr pRegion,
                                   void *closure);
 typedef void (*DamageDestroyFunc) (DamagePtr pDamage, void *closure);
 
-/* It's the responsibility of the driver to duplicate both regions. */
-/* At some point DamageRegionRendered() must be called. */
-typedef void (*DamageMarkerFunc) (DrawablePtr pDrawable, DamagePtr pDamage,
-                                  RegionPtr pOldDamage, RegionPtr pRegion,
-                                  void *closure);
-
 typedef void (*DamageScreenCreateFunc) (DamagePtr);
 typedef void (*DamageScreenRegisterFunc) (DrawablePtr, DamagePtr);
 typedef void (*DamageScreenUnregisterFunc) (DrawablePtr, DamagePtr);
@@ -105,12 +99,6 @@ extern _X_EXPORT void
 extern _X_EXPORT void
  DamageRegionProcessPending(DrawablePtr pDrawable);
 
-/* Call this some time after rendering is done, only relevant when a damageMarker is provided. */
-extern _X_EXPORT void
-
-DamageRegionRendered(DrawablePtr pDrawable, DamagePtr pDamage,
-                     RegionPtr pOldDamage, RegionPtr pRegion);
-
 /* Call this when you create a new Damage and you wish to send an initial damage message (to it). */
 extern _X_EXPORT void
  DamageReportDamage(DamagePtr pDamage, RegionPtr pDamageRegion);
@@ -122,12 +110,6 @@ extern _X_EXPORT void
 extern _X_EXPORT void
  DamageSetReportAfterOp(DamagePtr pDamage, Bool reportAfter);
 
-extern _X_EXPORT void
-
-DamageSetPostRenderingFunctions(DamagePtr pDamage,
-                                DamageReportFunc damageReportPostRendering,
-                                DamageMarkerFunc damageMarker);
-
 extern _X_EXPORT DamageScreenFuncsPtr DamageGetScreenFuncs(ScreenPtr);
 
 #endif                          /* _DAMAGE_H_ */
diff --git a/miext/damage/damagestr.h b/miext/damage/damagestr.h
index 8918990..36753ee 100644
--- a/miext/damage/damagestr.h
+++ b/miext/damage/damagestr.h
@@ -44,13 +44,10 @@ typedef struct _damage {
     DrawablePtr pDrawable;
 
     DamageReportFunc damageReport;
-    DamageReportFunc damageReportPostRendering;
     DamageDestroyFunc damageDestroy;
-    DamageMarkerFunc damageMarker;
 
     Bool reportAfter;
     RegionRec pendingDamage;    /* will be flushed post submission at the latest */
-    RegionRec backupDamage;     /* for use with damageMarker */
     ScreenPtr pScreen;
     PrivateRec *devPrivates;
 } DamageRec;
commit 0f3f8e4295d4c05f33b93e0ffd2f6f8cd5759bf7
Author: Adam Jackson <ajax at redhat.com>
Date:   Wed Aug 21 11:13:11 2013 -0400

    damage: Don't rewrite Text ops to GlyphBlt ops
    
    There's no particularly good reason to, and it breaks Xnest.
    
    Bugzilla: http://bugs.freedesktop.org/2454
    Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/miext/damage/damage.c b/miext/damage/damage.c
index 2b9c350..0fef53f 100644
--- a/miext/damage/damage.c
+++ b/miext/damage/damage.c
@@ -1336,7 +1336,7 @@ damageDamageChars(DrawablePtr pDrawable,
 #define TT_POLY16  2
 #define TT_IMAGE16 3
 
-static int
+static void
 damageText(DrawablePtr pDrawable,
            GCPtr pGC,
            int x,
@@ -1345,39 +1345,29 @@ damageText(DrawablePtr pDrawable,
            char *chars, FontEncoding fontEncoding, Bool textType)
 {
     CharInfoPtr *charinfo;
-    CharInfoPtr *info;
     unsigned long i;
     unsigned int n;
-    int w;
     Bool imageblt;
 
     imageblt = (textType == TT_IMAGE8) || (textType == TT_IMAGE16);
 
+    if (!checkGCDamage(pDrawable, pGC))
+        return;
+
     charinfo = malloc(count * sizeof(CharInfoPtr));
     if (!charinfo)
-        return x;
+        return;
 
     GetGlyphs(pGC->font, count, (unsigned char *) chars,
               fontEncoding, &i, charinfo);
     n = (unsigned int) i;
-    w = 0;
-    if (!imageblt)
-        for (info = charinfo; i--; info++)
-            w += (*info)->metrics.characterWidth;
 
     if (n != 0) {
         damageDamageChars(pDrawable, pGC->font, x + pDrawable->x,
                           y + pDrawable->y, n, charinfo, imageblt,
                           pGC->subWindowMode);
-        if (imageblt)
-            (*pGC->ops->ImageGlyphBlt) (pDrawable, pGC, x, y, n, charinfo,
-                                        FONTGLYPHS(pGC->font));
-        else
-            (*pGC->ops->PolyGlyphBlt) (pDrawable, pGC, x, y, n, charinfo,
-                                       FONTGLYPHS(pGC->font));
     }
     free(charinfo);
-    return x + w;
 }
 
 static int
@@ -1385,12 +1375,9 @@ damagePolyText8(DrawablePtr pDrawable,
                 GCPtr pGC, int x, int y, int count, char *chars)
 {
     DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable);
-
-    if (checkGCDamage(pDrawable, pGC))
-        x = damageText(pDrawable, pGC, x, y, (unsigned long) count, chars,
-                       Linear8Bit, TT_POLY8);
-    else
-        x = (*pGC->ops->PolyText8) (pDrawable, pGC, x, y, count, chars);
+    damageText(pDrawable, pGC, x, y, (unsigned long) count, chars, Linear8Bit,
+               TT_POLY8);
+    x = (*pGC->ops->PolyText8) (pDrawable, pGC, x, y, count, chars);
     damageRegionProcessPending(pDrawable);
     DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
     return x;
@@ -1401,14 +1388,10 @@ damagePolyText16(DrawablePtr pDrawable,
                  GCPtr pGC, int x, int y, int count, unsigned short *chars)
 {
     DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable);
-
-    if (checkGCDamage(pDrawable, pGC))
-        x = damageText(pDrawable, pGC, x, y, (unsigned long) count,
-                       (char *) chars,
-                       FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit,
-                       TT_POLY16);
-    else
-        x = (*pGC->ops->PolyText16) (pDrawable, pGC, x, y, count, chars);
+    damageText(pDrawable, pGC, x, y, (unsigned long) count, (char *) chars,
+               FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit,
+               TT_POLY16);
+    x = (*pGC->ops->PolyText16) (pDrawable, pGC, x, y, count, chars);
     damageRegionProcessPending(pDrawable);
     DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
     return x;
@@ -1419,12 +1402,9 @@ damageImageText8(DrawablePtr pDrawable,
                  GCPtr pGC, int x, int y, int count, char *chars)
 {
     DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable);
-
-    if (checkGCDamage(pDrawable, pGC))
-        damageText(pDrawable, pGC, x, y, (unsigned long) count, chars,
-                   Linear8Bit, TT_IMAGE8);
-    else
-        (*pGC->ops->ImageText8) (pDrawable, pGC, x, y, count, chars);
+    damageText(pDrawable, pGC, x, y, (unsigned long) count, chars, Linear8Bit,
+               TT_IMAGE8);
+    (*pGC->ops->ImageText8) (pDrawable, pGC, x, y, count, chars);
     damageRegionProcessPending(pDrawable);
     DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
 }
@@ -1434,13 +1414,10 @@ damageImageText16(DrawablePtr pDrawable,
                   GCPtr pGC, int x, int y, int count, unsigned short *chars)
 {
     DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable);
-
-    if (checkGCDamage(pDrawable, pGC))
-        damageText(pDrawable, pGC, x, y, (unsigned long) count, (char *) chars,
-                   FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit,
-                   TT_IMAGE16);
-    else
-        (*pGC->ops->ImageText16) (pDrawable, pGC, x, y, count, chars);
+    damageText(pDrawable, pGC, x, y, (unsigned long) count, (char *) chars,
+               FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit,
+               TT_IMAGE16);
+    (*pGC->ops->ImageText16) (pDrawable, pGC, x, y, count, chars);
     damageRegionProcessPending(pDrawable);
     DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable);
 }
commit d08966227e7d567df8d26eebc80f35f886e59a4a
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Aug 26 14:03:51 2013 -0400

    damage: Simplify DamageUnregister
    
    You can only register one drawable on a given damage, so there's no
    reason to require the caller to specify the drawable, the damage is
    enough.  The implementation would do something fairly horrible if you
    _did_ pass mismatched drawable and damage, so let's avoid the problem
    entirely.
    
    v2: Simplify xf86RotateDestroy even more [anholt]
    
    Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/composite/compalloc.c b/composite/compalloc.c
index cc69c68..b7d731e 100644
--- a/composite/compalloc.c
+++ b/composite/compalloc.c
@@ -205,7 +205,7 @@ compRedirectWindow(ClientPtr pClient, WindowPtr pWin, int update)
             anyMarked = compMarkWindows(pWin, &pLayerWin);
 
         if (cw->damageRegistered) {
-            DamageUnregister(&pWin->drawable, cw->damage);
+            DamageUnregister(cw->damage);
             cw->damageRegistered = FALSE;
         }
         cw->update = CompositeRedirectManual;
@@ -638,7 +638,7 @@ compSetParentPixmap(WindowPtr pWin)
     CompWindowPtr cw = GetCompWindow(pWin);
 
     if (cw->damageRegistered) {
-        DamageUnregister(&pWin->drawable, cw->damage);
+        DamageUnregister(cw->damage);
         cw->damageRegistered = FALSE;
         DamageEmpty(cw->damage);
     }
diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c
index a393747..495af9b 100644
--- a/hw/xfree86/modes/xf86Rotate.c
+++ b/hw/xfree86/modes/xf86Rotate.c
@@ -272,14 +272,10 @@ xf86RotateDestroy(xf86CrtcPtr crtc)
             screenDrawable = &pScreen->root->drawable;
         /* Free damage structure */
         if (xf86_config->rotation_damage_registered) {
-            if (screenDrawable)
-                DamageUnregister(screenDrawable,
-                        xf86_config->rotation_damage);
             xf86_config->rotation_damage_registered = FALSE;
             DisableLimitedSchedulingLatency();
         }
-        if (screenDrawable)
-            DamageDestroy(xf86_config->rotation_damage);
+        DamageDestroy(xf86_config->rotation_damage);
         xf86_config->rotation_damage = NULL;
     }
 }
diff --git a/mi/misprite.c b/mi/misprite.c
index 8163f5b..85ca022 100644
--- a/mi/misprite.c
+++ b/mi/misprite.c
@@ -146,8 +146,7 @@ static void
 miSpriteDisableDamage(ScreenPtr pScreen, miSpriteScreenPtr pScreenPriv)
 {
     if (pScreenPriv->damageRegistered) {
-        DamageUnregister(&(pScreen->GetScreenPixmap(pScreen)->drawable),
-                         pScreenPriv->pDamage);
+        DamageUnregister(pScreenPriv->pDamage);
         pScreenPriv->damageRegistered = 0;
     }
 }
diff --git a/miext/damage/damage.c b/miext/damage/damage.c
index cf4b61a..2b9c350 100644
--- a/miext/damage/damage.c
+++ b/miext/damage/damage.c
@@ -1843,8 +1843,9 @@ DamageDrawInternal(ScreenPtr pScreen, Bool enable)
 }
 
 void
-DamageUnregister(DrawablePtr pDrawable, DamagePtr pDamage)
+DamageUnregister(DamagePtr pDamage)
 {
+    DrawablePtr pDrawable = pDamage->pDrawable;
     ScreenPtr pScreen = pDrawable->pScreen;
 
     damageScrPriv(pScreen);
@@ -1888,7 +1889,7 @@ DamageDestroy(DamagePtr pDamage)
     damageScrPriv(pScreen);
 
     if (pDamage->pDrawable)
-        DamageUnregister(pDamage->pDrawable, pDamage);
+        DamageUnregister(pDamage);
 
     if (pDamage->damageDestroy)
         (*pDamage->damageDestroy) (pDamage, pDamage->closure);
diff --git a/miext/damage/damage.h b/miext/damage/damage.h
index c2c313a..e5d6913 100644
--- a/miext/damage/damage.h
+++ b/miext/damage/damage.h
@@ -80,7 +80,7 @@ extern _X_EXPORT void
  DamageRegister(DrawablePtr pDrawable, DamagePtr pDamage);
 
 extern _X_EXPORT void
- DamageUnregister(DrawablePtr pDrawable, DamagePtr pDamage);
+ DamageUnregister(DamagePtr pDamage);
 
 extern _X_EXPORT void
  DamageDestroy(DamagePtr pDamage);
diff --git a/miext/shadow/shadow.c b/miext/shadow/shadow.c
index 2d869e5..1a9088c 100644
--- a/miext/shadow/shadow.c
+++ b/miext/shadow/shadow.c
@@ -219,7 +219,7 @@ shadowRemove(ScreenPtr pScreen, PixmapPtr pPixmap)
     shadowBuf(pScreen);
 
     if (pBuf->pPixmap) {
-        DamageUnregister(&pBuf->pPixmap->drawable, pBuf->pDamage);
+        DamageUnregister(pBuf->pDamage);
         pBuf->update = 0;
         pBuf->window = 0;
         pBuf->randr = 0;
commit 28708a045de7d9043d20fb06b61c44a46eb5526b
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Aug 26 13:52:14 2013 -0400

    damage: Implicitly unregister on destroy
    
    There's no reason not to, and it simplifies quite a few callers.
    
    Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/damageext/damageext.c b/damageext/damageext.c
index e02a28f..db0a753 100644
--- a/damageext/damageext.c
+++ b/damageext/damageext.c
@@ -429,7 +429,6 @@ FreeDamageExt(pointer value, XID did)
      */
     pDamageExt->id = 0;
     if (pDamageExt->pDamage) {
-        DamageUnregister(pDamageExt->pDrawable, pDamageExt->pDamage);
         DamageDestroy(pDamageExt->pDamage);
     }
     free(pDamageExt);
diff --git a/dix/pixmap.c b/dix/pixmap.c
index fe92147..d5dc383 100644
--- a/dix/pixmap.c
+++ b/dix/pixmap.c
@@ -202,7 +202,6 @@ PixmapStopDirtyTracking(PixmapPtr src, PixmapPtr slave_dst)
 
     xorg_list_for_each_entry_safe(ent, safe, &screen->pixmap_dirty_list, ent) {
         if (ent->src == src && ent->slave_dst == slave_dst) {
-            DamageUnregister(&src->drawable, ent->damage);
             DamageDestroy(ent->damage);
             xorg_list_del(&ent->ent);
             free(ent);
diff --git a/exa/exa_classic.c b/exa/exa_classic.c
index 1fa534b..0fa422f 100644
--- a/exa/exa_classic.c
+++ b/exa/exa_classic.c
@@ -192,7 +192,6 @@ exaModifyPixmapHeader_classic(PixmapPtr pPixmap, int width, int height,
          * gpu memory, so there's no need to track damage.
          */
         if (pExaPixmap->pDamage) {
-            DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
             DamageDestroy(pExaPixmap->pDamage);
             pExaPixmap->pDamage = NULL;
         }
diff --git a/exa/exa_migration_mixed.c b/exa/exa_migration_mixed.c
index 445c4fc..5e0bf15 100644
--- a/exa/exa_migration_mixed.c
+++ b/exa/exa_migration_mixed.c
@@ -190,7 +190,6 @@ exaPrepareAccessReg_mixed(PixmapPtr pPixmap, int index, RegionPtr pReg)
              * copy anymore. Drivers that prefer DFS, should fail prepare
              * access.
              */
-            DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
             DamageDestroy(pExaPixmap->pDamage);
             pExaPixmap->pDamage = NULL;
 
diff --git a/exa/exa_mixed.c b/exa/exa_mixed.c
index 0fb4091..3e2dcf2 100644
--- a/exa/exa_mixed.c
+++ b/exa/exa_mixed.c
@@ -139,7 +139,6 @@ exaModifyPixmapHeader_mixed(PixmapPtr pPixmap, int width, int height, int depth,
     if (pPixData) {
         if (pExaPixmap->driverPriv) {
             if (pExaPixmap->pDamage) {
-                DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
                 DamageDestroy(pExaPixmap->pDamage);
                 pExaPixmap->pDamage = NULL;
             }
@@ -189,7 +188,6 @@ exaModifyPixmapHeader_mixed(PixmapPtr pPixmap, int width, int height, int depth,
             if (pExaPixmap->sys_ptr) {
                 free(pExaPixmap->sys_ptr);
                 pExaPixmap->sys_ptr = NULL;
-                DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
                 DamageDestroy(pExaPixmap->pDamage);
                 pExaPixmap->pDamage = NULL;
                 RegionEmpty(&pExaPixmap->validSys);
diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index 0ee2cf3..db08e98 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -389,10 +389,7 @@ ephyrUnsetInternalDamage(ScreenPtr pScreen)
     KdScreenPriv(pScreen);
     KdScreenInfo *screen = pScreenPriv->screen;
     EphyrScrPriv *scrpriv = screen->driver;
-    PixmapPtr pPixmap = NULL;
 
-    pPixmap = (*pScreen->GetScreenPixmap) (pScreen);
-    DamageUnregister(&pPixmap->drawable, scrpriv->pDamage);
     DamageDestroy(scrpriv->pDamage);
 
     RemoveBlockAndWakeupHandlers(ephyrInternalDamageBlockHandler,
diff --git a/miext/damage/damage.c b/miext/damage/damage.c
index a98c20e..cf4b61a 100644
--- a/miext/damage/damage.c
+++ b/miext/damage/damage.c
@@ -1637,7 +1637,6 @@ damageDestroyWindow(WindowPtr pWindow)
     damageScrPriv(pScreen);
 
     while ((pDamage = damageGetWinPriv(pWindow))) {
-        DamageUnregister(&pWindow->drawable, pDamage);
         DamageDestroy(pDamage);
     }
     unwrap(pScrPriv, pScreen, DestroyWindow);
@@ -1888,6 +1887,9 @@ DamageDestroy(DamagePtr pDamage)
 
     damageScrPriv(pScreen);
 
+    if (pDamage->pDrawable)
+        DamageUnregister(pDamage->pDrawable, pDamage);
+
     if (pDamage->damageDestroy)
         (*pDamage->damageDestroy) (pDamage, pDamage->closure);
     (*pScrPriv->funcs.Destroy) (pDamage);
commit e657635dbe6b92875b0e88370557c2cbab673a49
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Oct 18 14:24:23 2012 -0400

    fb: Remove unused compatibility wrappers
    
    Originally added in early 2009, not being used elsewhere anymore.
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/fb/fb.h b/fb/fb.h
index b869d12..26957df 100644
--- a/fb/fb.h
+++ b/fb/fb.h
@@ -1111,17 +1111,6 @@ fbInitVisuals(VisualPtr * visualp,
  * fbcopy.c
  */
 
-/* Compatibility definition, to be removed at next ABI change. */
-typedef void (*fbCopyProc) (DrawablePtr pSrcDrawable,
-                            DrawablePtr pDstDrawable,
-                            GCPtr pGC,
-                            BoxPtr pDstBox,
-                            int nbox,
-                            int dx,
-                            int dy,
-                            Bool reverse,
-                            Bool upsidedown, Pixel bitplane, void *closure);
-
 extern _X_EXPORT void
 
 fbCopyNtoN(DrawablePtr pSrcDrawable,
@@ -1133,29 +1122,6 @@ fbCopyNtoN(DrawablePtr pSrcDrawable,
            int dy,
            Bool reverse, Bool upsidedown, Pixel bitplane, void *closure);
 
-/* Compatibility wrapper, to be removed at next ABI change. */
-extern _X_EXPORT void
-
-fbCopyRegion(DrawablePtr pSrcDrawable,
-             DrawablePtr pDstDrawable,
-             GCPtr pGC,
-             RegionPtr pDstRegion,
-             int dx,
-             int dy, fbCopyProc copyProc, Pixel bitPlane, void *closure);
-
-/* Compatibility wrapper, to be removed at next ABI change. */
-extern _X_EXPORT RegionPtr
-
-fbDoCopy(DrawablePtr pSrcDrawable,
-         DrawablePtr pDstDrawable,
-         GCPtr pGC,
-         int xIn,
-         int yIn,
-         int widthSrc,
-         int heightSrc,
-         int xOut,
-         int yOut, fbCopyProc copyProc, Pixel bitplane, void *closure);
-
 extern _X_EXPORT void
 
 fbCopy1toN(DrawablePtr pSrcDrawable,
diff --git a/fb/fbcopy.c b/fb/fbcopy.c
index e9c252a..541ef71 100644
--- a/fb/fbcopy.c
+++ b/fb/fbcopy.c
@@ -28,33 +28,6 @@
 
 #include "fb.h"
 
-/* Compatibility wrapper, to be removed at next ABI change. */
-void
-fbCopyRegion(DrawablePtr pSrcDrawable,
-             DrawablePtr pDstDrawable,
-             GCPtr pGC,
-             RegionPtr pDstRegion,
-             int dx, int dy, fbCopyProc copyProc, Pixel bitPlane, void *closure)
-{
-    miCopyRegion(pSrcDrawable, pDstDrawable, pGC, pDstRegion, dx, dy, copyProc,
-                 bitPlane, closure);
-}
-
-/* Compatibility wrapper, to be removed at next ABI change. */
-RegionPtr
-fbDoCopy(DrawablePtr pSrcDrawable,
-         DrawablePtr pDstDrawable,
-         GCPtr pGC,
-         int xIn,
-         int yIn,
-         int widthSrc,
-         int heightSrc,
-         int xOut, int yOut, fbCopyProc copyProc, Pixel bitPlane, void *closure)
-{
-    return miDoCopy(pSrcDrawable, pDstDrawable, pGC, xIn, yIn, widthSrc,
-                    heightSrc, xOut, yOut, copyProc, bitPlane, closure);
-}
-
 void
 fbCopyNtoN(DrawablePtr pSrcDrawable,
            DrawablePtr pDstDrawable,
commit e4b15125bb06c97f1f34f7074fcdb597e718399c
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Oct 18 14:24:22 2012 -0400

    mipointer: Remove deprecated miPointerCurrentScreen
    
    The only remaining use was in some debugging code in DMX.
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Mark Kettenis <kettenis at openbsd.org>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/dmx/input/dmxbackend.c b/hw/dmx/input/dmxbackend.c
index 9463c87..807e023 100644
--- a/hw/dmx/input/dmxbackend.c
+++ b/hw/dmx/input/dmxbackend.c
@@ -419,10 +419,9 @@ dmxBackendCollectEvents(DevicePtr pDev,
             }
             break;
         case MotionNotify:
-            DMXDBG9("dmxBackendCollectEvents: MotionNotify %d/%d (mi %d)"
+            DMXDBG8("dmxBackendCollectEvents: MotionNotify %d/%d"
                     " newscreen=%d: %d %d (e=%d; last=%d,%d)\n",
                     dmxScreen->index, priv->myScreen,
-                    miPointerCurrentScreen()->myNum,
                     priv->newscreen,
                     X.xmotion.x, X.xmotion.y,
                     entered, priv->lastX, priv->lastY);
@@ -579,9 +578,6 @@ dmxBackendLateReInit(DevicePtr pDev)
     GETPRIVFROMPDEV;
     int x, y;
 
-    DMXDBG1("dmxBackendLateReInit miPointerCurrentScreen() = %p\n",
-            miPointerCurrentScreen());
-
     dmxBackendSameDisplay(NULL, 0);     /* Invalidate cache */
     dmxBackendInitPrivate(pDev);
     dmxBackendComputeCenter(priv);
diff --git a/mi/mipointer.c b/mi/mipointer.c
index f07c5db..5d591a1 100644
--- a/mi/mipointer.c
+++ b/mi/mipointer.c
@@ -481,15 +481,6 @@ miPointerSetScreen(DeviceIntPtr pDev, int screen_no, int x, int y)
 }
 
 /**
- * @return The current screen of the VCP
- */
-ScreenPtr
-miPointerCurrentScreen(void)
-{
-    return miPointerGetScreen(inputInfo.pointer);
-}
-
-/**
  * @return The current screen of the given device or NULL.
  */
 ScreenPtr
diff --git a/mi/mipointer.h b/mi/mipointer.h
index 33261ab..bdeed12 100644
--- a/mi/mipointer.h
+++ b/mi/mipointer.h
@@ -91,11 +91,6 @@ extern _X_EXPORT void miPointerWarpCursor(DeviceIntPtr /*pDev */ ,
                                           int   /*y */
     );
 
-/* Deprecated in favour of miPointerGetScreen. */
-extern _X_EXPORT ScreenPtr
-miPointerCurrentScreen(void
-) _X_DEPRECATED;
-
 extern _X_EXPORT ScreenPtr
 miPointerGetScreen(DeviceIntPtr pDev);
 extern _X_EXPORT void
commit b5d66b9513a0f1e13f5c5bc9e0958f4eac9bf6c3
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Oct 18 14:24:21 2012 -0400

    xfree86: Remove deprecated unimplemented xf86MapReadSideEffects
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Mark Kettenis <kettenis at openbsd.org>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/xfree86/os-support/shared/vidmem.c b/hw/xfree86/os-support/shared/vidmem.c
index 514fc2f..68ed30e 100644
--- a/hw/xfree86/os-support/shared/vidmem.c
+++ b/hw/xfree86/os-support/shared/vidmem.c
@@ -257,16 +257,3 @@ xf86LinearVidMem(void)
     xf86InitVidMem();
     return vidMemInfo.linearSupported;
 }
-
-void
-xf86MapReadSideEffects(int ScreenNum, int Flags, pointer base,
-                       unsigned long Size)
-{
-    if (!(Flags & VIDMEM_READSIDEEFFECT))
-        return;
-
-    if (!vidMemInfo.initialised || !vidMemInfo.readSideEffects)
-        return;
-
-    vidMemInfo.readSideEffects(ScreenNum, base, Size);
-}
diff --git a/hw/xfree86/os-support/xf86OSpriv.h b/hw/xfree86/os-support/xf86OSpriv.h
index 65769c1..bd734f5 100644
--- a/hw/xfree86/os-support/xf86OSpriv.h
+++ b/hw/xfree86/os-support/xf86OSpriv.h
@@ -38,7 +38,6 @@ typedef pointer (*SetWCProcPtr) (int, unsigned long, unsigned long, Bool,
                                  MessageType);
 typedef void (*ProtectMemProcPtr) (int, pointer, unsigned long, Bool);
 typedef void (*UndoWCProcPtr) (int, pointer);
-typedef void (*ReadSideEffectsProcPtr) (int, pointer, unsigned long);
 
 typedef struct {
     Bool initialised;
@@ -47,7 +46,6 @@ typedef struct {
     ProtectMemProcPtr protectMem;
     SetWCProcPtr setWC;
     UndoWCProcPtr undoWC;
-    ReadSideEffectsProcPtr readSideEffects;
     Bool linearSupported;
 } VidMemInfo, *VidMemInfoPtr;
 
diff --git a/hw/xfree86/os-support/xf86_OSproc.h b/hw/xfree86/os-support/xf86_OSproc.h
index 6be5946..106168a 100644
--- a/hw/xfree86/os-support/xf86_OSproc.h
+++ b/hw/xfree86/os-support/xf86_OSproc.h
@@ -136,8 +136,6 @@ extern _X_EXPORT _X_DEPRECATED pointer xf86MapVidMem(int, int, unsigned long,
                                                      unsigned long);
 extern _X_EXPORT _X_DEPRECATED void xf86UnMapVidMem(int, pointer,
                                                     unsigned long);
-extern _X_EXPORT _X_DEPRECATED void xf86MapReadSideEffects(int, int, pointer,
-                                                           unsigned long);
 extern _X_EXPORT int xf86ReadBIOS(unsigned long, unsigned long, unsigned char *,
                                   int);
 extern _X_EXPORT Bool xf86EnableIO(void);
commit abbd85742a390e18497b96902a0c0d976739e3bd
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Oct 18 14:24:20 2012 -0400

    dix: FIXES is not optional
    
    It's already not optional at configure time, this just makes it so at
    build time too.
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
index 7f888e3..2b3a570 100644
--- a/Xext/panoramiX.c
+++ b/Xext/panoramiX.c
@@ -53,9 +53,7 @@ Equipment Corporation.
 #include "servermd.h"
 #include "resource.h"
 #include "picturestr.h"
-#ifdef XFIXES
 #include "xfixesint.h"
-#endif
 #ifdef COMPOSITE
 #include "compint.h"
 #endif
@@ -583,9 +581,7 @@ PanoramiXExtensionInit(void)
     ProcVector[X_StoreNamedColor] = PanoramiXStoreNamedColor;
 
     PanoramiXRenderInit();
-#ifdef XFIXES
     PanoramiXFixesInit();
-#endif
 #ifdef COMPOSITE
     PanoramiXCompositeInit();
 #endif
@@ -890,9 +886,7 @@ PanoramiXResetProc(ExtensionEntry * extEntry)
     int i;
 
     PanoramiXRenderReset();
-#ifdef XFIXES
     PanoramiXFixesReset();
-#endif
 #ifdef COMPOSITE
     PanoramiXCompositeReset ();
 #endif
diff --git a/dix/cursor.c b/dix/cursor.c
index cd8305c..8cc54bd 100644
--- a/dix/cursor.c
+++ b/dix/cursor.c
@@ -71,9 +71,7 @@ static GlyphSharePtr sharedGlyphs = (GlyphSharePtr) NULL;
 
 DevScreenPrivateKeyRec cursorScreenDevPriv;
 
-#ifdef XFIXES
 static CARD32 cursorSerial;
-#endif
 
 static void
 FreeCursorBits(CursorBitsPtr bits)
@@ -272,10 +270,8 @@ AllocARGBCursor(unsigned char *psrcbits, unsigned char *pmaskbits,
     bits->refcnt = -1;
     CheckForEmptyMask(bits);
     pCurs->bits = bits;
-#ifdef XFIXES
     pCurs->serialNumber = ++cursorSerial;
     pCurs->name = None;
-#endif
 
     pCurs->foreRed = foreRed;
     pCurs->foreGreen = foreGreen;
@@ -433,10 +429,8 @@ AllocGlyphCursor(Font source, unsigned sourceChar, Font mask, unsigned maskChar,
     CheckForEmptyMask(bits);
     pCurs->bits = bits;
     pCurs->refcnt = 1;
-#ifdef XFIXES
     pCurs->serialNumber = ++cursorSerial;
     pCurs->name = None;
-#endif
 
     pCurs->foreRed = foreRed;
     pCurs->foreGreen = foreGreen;
diff --git a/dix/window.c b/dix/window.c
index 9fa51c2..cff341b 100644
--- a/dix/window.c
+++ b/dix/window.c
@@ -2847,11 +2847,9 @@ HandleSaveSet(ClientPtr client)
 
     for (j = 0; j < client->numSaved; j++) {
         pWin = SaveSetWindow(client->saveSet[j]);
-#ifdef XFIXES
         if (SaveSetToRoot(client->saveSet[j]))
             pParent = pWin->drawable.pScreen->root;
         else
-#endif
         {
             pParent = pWin->parent;
             while (pParent && (wClient(pParent) == client))
@@ -2859,11 +2857,9 @@ HandleSaveSet(ClientPtr client)
         }
         if (pParent) {
             if (pParent != pWin->parent) {
-#ifdef XFIXES
                 /* unmap first so that ReparentWindow doesn't remap */
                 if (!SaveSetShouldMap(client->saveSet[j]))
                     UnmapWindow(pWin, FALSE);
-#endif
                 ReparentWindow(pWin, pParent,
                                pWin->drawable.x - wBorderWidth(pWin) -
                                pParent->drawable.x,
@@ -2872,9 +2868,7 @@ HandleSaveSet(ClientPtr client)
                 if (!pWin->realized && pWin->mapped)
                     pWin->mapped = FALSE;
             }
-#ifdef XFIXES
             if (SaveSetShouldMap(client->saveSet[j]))
-#endif
                 MapWindow(pWin, client);
         }
     }
diff --git a/include/cursorstr.h b/include/cursorstr.h
index 68ab2ec..2157954 100644
--- a/include/cursorstr.h
+++ b/include/cursorstr.h
@@ -78,10 +78,8 @@ typedef struct _Cursor {
     int refcnt;
     PrivateRec *devPrivates;    /* set by pScr->RealizeCursor */
     XID id;
-#ifdef XFIXES
     CARD32 serialNumber;
     Atom name;
-#endif
 } CursorRec;
 
 #define CURSOR_REC_SIZE (sizeof(CursorRec) + dixPrivatesSize(PRIVATE_CURSOR))
diff --git a/include/dixstruct.h b/include/dixstruct.h
index aef822c..0be7f0e 100644
--- a/include/dixstruct.h
+++ b/include/dixstruct.h
@@ -61,7 +61,6 @@ typedef enum { ClientStateInitial,
     ClientStateGone
 } ClientState;
 
-#ifdef XFIXES
 typedef struct _saveSet {
     struct _Window *windowPtr;
     Bool toRoot;
@@ -73,16 +72,6 @@ typedef struct _saveSet {
 #define SaveSetAssignWindow(ss,w)   ((ss).windowPtr = (w))
 #define SaveSetAssignToRoot(ss,tr)  ((ss).toRoot = (tr))
 #define SaveSetAssignMap(ss,m)      ((ss).map = (m))
-#else
-typedef struct _Window *SaveSetElt;
-
-#define SaveSetWindow(ss)   (ss)
-#define SaveSetToRoot(ss)   FALSE
-#define SaveSetShouldMap(ss)	    TRUE
-#define SaveSetAssignWindow(ss,w)   ((ss) = (w))
-#define SaveSetAssignToRoot(ss,tr)
-#define SaveSetAssignMap(ss,m)
-#endif
 
 typedef struct _Client {
     pointer requestBuffer;
diff --git a/include/extinit.h b/include/extinit.h
index 5690d7b..6d67bf2 100644
--- a/include/extinit.h
+++ b/include/extinit.h
@@ -140,10 +140,8 @@ extern void XFree86BigfontExtensionInit(void);
 
 extern void BigReqExtensionInit(void);
 
-#ifdef XFIXES
 extern _X_EXPORT Bool noXFixesExtension;
 extern void XFixesExtensionInit(void);
-#endif
 
 extern void XInputExtensionInit(void);
 extern _X_EXPORT void AssignTypeAndName(DeviceIntPtr dev,
diff --git a/mi/miinitext.c b/mi/miinitext.c
index dbca9f7..145da38 100644
--- a/mi/miinitext.c
+++ b/mi/miinitext.c
@@ -86,7 +86,6 @@ SOFTWARE.
 #undef DBE
 #undef SCREENSAVER
 #undef RANDR
-#undef XFIXES
 #undef DAMAGE
 #undef COMPOSITE
 #undef MITSHM
@@ -168,9 +167,7 @@ static ExtensionToggle ExtensionToggleList[] = {
     {"XFree86-VidModeExtension", &noXFree86VidModeExtension},
 #endif
 #endif
-#ifdef XFIXES
     {"XFIXES", &noXFixesExtension},
-#endif
 #ifdef PANORAMIX
     {"XINERAMA", &noPanoramiXExtension},
 #endif
@@ -263,10 +260,8 @@ static ExtensionModule staticExtensions[] = {
      */
     {PseudoramiXExtensionInit, "PseudoramiX", &noPseudoramiXExtension},
 #endif
-#ifdef XFIXES
     /* must be before Render to layer DisplayCursor correctly */
     {XFixesExtensionInit, "XFIXES", &noXFixesExtension},
-#endif
 #ifdef XF86BIGFONT
     {XFree86BigfontExtensionInit, XF86BIGFONTNAME, &noXFree86BigfontExtension},
 #endif
diff --git a/os/utils.c b/os/utils.c
index 60e828e..97c3125 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -169,9 +169,7 @@ Bool noXFree86DRIExtension = FALSE;
 #ifdef XF86VIDMODE
 Bool noXFree86VidModeExtension = FALSE;
 #endif
-#ifdef XFIXES
 Bool noXFixesExtension = FALSE;
-#endif
 #ifdef PANORAMIX
 /* Xinerama is disabled by default unless enabled via +xinerama */
 Bool noPanoramiXExtension = TRUE;
commit dff81687f5eac3eac9b49f58d4654cc30add2547
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Oct 18 14:24:19 2012 -0400

    vbe: Don't try to load the ddc submodule
    
    DDC is built into the server now.
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/xfree86/vbe/vbe.c b/hw/xfree86/vbe/vbe.c
index f0344af..39f0cef 100644
--- a/hw/xfree86/vbe/vbe.c
+++ b/hw/xfree86/vbe/vbe.c
@@ -319,10 +319,8 @@ vbeReadEDID(vbeInfoPtr pVbe)
 }
 
 xf86MonPtr
-vbeDoEDID(vbeInfoPtr pVbe, pointer pDDCModule)
+vbeDoEDID(vbeInfoPtr pVbe, pointer unused)
 {
-    xf86MonPtr pMonitor;
-    pointer pModule;
     unsigned char *DDC_data = NULL;
 
     if (!pVbe)
@@ -330,23 +328,12 @@ vbeDoEDID(vbeInfoPtr pVbe, pointer pDDCModule)
     if (pVbe->version < 0x200)
         return NULL;
 
-    if (!(pModule = pDDCModule)) {
-        pModule =
-            xf86LoadSubModule(pVbe->pInt10->pScrn, "ddc");
-        if (!pModule)
-            return NULL;
-    }
-
     DDC_data = vbeReadEDID(pVbe);
 
     if (!DDC_data)
         return NULL;
 
-    pMonitor = xf86InterpretEDID(pVbe->pInt10->pScrn->scrnIndex, DDC_data);
-
-    if (!pDDCModule)
-        xf86UnloadSubModule(pModule);
-    return pMonitor;
+    return xf86InterpretEDID(pVbe->pInt10->pScrn->scrnIndex, DDC_data);
 }
 
 #define GET_UNALIGNED2(x) \
commit bb82191bcfa8042f8d98ec8b1c6616dc31d2c5c8
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Oct 18 14:24:18 2012 -0400

    misprite: Delete some dead private storage
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/mi/misprite.c b/mi/misprite.c
index 97bbf8e..8163f5b 100644
--- a/mi/misprite.c
+++ b/mi/misprite.c
@@ -86,10 +86,6 @@ typedef struct {
     /* os layer procedures */
     ScreenBlockHandlerProcPtr BlockHandler;
 
-    /* device cursor procedures */
-    DeviceCursorInitializeProcPtr DeviceCursorInitialize;
-    DeviceCursorCleanupProcPtr DeviceCursorCleanup;
-
     xColorItem colors[2];
     ColormapPtr pInstalledMap;
     ColormapPtr pColormap;
@@ -329,9 +325,6 @@ miSpriteInitialize(ScreenPtr pScreen, miPointerScreenFuncPtr screenFuncs)
 
     pScreenPriv->BlockHandler = NULL;
 
-    pScreenPriv->DeviceCursorInitialize = pScreen->DeviceCursorInitialize;
-    pScreenPriv->DeviceCursorCleanup = pScreen->DeviceCursorCleanup;
-
     pScreenPriv->pInstalledMap = NULL;
     pScreenPriv->pColormap = NULL;
     pScreenPriv->colors[SOURCE_COLOR].red = 0;
commit 3639ab4ce25dc82a3f8592b7322198f1d2aca5f9
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 16 14:56:25 2012 -0400

    dri2: Don't bother with xf86LoaderCheckSymbol("DRI2Connect")
    
    The DRI2 code is now built-in to the server, even for Xorg.  The only
    thing this could protect against is trying to run a libglx built with
    DRI2 support against an Xorg built without it, which is firmly in
    "doctor it hurts when I do this" territory.
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/glx/glxdri2.c b/glx/glxdri2.c
index 8a1fa41..f662b21 100644
--- a/glx/glxdri2.c
+++ b/glx/glxdri2.c
@@ -941,8 +941,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
     if (screen == NULL)
         return NULL;
 
-    if (!xf86LoaderCheckSymbol("DRI2Connect") ||
-        !DRI2Connect(serverClient, pScreen, DRI2DriverDRI,
+    if (!DRI2Connect(serverClient, pScreen, DRI2DriverDRI,
                      &screen->fd, &driverName, &deviceName)) {
         LogMessage(X_INFO,
                    "AIGLX: Screen %d is not DRI2 capable\n", pScreen->myNum);
commit 13b507409f9e01adebba50e7eb801b52e52692ba
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 16 14:56:23 2012 -0400

    list: Avoid using X types
    
    In particular, Bool.  This is not an ABI break:
    
    /usr/include/X11/Xdefs.h:typedef int Bool;
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/include/list.h b/include/list.h
index 11de7c5..455c670 100644
--- a/include/list.h
+++ b/include/list.h
@@ -213,7 +213,7 @@ xorg_list_del(struct xorg_list *entry)
  *
  * @return True if the list contains one or more elements or False otherwise.
  */
-static inline Bool
+static inline int
 xorg_list_is_empty(struct xorg_list *head)
 {
     return head->next == head;
commit dbe10ef0e35659ee0e5db73f29670a3894a3e3f5
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 16 14:56:22 2012 -0400

    dbe: Fold the window private private into the window private
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/dbe/Makefile.am b/dbe/Makefile.am
index 043555b..7d034c7 100644
--- a/dbe/Makefile.am
+++ b/dbe/Makefile.am
@@ -9,5 +9,4 @@ endif
 libdbe_la_SOURCES = \
         dbe.c \
         midbe.c \
-        midbe.h \
-        midbestr.h
+        midbe.h
diff --git a/dbe/dbe.c b/dbe/dbe.c
index 3054c54..5524615 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -229,8 +229,7 @@ ProcDbeAllocateBackBufferName(ClientPtr client)
          * Allocate a window priv.
          */
 
-        pDbeWindowPriv =
-            dixAllocateObjectWithPrivates(DbeWindowPrivRec, PRIVATE_DBE_WINDOW);
+        pDbeWindowPriv = calloc(1, sizeof(DbeWindowPrivRec));
         if (!pDbeWindowPriv)
             return BadAlloc;
 
@@ -1222,7 +1221,7 @@ DbeWindowPrivDelete(pointer pDbeWinPriv, XID id)
                       NULL);
 
         /* We are done with the window priv. */
-        dixFreeObjectWithPrivates(pDbeWindowPriv, PRIVATE_DBE_WINDOW);
+        free(pDbeWindowPriv);
     }
 
     return Success;
diff --git a/dbe/dbestruct.h b/dbe/dbestruct.h
index 22dc460..2002066 100644
--- a/dbe/dbestruct.h
+++ b/dbe/dbestruct.h
@@ -143,6 +143,20 @@ typedef struct _DbeWindowPrivRec {
      */
     XID initIDs[DBE_INIT_MAX_IDS];
 
+    /* Pointer to a drawable that contains the contents of the back buffer.
+     */
+    PixmapPtr pBackBuffer;
+
+    /* Pointer to a drawable that contains the contents of the front buffer.
+     * This pointer is only used for the XdbeUntouched swap action.  For that
+     * swap action, we need to copy the front buffer (window) contents into
+     * this drawable, copy the contents of current back buffer drawable (the
+     * back buffer) into the window, swap the front and back drawable pointers,
+     * and then swap the drawable/resource associations in the resource
+     * database.
+     */
+    PixmapPtr pFrontBuffer;
+
     /* Device-specific private information.
      */
     PrivateRec *devPrivates;
diff --git a/dbe/midbe.c b/dbe/midbe.c
index 71c7963..3663fdd 100644
--- a/dbe/midbe.c
+++ b/dbe/midbe.c
@@ -48,7 +48,6 @@
 #include "resource.h"
 #include "opaque.h"
 #include "dbestruct.h"
-#include "midbestr.h"
 #include "regionstr.h"
 #include "gcstruct.h"
 #include "inputstr.h"
@@ -57,9 +56,6 @@
 
 #include <stdio.h>
 
-static DevPrivateKeyRec miDbeWindowPrivPrivKeyRec;
-
-#define miDbeWindowPrivPrivKey (&miDbeWindowPrivPrivKeyRec)
 
 /******************************************************************************
  *
@@ -138,7 +134,6 @@ miDbeAllocBackBufferName(WindowPtr pWin, XID bufId, int swapAction)
 {
     ScreenPtr pScreen;
     DbeWindowPrivPtr pDbeWindowPriv;
-    MiDbeWindowPrivPrivPtr pDbeWindowPrivPriv;
     DbeScreenPrivPtr pDbeScreenPriv;
     GCPtr pGC;
     xRectangle clearRect;
@@ -156,12 +151,8 @@ miDbeAllocBackBufferName(WindowPtr pWin, XID bufId, int swapAction)
 
         pDbeScreenPriv = DBE_SCREEN_PRIV(pScreen);
 
-        /* Setup the window priv priv. */
-        pDbeWindowPrivPriv = MI_DBE_WINDOW_PRIV_PRIV(pDbeWindowPriv);
-        pDbeWindowPrivPriv->pDbeWindowPriv = pDbeWindowPriv;
-
         /* Get a front pixmap. */
-        if (!(pDbeWindowPrivPriv->pFrontBuffer =
+        if (!(pDbeWindowPriv->pFrontBuffer =
               (*pScreen->CreatePixmap) (pScreen, pDbeWindowPriv->width,
                                         pDbeWindowPriv->height,
                                         pWin->drawable.depth, 0))) {
@@ -169,22 +160,22 @@ miDbeAllocBackBufferName(WindowPtr pWin, XID bufId, int swapAction)
         }
 
         /* Get a back pixmap. */
-        if (!(pDbeWindowPrivPriv->pBackBuffer =
+        if (!(pDbeWindowPriv->pBackBuffer =
               (*pScreen->CreatePixmap) (pScreen, pDbeWindowPriv->width,
                                         pDbeWindowPriv->height,
                                         pWin->drawable.depth, 0))) {
-            (*pScreen->DestroyPixmap) (pDbeWindowPrivPriv->pFrontBuffer);
+            (*pScreen->DestroyPixmap) (pDbeWindowPriv->pFrontBuffer);
             return BadAlloc;
         }
 
         /* Security creation/labeling check. */
         rc = XaceHook(XACE_RESOURCE_ACCESS, serverClient, bufId,
-                      dbeDrawableResType, pDbeWindowPrivPriv->pBackBuffer,
+                      dbeDrawableResType, pDbeWindowPriv->pBackBuffer,
                       RT_WINDOW, pWin, DixCreateAccess);
 
         /* Make the back pixmap a DBE drawable resource. */
         if (rc != Success || !AddResource(bufId, dbeDrawableResType,
-                                          pDbeWindowPrivPriv->pBackBuffer)) {
+                                          pDbeWindowPriv->pBackBuffer)) {
             /* free the buffer and the drawable resource */
             FreeResource(bufId, RT_NONE);
             return (rc == Success) ? BadAlloc : rc;
@@ -193,11 +184,11 @@ miDbeAllocBackBufferName(WindowPtr pWin, XID bufId, int swapAction)
         /* Clear the back buffer. */
         pGC = GetScratchGC(pWin->drawable.depth, pWin->drawable.pScreen);
         if ((*pDbeScreenPriv->SetupBackgroundPainter) (pWin, pGC)) {
-            ValidateGC((DrawablePtr) pDbeWindowPrivPriv->pBackBuffer, pGC);
+            ValidateGC((DrawablePtr) pDbeWindowPriv->pBackBuffer, pGC);
             clearRect.x = clearRect.y = 0;
-            clearRect.width = pDbeWindowPrivPriv->pBackBuffer->drawable.width;
-            clearRect.height = pDbeWindowPrivPriv->pBackBuffer->drawable.height;
-            (*pGC->ops->PolyFillRect) ((DrawablePtr) pDbeWindowPrivPriv->
+            clearRect.width = pDbeWindowPriv->pBackBuffer->drawable.width;
+            clearRect.height = pDbeWindowPriv->pBackBuffer->drawable.height;
+            (*pGC->ops->PolyFillRect) ((DrawablePtr) pDbeWindowPriv->
                                        pBackBuffer, pGC, 1, &clearRect);
         }
         FreeScratchGC(pGC);
@@ -210,9 +201,8 @@ miDbeAllocBackBufferName(WindowPtr pWin, XID bufId, int swapAction)
          */
 
         /* Associate the new ID with an existing pixmap. */
-        pDbeWindowPrivPriv = MI_DBE_WINDOW_PRIV_PRIV(pDbeWindowPriv);
         if (!AddResource(bufId, dbeDrawableResType,
-                         (pointer) pDbeWindowPrivPriv->pBackBuffer)) {
+                         (pointer) pDbeWindowPriv->pBackBuffer)) {
             return BadAlloc;
         }
 
@@ -237,12 +227,10 @@ static void
 miDbeAliasBuffers(DbeWindowPrivPtr pDbeWindowPriv)
 {
     int i;
-    MiDbeWindowPrivPrivPtr pDbeWindowPrivPriv =
-        MI_DBE_WINDOW_PRIV_PRIV(pDbeWindowPriv);
 
     for (i = 0; i < pDbeWindowPriv->nBufferIDs; i++) {
         ChangeResourceValue(pDbeWindowPriv->IDs[i], dbeDrawableResType,
-                            (pointer) pDbeWindowPrivPriv->pBackBuffer);
+                            (pointer) pDbeWindowPriv->pBackBuffer);
     }
 
 }                               /* miDbeAliasBuffers() */
@@ -261,15 +249,15 @@ static int
 miDbeSwapBuffers(ClientPtr client, int *pNumWindows, DbeSwapInfoPtr swapInfo)
 {
     DbeScreenPrivPtr pDbeScreenPriv;
+    DbeWindowPrivPtr pDbeWindowPriv;
     GCPtr pGC;
     WindowPtr pWin;
-    MiDbeWindowPrivPrivPtr pDbeWindowPrivPriv;
     PixmapPtr pTmpBuffer;
     xRectangle clearRect;
 
     pWin = swapInfo[0].pWindow;
     pDbeScreenPriv = DBE_SCREEN_PRIV_FROM_WINDOW(pWin);
-    pDbeWindowPrivPriv = MI_DBE_WINDOW_PRIV_PRIV_FROM_WINDOW(pWin);
+    pDbeWindowPriv = DBE_WINDOW_PRIV(pWin);
     pGC = GetScratchGC(pWin->drawable.depth, pWin->drawable.pScreen);
 
     /*
@@ -286,9 +274,9 @@ miDbeSwapBuffers(ClientPtr client, int *pNumWindows, DbeSwapInfoPtr swapInfo)
         break;
 
     case XdbeUntouched:
-        ValidateGC((DrawablePtr) pDbeWindowPrivPriv->pFrontBuffer, pGC);
+        ValidateGC((DrawablePtr) pDbeWindowPriv->pFrontBuffer, pGC);
         (*pGC->ops->CopyArea) ((DrawablePtr) pWin,
-                               (DrawablePtr) pDbeWindowPrivPriv->pFrontBuffer,
+                               (DrawablePtr) pDbeWindowPriv->pFrontBuffer,
                                pGC, 0, 0, pWin->drawable.width,
                                pWin->drawable.height, 0, 0);
         break;
@@ -305,7 +293,7 @@ miDbeSwapBuffers(ClientPtr client, int *pNumWindows, DbeSwapInfoPtr swapInfo)
      */
 
     ValidateGC((DrawablePtr) pWin, pGC);
-    (*pGC->ops->CopyArea) ((DrawablePtr) pDbeWindowPrivPriv->pBackBuffer,
+    (*pGC->ops->CopyArea) ((DrawablePtr) pDbeWindowPriv->pBackBuffer,
                            (DrawablePtr) pWin, pGC, 0, 0,
                            pWin->drawable.width, pWin->drawable.height, 0, 0);
 
@@ -321,23 +309,23 @@ miDbeSwapBuffers(ClientPtr client, int *pNumWindows, DbeSwapInfoPtr swapInfo)
 
     case XdbeBackground:
         if ((*pDbeScreenPriv->SetupBackgroundPainter) (pWin, pGC)) {
-            ValidateGC((DrawablePtr) pDbeWindowPrivPriv->pBackBuffer, pGC);
+            ValidateGC((DrawablePtr) pDbeWindowPriv->pBackBuffer, pGC);
             clearRect.x = 0;
             clearRect.y = 0;
-            clearRect.width = pDbeWindowPrivPriv->pBackBuffer->drawable.width;
-            clearRect.height = pDbeWindowPrivPriv->pBackBuffer->drawable.height;
-            (*pGC->ops->PolyFillRect) ((DrawablePtr) pDbeWindowPrivPriv->
+            clearRect.width = pDbeWindowPriv->pBackBuffer->drawable.width;
+            clearRect.height = pDbeWindowPriv->pBackBuffer->drawable.height;
+            (*pGC->ops->PolyFillRect) ((DrawablePtr) pDbeWindowPriv->
                                        pBackBuffer, pGC, 1, &clearRect);
         }
         break;
 
     case XdbeUntouched:
         /* Swap pixmap pointers. */
-        pTmpBuffer = pDbeWindowPrivPriv->pBackBuffer;
-        pDbeWindowPrivPriv->pBackBuffer = pDbeWindowPrivPriv->pFrontBuffer;
-        pDbeWindowPrivPriv->pFrontBuffer = pTmpBuffer;
+        pTmpBuffer = pDbeWindowPriv->pBackBuffer;
+        pDbeWindowPriv->pBackBuffer = pDbeWindowPriv->pFrontBuffer;
+        pDbeWindowPriv->pFrontBuffer = pTmpBuffer;
 
-        miDbeAliasBuffers(pDbeWindowPrivPriv->pDbeWindowPriv);
+        miDbeAliasBuffers(pDbeWindowPriv);
 
         break;
 
@@ -427,8 +415,6 @@ miDbeSwapBuffers(ClientPtr client, int *pNumWindows, DbeSwapInfoPtr swapInfo)
 static void
 miDbeWinPrivDelete(DbeWindowPrivPtr pDbeWindowPriv, XID bufId)
 {
-    MiDbeWindowPrivPrivPtr pDbeWindowPrivPriv;
-
     if (pDbeWindowPriv->nBufferIDs != 0) {
         /* We still have at least one more buffer ID associated with this
          * window.
@@ -440,18 +426,15 @@ miDbeWinPrivDelete(DbeWindowPrivPtr pDbeWindowPriv, XID bufId)
      * free some stuff.
      */
 
-    pDbeWindowPrivPriv = MI_DBE_WINDOW_PRIV_PRIV(pDbeWindowPriv);
-
     /* Destroy the front and back pixmaps. */
-    if (pDbeWindowPrivPriv->pFrontBuffer) {
+    if (pDbeWindowPriv->pFrontBuffer) {
         (*pDbeWindowPriv->pWindow->drawable.pScreen->
-         DestroyPixmap) (pDbeWindowPrivPriv->pFrontBuffer);
+         DestroyPixmap) (pDbeWindowPriv->pFrontBuffer);
     }
-    if (pDbeWindowPrivPriv->pBackBuffer) {
+    if (pDbeWindowPriv->pBackBuffer) {
         (*pDbeWindowPriv->pWindow->drawable.pScreen->
-         DestroyPixmap) (pDbeWindowPrivPriv->pBackBuffer);
+         DestroyPixmap) (pDbeWindowPriv->pBackBuffer);
     }
-
 }                               /* miDbeWinPrivDelete() */
 
 /******************************************************************************
@@ -627,10 +610,6 @@ miDbePositionWindow(WindowPtr pWin, int x, int y)
     else {
         /* Clear out the new DBE buffer pixmaps. */
 
-        MiDbeWindowPrivPrivPtr pDbeWindowPrivPriv;
-
-        pDbeWindowPrivPriv = MI_DBE_WINDOW_PRIV_PRIV(pDbeWindowPriv);
-
         /* I suppose this could avoid quite a bit of work if
          * it computed the minimal area required.
          */
@@ -641,9 +620,9 @@ miDbePositionWindow(WindowPtr pWin, int x, int y)
         }
         /* Copy the contents of the old front pixmap to the new one. */
         if (pWin->bitGravity != ForgetGravity) {
-            (*pGC->ops->CopyArea) ((DrawablePtr) pDbeWindowPrivPriv->
-                                   pFrontBuffer, (DrawablePtr) pFrontBuffer,
-                                   pGC, sourcex, sourcey, savewidth, saveheight,
+            (*pGC->ops->CopyArea) ((DrawablePtr) pDbeWindowPriv->pFrontBuffer,
+				   (DrawablePtr) pFrontBuffer, pGC,
+				   sourcex, sourcey, savewidth, saveheight,
                                    destx, desty);
         }
 
@@ -654,8 +633,8 @@ miDbePositionWindow(WindowPtr pWin, int x, int y)
         }
         /* Copy the contents of the old back pixmap to the new one. */
         if (pWin->bitGravity != ForgetGravity) {
-            (*pGC->ops->CopyArea) ((DrawablePtr) pDbeWindowPrivPriv->
-                                   pBackBuffer, (DrawablePtr) pBackBuffer, pGC,
+            (*pGC->ops->CopyArea) ((DrawablePtr) pDbeWindowPriv->pBackBuffer,
+				   (DrawablePtr) pBackBuffer, pGC,
                                    sourcex, sourcey, savewidth, saveheight,
                                    destx, desty);
         }
@@ -664,11 +643,11 @@ miDbePositionWindow(WindowPtr pWin, int x, int y)
          * pixmaps.
          */
 
-        (*pScreen->DestroyPixmap) (pDbeWindowPrivPriv->pFrontBuffer);
-        (*pScreen->DestroyPixmap) (pDbeWindowPrivPriv->pBackBuffer);
+        (*pScreen->DestroyPixmap) (pDbeWindowPriv->pFrontBuffer);
+        (*pScreen->DestroyPixmap) (pDbeWindowPriv->pBackBuffer);
 
-        pDbeWindowPrivPriv->pFrontBuffer = pFrontBuffer;
-        pDbeWindowPrivPriv->pBackBuffer = pBackBuffer;
+        pDbeWindowPriv->pFrontBuffer = pFrontBuffer;
+        pDbeWindowPriv->pBackBuffer = pBackBuffer;
 
         /* Make sure all XID are associated with the new back pixmap. */
         miDbeAliasBuffers(pDbeWindowPriv);
@@ -693,10 +672,6 @@ miDbePositionWindow(WindowPtr pWin, int x, int y)
 Bool
 miDbeInit(ScreenPtr pScreen, DbeScreenPrivPtr pDbeScreenPriv)
 {
-    if (!dixRegisterPrivateKey(&miDbeWindowPrivPrivKeyRec, PRIVATE_DBE_WINDOW,
-                               sizeof(MiDbeWindowPrivPrivRec)))
-        return FALSE;
-
     /* Wrap functions. */
     pDbeScreenPriv->PositionWindow = pScreen->PositionWindow;
     pScreen->PositionWindow = miDbePositionWindow;
diff --git a/dbe/midbestr.h b/dbe/midbestr.h
deleted file mode 100644
index 70017b0..0000000
--- a/dbe/midbestr.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/******************************************************************************
- * 
- * Copyright (c) 1994, 1995  Hewlett-Packard Company
- *
- * 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 HEWLETT-PACKARD COMPANY 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 the Hewlett-Packard
- * Company shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization from the Hewlett-Packard Company.
- * 
- *     Header file for users of machine-independent DBE code
- * 
- *****************************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef MIDBE_STRUCT_H
-#define MIDBE_STRUCT_H
-
-/* DEFINES */
-
-#define MI_DBE_WINDOW_PRIV_PRIV(pDbeWindowPriv) \
-    (!(pDbeWindowPriv) ? NULL : (MiDbeWindowPrivPrivPtr) \
-     dixLookupPrivate(&(pDbeWindowPriv)->devPrivates, miDbeWindowPrivPrivKey))
-
-#define MI_DBE_WINDOW_PRIV_PRIV_FROM_WINDOW(pWin)\
-    MI_DBE_WINDOW_PRIV_PRIV(DBE_WINDOW_PRIV(pWin))
-
-/* TYPEDEFS */
-
-typedef struct _MiDbeWindowPrivPrivRec {
-    /* Place machine-specific fields in here.
-     * Since this is mi code, we do not really have machine-specific fields.
-     */
-
-    /* Pointer to a drawable that contains the contents of the back buffer.
-     */
-    PixmapPtr pBackBuffer;
-
-    /* Pointer to a drawable that contains the contents of the front buffer.
-     * This pointer is only used for the XdbeUntouched swap action.  For that
-     * swap action, we need to copy the front buffer (window) contents into
-     * this drawable, copy the contents of current back buffer drawable (the
-     * back buffer) into the window, swap the front and back drawable pointers,
-     * and then swap the drawable/resource associations in the resource
-     * database.
-     */
-    PixmapPtr pFrontBuffer;
-
-    /* Pointer back to our window private with which we are associated. */
-    DbeWindowPrivPtr pDbeWindowPriv;
-
-} MiDbeWindowPrivPrivRec, *MiDbeWindowPrivPrivPtr;
-
-#endif                          /* MIDBE_STRUCT_H */
diff --git a/dix/privates.c b/dix/privates.c
index 55b9345..41b1a76 100644
--- a/dix/privates.c
+++ b/dix/privates.c
@@ -105,7 +105,6 @@ static const char *key_names[PRIVATE_LAST] = {
     [PRIVATE_CURSOR_BITS] = "CURSOR_BITS",
 
     /* extension privates */
-    [PRIVATE_DBE_WINDOW] = "DBE_WINDOW",
     [PRIVATE_DAMAGE] = "DAMAGE",
     [PRIVATE_GLYPH] = "GLYPH",
     [PRIVATE_GLYPHSET] = "GLYPHSET",
diff --git a/include/privates.h b/include/privates.h
index 2c8864b..0abdce7 100644
--- a/include/privates.h
+++ b/include/privates.h
@@ -46,7 +46,6 @@ typedef enum {
     PRIVATE_CURSOR_BITS,
 
     /* extension privates */
-    PRIVATE_DBE_WINDOW,
     PRIVATE_DAMAGE,
     PRIVATE_GLYPH,
     PRIVATE_GLYPHSET,
commit 1489637d567b0034a916f88079b5f360e7fce99c
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 16 14:56:21 2012 -0400

    dbe: Fold midbe reset into dix
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/dbe/dbe.c b/dbe/dbe.c
index c708c9e..3054c54 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -91,7 +91,6 @@ DbeStubScreen(DbeScreenPrivPtr pDbeScreenPriv, int *nStubbedScreens)
     pDbeScreenPriv->AllocBackBufferName = NULL;
     pDbeScreenPriv->SwapBuffers = NULL;
     pDbeScreenPriv->WinPrivDelete = NULL;
-    pDbeScreenPriv->ResetProc = NULL;
 
     (*nStubbedScreens)++;
 
@@ -1255,10 +1254,7 @@ DbeResetProc(ExtensionEntry * extEntry)
         if (pDbeScreenPriv) {
             /* Unwrap DestroyWindow, which was wrapped in DbeExtensionInit(). */
             pScreen->DestroyWindow = pDbeScreenPriv->DestroyWindow;
-
-            if (pDbeScreenPriv->ResetProc)
-                (*pDbeScreenPriv->ResetProc) (pScreen);
-
+            pScreen->PositionWindow = pDbeScreenPriv->PositionWindow;
             free(pDbeScreenPriv);
         }
     }
diff --git a/dbe/dbestruct.h b/dbe/dbestruct.h
index 1930b71..22dc460 100644
--- a/dbe/dbestruct.h
+++ b/dbe/dbestruct.h
@@ -183,9 +183,6 @@ typedef struct _DbeScreenPrivRec {
     void (*WinPrivDelete) (DbeWindowPrivPtr /*pDbeWindowPriv */ ,
                            XID  /*bufId */
         );
-    void (*ResetProc) (ScreenPtr        /*pScreen */
-        );
-
 } DbeScreenPrivRec, *DbeScreenPrivPtr;
 
 #endif                          /* DBE_STRUCT_H */
diff --git a/dbe/midbe.c b/dbe/midbe.c
index 01f2a45..71c7963 100644
--- a/dbe/midbe.c
+++ b/dbe/midbe.c
@@ -682,30 +682,6 @@ miDbePositionWindow(WindowPtr pWin, int x, int y)
 
 /******************************************************************************
  *
- * DBE MI Procedure: miDbeResetProc
- *
- * Description:
- *
- *     This function is called from DbeResetProc(), which is called at the end
- *     of every server generation.  This function peforms any MI-specific
- *     shutdown tasks.
- *
- *****************************************************************************/
-
-static void
-miDbeResetProc(ScreenPtr pScreen)
-{
-    DbeScreenPrivPtr pDbeScreenPriv;
-
-    pDbeScreenPriv = DBE_SCREEN_PRIV(pScreen);
-
-    /* Unwrap wrappers */
-    pScreen->PositionWindow = pDbeScreenPriv->PositionWindow;
-
-}                               /* miDbeResetProc() */
-
-/******************************************************************************
- *
  * DBE MI Procedure: miDbeInit
  *
  * Description:
@@ -729,7 +705,6 @@ miDbeInit(ScreenPtr pScreen, DbeScreenPrivPtr pDbeScreenPriv)
     pDbeScreenPriv->GetVisualInfo = miDbeGetVisualInfo;
     pDbeScreenPriv->AllocBackBufferName = miDbeAllocBackBufferName;
     pDbeScreenPriv->SwapBuffers = miDbeSwapBuffers;
-    pDbeScreenPriv->ResetProc = miDbeResetProc;
     pDbeScreenPriv->WinPrivDelete = miDbeWinPrivDelete;
 
     return TRUE;
commit 44d770750069486a8452fb2384f9b85745268e61
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 16 14:56:20 2012 -0400

    dbe: Drop the unused idiom support
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/dbe/dbe.c b/dbe/dbe.c
index 9039d80..c708c9e 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -90,8 +90,6 @@ DbeStubScreen(DbeScreenPrivPtr pDbeScreenPriv, int *nStubbedScreens)
     pDbeScreenPriv->GetVisualInfo = NULL;
     pDbeScreenPriv->AllocBackBufferName = NULL;
     pDbeScreenPriv->SwapBuffers = NULL;
-    pDbeScreenPriv->BeginIdiom = NULL;
-    pDbeScreenPriv->EndIdiom = NULL;
     pDbeScreenPriv->WinPrivDelete = NULL;
     pDbeScreenPriv->ResetProc = NULL;
 
@@ -545,44 +543,6 @@ ProcDbeSwapBuffers(ClientPtr client)
 
 /******************************************************************************
  *
- * DBE DIX Procedure: ProcDbeBeginIdiom
- *
- * Description:
- *
- *     This function is for processing a DbeBeginIdiom request.
- *     This request informs the server that a complex swap will immediately
- *     follow this request.
- *
- * Return Values:
- *
- *     Success
- *
- *****************************************************************************/
-
-static int
-ProcDbeBeginIdiom(ClientPtr client)
-{
-    /* REQUEST(xDbeBeginIdiomReq); */
-    DbeScreenPrivPtr pDbeScreenPriv;
-    register int i;
-
-    REQUEST_SIZE_MATCH(xDbeBeginIdiomReq);
-
-    for (i = 0; i < screenInfo.numScreens; i++) {
-        pDbeScreenPriv = DBE_SCREEN_PRIV(screenInfo.screens[i]);
-
-        /* Call the DDX begin idiom procedure if there is one. */
-        if (pDbeScreenPriv->BeginIdiom) {
-            (*pDbeScreenPriv->BeginIdiom) (client);
-        }
-    }
-
-    return Success;
-
-}                               /* ProcDbeBeginIdiom() */
-
-/******************************************************************************
- *
  * DBE DIX Procedure: ProcDbeGetVisualInfo
  *
  * Description:
@@ -818,7 +778,7 @@ ProcDbeDispatch(ClientPtr client)
         return (ProcDbeSwapBuffers(client));
 
     case X_DbeBeginIdiom:
-        return (ProcDbeBeginIdiom(client));
+        return Success;
 
     case X_DbeEndIdiom:
         return Success;
@@ -982,32 +942,6 @@ SProcDbeSwapBuffers(ClientPtr client)
 
 /******************************************************************************
  *
- * DBE DIX Procedure: SProcDbeBeginIdiom
- *
- * Description:
- *
- *     This function is for processing a DbeBeginIdiom request on a swapped
- *     server.  This request informs the server that a complex swap will
- *     immediately follow this request.
- *
- * Return Values:
- *
- *     Success
- *
- *****************************************************************************/
-
-static int
-SProcDbeBeginIdiom(ClientPtr client)
-{
-    REQUEST(xDbeBeginIdiomReq);
-
-    swaps(&stuff->length);
-    return (ProcDbeBeginIdiom(client));
-
-}                               /* SProcDbeBeginIdiom() */
-
-/******************************************************************************
- *
  * DBE DIX Procedure: SProcDbeGetVisualInfo
  *
  * Description:
@@ -1097,7 +1031,7 @@ SProcDbeDispatch(ClientPtr client)
         return (SProcDbeSwapBuffers(client));
 
     case X_DbeBeginIdiom:
-        return (SProcDbeBeginIdiom(client));
+        return Success;
 
     case X_DbeEndIdiom:
         return Success;
diff --git a/dbe/dbestruct.h b/dbe/dbestruct.h
index f9d938a..1930b71 100644
--- a/dbe/dbestruct.h
+++ b/dbe/dbestruct.h
@@ -180,10 +180,6 @@ typedef struct _DbeScreenPrivRec {
                         int * /*pNumWindows */ ,
                         DbeSwapInfoPtr  /*swapInfo */
         );
-    void (*BeginIdiom) (ClientPtr       /*client */
-        );
-    void (*EndIdiom) (ClientPtr /*client */
-        );
     void (*WinPrivDelete) (DbeWindowPrivPtr /*pDbeWindowPriv */ ,
                            XID  /*bufId */
         );
diff --git a/dbe/midbe.c b/dbe/midbe.c
index d810d99..01f2a45 100644
--- a/dbe/midbe.c
+++ b/dbe/midbe.c
@@ -729,8 +729,6 @@ miDbeInit(ScreenPtr pScreen, DbeScreenPrivPtr pDbeScreenPriv)
     pDbeScreenPriv->GetVisualInfo = miDbeGetVisualInfo;
     pDbeScreenPriv->AllocBackBufferName = miDbeAllocBackBufferName;
     pDbeScreenPriv->SwapBuffers = miDbeSwapBuffers;
-    pDbeScreenPriv->BeginIdiom = 0;
-    pDbeScreenPriv->EndIdiom = 0;
     pDbeScreenPriv->ResetProc = miDbeResetProc;
     pDbeScreenPriv->WinPrivDelete = miDbeWinPrivDelete;
 
commit 8cce0cf4d378f6fa52bc2cd277737b8986ab683c
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 16 14:56:19 2012 -0400

    damage: Remove the 'damage window' resource type.
    
    Note that the existing code never actually creates a resource of this
    type, so it can't possibly do anything.  This is clearly meant to track
    window destruction and clean up any associated Damages, but that's
    already handled by miext/damage's DestroyWindow wrapper.
    
    Previous discussion:
    http://lists.freedesktop.org/archives/xorg-devel/2011-March/020847.html
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/damageext/damageext.c b/damageext/damageext.c
index a942ffa..e02a28f 100644
--- a/damageext/damageext.c
+++ b/damageext/damageext.c
@@ -31,7 +31,6 @@
 static unsigned char DamageReqCode;
 static int DamageEventBase;
 static RESTYPE DamageExtType;
-static RESTYPE DamageExtWinType;
 
 static DevPrivateKeyRec DamageClientPrivateKeyRec;
 
@@ -429,8 +428,6 @@ FreeDamageExt(pointer value, XID did)
      * Get rid of the resource table entry hanging from the window id
      */
     pDamageExt->id = 0;
-    if (WindowDrawable(pDamageExt->pDrawable->type))
-        FreeResourceByType(pDamageExt->pDrawable->id, DamageExtWinType, TRUE);
     if (pDamageExt->pDamage) {
         DamageUnregister(pDamageExt->pDrawable, pDamageExt->pDamage);
         DamageDestroy(pDamageExt->pDamage);
@@ -439,16 +436,6 @@ FreeDamageExt(pointer value, XID did)
     return Success;
 }
 
-static int
-FreeDamageExtWin(pointer value, XID wid)
-{
-    DamageExtPtr pDamageExt = (DamageExtPtr) value;
-
-    if (pDamageExt->id)
-        FreeResource(pDamageExt->id, RT_NONE);
-    return Success;
-}
-
 static void
 SDamageNotifyEvent(xDamageNotifyEvent * from, xDamageNotifyEvent * to)
 {
@@ -479,10 +466,6 @@ DamageExtensionInit(void)
     if (!DamageExtType)
         return;
 
-    DamageExtWinType = CreateNewResourceType(FreeDamageExtWin, "DamageExtWin");
-    if (!DamageExtWinType)
-        return;
-
     if (!dixRegisterPrivateKey
         (&DamageClientPrivateKeyRec, PRIVATE_CLIENT, sizeof(DamageClientRec)))
         return;
commit e674815e0a217ac01ec2d6a8517f8466b27fb39f
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 16 14:56:18 2012 -0400

    dmx: Remove ShadowFB support
    
    This has been listed as deprecated ever since DMX was merged.
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/dmx/Makefile.am b/hw/dmx/Makefile.am
index fb727e6..a05af13 100644
--- a/hw/dmx/Makefile.am
+++ b/hw/dmx/Makefile.am
@@ -56,8 +56,6 @@ Xdmx_SOURCES = dmx.c \
                dmxprop.h \
                dmxscrinit.c \
                dmxscrinit.h \
-               dmxshadow.c \
-               dmxshadow.h \
                dmxstat.c \
                dmxstat.h \
                dmxsync.c \
diff --git a/hw/dmx/dmx.h b/hw/dmx/dmx.h
index f0cb044..7242e43 100644
--- a/hw/dmx/dmx.h
+++ b/hw/dmx/dmx.h
@@ -254,10 +254,6 @@ typedef struct _DMXScreenInfo {
 /* Global variables available to all Xserver/hw/dmx routines. */
 extern int dmxNumScreens;                       /**< Number of dmxScreens */
 extern DMXScreenInfo *dmxScreens;               /**< List of outputs */
-extern int dmxShadowFB;                         /**< Non-zero if using
-
-                                                 * shadow frame-buffer
-                                                 * (deprecated) */
 extern XErrorEvent dmxLastErrorEvent;           /**< Last error that
 
                                                  * occurred */
diff --git a/hw/dmx/dmxinit.c b/hw/dmx/dmxinit.c
index 7de402b..65416ed 100644
--- a/hw/dmx/dmxinit.c
+++ b/hw/dmx/dmxinit.c
@@ -82,8 +82,6 @@ DMXScreenInfo *dmxScreens;
 int dmxNumInputs;
 DMXInputInfo *dmxInputs;
 
-int dmxShadowFB = FALSE;
-
 XErrorEvent dmxLastErrorEvent;
 Bool dmxErrorOccurred = FALSE;
 
@@ -854,9 +852,6 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[])
     /* Initialized things that need timer hooks */
     dmxStatInit();
     dmxSyncInit();              /* Calls RegisterBlockAndWakeupHandlers */
-
-    dmxLog(dmxInfo, "Shadow framebuffer support %s\n",
-           dmxShadowFB ? "enabled" : "disabled");
 }
 
 /* RATS: Assuming the fp string (which comes from the command-line argv
@@ -951,10 +946,6 @@ ddxProcessArgument(int argc, char *argv[], int i)
         retval = 2;
     }
     else if (!strcmp(argv[i], "-noshadowfb")) {
-        dmxLog(dmxWarning,
-               "-noshadowfb has been deprecated "
-               "since it is now the default\n");
-        dmxShadowFB = FALSE;
         retval = 1;
     }
     else if (!strcmp(argv[i], "-nomulticursor")) {
@@ -962,7 +953,6 @@ ddxProcessArgument(int argc, char *argv[], int i)
         retval = 1;
     }
     else if (!strcmp(argv[i], "-shadowfb")) {
-        dmxShadowFB = TRUE;
         retval = 1;
     }
     else if (!strcmp(argv[i], "-configfile")) {
diff --git a/hw/dmx/dmxpict.c b/hw/dmx/dmxpict.c
index b1177cf..c9762c2 100644
--- a/hw/dmx/dmxpict.c
+++ b/hw/dmx/dmxpict.c
@@ -141,10 +141,6 @@ dmxPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
     DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
     PictureScreenPtr ps;
 
-    /* The shadow framebuffer only relies on FB to be initialized */
-    if (dmxShadowFB)
-        return fbPictureInit(pScreen, formats, nformats);
-
     if (!miPictureInit(pScreen, formats, nformats))
         return FALSE;
 
diff --git a/hw/dmx/dmxscrinit.c b/hw/dmx/dmxscrinit.c
index 849ef16..963d3a9 100644
--- a/hw/dmx/dmxscrinit.c
+++ b/hw/dmx/dmxscrinit.c
@@ -41,7 +41,6 @@
 
 #include "dmx.h"
 #include "dmxsync.h"
-#include "dmxshadow.h"
 #include "dmxscrinit.h"
 #include "dmxcursor.h"
 #include "dmxgc.h"
@@ -159,37 +158,18 @@ dmxBEScreenInit(ScreenPtr pScreen)
 
     XMapWindow(dmxScreen->beDisplay, dmxScreen->scrnWin);
 
-    if (dmxShadowFB) {
-        mask = (GCFunction | GCPlaneMask | GCClipMask);
-        gcvals.function = GXcopy;
-        gcvals.plane_mask = AllPlanes;
-        gcvals.clip_mask = None;
-
-        dmxScreen->shadowGC = XCreateGC(dmxScreen->beDisplay,
-                                        dmxScreen->scrnWin, mask, &gcvals);
-
-        dmxScreen->shadowFBImage =
-            XCreateImage(dmxScreen->beDisplay,
-                         dmxScreen->beVisuals[dmxScreen->beDefVisualIndex].
-                         visual, dmxScreen->beDepth, ZPixmap, 0,
-                         (char *) dmxScreen->shadow, dmxScreen->scrnWidth,
-                         dmxScreen->scrnHeight, dmxScreen->beBPP,
-                         PixmapBytePad(dmxScreen->scrnWidth, dmxScreen->beBPP));
-    }
-    else {
-        /* Create default drawables (used during GC creation) */
-        for (i = 0; i < dmxScreen->beNumPixmapFormats; i++)
-            for (j = 0; j < dmxScreen->beNumDepths; j++)
-                if ((dmxScreen->bePixmapFormats[i].depth == 1) ||
-                    (dmxScreen->bePixmapFormats[i].depth ==
-                     dmxScreen->beDepths[j])) {
-                    dmxScreen->scrnDefDrawables[i] = (Drawable)
-                        XCreatePixmap(dmxScreen->beDisplay, dmxScreen->scrnWin,
-                                      1, 1,
-                                      dmxScreen->bePixmapFormats[i].depth);
-                    break;
-                }
-    }
+    /* Create default drawables (used during GC creation) */
+    for (i = 0; i < dmxScreen->beNumPixmapFormats; i++)
+	for (j = 0; j < dmxScreen->beNumDepths; j++)
+	    if ((dmxScreen->bePixmapFormats[i].depth == 1) ||
+		(dmxScreen->bePixmapFormats[i].depth ==
+		 dmxScreen->beDepths[j])) {
+		dmxScreen->scrnDefDrawables[i] = (Drawable)
+		    XCreatePixmap(dmxScreen->beDisplay, dmxScreen->scrnWin,
+				  1, 1,
+				  dmxScreen->bePixmapFormats[i].depth);
+		break;
+	    }
 }
 
 /** Initialize screen number \a pScreen->myNum. */
@@ -215,19 +195,12 @@ dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[])
         dmxGeneration = serverGeneration;
     }
 
-    if (dmxShadowFB) {
-        dmxScreen->shadow = shadowAlloc(dmxScreen->scrnWidth,
-                                        dmxScreen->scrnHeight,
-                                        dmxScreen->beBPP);
-    }
-    else {
-        if (!dmxInitGC(pScreen))
-            return FALSE;
-        if (!dmxInitWindow(pScreen))
-            return FALSE;
-        if (!dmxInitPixmap(pScreen))
-            return FALSE;
-    }
+    if (!dmxInitGC(pScreen))
+	return FALSE;
+    if (!dmxInitWindow(pScreen))
+	return FALSE;
+    if (!dmxInitPixmap(pScreen))
+	return FALSE;
 
     /*
      * Initalise the visual types.  miSetVisualTypesAndMasks() requires
@@ -267,7 +240,7 @@ dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[])
     }
 
     fbScreenInit(pScreen,
-                 dmxShadowFB ? dmxScreen->shadow : NULL,
+                 NULL,
                  dmxScreen->scrnWidth,
                  dmxScreen->scrnHeight,
                  dmxScreen->beXDPI,
@@ -278,22 +251,14 @@ dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[])
     pScreen->GetWindowPixmap = NULL;
     pScreen->SetWindowPixmap = NULL;
 
-    if (dmxShadowFB && !shadowInit(pScreen, dmxShadowUpdateProc, NULL))
-        return FALSE;
+    MAXSCREENSALLOC(dmxCursorGeneration);
+    if (dmxCursorGeneration[pScreen->myNum] != serverGeneration) {
+	if (!(miPointerInitialize(pScreen,
+				  &dmxPointerSpriteFuncs,
+				  &dmxPointerCursorFuncs, FALSE)))
+	    return FALSE;
 
-    if (dmxShadowFB) {
-        miDCInitialize(pScreen, &dmxPointerCursorFuncs);
-    }
-    else {
-        MAXSCREENSALLOC(dmxCursorGeneration);
-        if (dmxCursorGeneration[pScreen->myNum] != serverGeneration) {
-            if (!(miPointerInitialize(pScreen,
-                                      &dmxPointerSpriteFuncs,
-                                      &dmxPointerCursorFuncs, FALSE)))
-                return FALSE;
-
-            dmxCursorGeneration[pScreen->myNum] = serverGeneration;
-        }
+	dmxCursorGeneration[pScreen->myNum] = serverGeneration;
     }
 
     DMX_WRAP(CloseScreen, dmxCloseScreen, dmxScreen, pScreen);
@@ -301,49 +266,47 @@ dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[])
 
     dmxBEScreenInit(pScreen);
 
-    if (!dmxShadowFB) {
-        /* Wrap GC functions */
-        DMX_WRAP(CreateGC, dmxCreateGC, dmxScreen, pScreen);
-
-        /* Wrap Window functions */
-        DMX_WRAP(CreateWindow, dmxCreateWindow, dmxScreen, pScreen);
-        DMX_WRAP(DestroyWindow, dmxDestroyWindow, dmxScreen, pScreen);
-        DMX_WRAP(PositionWindow, dmxPositionWindow, dmxScreen, pScreen);
-        DMX_WRAP(ChangeWindowAttributes, dmxChangeWindowAttributes, dmxScreen,
-                 pScreen);
-        DMX_WRAP(RealizeWindow, dmxRealizeWindow, dmxScreen, pScreen);
-        DMX_WRAP(UnrealizeWindow, dmxUnrealizeWindow, dmxScreen, pScreen);
-        DMX_WRAP(RestackWindow, dmxRestackWindow, dmxScreen, pScreen);
-        DMX_WRAP(WindowExposures, dmxWindowExposures, dmxScreen, pScreen);
-        DMX_WRAP(CopyWindow, dmxCopyWindow, dmxScreen, pScreen);
-
-        DMX_WRAP(ResizeWindow, dmxResizeWindow, dmxScreen, pScreen);
-        DMX_WRAP(ReparentWindow, dmxReparentWindow, dmxScreen, pScreen);
-
-        DMX_WRAP(ChangeBorderWidth, dmxChangeBorderWidth, dmxScreen, pScreen);
-
-        /* Wrap Image functions */
-        DMX_WRAP(GetImage, dmxGetImage, dmxScreen, pScreen);
-        DMX_WRAP(GetSpans, dmxGetSpans, dmxScreen, pScreen);
-
-        /* Wrap Pixmap functions */
-        DMX_WRAP(CreatePixmap, dmxCreatePixmap, dmxScreen, pScreen);
-        DMX_WRAP(DestroyPixmap, dmxDestroyPixmap, dmxScreen, pScreen);
-        DMX_WRAP(BitmapToRegion, dmxBitmapToRegion, dmxScreen, pScreen);
-
-        /* Wrap Font functions */
-        DMX_WRAP(RealizeFont, dmxRealizeFont, dmxScreen, pScreen);
-        DMX_WRAP(UnrealizeFont, dmxUnrealizeFont, dmxScreen, pScreen);
-
-        /* Wrap Colormap functions */
-        DMX_WRAP(CreateColormap, dmxCreateColormap, dmxScreen, pScreen);
-        DMX_WRAP(DestroyColormap, dmxDestroyColormap, dmxScreen, pScreen);
-        DMX_WRAP(InstallColormap, dmxInstallColormap, dmxScreen, pScreen);
-        DMX_WRAP(StoreColors, dmxStoreColors, dmxScreen, pScreen);
-
-        /* Wrap Shape functions */
-        DMX_WRAP(SetShape, dmxSetShape, dmxScreen, pScreen);
-    }
+    /* Wrap GC functions */
+    DMX_WRAP(CreateGC, dmxCreateGC, dmxScreen, pScreen);
+
+    /* Wrap Window functions */
+    DMX_WRAP(CreateWindow, dmxCreateWindow, dmxScreen, pScreen);
+    DMX_WRAP(DestroyWindow, dmxDestroyWindow, dmxScreen, pScreen);
+    DMX_WRAP(PositionWindow, dmxPositionWindow, dmxScreen, pScreen);
+    DMX_WRAP(ChangeWindowAttributes, dmxChangeWindowAttributes, dmxScreen,
+	     pScreen);
+    DMX_WRAP(RealizeWindow, dmxRealizeWindow, dmxScreen, pScreen);
+    DMX_WRAP(UnrealizeWindow, dmxUnrealizeWindow, dmxScreen, pScreen);
+    DMX_WRAP(RestackWindow, dmxRestackWindow, dmxScreen, pScreen);
+    DMX_WRAP(WindowExposures, dmxWindowExposures, dmxScreen, pScreen);
+    DMX_WRAP(CopyWindow, dmxCopyWindow, dmxScreen, pScreen);
+
+    DMX_WRAP(ResizeWindow, dmxResizeWindow, dmxScreen, pScreen);
+    DMX_WRAP(ReparentWindow, dmxReparentWindow, dmxScreen, pScreen);
+
+    DMX_WRAP(ChangeBorderWidth, dmxChangeBorderWidth, dmxScreen, pScreen);
+
+    /* Wrap Image functions */
+    DMX_WRAP(GetImage, dmxGetImage, dmxScreen, pScreen);
+    DMX_WRAP(GetSpans, dmxGetSpans, dmxScreen, pScreen);
+
+    /* Wrap Pixmap functions */
+    DMX_WRAP(CreatePixmap, dmxCreatePixmap, dmxScreen, pScreen);
+    DMX_WRAP(DestroyPixmap, dmxDestroyPixmap, dmxScreen, pScreen);
+    DMX_WRAP(BitmapToRegion, dmxBitmapToRegion, dmxScreen, pScreen);
+
+    /* Wrap Font functions */
+    DMX_WRAP(RealizeFont, dmxRealizeFont, dmxScreen, pScreen);
+    DMX_WRAP(UnrealizeFont, dmxUnrealizeFont, dmxScreen, pScreen);
+
+    /* Wrap Colormap functions */
+    DMX_WRAP(CreateColormap, dmxCreateColormap, dmxScreen, pScreen);
+    DMX_WRAP(DestroyColormap, dmxDestroyColormap, dmxScreen, pScreen);
+    DMX_WRAP(InstallColormap, dmxInstallColormap, dmxScreen, pScreen);
+    DMX_WRAP(StoreColors, dmxStoreColors, dmxScreen, pScreen);
+
+    /* Wrap Shape functions */
+    DMX_WRAP(SetShape, dmxSetShape, dmxScreen, pScreen);
 
     if (!dmxCreateDefColormap(pScreen))
         return FALSE;
@@ -370,22 +333,13 @@ dmxBECloseScreen(ScreenPtr pScreen)
     XDestroyWindow(dmxScreen->beDisplay, dmxScreen->scrnWin);
     dmxScreen->scrnWin = (Window) 0;
 
-    if (dmxShadowFB) {
-        /* Free the shadow GC and image assocated with the back-end server */
-        XFreeGC(dmxScreen->beDisplay, dmxScreen->shadowGC);
-        dmxScreen->shadowGC = NULL;
-        XFree(dmxScreen->shadowFBImage);
-        dmxScreen->shadowFBImage = NULL;
-    }
-    else {
-        /* Free the default drawables */
-        for (i = 0; i < dmxScreen->beNumPixmapFormats; i++) {
-            if (dmxScreen->scrnDefDrawables[i]) {
-                XFreePixmap(dmxScreen->beDisplay,
-                            dmxScreen->scrnDefDrawables[i]);
-                dmxScreen->scrnDefDrawables[i] = (Drawable) 0;
-            }
-        }
+    /* Free the default drawables */
+    for (i = 0; i < dmxScreen->beNumPixmapFormats; i++) {
+	if (dmxScreen->scrnDefDrawables[i]) {
+	    XFreePixmap(dmxScreen->beDisplay,
+			dmxScreen->scrnDefDrawables[i]);
+	    dmxScreen->scrnDefDrawables[i] = (Drawable) 0;
+	}
     }
 
     /* Free resources allocated during initialization (in dmxinit.c) */
@@ -432,48 +386,41 @@ dmxCloseScreen(ScreenPtr pScreen)
         dmxResetFonts();
     }
 
-    if (dmxShadowFB) {
-        /* Free the shadow framebuffer */
-        free(dmxScreen->shadow);
-    }
-    else {
-
-        /* Unwrap Shape functions */
-        DMX_UNWRAP(SetShape, dmxScreen, pScreen);
+    /* Unwrap Shape functions */
+    DMX_UNWRAP(SetShape, dmxScreen, pScreen);
 
-        /* Unwrap the pScreen functions */
-        DMX_UNWRAP(CreateGC, dmxScreen, pScreen);
+    /* Unwrap the pScreen functions */
+    DMX_UNWRAP(CreateGC, dmxScreen, pScreen);
 
-        DMX_UNWRAP(CreateWindow, dmxScreen, pScreen);
-        DMX_UNWRAP(DestroyWindow, dmxScreen, pScreen);
-        DMX_UNWRAP(PositionWindow, dmxScreen, pScreen);
-        DMX_UNWRAP(ChangeWindowAttributes, dmxScreen, pScreen);
-        DMX_UNWRAP(RealizeWindow, dmxScreen, pScreen);
-        DMX_UNWRAP(UnrealizeWindow, dmxScreen, pScreen);
-        DMX_UNWRAP(RestackWindow, dmxScreen, pScreen);
-        DMX_UNWRAP(WindowExposures, dmxScreen, pScreen);
-        DMX_UNWRAP(CopyWindow, dmxScreen, pScreen);
+    DMX_UNWRAP(CreateWindow, dmxScreen, pScreen);
+    DMX_UNWRAP(DestroyWindow, dmxScreen, pScreen);
+    DMX_UNWRAP(PositionWindow, dmxScreen, pScreen);
+    DMX_UNWRAP(ChangeWindowAttributes, dmxScreen, pScreen);
+    DMX_UNWRAP(RealizeWindow, dmxScreen, pScreen);
+    DMX_UNWRAP(UnrealizeWindow, dmxScreen, pScreen);
+    DMX_UNWRAP(RestackWindow, dmxScreen, pScreen);
+    DMX_UNWRAP(WindowExposures, dmxScreen, pScreen);
+    DMX_UNWRAP(CopyWindow, dmxScreen, pScreen);
 
-        DMX_UNWRAP(ResizeWindow, dmxScreen, pScreen);
-        DMX_UNWRAP(ReparentWindow, dmxScreen, pScreen);
+    DMX_UNWRAP(ResizeWindow, dmxScreen, pScreen);
+    DMX_UNWRAP(ReparentWindow, dmxScreen, pScreen);
 
-        DMX_UNWRAP(ChangeBorderWidth, dmxScreen, pScreen);
+    DMX_UNWRAP(ChangeBorderWidth, dmxScreen, pScreen);
 
-        DMX_UNWRAP(GetImage, dmxScreen, pScreen);
-        DMX_UNWRAP(GetSpans, dmxScreen, pScreen);
+    DMX_UNWRAP(GetImage, dmxScreen, pScreen);
+    DMX_UNWRAP(GetSpans, dmxScreen, pScreen);
 
-        DMX_UNWRAP(CreatePixmap, dmxScreen, pScreen);
-        DMX_UNWRAP(DestroyPixmap, dmxScreen, pScreen);
-        DMX_UNWRAP(BitmapToRegion, dmxScreen, pScreen);
+    DMX_UNWRAP(CreatePixmap, dmxScreen, pScreen);
+    DMX_UNWRAP(DestroyPixmap, dmxScreen, pScreen);
+    DMX_UNWRAP(BitmapToRegion, dmxScreen, pScreen);
 
-        DMX_UNWRAP(RealizeFont, dmxScreen, pScreen);
-        DMX_UNWRAP(UnrealizeFont, dmxScreen, pScreen);
+    DMX_UNWRAP(RealizeFont, dmxScreen, pScreen);
+    DMX_UNWRAP(UnrealizeFont, dmxScreen, pScreen);
 
-        DMX_UNWRAP(CreateColormap, dmxScreen, pScreen);
-        DMX_UNWRAP(DestroyColormap, dmxScreen, pScreen);
-        DMX_UNWRAP(InstallColormap, dmxScreen, pScreen);
-        DMX_UNWRAP(StoreColors, dmxScreen, pScreen);
-    }
+    DMX_UNWRAP(CreateColormap, dmxScreen, pScreen);
+    DMX_UNWRAP(DestroyColormap, dmxScreen, pScreen);
+    DMX_UNWRAP(InstallColormap, dmxScreen, pScreen);
+    DMX_UNWRAP(StoreColors, dmxScreen, pScreen);
 
     DMX_UNWRAP(SaveScreen, dmxScreen, pScreen);
 
diff --git a/hw/dmx/dmxshadow.c b/hw/dmx/dmxshadow.c
deleted file mode 100644
index 9b4bafc..0000000
--- a/hw/dmx/dmxshadow.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2001 Red Hat Inc., Durham, North Carolina.
- *
- * 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, 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
- * NON-INFRINGEMENT.  IN NO EVENT SHALL RED HAT 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.
- */
-
-/*
- * Authors:
- *   Kevin E. Martin <kem at redhat.com>
- *   David H. Dawes <dawes at xfree86.org>
- *
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxsync.h"
-#include "dmxshadow.h"
-
-/** \file
- * This file provides support for the shadow frame buffer. */
-
-/** Update the screen from the shadow frame buffer. */
-void
-dmxShadowUpdateProc(ScreenPtr pScreen, shadowBufPtr pBuf)
-{
-    RegionPtr damage = &pBuf->damage;
-    int nbox = RegionNumRects(damage);
-    BoxPtr pbox = RegionRects(damage);
-    DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
-
-    if (!dmxScreen->beDisplay)
-        return;
-
-    while (nbox--) {
-        XPutImage(dmxScreen->beDisplay,
-                  dmxScreen->scrnWin,
-                  dmxScreen->shadowGC,
-                  dmxScreen->shadowFBImage,
-                  pbox->x1, pbox->y1,
-                  pbox->x1, pbox->y1, pbox->x2 - pbox->x1, pbox->y2 - pbox->y1);
-
-        pbox++;
-    }
-
-    dmxSync(dmxScreen, FALSE);
-}
diff --git a/hw/dmx/dmxshadow.h b/hw/dmx/dmxshadow.h
deleted file mode 100644
index 081b4d1..0000000
--- a/hw/dmx/dmxshadow.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2001 Red Hat Inc., Durham, North Carolina.
- *
- * 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, 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
- * NON-INFRINGEMENT.  IN NO EVENT SHALL RED HAT 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.
- */
-
-/*
- * Authors:
- *   Kevin E. Martin <kem at redhat.com>
- *   David H. Dawes <dawes at xfree86.org>
- *
- */
-
-/** \file
- * Interface for shadow framebuffer support.  \see dmxshadow.c */
-
-#ifndef DMXSHADOW_H
-#define DMXSHADOW_H
-
-#include "shadow.h"
-#include "scrnintstr.h"
-
-extern void dmxShadowUpdateProc(ScreenPtr pScreen, shadowBufPtr pBuf);
-
-#endif                          /* DMXSHADOW_H */
diff --git a/hw/dmx/input/dmxcommon.c b/hw/dmx/input/dmxcommon.c
index 5f25e88..db558b5 100644
--- a/hw/dmx/input/dmxcommon.c
+++ b/hw/dmx/input/dmxcommon.c
@@ -502,11 +502,6 @@ dmxCommonMouOn(DevicePtr pDev)
     GETDMXINPUTFROMPRIV;
 
     priv->eventMask |= DMX_POINTER_EVENT_MASK;
-    if (dmxShadowFB) {
-        XWarpPointer(priv->display, priv->window, priv->window,
-                     0, 0, 0, 0, priv->initPointerX, priv->initPointerY);
-        dmxSync(&dmxScreens[dmxInput->scrnIdx], TRUE);
-    }
     if (!priv->be) {
         XSelectInput(priv->display, priv->window, priv->eventMask);
         AddEnabledDevice(XConnectionNumber(priv->display));
diff --git a/hw/dmx/man/Xdmx.man b/hw/dmx/man/Xdmx.man
index bbce856..6b3feb1 100644
--- a/hw/dmx/man/Xdmx.man
+++ b/hw/dmx/man/Xdmx.man
@@ -179,16 +179,6 @@ will switch to another VC in local (raw) mode.
 .RE
 .sp
 .TP 8
-.BI "-shadowfb"
-This option turns on (legacy) support for the shadow frame buffer.
-.sp
-.TP 8
-.BI "-noshadowfb"
-This option turns off (legacy) support for the shadow frame buffer.
-Note that this option has been deprecated and will be removed in the
-next release.
-.sp
-.TP 8
 .BI "-nomulticursor"
 This option turns off support for displaying multiple cursors on
 overlapped back-end displays.  This option is available for testing and
commit 19d3a7cb5db3188210830efa746987ba50d839e9
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 16 14:56:17 2012 -0400

    dix: Remove a dead parameter from DoGetImage
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/dix/dispatch.c b/dix/dispatch.c
index 71fda48..4fecfea 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -1974,7 +1974,7 @@ ProcPutImage(ClientPtr client)
 static int
 DoGetImage(ClientPtr client, int format, Drawable drawable,
            int x, int y, int width, int height,
-           Mask planemask, xGetImageReply ** im_return)
+           Mask planemask)
 {
     DrawablePtr pDraw, pBoundingDraw;
     int nlines, linesPerBuf, rc;
@@ -2074,46 +2074,32 @@ DoGetImage(ClientPtr client, int format, Drawable drawable,
 
     xgi.length = length;
 
-    if (im_return) {
-        pBuf = calloc(1, sz_xGetImageReply + length);
-        if (!pBuf)
-            return BadAlloc;
-        if (widthBytesLine == 0)
-            linesPerBuf = 0;
-        else
+    xgi.length = bytes_to_int32(xgi.length);
+    if (widthBytesLine == 0 || height == 0)
+        linesPerBuf = 0;
+    else if (widthBytesLine >= IMAGE_BUFSIZE)
+        linesPerBuf = 1;
+    else {
+        linesPerBuf = IMAGE_BUFSIZE / widthBytesLine;
+        if (linesPerBuf > height)
             linesPerBuf = height;
-        *im_return = (xGetImageReply *) pBuf;
-        *(xGetImageReply *) pBuf = xgi;
-        pBuf += sz_xGetImageReply;
     }
-    else {
-        xgi.length = bytes_to_int32(xgi.length);
-        if (widthBytesLine == 0 || height == 0)
-            linesPerBuf = 0;
-        else if (widthBytesLine >= IMAGE_BUFSIZE)
-            linesPerBuf = 1;
-        else {
-            linesPerBuf = IMAGE_BUFSIZE / widthBytesLine;
-            if (linesPerBuf > height)
-                linesPerBuf = height;
+    length = linesPerBuf * widthBytesLine;
+    if (linesPerBuf < height) {
+        /* we have to make sure intermediate buffers don't need padding */
+        while ((linesPerBuf > 1) &&
+               (length & ((1L << LOG2_BYTES_PER_SCANLINE_PAD) - 1))) {
+            linesPerBuf--;
+            length -= widthBytesLine;
         }
-        length = linesPerBuf * widthBytesLine;
-        if (linesPerBuf < height) {
-            /* we have to make sure intermediate buffers don't need padding */
-            while ((linesPerBuf > 1) &&
-                   (length & ((1L << LOG2_BYTES_PER_SCANLINE_PAD) - 1))) {
-                linesPerBuf--;
-                length -= widthBytesLine;
-            }
-            while (length & ((1L << LOG2_BYTES_PER_SCANLINE_PAD) - 1)) {
-                linesPerBuf++;
-                length += widthBytesLine;
-            }
+        while (length & ((1L << LOG2_BYTES_PER_SCANLINE_PAD) - 1)) {
+            linesPerBuf++;
+            length += widthBytesLine;
         }
-        if (!(pBuf = calloc(1, length)))
-            return BadAlloc;
-        WriteReplyToClient(client, sizeof(xGetImageReply), &xgi);
     }
+    if (!(pBuf = calloc(1, length)))
+        return BadAlloc;
+    WriteReplyToClient(client, sizeof(xGetImageReply), &xgi);
 
     if (pDraw->type == DRAWABLE_WINDOW) {
         pVisibleRegion = NotClippedByChildren((WindowPtr) pDraw);
@@ -2142,13 +2128,10 @@ DoGetImage(ClientPtr client, int format, Drawable drawable,
 
             /* Note that this is NOT a call to WriteSwappedDataToClient,
                as we do NOT byte swap */
-            if (!im_return) {
-                ReformatImage(pBuf, (int) (nlines * widthBytesLine),
-                              BitsPerPixel(pDraw->depth), ClientOrder(client));
+            ReformatImage(pBuf, (int) (nlines * widthBytesLine),
+                          BitsPerPixel(pDraw->depth), ClientOrder(client));
 
-/* Don't split me, gcc pukes when you do */
-                WriteToClient(client, (int) (nlines * widthBytesLine), pBuf);
-            }
+            WriteToClient(client, (int) (nlines * widthBytesLine), pBuf);
             linesDone += nlines;
         }
     }
@@ -2173,18 +2156,10 @@ DoGetImage(ClientPtr client, int format, Drawable drawable,
 
                     /* Note: NOT a call to WriteSwappedDataToClient,
                        as we do NOT byte swap */
-                    if (im_return) {
-                        pBuf += nlines * widthBytesLine;
-                    }
-                    else {
-                        ReformatImage(pBuf,
-                                      (int) (nlines * widthBytesLine),
-                                      1, ClientOrder(client));
-
-/* Don't split me, gcc pukes when you do */
-                        WriteToClient(client, (int) (nlines * widthBytesLine),
-				      pBuf);
-                    }
+                    ReformatImage(pBuf, (int) (nlines * widthBytesLine),
+                                  1, ClientOrder(client));
+
+                    WriteToClient(client, (int)(nlines * widthBytesLine), pBuf);
                     linesDone += nlines;
                 }
             }
@@ -2192,8 +2167,7 @@ DoGetImage(ClientPtr client, int format, Drawable drawable,
     }
     if (pVisibleRegion)
         RegionDestroy(pVisibleRegion);
-    if (!im_return)
-        free(pBuf);
+    free(pBuf);
     return Success;
 }
 
@@ -2207,7 +2181,7 @@ ProcGetImage(ClientPtr client)
     return DoGetImage(client, stuff->format, stuff->drawable,
                       stuff->x, stuff->y,
                       (int) stuff->width, (int) stuff->height,
-                      stuff->planeMask, (xGetImageReply **) NULL);
+                      stuff->planeMask);
 }
 
 int
commit 4dca026880da90cff9734cf5787c5b57c02e7310
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 16 14:56:16 2012 -0400

    mipointer: Remove EnqueueEvent from miPointerScreenFuncRec
    
    No DDX overrode this, and we never actually called through that slot
    anyway.
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/dmx/dmxcursor.c b/hw/dmx/dmxcursor.c
index 5f41536..70f2bc4 100644
--- a/hw/dmx/dmxcursor.c
+++ b/hw/dmx/dmxcursor.c
@@ -197,7 +197,6 @@ miPointerScreenFuncRec dmxPointerCursorFuncs = {
     dmxCursorOffScreen,
     dmxCrossScreen,
     dmxWarpCursor,
-    NULL,
 };
 
 /** Create a list of screens that we'll manipulate. */
diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index 1f32ea1..0ee2cf3 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -823,7 +823,6 @@ miPointerScreenFuncRec ephyrPointerScreenFuncs = {
     ephyrCursorOffScreen,
     ephyrCrossScreen,
     ephyrWarpCursor,
-    NULL,
 };
 
 #ifdef XF86DRI
diff --git a/hw/xfree86/common/xf86Cursor.c b/hw/xfree86/common/xf86Cursor.c
index 973bdd3..7d0776e 100644
--- a/hw/xfree86/common/xf86Cursor.c
+++ b/hw/xfree86/common/xf86Cursor.c
@@ -72,8 +72,6 @@ static miPointerScreenFuncRec xf86PointerScreenFuncs = {
     xf86CursorOffScreen,
     xf86CrossScreen,
     xf86WarpCursor,
-    /* let miPointerInitialize take care of these */
-    NULL,
 };
 
 static xf86ScreenLayoutRec xf86ScreenLayout[MAXSCREENS];
diff --git a/hw/xquartz/xpr/xprCursor.c b/hw/xquartz/xpr/xprCursor.c
index 6e617c7..4168f7c 100644
--- a/hw/xquartz/xpr/xprCursor.c
+++ b/hw/xquartz/xpr/xprCursor.c
@@ -305,7 +305,6 @@ static miPointerScreenFuncRec quartzScreenFuncsRec = {
     QuartzCursorOffScreen,
     QuartzCrossScreen,
     QuartzWarpCursor,
-    NULL,
 };
 
 /*
diff --git a/mi/mipointer.c b/mi/mipointer.c
index 0b55c26..f07c5db 100644
--- a/mi/mipointer.c
+++ b/mi/mipointer.c
@@ -118,11 +118,6 @@ miPointerInitialize(ScreenPtr pScreen,
         return FALSE;
     pScreenPriv->spriteFuncs = spriteFuncs;
     pScreenPriv->screenFuncs = screenFuncs;
-    /*
-     * check for uninitialized methods
-     */
-    if (!screenFuncs->EnqueueEvent)
-        screenFuncs->EnqueueEvent = mieqEnqueue;
     pScreenPriv->waitForUpdate = waitForUpdate;
     pScreenPriv->showTransparent = FALSE;
     pScreenPriv->CloseScreen = pScreen->CloseScreen;
diff --git a/mi/mipointer.h b/mi/mipointer.h
index 39ba83b..33261ab 100644
--- a/mi/mipointer.h
+++ b/mi/mipointer.h
@@ -71,9 +71,6 @@ typedef struct _miPointerScreenFuncRec {
                         int /* x */ ,
                         int     /* y */
         );
-    void (*EnqueueEvent) (DeviceIntPtr /* pDev */ ,
-                          InternalEvent *       /* event */
-        );
 } miPointerScreenFuncRec, *miPointerScreenFuncPtr;
 
 extern _X_EXPORT Bool miDCInitialize(ScreenPtr /*pScreen */ ,
commit ad076dc6e82019defa422500710b3b42c6309e39
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 16 14:56:15 2012 -0400

    mipointer: Flatten calls to mieqSwitchScreen
    
    No DDX was overriding this.
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/dmx/dmxcursor.c b/hw/dmx/dmxcursor.c
index 35aca81..5f41536 100644
--- a/hw/dmx/dmxcursor.c
+++ b/hw/dmx/dmxcursor.c
@@ -198,7 +198,6 @@ miPointerScreenFuncRec dmxPointerCursorFuncs = {
     dmxCrossScreen,
     dmxWarpCursor,
     NULL,
-    NULL,
 };
 
 /** Create a list of screens that we'll manipulate. */
diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index 02d4970..1f32ea1 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -824,7 +824,6 @@ miPointerScreenFuncRec ephyrPointerScreenFuncs = {
     ephyrCrossScreen,
     ephyrWarpCursor,
     NULL,
-    NULL
 };
 
 #ifdef XF86DRI
diff --git a/hw/xfree86/common/xf86Cursor.c b/hw/xfree86/common/xf86Cursor.c
index 65a9e82..973bdd3 100644
--- a/hw/xfree86/common/xf86Cursor.c
+++ b/hw/xfree86/common/xf86Cursor.c
@@ -74,7 +74,6 @@ static miPointerScreenFuncRec xf86PointerScreenFuncs = {
     xf86WarpCursor,
     /* let miPointerInitialize take care of these */
     NULL,
-    NULL
 };
 
 static xf86ScreenLayoutRec xf86ScreenLayout[MAXSCREENS];
diff --git a/hw/xquartz/xpr/xprCursor.c b/hw/xquartz/xpr/xprCursor.c
index 0392a46..6e617c7 100644
--- a/hw/xquartz/xpr/xprCursor.c
+++ b/hw/xquartz/xpr/xprCursor.c
@@ -306,7 +306,6 @@ static miPointerScreenFuncRec quartzScreenFuncsRec = {
     QuartzCrossScreen,
     QuartzWarpCursor,
     NULL,
-    NULL
 };
 
 /*
diff --git a/mi/mipointer.c b/mi/mipointer.c
index b8503f4..0b55c26 100644
--- a/mi/mipointer.c
+++ b/mi/mipointer.c
@@ -123,8 +123,6 @@ miPointerInitialize(ScreenPtr pScreen,
      */
     if (!screenFuncs->EnqueueEvent)
         screenFuncs->EnqueueEvent = mieqEnqueue;
-    if (!screenFuncs->NewEventScreen)
-        screenFuncs->NewEventScreen = mieqSwitchScreen;
     pScreenPriv->waitForUpdate = waitForUpdate;
     pScreenPriv->showTransparent = FALSE;
     pScreenPriv->CloseScreen = pScreen->CloseScreen;
@@ -363,7 +361,7 @@ miPointerWarpCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
     pPointer = MIPOINTER(pDev);
 
     if (pPointer->pScreen != pScreen) {
-        (*pScreenPriv->screenFuncs->NewEventScreen) (pDev, pScreen, TRUE);
+        mieqSwitchScreen(pDev, pScreen, TRUE);
         changedScreen = TRUE;
     }
 
@@ -480,7 +478,7 @@ miPointerSetScreen(DeviceIntPtr pDev, int screen_no, int x, int y)
 
     pScreen = screenInfo.screens[screen_no];
     pScreenPriv = GetScreenPrivate(pScreen);
-    (*pScreenPriv->screenFuncs->NewEventScreen) (pDev, pScreen, FALSE);
+    mieqSwitchScreen(pDev, pScreen, FALSE);
     NewCurrentScreen(pDev, pScreen, x, y);
 
     pPointer->limits.x2 = pScreen->width;
@@ -617,8 +615,7 @@ miPointerSetPosition(DeviceIntPtr pDev, int mode, double *screenx,
             (*pScreenPriv->screenFuncs->CursorOffScreen) (&newScreen, &x, &y);
             if (newScreen != pScreen) {
                 pScreen = newScreen;
-                (*pScreenPriv->screenFuncs->NewEventScreen) (pDev, pScreen,
-                                                             FALSE);
+                mieqSwitchScreen(pDev, pScreen, FALSE);
                 /* Smash the confine to the new screen */
                 pPointer->limits.x2 = pScreen->width;
                 pPointer->limits.y2 = pScreen->height;
diff --git a/mi/mipointer.h b/mi/mipointer.h
index f89dff3..39ba83b 100644
--- a/mi/mipointer.h
+++ b/mi/mipointer.h
@@ -74,10 +74,6 @@ typedef struct _miPointerScreenFuncRec {
     void (*EnqueueEvent) (DeviceIntPtr /* pDev */ ,
                           InternalEvent *       /* event */
         );
-    void (*NewEventScreen) (DeviceIntPtr /* pDev */ ,
-                            ScreenPtr /* pScr */ ,
-                            Bool        /* set_dequeue_screen */
-        );
 } miPointerScreenFuncRec, *miPointerScreenFuncPtr;
 
 extern _X_EXPORT Bool miDCInitialize(ScreenPtr /*pScreen */ ,
commit e2b14a1d3bb27e86ff1d7aaf59af850d06263ef5
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Oct 16 14:56:14 2012 -0400

    os: Factor out some common code in input buffer handling
    
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/os/io.c b/os/io.c
index d34bc39..3800366 100644
--- a/os/io.c
+++ b/os/io.c
@@ -206,27 +206,17 @@ YieldControlDeath(void)
     timesThisConnection = 0;
 }
 
-int
-ReadRequestFromClient(ClientPtr client)
+/* If an input buffer was empty, either free it if it is too big or link it
+ * into our list of free input buffers.  This means that different clients can
+ * share the same input buffer (at different times).  This was done to save
+ * memory.
+ */
+static void
+NextAvailableInput(OsCommPtr oc)
 {
-    OsCommPtr oc = (OsCommPtr) client->osPrivate;
-    ConnectionInputPtr oci = oc->input;
-    int fd = oc->fd;
-    unsigned int gotnow, needed;
-    int result;
-    register xReq *request;
-    Bool need_header;
-    Bool move_header;
-
-    /* If an input buffer was empty, either free it if it is too big
-     * or link it into our list of free input buffers.  This means that
-     * different clients can share the same input buffer (at different
-     * times).  This was done to save memory.
-     */
-
     if (AvailableInput) {
         if (AvailableInput != oc) {
-            register ConnectionInputPtr aci = AvailableInput->input;
+            ConnectionInputPtr aci = AvailableInput->input;
 
             if (aci->size > BUFWATERMARK) {
                 free(aci->buffer);
@@ -236,10 +226,25 @@ ReadRequestFromClient(ClientPtr client)
                 aci->next = FreeInputs;
                 FreeInputs = aci;
             }
-            AvailableInput->input = (ConnectionInputPtr) NULL;
+            AvailableInput->input = NULL;
         }
-        AvailableInput = (OsCommPtr) NULL;
+        AvailableInput = NULL;
     }
+}
+
+int
+ReadRequestFromClient(ClientPtr client)
+{
+    OsCommPtr oc = (OsCommPtr) client->osPrivate;
+    ConnectionInputPtr oci = oc->input;
+    int fd = oc->fd;
+    unsigned int gotnow, needed;
+    int result;
+    register xReq *request;
+    Bool need_header;
+    Bool move_header;
+
+    NextAvailableInput(oc);
 
     /* make sure we have an input buffer */
 
@@ -494,22 +499,8 @@ InsertFakeRequest(ClientPtr client, char *data, int count)
     int fd = oc->fd;
     int gotnow, moveup;
 
-    if (AvailableInput) {
-        if (AvailableInput != oc) {
-            ConnectionInputPtr aci = AvailableInput->input;
+    NextAvailableInput(oc);
 
-            if (aci->size > BUFWATERMARK) {
-                free(aci->buffer);
-                free(aci);
-            }
-            else {
-                aci->next = FreeInputs;
-                FreeInputs = aci;
-            }
-            AvailableInput->input = (ConnectionInputPtr) NULL;
-        }
-        AvailableInput = (OsCommPtr) NULL;
-    }
     if (!oci) {
         if ((oci = FreeInputs))
             FreeInputs = oci->next;
commit 65fca558848acd907483d3c85c7cd4db5560f1b4
Author: Radek Doulik <rodo at novell.com>
Date:   Tue Aug 13 08:45:47 2013 +0200

    xnest: Ignore GetImage() error in xnestGetImage()
    
    When an Xnest instance is not viewable it will crash when a client in
    that instance calls GetImage. This is because the Xnest server will
    itself receives a BadMatch error.
    This patch ignores the error. The application which has requested the
    image will receive garbage - this however is fully legal according
    to the specs as obscured areas will always contain garbage if there
    isn't some sort of backing store as discussed in
    https://bugs.freedesktop.org/show_bug.cgi?id=9488
    The applied patch is a version from Dadek Doulik.
    
    v2: Call XSync() before changing error handlers as suggested by
        Daniel Stone <daniel at fooishbar.org>.
    
    Reviewed-by: Daniel Stone <daniel at fooishbar.org>
    Signed-off-by: Egbert Eich <eich at freedesktop.org>

diff --git a/hw/xnest/GCOps.c b/hw/xnest/GCOps.c
index e26a136..7b1956d 100644
--- a/hw/xnest/GCOps.c
+++ b/hw/xnest/GCOps.c
@@ -94,15 +94,29 @@ xnestPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
     }
 }
 
+static int
+xnestIgnoreErrorHandler (Display     *display,
+                         XErrorEvent *event)
+{
+    return False; /* return value is ignored */
+}
+
 void
 xnestGetImage(DrawablePtr pDrawable, int x, int y, int w, int h,
               unsigned int format, unsigned long planeMask, char *pImage)
 {
     XImage *ximage;
     int length;
+    int (*old_handler)(Display*, XErrorEvent*);
+
+    /* we may get BadMatch error when xnest window is minimized */
+    XSync(xnestDisplay, False);
+    old_handler = XSetErrorHandler (xnestIgnoreErrorHandler);
 
     ximage = XGetImage(xnestDisplay, xnestDrawable(pDrawable),
                        x, y, w, h, planeMask, format);
+    XSync(xnestDisplay, False);
+    XSetErrorHandler(old_handler);
 
     if (ximage) {
         length = ximage->bytes_per_line * ximage->height;
commit b902c8abb6d03e68c93e13881a350523b5ac900c
Author: Michal Srb <msrb at novell.com>
Date:   Tue Aug 6 16:56:53 2013 +0200

    Xnest: Implement xnestModifyPixmapHeader
    
    Xnest variant of ModifyPixmapHeader that creates new Pixmap in parent X
    server if it's size is modified from 0x0 to anything bigger.
    
    xnestCreatePixmap doesn't create pixmap in parent X server if it has
    dimensions 0x0. If it is later resized and accessed, Xnest will be
    aborted with BadDrawable error from parent X server because it will
    use XID 0. This happens with ScratchPixmap, for example as used from
    XaceCensorImage. Applications using XACE crash Xnest.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/hw/xnest/Pixmap.c b/hw/xnest/Pixmap.c
index 13e1610..2902acd 100644
--- a/hw/xnest/Pixmap.c
+++ b/hw/xnest/Pixmap.c
@@ -78,6 +78,21 @@ xnestDestroyPixmap(PixmapPtr pPixmap)
     return TRUE;
 }
 
+Bool
+xnestModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, int depth,
+                        int bitsPerPixel, int devKind, pointer pPixData)
+{
+  if(!xnestPixmapPriv(pPixmap)->pixmap && width > 0 && height > 0) {
+    xnestPixmapPriv(pPixmap)->pixmap =
+        XCreatePixmap(xnestDisplay,
+                      xnestDefaultWindows[pPixmap->drawable.pScreen->myNum],
+                      width, height, depth);
+  }
+
+  return miModifyPixmapHeader(pPixmap, width, height, depth,
+                              bitsPerPixel, devKind, pPixData);
+}
+
 RegionPtr
 xnestPixmapToRegion(PixmapPtr pPixmap)
 {
diff --git a/hw/xnest/Screen.c b/hw/xnest/Screen.c
index 58b5a11..abb4d37 100644
--- a/hw/xnest/Screen.c
+++ b/hw/xnest/Screen.c
@@ -282,6 +282,7 @@ xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[])
 
     pScreen->CreatePixmap = xnestCreatePixmap;
     pScreen->DestroyPixmap = xnestDestroyPixmap;
+    pScreen->ModifyPixmapHeader = xnestModifyPixmapHeader;
 
     /* Font procedures */
 
diff --git a/hw/xnest/XNPixmap.h b/hw/xnest/XNPixmap.h
index 268ba1e..5b2e796 100644
--- a/hw/xnest/XNPixmap.h
+++ b/hw/xnest/XNPixmap.h
@@ -33,6 +33,8 @@ typedef struct {
 PixmapPtr xnestCreatePixmap(ScreenPtr pScreen, int width, int height,
                             int depth, unsigned usage_hint);
 Bool xnestDestroyPixmap(PixmapPtr pPixmap);
+Bool xnestModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, int depth,
+                             int bitsPerPixel, int devKind, pointer pPixData);
 RegionPtr xnestPixmapToRegion(PixmapPtr pPixmap);
 
 #endif                          /* XNESTPIXMAP_H */
commit 132507eba93e4dfd466d5c30c9b818cdc6f8536e
Author: Peter Harris <pharris at opentext.com>
Date:   Mon Jul 15 19:44:45 2013 -0400

    security: Don't count RetainPermanent clients twice
    
    If a RetainPermanent client is subsequently killed by a KillClient
    request, the reference count is decremented twice. This can cause the
    server to prematurely kill other clients using the same Authorization.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Peter Harris <pharris at opentext.com>

diff --git a/Xext/security.c b/Xext/security.c
index 6cc9aa0..7bf6cc4 100644
--- a/Xext/security.c
+++ b/Xext/security.c
@@ -57,8 +57,9 @@ static DevPrivateKeyRec stateKeyRec;
 
 /* This is what we store as client security state */
 typedef struct {
-    int haveState;
-    unsigned int trustLevel;
+    unsigned int haveState  :1;
+    unsigned int live       :1;
+    unsigned int trustLevel :2;
     XID authId;
 } SecurityStateRec;
 
@@ -141,6 +142,7 @@ SecurityLabelInitial(void)
     state = dixLookupPrivate(&serverClient->devPrivates, stateKey);
     state->trustLevel = XSecurityClientTrusted;
     state->haveState = TRUE;
+    state->live = FALSE;
 }
 
 /*
@@ -953,6 +955,7 @@ SecurityClientState(CallbackListPtr *pcbl, pointer unused, pointer calldata)
         state->trustLevel = XSecurityClientTrusted;
         state->authId = None;
         state->haveState = TRUE;
+        state->live = FALSE;
         break;
 
     case ClientStateRunning:
@@ -963,6 +966,7 @@ SecurityClientState(CallbackListPtr *pcbl, pointer unused, pointer calldata)
         if (rc == Success) {
             /* it is a generated authorization */
             pAuth->refcnt++;
+            state->live = TRUE;
             if (pAuth->refcnt == 1 && pAuth->timer)
                 TimerCancel(pAuth->timer);
 
@@ -975,9 +979,10 @@ SecurityClientState(CallbackListPtr *pcbl, pointer unused, pointer calldata)
         rc = dixLookupResourceByType((pointer *) &pAuth, state->authId,
                                      SecurityAuthorizationResType, serverClient,
                                      DixGetAttrAccess);
-        if (rc == Success) {
+        if (rc == Success && state->live) {
             /* it is a generated authorization */
             pAuth->refcnt--;
+            state->live = FALSE;
             if (pAuth->refcnt == 0)
                 SecurityStartAuthorizationTimer(pAuth);
         }
commit 20c2a3bcb11b5baf564e2c73a477ba23f5ae2b10
Author: Peter Harris <pharris at opentext.com>
Date:   Mon Jul 15 19:44:29 2013 -0400

    mi: Avoid stack smash when drawing dashed lines
    
    X.org Bug 54013 <https://bugs.freedesktop.org/show_bug.cgi?id=54013>
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Peter Harris <pharris at opentext.com>

diff --git a/mi/miwideline.c b/mi/miwideline.c
index ca18f15..b76e7a8 100644
--- a/mi/miwideline.c
+++ b/mi/miwideline.c
@@ -994,7 +994,7 @@ miLineProjectingCap(DrawablePtr pDrawable, GCPtr pGC, unsigned long pixel,
 {
     int xorgi = 0, yorgi = 0;
     int lw;
-    PolyEdgeRec lefts[2], rights[2];
+    PolyEdgeRec lefts[4], rights[4];
     int lefty, righty, topy, bottomy;
     PolyEdgePtr left, right;
     PolyEdgePtr top, bottom;
@@ -1166,7 +1166,7 @@ miWideSegment(DrawablePtr pDrawable,
     PolyEdgePtr top, bottom;
     int lefty, righty, topy, bottomy;
     int signdx;
-    PolyEdgeRec lefts[2], rights[2];
+    PolyEdgeRec lefts[4], rights[4];
     LineFacePtr tface;
     int lw = pGC->lineWidth;
 
@@ -1520,7 +1520,7 @@ miWideDashSegment(DrawablePtr pDrawable,
     PolyVertexRec vertices[4];
     PolyVertexRec saveRight, saveBottom;
     PolySlopeRec slopes[4];
-    PolyEdgeRec left[2], right[2];
+    PolyEdgeRec left[4], right[4];
     LineFaceRec lcapFace, rcapFace;
     int nleft, nright;
     int h;
commit 9bf46610a9d20962854016032de4567974e87957
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Jun 21 22:58:31 2013 +0100

    os: Immediately queue initial WriteToClient
    
    If we immediately put the WriteToClient() buffer into the socket's write
    queue, not only do we benefit from sending the response back to client
    earlier, but we also avoid the overhead of copying the data into our own
    staging buffer and causing extra work in the next select(). The write is
    effectively free as typically we may only send one reply per client per
    select() call, so the cost of the FlushClient() is the same.
    
    shmget10:   26400 -> 110000
    getimage10: 25000 -> 108000
    
    shmget500:   3160 -> 13500
    getimage500: 1000 -> 1010
    
    The knock-on effect is that on a mostly idle composited desktop, the CPU
    overhead is dominated by the memmove in WriteToClient, which is in turn
    eliminated by this patch.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/os/io.c b/os/io.c
index 0d980ab..d34bc39 100644
--- a/os/io.c
+++ b/os/io.c
@@ -814,7 +814,7 @@ WriteToClient(ClientPtr who, int count, const void *__buf)
         }
     }
 #endif
-    if (oco->count + count + padBytes > oco->size) {
+    if (oco->count == 0 || oco->count + count + padBytes > oco->size) {
         FD_CLR(oc->fd, &OutputPending);
         if (!XFD_ANYSET(&OutputPending)) {
             CriticalOutputPending = FALSE;
commit ceffb34774d44ada83cc1994d20c8d65b46bd555
Author: Laurent Carlier <lordheavym at gmail.com>
Date:   Sat Jun 8 00:43:56 2013 +0200

    ephyr: restore GLX support
    
    It was removed since version 1.13
    
    Signed-off-by: Sebastien Bacher <seb128 at ubuntu.com>
    Acked-by: Daniel Stone <daniel at fooishbar.org>

diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index 9a1dd7d..447ff6b 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -28,6 +28,7 @@
 #endif
 #include "ephyr.h"
 #include "ephyrlog.h"
+#include "glx_extinit.h"
 
 extern Window EphyrPreExistingHostWin;
 extern Bool EphyrWantGrayScale;
@@ -47,6 +48,22 @@ extern KdKeyboardDriver LinuxEvdevKeyboardDriver;
 
 void processScreenArg(const char *screen_size, char *parent_id);
 
+static const
+ExtensionModule ephyrExtensions[] = {
+#ifdef GLXEXT
+    {GlxExtensionInit, "GLX", &noGlxExtension},
+#endif
+};
+
+static void
+ephyrExtensionInit(void)
+{
+    int i;
+
+    for (i = 0; i < ARRAY_SIZE(ephyrExtensions); i++)
+        LoadExtension(&ephyrExtensions[i], TRUE);
+}
+
 void
 InitCard(char *name)
 {
@@ -57,6 +74,9 @@ InitCard(char *name)
 void
 InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
 {
+    if (serverGeneration == 1)
+        ephyrExtensionInit();
+
     KdInitOutput(pScreenInfo, argc, argv);
 }
 
commit f37972f4a67b49ba9649310a6778bd1bf31e0130
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Apr 24 14:58:27 2013 -0700

    miext/sync: Fix multi-screen support in SyncFence initialization
    
    miSyncSetup was checking to see if the screen private key had been
    registered, and if so, skipping the setup of the provided screen.
    
    Instead, it should register the private index only once, but then
    initialize the screen unless it has already been initialized. This
    latter step allows drivers to initialize the sync private structures
    before the Sync extension itself is initialized.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/miext/sync/misync.c b/miext/sync/misync.c
index d24921a..b6914d1 100644
--- a/miext/sync/misync.c
+++ b/miext/sync/misync.c
@@ -182,20 +182,21 @@ miSyncSetup(ScreenPtr pScreen)
         &miSyncScreenDestroyFence
     };
 
-    if (dixPrivateKeyRegistered(syncScreenPrivateKey))
-        return TRUE;
-
-    if (!dixRegisterPrivateKey(syncScreenPrivateKey, PRIVATE_SCREEN,
-                               sizeof(SyncScreenPrivRec)))
-        return FALSE;
+    if (!dixPrivateKeyRegistered(syncScreenPrivateKey)) {
+        if (!dixRegisterPrivateKey(syncScreenPrivateKey, PRIVATE_SCREEN,
+                                   sizeof(SyncScreenPrivRec)))
+            return FALSE;
+    }
 
     pScreenPriv = SYNC_SCREEN_PRIV(pScreen);
 
-    pScreenPriv->funcs = miSyncScreenFuncs;
+    if (pScreenPriv->funcs.CreateFence) {
+        pScreenPriv->funcs = miSyncScreenFuncs;
 
-    /* Wrap CloseScreen to clean up */
-    pScreenPriv->CloseScreen = pScreen->CloseScreen;
-    pScreen->CloseScreen = SyncCloseScreen;
+        /* Wrap CloseScreen to clean up */
+        pScreenPriv->CloseScreen = pScreen->CloseScreen;
+        pScreen->CloseScreen = SyncCloseScreen;
+    }
 
     return TRUE;
 }
commit 1c8beedfe4343377fa3504f8ab71430cc137b22c
Author: Adam Jackson <ajax at redhat.com>
Date:   Wed Aug 21 14:12:52 2013 -0400

    randr: Fix a copypasta bug in CRTC confinement
    
    Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>
    Signed-off-by: Adam Jackson <ajax at redhat.com>

diff --git a/randr/rrpointer.c b/randr/rrpointer.c
index ec803e9..eb6b677 100644
--- a/randr/rrpointer.c
+++ b/randr/rrpointer.c
@@ -82,7 +82,7 @@ RRPointerToNearestCrtc(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
         else
             dx = 0;
         if (y < crtc->y)
-            dy = crtc->y - x;
+            dy = crtc->y - y;
         else if (y > crtc->y + scan_height)
             dy = y - (crtc->y + scan_height);
         else
commit 47ff382d1fce25a8b097d45b79489e891f1f1228
Merge: 6f89ae3 3752a81
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Sep 9 15:13:42 2013 -0700

    Merge remote-tracking branch 'jturney/master'

commit abc2bfca16adcd1e5657d4ce54f4e1335d5ed53f
Author: Sebastien Bacher <seb128 at ubuntu.com>
Date:   Fri Aug 23 21:21:44 2013 +0200

    kdrive: initialize GLX for xephyr
    
    Like commit ac1a60e7b6f06fd075cc5bf55d6bc67206a01d29, re-add
    initialization of GLX after it was accidentally dropped from non-Xorg
    servers in 5f5bbbe543f65c48ecbb5cce80116a86ca3fbe86.
    
    Signed-off-by: Sebastien Bacher <seb128 at ubuntu.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=62346
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index 966e321..cf8bc90 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -28,6 +28,7 @@
 #endif
 #include "ephyr.h"
 #include "ephyrlog.h"
+#include "glx_extinit.h"
 
 extern Window EphyrPreExistingHostWin;
 extern Bool EphyrWantGrayScale;
@@ -54,9 +55,28 @@ InitCard(char *name)
     KdCardInfoAdd(&ephyrFuncs, 0);
 }
 
+static const ExtensionModule ephyrExtensions[] = {
+#ifdef GLXEXT
+ { GlxExtensionInit, "GLX", &noGlxExtension },
+#endif
+};
+
+static
+void ephyrExtensionInit(void)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(ephyrExtensions); i++)
+ LoadExtension(&ephyrExtensions[i], TRUE);
+}
+
+
 void
 InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
 {
+    if (serverGeneration == 1)
+        ephyrExtensionInit();
+
     KdInitOutput(pScreenInfo, argc, argv);
 }
 
commit aa5534ec6931ffcc81cca76b98785d57de8e0e52
Author: Eric Anholt <eric at anholt.net>
Date:   Fri Aug 23 11:23:00 2013 -0700

    ephyr: Do grab/ungrab for ctrl+shift, not just shift+ctrl.
    
    Given that the window title says "ctrl+shift", having pressing those
    keys in that order not ungrab you is fairly mean.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index 932327d..d8573e0 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -1033,9 +1033,12 @@ ephyrProcessKeyRelease(xcb_generic_event_t *xev)
     if (!keysyms)
         keysyms = xcb_key_symbols_alloc(conn);
 
-    if ((xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_L
-         || xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_R)
-        && (key->state & XCB_MOD_MASK_CONTROL)) {
+    if (((xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_L
+          || xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_R)
+         && (key->state & XCB_MOD_MASK_CONTROL)) ||
+        ((xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Control_L
+          || xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Control_R)
+         && (key->state & XCB_MOD_MASK_SHIFT))) {
         KdScreenInfo *screen = screen_from_window(key->event);
         EphyrScrPriv *scrpriv = screen->driver;
 
commit 5cc15e1c427bacd73db7381df3474a23f7616624
Author: Eric Anholt <eric at anholt.net>
Date:   Fri Aug 23 11:19:17 2013 -0700

    ephyr: Flush the X connection when updating the window title.
    
    Otherwise when you're doing the ctrl-shift mouse grab thing, you
    don't know what state you're in until the next rendering occurs.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index a8a2448..d985571 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -174,6 +174,7 @@ hostx_set_win_title(KdScreenInfo *screen, const char *extra_text)
                               8,
                               strlen(buf),
                               buf);
+        xcb_flush(HostX.conn);
     }
 }
 
commit ba387cf21f7d95987211f75d8024601e7d64e322
Author: Eric Anholt <eric at anholt.net>
Date:   Fri Aug 23 11:17:14 2013 -0700

    ephyr: Use host (HW) cursors by default.
    
    Unless you're working on the sw cursor rendering code, you surely want
    to have real hardware cursors.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index 7812dbe..966e321 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -114,7 +114,7 @@ ddxUseMsg(void)
 
     ErrorF("\nXephyr Option Usage:\n");
     ErrorF("-parent <XID>        Use existing window as Xephyr root win\n");
-    ErrorF("-host-cursor         Re-use exisiting X host server cursor\n");
+    ErrorF("-sw-cursor           Render cursors in software in Xephyr\n");
     ErrorF("-fullscreen          Attempt to run Xephyr fullscreen\n");
     ErrorF("-grayscale           Simulate 8bit grayscale\n");
     ErrorF("-resizeable          Make Xephyr windows resizeable\n");
@@ -203,8 +203,12 @@ ddxProcessArgument(int argc, char **argv, int i)
         UseMsg();
         exit(1);
     }
+    else if (!strcmp(argv[i], "-sw-cursor")) {
+        hostx_use_sw_cursor();
+        return 1;
+    }
     else if (!strcmp(argv[i], "-host-cursor")) {
-        hostx_use_host_cursor();
+        /* Compatibility with the old command line argument, now the default. */
         return 1;
     }
     else if (!strcmp(argv[i], "-fullscreen")) {
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 084bd64..a8a2448 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -64,7 +64,7 @@ struct EphyrHostXVars {
     Window winroot;
     xcb_gcontext_t  gc;
     int depth;
-    Bool use_host_cursor;
+    Bool use_sw_cursor;
     Bool use_fullscreen;
     Bool have_shm;
 
@@ -180,13 +180,13 @@ hostx_set_win_title(KdScreenInfo *screen, const char *extra_text)
 int
 hostx_want_host_cursor(void)
 {
-    return HostX.use_host_cursor;
+    return !HostX.use_sw_cursor;
 }
 
 void
-hostx_use_host_cursor(void)
+hostx_use_sw_cursor(void)
 {
-    HostX.use_host_cursor = TRUE;
+    HostX.use_sw_cursor = TRUE;
 }
 
 int
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index 20df7be..e83323a 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -80,7 +80,7 @@ int
  hostx_want_host_cursor(void);
 
 void
- hostx_use_host_cursor(void);
+ hostx_use_sw_cursor(void);
 
 void
  hostx_use_fullscreen(void);
commit 0f5a2f13dc284dd5f0f28e2c4323b2e08d253a7d
Author: Eric Anholt <eric at anholt.net>
Date:   Fri Aug 23 11:04:22 2013 -0700

    ephyr: Garbage collect some DOA host window clipping code.
    
    Introduced in 79782726617d4b5a4f9b376f21936d035fc870e1 but never used.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index b189ebd..084bd64 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -1092,46 +1092,6 @@ out:
     return is_ok;
 }
 
-int
-hostx_set_window_clipping_rectangles(int a_window,
-                                     EphyrRect * a_rects, int a_num_rects)
-{
-    Bool is_ok = FALSE;
-    int i = 0;
-    xcb_rectangle_t *rects = NULL;
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_rects, FALSE);
-
-    EPHYR_LOG("enter. num rects:%d\n", a_num_rects);
-
-    rects = calloc(a_num_rects, sizeof (xcb_rectangle_t));
-    if (!rects)
-        goto out;
-    for (i = 0; i < a_num_rects; i++) {
-        rects[i].x = a_rects[i].x1;
-        rects[i].y = a_rects[i].y1;
-        rects[i].width = abs(a_rects[i].x2 - a_rects[i].x1);
-        rects[i].height = abs(a_rects[i].y2 - a_rects[i].y1);
-        EPHYR_LOG("clipped to rect[x:%d,y:%d,w:%d,h:%d]\n",
-                  rects[i].x, rects[i].y, rects[i].width, rects[i].height);
-    }
-    xcb_shape_rectangles(HostX.conn,
-                         XCB_SHAPE_SO_SET,
-                         XCB_SHAPE_SK_CLIP,
-                         XCB_CLIP_ORDERING_YX_BANDED,
-                         a_window,
-                         0, 0,
-                         a_num_rects,
-                         rects);
-    is_ok = TRUE;
-
-out:
-    free(rects);
-    rects = NULL;
-    EPHYR_LOG("leave\n");
-    return is_ok;
-}
-
 #ifdef XF86DRI
 typedef struct {
     int is_valid;
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index 0323b33..20df7be 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -172,9 +172,6 @@ int hostx_set_window_geometry(int a_win, EphyrBox * a_geo);
 int hostx_set_window_bounding_rectangles(int a_window,
                                          EphyrRect * a_rects, int a_num_rects);
 
-int hostx_set_window_clipping_rectangles(int a_window,
-                                         EphyrRect * a_rects, int a_num_rects);
-
 int host_has_extension(xcb_extension_t *extension);
 
 #ifdef XF86DRI
commit 090de17d361dc9828203a2562565d6499998db46
Author: Eric Anholt <eric at anholt.net>
Date:   Fri Aug 23 10:56:22 2013 -0700

    ephyr: Garbage collect some dead XV clipping code.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c
index f4fcf72..4a05721 100644
--- a/hw/kdrive/ephyr/ephyrvideo.c
+++ b/hw/kdrive/ephyr/ephyrvideo.c
@@ -60,8 +60,6 @@ struct _EphyrPortPriv {
 };
 typedef struct _EphyrPortPriv EphyrPortPriv;
 
-static Bool DoSimpleClip(BoxPtr a_dst_drw, BoxPtr a_clipper, BoxPtr a_result);
-
 static Bool ephyrLocalAtomToHost(int a_local_atom, int *a_host_atom);
 
 static EphyrXVPriv *ephyrXVPrivNew(void);
@@ -178,49 +176,6 @@ adaptor_has_flags(const xcb_xv_adaptor_info_t *adaptor, uint32_t flags)
 }
 
 static Bool
-DoSimpleClip(BoxPtr a_dst_box, BoxPtr a_clipper, BoxPtr a_result)
-{
-    BoxRec dstClippedBox;
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_dst_box && a_clipper && a_result, FALSE);
-
-    /*
-     * setup the clipbox inside the destination.
-     */
-    dstClippedBox.x1 = a_dst_box->x1;
-    dstClippedBox.x2 = a_dst_box->x2;
-    dstClippedBox.y1 = a_dst_box->y1;
-    dstClippedBox.y2 = a_dst_box->y2;
-
-    /*
-     * if the cliper leftmost edge is inside
-     * the destination area then the leftmost edge of the resulting
-     * clipped box is the leftmost edge of the cliper.
-     */
-    if (a_clipper->x1 > dstClippedBox.x1)
-        dstClippedBox.x1 = a_clipper->x1;
-
-    /*
-     * if the cliper top edge is inside the destination area
-     * then the bottom horizontal edge of the resulting clipped box
-     * is the bottom edge of the cliper
-     */
-    if (a_clipper->y1 > dstClippedBox.y1)
-        dstClippedBox.y1 = a_clipper->y1;
-
-    /*ditto for right edge */
-    if (a_clipper->x2 < dstClippedBox.x2)
-        dstClippedBox.x2 = a_clipper->x2;
-
-    /*ditto for bottom edge */
-    if (a_clipper->y2 < dstClippedBox.y2)
-        dstClippedBox.y2 = a_clipper->y2;
-
-    memcpy(a_result, &dstClippedBox, sizeof(dstClippedBox));
-    return TRUE;
-}
-
-static Bool
 ephyrLocalAtomToHost(int a_local_atom, int *a_host_atom)
 {
     xcb_connection_t *conn = hostx_get_xcbconn();
@@ -1158,25 +1113,12 @@ ephyrPutVideo(KdScreenInfo * a_info,
     xcb_connection_t *conn = hostx_get_xcbconn();
     xcb_gcontext_t gc;
     EphyrPortPriv *port_priv = a_port_priv;
-    BoxRec clipped_area, dst_box;
-    int result = BadImplementation;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_info->pScreen, BadValue);
     EPHYR_RETURN_VAL_IF_FAIL(a_drawable && port_priv, BadValue);
 
     EPHYR_LOG("enter\n");
 
-    dst_box.x1 = a_drw_x;
-    dst_box.x2 = a_drw_x + a_drw_w;
-    dst_box.y1 = a_drw_y;
-    dst_box.y2 = a_drw_y + a_drw_h;
-
-    if (!DoSimpleClip(&dst_box,
-                      RegionExtents(a_clipping_region), &clipped_area)) {
-        EPHYR_LOG_ERROR("failed to simple clip\n");
-        goto out;
-    }
-
     gc = xcb_generate_id(conn);
     xcb_create_gc(conn, gc, scrpriv->win, 0, NULL);
     xcb_xv_put_video(conn, port_priv->port_number,
@@ -1185,11 +1127,8 @@ ephyrPutVideo(KdScreenInfo * a_info,
                      a_drw_x, a_drw_y, a_drw_w, a_drw_h);
     xcb_free_gc(conn, gc);
 
-    result = Success;
-
- out:
     EPHYR_LOG("leave\n");
-    return result;
+    return Success;
 }
 
 static int
@@ -1205,25 +1144,12 @@ ephyrGetVideo(KdScreenInfo * a_info,
     xcb_connection_t *conn = hostx_get_xcbconn();
     xcb_gcontext_t gc;
     EphyrPortPriv *port_priv = a_port_priv;
-    BoxRec clipped_area, dst_box;
-    int result = BadImplementation;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_info && a_info->pScreen, BadValue);
     EPHYR_RETURN_VAL_IF_FAIL(a_drawable && port_priv, BadValue);
 
     EPHYR_LOG("enter\n");
 
-    dst_box.x1 = a_drw_x;
-    dst_box.x2 = a_drw_x + a_drw_w;
-    dst_box.y1 = a_drw_y;
-    dst_box.y2 = a_drw_y + a_drw_h;
-
-    if (!DoSimpleClip(&dst_box,
-                      RegionExtents(a_clipping_region), &clipped_area)) {
-        EPHYR_LOG_ERROR("failed to simple clip\n");
-        goto out;
-    }
-
     gc = xcb_generate_id(conn);
     xcb_create_gc(conn, gc, scrpriv->win, 0, NULL);
     xcb_xv_get_video(conn, port_priv->port_number,
@@ -1233,11 +1159,8 @@ ephyrGetVideo(KdScreenInfo * a_info,
 
     xcb_free_gc(conn, gc);
 
-    result = Success;
-
- out:
     EPHYR_LOG("leave\n");
-    return result;
+    return Success;
 }
 
 static int
@@ -1253,25 +1176,12 @@ ephyrPutStill(KdScreenInfo * a_info,
     xcb_connection_t *conn = hostx_get_xcbconn();
     xcb_gcontext_t gc;
     EphyrPortPriv *port_priv = a_port_priv;
-    BoxRec clipped_area, dst_box;
-    int result = BadImplementation;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_info && a_info->pScreen, BadValue);
     EPHYR_RETURN_VAL_IF_FAIL(a_drawable && port_priv, BadValue);
 
     EPHYR_LOG("enter\n");
 
-    dst_box.x1 = a_drw_x;
-    dst_box.x2 = a_drw_x + a_drw_w;
-    dst_box.y1 = a_drw_y;
-    dst_box.y2 = a_drw_y + a_drw_h;
-
-    if (!DoSimpleClip(&dst_box,
-                      RegionExtents(a_clipping_region), &clipped_area)) {
-        EPHYR_LOG_ERROR("failed to simple clip\n");
-        goto out;
-    }
-
     gc = xcb_generate_id(conn);
     xcb_create_gc(conn, gc, scrpriv->win, 0, NULL);
     xcb_xv_put_still(conn, port_priv->port_number,
@@ -1280,11 +1190,8 @@ ephyrPutStill(KdScreenInfo * a_info,
                      a_drw_x, a_drw_y, a_drw_w, a_drw_h);
     xcb_free_gc(conn, gc);
 
-    result = Success;
-
- out:
     EPHYR_LOG("leave\n");
-    return result;
+    return Success;
 }
 
 static int
@@ -1300,25 +1207,12 @@ ephyrGetStill(KdScreenInfo * a_info,
     xcb_connection_t *conn = hostx_get_xcbconn();
     xcb_gcontext_t gc;
     EphyrPortPriv *port_priv = a_port_priv;
-    BoxRec clipped_area, dst_box;
-    int result = BadImplementation;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_info && a_info->pScreen, BadValue);
     EPHYR_RETURN_VAL_IF_FAIL(a_drawable && port_priv, BadValue);
 
     EPHYR_LOG("enter\n");
 
-    dst_box.x1 = a_drw_x;
-    dst_box.x2 = a_drw_x + a_drw_w;
-    dst_box.y1 = a_drw_y;
-    dst_box.y2 = a_drw_y + a_drw_h;
-
-    if (!DoSimpleClip(&dst_box,
-                      RegionExtents(a_clipping_region), &clipped_area)) {
-        EPHYR_LOG_ERROR("failed to simple clip\n");
-        goto out;
-    }
-
     gc = xcb_generate_id(conn);
     xcb_create_gc(conn, gc, scrpriv->win, 0, NULL);
     xcb_xv_get_still(conn, port_priv->port_number,
@@ -1327,11 +1221,8 @@ ephyrGetStill(KdScreenInfo * a_info,
                      a_drw_x, a_drw_y, a_drw_w, a_drw_h);
     xcb_free_gc(conn, gc);
 
-    result = Success;
-
- out:
     EPHYR_LOG("leave\n");
-    return result;
+    return Success;
 }
 
 static int
commit 347d0fa6961c2b3dc4efd4e7cca8ef98cd3ea06e
Author: Eric Anholt <eric at anholt.net>
Date:   Fri Aug 23 10:44:23 2013 -0700

    ephyr: Remove the helper libs for each of the optional components.
    
    Note that EXTRA_DIST was always unnecessary, because automake notices
    conditional compile of source files and includes them.
    
    Copyright header is added because git noted that this was a 61%
    rewrite.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/Makefile.am b/hw/kdrive/ephyr/Makefile.am
index 805b3b7..6b790fd 100644
--- a/hw/kdrive/ephyr/Makefile.am
+++ b/hw/kdrive/ephyr/Makefile.am
@@ -1,3 +1,24 @@
+# Copyright © 2013 Intel Corporation
+#
+# 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.
+
 SUBDIRS = man
 
 AM_CPPFLAGS = 			\
@@ -9,25 +30,11 @@ AM_CPPFLAGS = 			\
 	-I$(top_srcdir)/exa
 
 if XV
-LIBXEPHYR_HOSTXV=libxephyr-hostxv.la
+XV_SRCS = ephyrvideo.c
 endif
 
 if DRI
-LIBXEPHYR_HOSTDRI=libxephyr-hostdri.la
-endif
-
-noinst_LTLIBRARIES = libxephyr-hostx.la $(LIBXEPHYR_HOSTXV) $(LIBXEPHYR_HOSTDRI) libxephyr.la
-
-bin_PROGRAMS = Xephyr
-
-HOSTX_SRCS =			\
-	hostx.c			\
-	hostx.h
-
-HOSTVIDEO_SRCS =		\
-	ephyrvideo.c
-
-HOSTDRI_SRCS =			\
+DRI_SRCS =			\
 	ephyrdriext.c		\
 	ephyrdriext.h		\
 	ephyrdri.c		\
@@ -35,51 +42,33 @@ HOSTDRI_SRCS =			\
 	ephyrglxext.c		\
 	ephyrglxext.h		\
 	ephyrhostglx.c		\
-	ephyrhostglx.h
-
-XEPHYR_SRCS =			\
-	ephyr.c			\
-	ephyr.h			\
-	ephyrlog.h		\
-	ephyr_draw.c		\
-	os.c
-
-libxephyr_hostx_la_SOURCES = $(HOSTX_SRCS)
-
-if XV
-libxephyr_hostxv_la_SOURCES = $(HOSTVIDEO_SRCS)
-endif
-
-if DRI
-libxephyr_hostdri_la_SOURCES = $(HOSTDRI_SRCS)
+	ephyrhostglx.h		\
+	$()
 endif
 
-libxephyr_la_SOURCES = $(XEPHYR_SRCS)
+bin_PROGRAMS = Xephyr
 
 Xephyr_SOURCES = \
-	ephyrinit.c
+	ephyr.c \
+	ephyr.h \
+	ephyrlog.h \
+	ephyr_draw.c \
+	os.c \
+	ephyrinit.c \
+	hostx.c \
+	hostx.h \
+	$(XV_SRCS) \
+	$(DRI_SRCS) \
+	$()
 
 Xephyr_LDADD = 						\
-	libxephyr.la					\
-	libxephyr-hostx.la				\
-	$(LIBXEPHYR_HOSTXV)				\
-	$(LIBXEPHYR_HOSTDRI)				\
 	$(top_builddir)/exa/libexa.la			\
 	@KDRIVE_LIBS@					\
 	@XEPHYR_LIBS@
 
-Xephyr_DEPENDENCIES =	\
-	libxephyr.la					\
-	libxephyr-hostx.la				\
-	$(LIBXEPHYR_HOSTXV)				\
-	$(LIBXEPHYR_HOSTDRI)				\
-	@KDRIVE_LOCAL_LIBS@
+Xephyr_DEPENDENCIES = @KDRIVE_LOCAL_LIBS@
 
 Xephyr_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
 
 relink:
 	$(AM_V_at)rm -f $(bin_PROGRAMS) && $(MAKE) $(bin_PROGRAMS)
-
-EXTRA_DIST = \
-	$(HOSTVIDEO_SRCS) \
-	$(HOSTDRI_SRCS)
commit 74dff87790dbb3dcb23634f1e8cd54018e5ddc9d
Author: Eric Anholt <eric at anholt.net>
Date:   Fri Aug 23 10:40:52 2013 -0700

    ephyr: Remove the remaining bits of host/server XV split.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/Makefile.am b/hw/kdrive/ephyr/Makefile.am
index 7648e14..805b3b7 100644
--- a/hw/kdrive/ephyr/Makefile.am
+++ b/hw/kdrive/ephyr/Makefile.am
@@ -25,9 +25,7 @@ HOSTX_SRCS =			\
 	hostx.h
 
 HOSTVIDEO_SRCS =		\
-	ephyrvideo.c		\
-	ephyrhostvideo.c	\
-	ephyrhostvideo.h
+	ephyrvideo.c
 
 HOSTDRI_SRCS =			\
 	ephyrdriext.c		\
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.c b/hw/kdrive/ephyr/ephyrhostvideo.c
deleted file mode 100644
index a26c31c..0000000
--- a/hw/kdrive/ephyr/ephyrhostvideo.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Xephyr - A kdrive X server thats runs in a host X window.
- *          Authored by Matthew Allum <mallum at openedhand.com>
- * 
- * Copyright © 2007 OpenedHand Ltd 
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of OpenedHand Ltd not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. OpenedHand Ltd makes no
- * representations about the suitability of this software for any purpose.  It
- * is provided "as is" without express or implied warranty.
- *
- * OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL 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
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors:
- *    Dodji Seketeli <dodji at openedhand.com>
- */
-#ifdef HAVE_CONFIG_H
-#include <kdrive-config.h>
-#endif
-#include <xcb/xv.h>
-#include <xcb/xcb_aux.h>
-#define _HAVE_XALLOC_DECLS
-
-#include "hostx.h"
-#include "ephyrhostvideo.h"
-#include "ephyrlog.h"
-
-#ifndef TRUE
-#define TRUE 1
-#endif /*TRUE*/
-#ifndef FALSE
-#define FALSE 0
-#endif /*FALSE*/
-
-Bool
-ephyrHostXVQueryBestSize(int a_port_id,
-                         Bool a_motion,
-                         unsigned int a_frame_w,
-                         unsigned int a_frame_h,
-                         unsigned int a_drw_w,
-                         unsigned int a_drw_h,
-                         unsigned int *a_actual_w, unsigned int *a_actual_h)
-{
-    Bool is_ok = FALSE;
-    xcb_xv_query_best_size_cookie_t cookie;
-    xcb_xv_query_best_size_reply_t *reply;
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_actual_w && a_actual_h, FALSE);
-
-    EPHYR_LOG("enter: frame (%dx%d), drw (%dx%d)\n",
-              a_frame_w, a_frame_h, a_drw_w, a_drw_h);
-
-    cookie = xcb_xv_query_best_size(hostx_get_xcbconn(),
-                                    a_port_id,
-                                    a_frame_w, a_frame_h,
-                                    a_drw_w, a_drw_h,
-                                    a_motion);
-    reply = xcb_xv_query_best_size_reply(hostx_get_xcbconn(), cookie, NULL);
-    if (!reply) {
-        EPHYR_LOG_ERROR ("XvQueryBestSize() failed\n");
-        goto out;
-    }
-    *a_actual_w = reply->actual_width;
-    *a_actual_h = reply->actual_height;
-    free(reply);
-
-    EPHYR_LOG("actual (%dx%d)\n", *a_actual_w, *a_actual_h);
-    is_ok = TRUE;
-
-out:
-    free(reply);
-    EPHYR_LOG("leave\n");
-    return is_ok;
-}
-
-Bool
-ephyrHostGetAtom(const char *a_name, Bool a_create_if_not_exists, int *a_atom)
-{
-    xcb_connection_t *conn = hostx_get_xcbconn();
-    xcb_intern_atom_cookie_t cookie;
-    xcb_intern_atom_reply_t *reply;
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_atom, FALSE);
-
-    cookie = xcb_intern_atom(conn,
-                             a_create_if_not_exists,
-                             strlen(a_name),
-                             a_name);
-    reply = xcb_intern_atom_reply(conn, cookie, NULL);
-    if (!reply || reply->atom == None) {
-        free(reply);
-        return FALSE;
-    }
-    *a_atom = reply->atom;
-    free(reply);
-    return TRUE;
-}
-
-char *
-ephyrHostGetAtomName(int a_atom)
-{
-    xcb_connection_t *conn = hostx_get_xcbconn();
-    xcb_get_atom_name_cookie_t cookie;
-    xcb_get_atom_name_reply_t *reply;
-    char *ret;
-
-    cookie = xcb_get_atom_name(conn, a_atom);
-    reply = xcb_get_atom_name_reply(conn, cookie, NULL);
-    if (!reply)
-        return NULL;
-    ret = malloc(xcb_get_atom_name_name_length(reply) + 1);
-    if (ret) {
-        memcpy(ret, xcb_get_atom_name_name(reply),
-               xcb_get_atom_name_name_length(reply));
-        ret[xcb_get_atom_name_name_length(reply)] = '\0';
-    }
-    free(reply);
-    return ret;
-}
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.h b/hw/kdrive/ephyr/ephyrhostvideo.h
deleted file mode 100644
index 9c2cd5a..0000000
--- a/hw/kdrive/ephyr/ephyrhostvideo.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Xephyr - A kdrive X server thats runs in a host X window.
- *          Authored by Matthew Allum <mallum at openedhand.com>
- * 
- * Copyright © 2007 OpenedHand Ltd 
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of OpenedHand Ltd not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. OpenedHand Ltd makes no
- * representations about the suitability of this software for any purpose.  It
- * is provided "as is" without express or implied warranty.
- *
- * OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL 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
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors:
- *    Dodji Seketeli <dodji at openedhand.com>
- */
-#ifndef __EPHYRHOSTVIDEO_H__
-#define __EPHYRHOSTVIDEO_H__
-
-#include <xcb/xv.h>
-#include <X11/Xdefs.h>
-
-/*
- *size query
- */
-Bool ephyrHostXVQueryBestSize(int a_port_id,
-                              Bool a_motion,
-                              unsigned int a_frame_w,
-                              unsigned int a_frame_h,
-                              unsigned int a_drw_w,
-                              unsigned int a_drw_h,
-                              unsigned int *a_actual_w,
-                              unsigned int *a_actual_h);
-
-/*
- * atom
- */
-Bool ephyrHostGetAtom(const char *a_name,
-                      Bool a_create_if_not_exists, int *a_atom);
-char *ephyrHostGetAtomName(int a_atom);
-
-#endif /*__EPHYRHOSTVIDEO_H__*/
diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c
index dde58b4..f4fcf72 100644
--- a/hw/kdrive/ephyr/ephyrvideo.c
+++ b/hw/kdrive/ephyr/ephyrvideo.c
@@ -33,12 +33,12 @@
 #include <X11/extensions/Xv.h>
 #include <xcb/xcb.h>
 #include <xcb/xcb_aux.h>
+#include <xcb/xv.h>
 #include "ephyrlog.h"
 #include "kdrive.h"
 #include "kxv.h"
 #include "ephyr.h"
 #include "hostx.h"
-#include "ephyrhostvideo.h"
 
 struct _EphyrXVPriv {
     xcb_xv_query_adaptors_reply_t *host_adaptors;
@@ -223,8 +223,10 @@ DoSimpleClip(BoxPtr a_dst_box, BoxPtr a_clipper, BoxPtr a_result)
 static Bool
 ephyrLocalAtomToHost(int a_local_atom, int *a_host_atom)
 {
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_intern_atom_cookie_t cookie;
+    xcb_intern_atom_reply_t *reply;
     const char *atom_name = NULL;
-    int host_atom = None;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_host_atom, FALSE);
 
@@ -236,11 +238,16 @@ ephyrLocalAtomToHost(int a_local_atom, int *a_host_atom)
     if (!atom_name)
         return FALSE;
 
-    if (!ephyrHostGetAtom(atom_name, FALSE, &host_atom) || host_atom == None) {
+    cookie = xcb_intern_atom(conn, FALSE, strlen(atom_name), atom_name);
+    reply = xcb_intern_atom_reply(conn, cookie, NULL);
+    if (!reply || reply->atom == None) {
         EPHYR_LOG_ERROR("no atom for string %s defined in host X\n", atom_name);
         return FALSE;
     }
-    *a_host_atom = host_atom;
+
+    *a_host_atom = reply->atom;
+    free(reply);
+
     return TRUE;
 }
 
@@ -902,20 +909,29 @@ ephyrQueryBestSize(KdScreenInfo * a_info,
                    unsigned int *a_prefered_w,
                    unsigned int *a_prefered_h, pointer a_port_priv)
 {
-    int res = 0;
+    xcb_connection_t *conn = hostx_get_xcbconn();
     EphyrPortPriv *port_priv = a_port_priv;
-
-    EPHYR_RETURN_IF_FAIL(port_priv);
-
-    EPHYR_LOG("enter\n");
-    res = ephyrHostXVQueryBestSize(port_priv->port_number,
-                                   a_motion,
-                                   a_src_w, a_src_h,
-                                   a_drw_w, a_drw_h,
-                                   a_prefered_w, a_prefered_h);
-    if (!res) {
-        EPHYR_LOG_ERROR("Failed to query best size\n");
+    xcb_xv_query_best_size_cookie_t cookie =
+        xcb_xv_query_best_size(conn,
+                               port_priv->port_number,
+                               a_src_w, a_src_h,
+                               a_drw_w, a_drw_h,
+                               a_motion);
+    xcb_xv_query_best_size_reply_t *reply =
+        xcb_xv_query_best_size_reply(conn, cookie, NULL);
+
+    EPHYR_LOG("enter: frame (%dx%d), drw (%dx%d)\n",
+              a_src_w, a_src_h, a_drw_w, a_drw_h);
+
+    if (!reply) {
+        EPHYR_LOG_ERROR ("XvQueryBestSize() failed\n");
+        return;
     }
+    *a_prefered_w = reply->actual_width;
+    *a_prefered_h = reply->actual_height;
+    EPHYR_LOG("actual (%dx%d)\n", *a_prefered_w, *a_prefered_h);
+    free(reply);
+
     EPHYR_LOG("leave\n");
 }
 
commit 2f994dfe9d1add9ea8cb9c88ddb0d15843854788
Author: Eric Anholt <eric at anholt.net>
Date:   Fri Aug 23 10:14:36 2013 -0700

    ephyr: Remove the host/server split of the actual XV video operations.
    
    I suspect there's more cleanup possible in ephyrHostXVPutImage() by
    sticking a bunch of the args in the port priv earlier.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyrhostvideo.c b/hw/kdrive/ephyr/ephyrhostvideo.c
index 3735f72..a26c31c 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.c
+++ b/hw/kdrive/ephyr/ephyrhostvideo.c
@@ -128,192 +128,3 @@ ephyrHostGetAtomName(int a_atom)
     free(reply);
     return ret;
 }
-
-Bool
-ephyrHostXVPutImage(int a_screen_num,
-                    int a_port_id,
-                    int a_image_id,
-                    int a_drw_x,
-                    int a_drw_y,
-                    int a_drw_w,
-                    int a_drw_h,
-                    int a_src_x,
-                    int a_src_y,
-                    int a_src_w,
-                    int a_src_h,
-                    int a_image_width,
-                    int a_image_height,
-                    unsigned char *a_buf,
-                    EphyrHostBox * a_clip_rects, int a_clip_rect_nums)
-{
-    Bool is_ok = TRUE;
-    xcb_connection_t *conn = hostx_get_xcbconn ();
-    xcb_gcontext_t gc;
-    xcb_rectangle_t *rects = NULL;
-    int data_len, width, height;
-    xcb_xv_query_image_attributes_cookie_t image_attr_cookie;
-    xcb_xv_query_image_attributes_reply_t *image_attr_reply;
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_buf, FALSE);
-
-    EPHYR_LOG("enter, num_clip_rects: %d\n", a_clip_rect_nums);
-
-    gc = xcb_generate_id(conn);
-    xcb_create_gc(conn, gc, hostx_get_window(a_screen_num), 0, NULL);
-
-    image_attr_cookie = xcb_xv_query_image_attributes(conn,
-                                                      a_port_id,
-                                                      a_image_id,
-                                                      a_image_width,
-                                                      a_image_height);
-    image_attr_reply = xcb_xv_query_image_attributes_reply(conn,
-                                                           image_attr_cookie,
-                                                           NULL);
-    if (!image_attr_reply)
-        goto out;
-    data_len = image_attr_reply->data_size;
-    width = image_attr_reply->width;
-    height = image_attr_reply->height;
-    free(image_attr_reply);
-
-    if (a_clip_rect_nums) {
-        int i = 0;
-        rects = calloc(a_clip_rect_nums, sizeof(xcb_rectangle_t));
-        for (i=0; i < a_clip_rect_nums; i++) {
-            rects[i].x = a_clip_rects[i].x1;
-            rects[i].y = a_clip_rects[i].y1;
-            rects[i].width = a_clip_rects[i].x2 - a_clip_rects[i].x1;
-            rects[i].height = a_clip_rects[i].y2 - a_clip_rects[i].y1;
-            EPHYR_LOG("(x,y,w,h): (%d,%d,%d,%d)\n",
-                      rects[i].x, rects[i].y, rects[i].width, rects[i].height);
-        }
-        xcb_set_clip_rectangles(conn,
-                                XCB_CLIP_ORDERING_YX_BANDED,
-                                gc,
-                                0,
-                                0,
-                                a_clip_rect_nums,
-                                rects);
-	free(rects);
-    }
-    xcb_xv_put_image(conn,
-                     a_port_id,
-                     hostx_get_window (a_screen_num),
-                     gc,
-                     a_image_id,
-                     a_src_x, a_src_y, a_src_w, a_src_h,
-                     a_drw_x, a_drw_y, a_drw_w, a_drw_h,
-                     width, height,
-                     data_len, a_buf);
-    is_ok = TRUE;
-
-out:
-    xcb_free_gc(conn, gc);
-    EPHYR_LOG("leave\n");
-    return is_ok;
-}
-
-Bool
-ephyrHostXVPutVideo(int a_screen_num, int a_port_id,
-                    int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
-                    int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h)
-{
-    Bool is_ok = FALSE;
-    xcb_gcontext_t gc;
-    xcb_connection_t *conn = hostx_get_xcbconn();
-
-    EPHYR_RETURN_VAL_IF_FAIL(conn, FALSE);
-
-    gc = xcb_generate_id(conn);
-    xcb_create_gc(conn, gc, hostx_get_window (a_screen_num), 0, NULL);
-    xcb_xv_put_video(conn,
-                     a_port_id,
-                     hostx_get_window (a_screen_num), gc,
-                     a_vid_x, a_vid_y, a_vid_w, a_vid_h,
-                     a_drw_x, a_drw_y, a_drw_w, a_drw_h);
-    is_ok = TRUE;
-
-    xcb_free_gc(conn, gc);
-
-    return is_ok;
-}
-
-Bool
-ephyrHostXVGetVideo(int a_screen_num, int a_port_id,
-                    int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
-                    int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h)
-{
-    xcb_gcontext_t gc;
-    xcb_connection_t *conn = hostx_get_xcbconn();
-
-    EPHYR_RETURN_VAL_IF_FAIL(conn, FALSE);
-
-    gc = xcb_generate_id(conn);
-    xcb_create_gc(conn,
-                  gc,
-                  hostx_get_window (a_screen_num),
-                  0, NULL);
-    xcb_xv_get_video(conn,
-                     a_port_id,
-                     hostx_get_window (a_screen_num),
-                     gc,
-                     a_vid_x, a_vid_y, a_vid_w, a_vid_h,
-                     a_drw_x, a_drw_y, a_drw_w, a_drw_h);
-
-    xcb_free_gc(conn, gc);
-
-    return TRUE;
-}
-
-Bool
-ephyrHostXVPutStill(int a_screen_num, int a_port_id,
-                    int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
-                    int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h)
-{
-    xcb_connection_t *conn = hostx_get_xcbconn();
-    xcb_gcontext_t gc;
-
-    EPHYR_RETURN_VAL_IF_FAIL(conn, FALSE);
-
-    gc = xcb_generate_id(conn);
-    xcb_create_gc(conn,
-                  gc,
-                  hostx_get_window (a_screen_num),
-                  0, NULL);
-    xcb_xv_put_still(conn,
-                     a_port_id,
-                     hostx_get_window (a_screen_num),
-                     gc,
-                     a_vid_x, a_vid_y, a_vid_w, a_vid_h,
-                     a_drw_x, a_drw_y, a_drw_w, a_drw_h);
-
-    xcb_free_gc(conn, gc);
-
-    return TRUE;
-}
-
-Bool
-ephyrHostXVGetStill(int a_screen_num, int a_port_id,
-                    int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
-                    int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h)
-{
-    xcb_gcontext_t gc;
-    xcb_connection_t *conn = hostx_get_xcbconn();
-
-    EPHYR_RETURN_VAL_IF_FAIL(conn, FALSE);
-
-    gc = xcb_generate_id(conn);
-    xcb_create_gc(conn,
-                  gc,
-                  hostx_get_window (a_screen_num),
-                  0, NULL);
-    xcb_xv_get_still(conn,
-                     a_port_id,
-                     hostx_get_window (a_screen_num),
-                     gc,
-                     a_vid_x, a_vid_y, a_vid_w, a_vid_h,
-                     a_drw_x, a_drw_y, a_drw_w, a_drw_h);
-    xcb_free_gc(conn, gc);
-
-    return TRUE;
-}
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.h b/hw/kdrive/ephyr/ephyrhostvideo.h
index 080caa8..9c2cd5a 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.h
+++ b/hw/kdrive/ephyr/ephyrhostvideo.h
@@ -31,10 +31,6 @@
 #include <xcb/xv.h>
 #include <X11/Xdefs.h>
 
-typedef struct {
-    unsigned short x1, y1, x2, y2;
-} EphyrHostBox;
-
 /*
  *size query
  */
@@ -54,47 +50,4 @@ Bool ephyrHostGetAtom(const char *a_name,
                       Bool a_create_if_not_exists, int *a_atom);
 char *ephyrHostGetAtomName(int a_atom);
 
-/*
- *PutImage
- * (ignore clipping for now)
- */
-Bool ephyrHostXVPutImage(int a_screen_num,
-                         int a_port_id,
-                         int a_image_id,
-                         int a_drw_x,
-                         int a_drw_y,
-                         int a_drw_w,
-                         int a_drw_h,
-                         int a_src_x,
-                         int a_src_y,
-                         int a_src_w,
-                         int a_src_h,
-                         int a_image_width,
-                         int a_image_height,
-                         unsigned char *a_buf,
-                         EphyrHostBox * a_clip_rects, int a_clip_rect_nums);
-
-/*
- * Putvideo/PutStill/GetVideo
- */
-Bool ephyrHostXVPutVideo(int a_screen_num,
-                         int a_port_id,
-                         int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
-                         int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h);
-
-Bool ephyrHostXVGetVideo(int a_screen_num,
-                         int a_port_id,
-                         int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
-                         int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h);
-
-Bool ephyrHostXVPutStill(int a_screen_num,
-                         int a_port_id,
-                         int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
-                         int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h);
-
-Bool ephyrHostXVGetStill(int a_screen_num,
-                         int a_port_id,
-                         int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
-                         int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h);
-
 #endif /*__EPHYRHOSTVIDEO_H__*/
diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c
index 46a0ca3..dde58b4 100644
--- a/hw/kdrive/ephyr/ephyrvideo.c
+++ b/hw/kdrive/ephyr/ephyrvideo.c
@@ -919,6 +919,93 @@ ephyrQueryBestSize(KdScreenInfo * a_info,
     EPHYR_LOG("leave\n");
 }
 
+
+static Bool
+ephyrHostXVPutImage(KdScreenInfo * a_info,
+                    EphyrPortPriv *port_priv,
+                    int a_image_id,
+                    int a_drw_x,
+                    int a_drw_y,
+                    int a_drw_w,
+                    int a_drw_h,
+                    int a_src_x,
+                    int a_src_y,
+                    int a_src_w,
+                    int a_src_h,
+                    int a_image_width,
+                    int a_image_height,
+                    unsigned char *a_buf,
+                    BoxPtr a_clip_rects, int a_clip_rect_nums)
+{
+    EphyrScrPriv *scrpriv = a_info->driver;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_gcontext_t gc;
+    Bool is_ok = TRUE;
+    xcb_rectangle_t *rects = NULL;
+    int data_len, width, height;
+    xcb_xv_query_image_attributes_cookie_t image_attr_cookie;
+    xcb_xv_query_image_attributes_reply_t *image_attr_reply;
+
+    EPHYR_RETURN_VAL_IF_FAIL(a_buf, FALSE);
+
+    EPHYR_LOG("enter, num_clip_rects: %d\n", a_clip_rect_nums);
+
+    image_attr_cookie = xcb_xv_query_image_attributes(conn,
+                                                      port_priv->port_number,
+                                                      a_image_id,
+                                                      a_image_width,
+                                                      a_image_height);
+    image_attr_reply = xcb_xv_query_image_attributes_reply(conn,
+                                                           image_attr_cookie,
+                                                           NULL);
+    if (!image_attr_reply)
+        goto out;
+    data_len = image_attr_reply->data_size;
+    width = image_attr_reply->width;
+    height = image_attr_reply->height;
+    free(image_attr_reply);
+
+    gc = xcb_generate_id(conn);
+    xcb_create_gc(conn, gc, scrpriv->win, 0, NULL);
+
+    if (a_clip_rect_nums) {
+        int i = 0;
+        rects = calloc(a_clip_rect_nums, sizeof(xcb_rectangle_t));
+        for (i=0; i < a_clip_rect_nums; i++) {
+            rects[i].x = a_clip_rects[i].x1;
+            rects[i].y = a_clip_rects[i].y1;
+            rects[i].width = a_clip_rects[i].x2 - a_clip_rects[i].x1;
+            rects[i].height = a_clip_rects[i].y2 - a_clip_rects[i].y1;
+            EPHYR_LOG("(x,y,w,h): (%d,%d,%d,%d)\n",
+                      rects[i].x, rects[i].y, rects[i].width, rects[i].height);
+        }
+        xcb_set_clip_rectangles(conn,
+                                XCB_CLIP_ORDERING_YX_BANDED,
+                                gc,
+                                0,
+                                0,
+                                a_clip_rect_nums,
+                                rects);
+	free(rects);
+    }
+    xcb_xv_put_image(conn,
+                     port_priv->port_number,
+                     scrpriv->win,
+                     gc,
+                     a_image_id,
+                     a_src_x, a_src_y, a_src_w, a_src_h,
+                     a_drw_x, a_drw_y, a_drw_w, a_drw_h,
+                     width, height,
+                     data_len, a_buf);
+    xcb_free_gc(conn, gc);
+
+    is_ok = TRUE;
+
+out:
+    EPHYR_LOG("leave\n");
+    return is_ok;
+}
+
 static int
 ephyrPutImage(KdScreenInfo * a_info,
               DrawablePtr a_drawable,
@@ -945,13 +1032,12 @@ ephyrPutImage(KdScreenInfo * a_info,
 
     EPHYR_LOG("enter\n");
 
-    if (!ephyrHostXVPutImage(a_info->pScreen->myNum,
-                             port_priv->port_number,
+    if (!ephyrHostXVPutImage(a_info, port_priv,
                              a_id,
                              a_drw_x, a_drw_y, a_drw_w, a_drw_h,
                              a_src_x, a_src_y, a_src_w, a_src_h,
                              a_width, a_height, a_buf,
-                             (EphyrHostBox *) RegionRects(a_clipping_region),
+                             RegionRects(a_clipping_region),
                              RegionNumRects(a_clipping_region))) {
         EPHYR_LOG_ERROR("EphyrHostXVPutImage() failed\n");
         goto out;
@@ -1021,8 +1107,8 @@ ephyrReputImage(KdScreenInfo * a_info,
         EPHYR_LOG_ERROR("has null image buf in cache\n");
         goto out;
     }
-    if (!ephyrHostXVPutImage(a_info->pScreen->myNum,
-                             port_priv->port_number,
+    if (!ephyrHostXVPutImage(a_info,
+                             port_priv,
                              port_priv->image_id,
                              a_drw_x, a_drw_y,
                              port_priv->drw_w, port_priv->drw_h,
@@ -1030,7 +1116,7 @@ ephyrReputImage(KdScreenInfo * a_info,
                              port_priv->src_w, port_priv->src_h,
                              port_priv->image_width, port_priv->image_height,
                              port_priv->image_buf,
-                             (EphyrHostBox *) RegionRects(a_clipping_region),
+                             RegionRects(a_clipping_region),
                              RegionNumRects(a_clipping_region))) {
         EPHYR_LOG_ERROR("ephyrHostXVPutImage() failed\n");
         goto out;
@@ -1052,6 +1138,9 @@ ephyrPutVideo(KdScreenInfo * a_info,
               short a_drw_w, short a_drw_h,
               RegionPtr a_clipping_region, pointer a_port_priv)
 {
+    EphyrScrPriv *scrpriv = a_info->driver;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_gcontext_t gc;
     EphyrPortPriv *port_priv = a_port_priv;
     BoxRec clipped_area, dst_box;
     int result = BadImplementation;
@@ -1072,13 +1161,14 @@ ephyrPutVideo(KdScreenInfo * a_info,
         goto out;
     }
 
-    if (!ephyrHostXVPutVideo(a_info->pScreen->myNum,
-                             port_priv->port_number,
-                             a_vid_x, a_vid_y, a_vid_w, a_vid_h,
-                             a_drw_x, a_drw_y, a_drw_w, a_drw_h)) {
-        EPHYR_LOG_ERROR("ephyrHostXVPutVideo() failed\n");
-        goto out;
-    }
+    gc = xcb_generate_id(conn);
+    xcb_create_gc(conn, gc, scrpriv->win, 0, NULL);
+    xcb_xv_put_video(conn, port_priv->port_number,
+                     scrpriv->win, gc,
+                     a_vid_x, a_vid_y, a_vid_w, a_vid_h,
+                     a_drw_x, a_drw_y, a_drw_w, a_drw_h);
+    xcb_free_gc(conn, gc);
+
     result = Success;
 
  out:
@@ -1095,6 +1185,9 @@ ephyrGetVideo(KdScreenInfo * a_info,
               short a_drw_w, short a_drw_h,
               RegionPtr a_clipping_region, pointer a_port_priv)
 {
+    EphyrScrPriv *scrpriv = a_info->driver;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_gcontext_t gc;
     EphyrPortPriv *port_priv = a_port_priv;
     BoxRec clipped_area, dst_box;
     int result = BadImplementation;
@@ -1115,13 +1208,15 @@ ephyrGetVideo(KdScreenInfo * a_info,
         goto out;
     }
 
-    if (!ephyrHostXVGetVideo(a_info->pScreen->myNum,
-                             port_priv->port_number,
-                             a_vid_x, a_vid_y, a_vid_w, a_vid_h,
-                             a_drw_x, a_drw_y, a_drw_w, a_drw_h)) {
-        EPHYR_LOG_ERROR("ephyrHostXVGetVideo() failed\n");
-        goto out;
-    }
+    gc = xcb_generate_id(conn);
+    xcb_create_gc(conn, gc, scrpriv->win, 0, NULL);
+    xcb_xv_get_video(conn, port_priv->port_number,
+                     scrpriv->win, gc,
+                     a_vid_x, a_vid_y, a_vid_w, a_vid_h,
+                     a_drw_x, a_drw_y, a_drw_w, a_drw_h);
+
+    xcb_free_gc(conn, gc);
+
     result = Success;
 
  out:
@@ -1138,6 +1233,9 @@ ephyrPutStill(KdScreenInfo * a_info,
               short a_drw_w, short a_drw_h,
               RegionPtr a_clipping_region, pointer a_port_priv)
 {
+    EphyrScrPriv *scrpriv = a_info->driver;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_gcontext_t gc;
     EphyrPortPriv *port_priv = a_port_priv;
     BoxRec clipped_area, dst_box;
     int result = BadImplementation;
@@ -1158,13 +1256,14 @@ ephyrPutStill(KdScreenInfo * a_info,
         goto out;
     }
 
-    if (!ephyrHostXVPutStill(a_info->pScreen->myNum,
-                             port_priv->port_number,
-                             a_vid_x, a_vid_y, a_vid_w, a_vid_h,
-                             a_drw_x, a_drw_y, a_drw_w, a_drw_h)) {
-        EPHYR_LOG_ERROR("ephyrHostXVPutStill() failed\n");
-        goto out;
-    }
+    gc = xcb_generate_id(conn);
+    xcb_create_gc(conn, gc, scrpriv->win, 0, NULL);
+    xcb_xv_put_still(conn, port_priv->port_number,
+                     scrpriv->win, gc,
+                     a_vid_x, a_vid_y, a_vid_w, a_vid_h,
+                     a_drw_x, a_drw_y, a_drw_w, a_drw_h);
+    xcb_free_gc(conn, gc);
+
     result = Success;
 
  out:
@@ -1181,6 +1280,9 @@ ephyrGetStill(KdScreenInfo * a_info,
               short a_drw_w, short a_drw_h,
               RegionPtr a_clipping_region, pointer a_port_priv)
 {
+    EphyrScrPriv *scrpriv = a_info->driver;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_gcontext_t gc;
     EphyrPortPriv *port_priv = a_port_priv;
     BoxRec clipped_area, dst_box;
     int result = BadImplementation;
@@ -1201,13 +1303,14 @@ ephyrGetStill(KdScreenInfo * a_info,
         goto out;
     }
 
-    if (!ephyrHostXVGetStill(a_info->pScreen->myNum,
-                             port_priv->port_number,
-                             a_vid_x, a_vid_y, a_vid_w, a_vid_h,
-                             a_drw_x, a_drw_y, a_drw_w, a_drw_h)) {
-        EPHYR_LOG_ERROR("ephyrHostXVGetStill() failed\n");
-        goto out;
-    }
+    gc = xcb_generate_id(conn);
+    xcb_create_gc(conn, gc, scrpriv->win, 0, NULL);
+    xcb_xv_get_still(conn, port_priv->port_number,
+                     scrpriv->win, gc,
+                     a_vid_x, a_vid_y, a_vid_w, a_vid_h,
+                     a_drw_x, a_drw_y, a_drw_w, a_drw_h);
+    xcb_free_gc(conn, gc);
+
     result = Success;
 
  out:
commit 0b7ce74315213ccd31802847e5a83e67090ded14
Author: Eric Anholt <eric at anholt.net>
Date:   Fri Aug 23 10:01:23 2013 -0700

    ephyr: Remove another host/server split for XV image formats.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyrhostvideo.c b/hw/kdrive/ephyr/ephyrhostvideo.c
index e91cb25..3735f72 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.c
+++ b/hw/kdrive/ephyr/ephyrhostvideo.c
@@ -44,61 +44,6 @@
 #endif /*FALSE*/
 
 Bool
-ephyrHostXVQueryImageFormats(int a_port_id,
-                             EphyrHostImageFormat ** a_formats,
-                             int *a_num_format)
-{
-    xcb_connection_t *conn = hostx_get_xcbconn();
-    xcb_xv_list_image_formats_cookie_t cookie;
-    xcb_xv_list_image_formats_reply_t *reply;
-    xcb_xv_image_format_info_t *format;
-    EphyrHostImageFormat *ephyrFormats;
-    int i;
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_formats && a_num_format, FALSE);
-
-    cookie = xcb_xv_list_image_formats(conn, a_port_id);
-    reply = xcb_xv_list_image_formats_reply(conn, cookie, NULL);
-    if (!reply)
-        return FALSE;
-    *a_num_format = reply->num_formats;
-    ephyrFormats = calloc(reply->num_formats, sizeof(EphyrHostImageFormat));
-    if (!ephyrFormats) {
-        free(reply);
-        return FALSE;
-    }
-    format = xcb_xv_list_image_formats_format(reply);
-    for (i = 0; i < reply->num_formats; i++) {
-        ephyrFormats[i].id = format[i].id;
-        ephyrFormats[i].type = format[i].type;
-        ephyrFormats[i].byte_order = format[i].byte_order;
-        memcpy(ephyrFormats[i].guid, format[i].guid, 16);
-        ephyrFormats[i].bits_per_pixel = format[i].bpp;
-        ephyrFormats[i].format = format[i].format;
-        ephyrFormats[i].num_planes = format[i].num_planes;
-        ephyrFormats[i].depth = format[i].depth;
-        ephyrFormats[i].red_mask = format[i].red_mask;
-        ephyrFormats[i].green_mask = format[i].green_mask;
-        ephyrFormats[i].blue_mask = format[i].blue_mask;
-        ephyrFormats[i].y_sample_bits = format[i].y_sample_bits;
-        ephyrFormats[i].u_sample_bits = format[i].u_sample_bits;
-        ephyrFormats[i].v_sample_bits = format[i].v_sample_bits;
-        ephyrFormats[i].horz_y_period = format[i].vhorz_y_period;
-        ephyrFormats[i].horz_u_period = format[i].vhorz_u_period;
-        ephyrFormats[i].horz_v_period = format[i].vhorz_v_period;
-        ephyrFormats[i].vert_y_period = format[i].vvert_y_period;
-        ephyrFormats[i].vert_u_period = format[i].vvert_u_period;
-        ephyrFormats[i].vert_v_period = format[i].vvert_v_period;
-        memcpy(ephyrFormats[i].component_order, format[i].vcomp_order, 32);
-        ephyrFormats[i].scanline_order = format[i].vscanline_order;
-    }
-    *a_formats = ephyrFormats;
-
-    free(reply);
-    return TRUE;
-}
-
-Bool
 ephyrHostXVQueryBestSize(int a_port_id,
                          Bool a_motion,
                          unsigned int a_frame_w,
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.h b/hw/kdrive/ephyr/ephyrhostvideo.h
index 0c1f1da..080caa8 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.h
+++ b/hw/kdrive/ephyr/ephyrhostvideo.h
@@ -31,48 +31,11 @@
 #include <xcb/xv.h>
 #include <X11/Xdefs.h>
 
-typedef struct _EphyrHostImageFormat {
-    int id;                     /* Unique descriptor for the format */
-    int type;                   /* XvRGB, XvYUV */
-    int byte_order;             /* LSBFirst, MSBFirst */
-    char guid[16];              /* Globally Unique IDentifier */
-    int bits_per_pixel;
-    int format;                 /* XvPacked, XvPlanar */
-    int num_planes;
-
-    /* for RGB formats only */
-    int depth;
-    unsigned int red_mask;
-    unsigned int green_mask;
-    unsigned int blue_mask;
-
-    /* for YUV formats only */
-    unsigned int y_sample_bits;
-    unsigned int u_sample_bits;
-    unsigned int v_sample_bits;
-    unsigned int horz_y_period;
-    unsigned int horz_u_period;
-    unsigned int horz_v_period;
-    unsigned int vert_y_period;
-    unsigned int vert_u_period;
-    unsigned int vert_v_period;
-    char component_order[32];   /* eg. UYVY */
-    int scanline_order;         /* XvTopToBottom, XvBottomToTop */
-} EphyrHostImageFormat;
-
 typedef struct {
     unsigned short x1, y1, x2, y2;
 } EphyrHostBox;
 
 /*
- * image format
- */
-
-Bool ephyrHostXVQueryImageFormats(int a_port_id,
-                                  EphyrHostImageFormat ** a_formats,
-                                  int *a_num_format);
-
-/*
  *size query
  */
 Bool ephyrHostXVQueryBestSize(int a_port_id,
diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c
index eeddc4f..46a0ca3 100644
--- a/hw/kdrive/ephyr/ephyrvideo.c
+++ b/hw/kdrive/ephyr/ephyrvideo.c
@@ -420,13 +420,65 @@ translate_xv_attributes(KdVideoAdaptorPtr adaptor,
 }
 
 static Bool
+translate_xv_image_formats(KdVideoAdaptorPtr adaptor,
+                           xcb_xv_adaptor_info_t *host_adaptor)
+{
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    int i = 0;
+    xcb_xv_list_image_formats_cookie_t cookie =
+        xcb_xv_list_image_formats(conn, host_adaptor->base_id);
+    xcb_xv_list_image_formats_reply_t *reply =
+        xcb_xv_list_image_formats_reply(conn, cookie, NULL);
+    xcb_xv_image_format_info_t *formats;
+
+    if (!reply)
+        return FALSE;
+
+    adaptor->nImages = reply->num_formats;
+    adaptor->pImages = calloc(reply->num_formats, sizeof(KdImageRec));
+    if (!adaptor->pImages) {
+        free(reply);
+        return FALSE;
+    }
+
+    formats = xcb_xv_list_image_formats_format(reply);
+    for (i = 0; i < reply->num_formats; i++) {
+        KdImagePtr image = &adaptor->pImages[i];
+
+        image->id = formats[i].id;
+        image->type = formats[i].type;
+        image->byte_order = formats[i].byte_order;
+        memcpy(image->guid, formats[i].guid, 16);
+        image->bits_per_pixel = formats[i].bpp;
+        image->format = formats[i].format;
+        image->num_planes = formats[i].num_planes;
+        image->depth = formats[i].depth;
+        image->red_mask = formats[i].red_mask;
+        image->green_mask = formats[i].green_mask;
+        image->blue_mask = formats[i].blue_mask;
+        image->y_sample_bits = formats[i].y_sample_bits;
+        image->u_sample_bits = formats[i].u_sample_bits;
+        image->v_sample_bits = formats[i].v_sample_bits;
+        image->horz_y_period = formats[i].vhorz_y_period;
+        image->horz_u_period = formats[i].vhorz_u_period;
+        image->horz_v_period = formats[i].vhorz_v_period;
+        image->vert_y_period = formats[i].vvert_y_period;
+        image->vert_u_period = formats[i].vvert_u_period;
+        image->vert_v_period = formats[i].vvert_v_period;
+        memcpy(image->component_order, formats[i].vcomp_order, 32);
+        image->scanline_order = formats[i].vscanline_order;
+    }
+
+    free(reply);
+    return TRUE;
+}
+
+static Bool
 ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
 {
     xcb_connection_t *conn = hostx_get_xcbconn();
     xcb_screen_t *xscreen = xcb_aux_get_screen(conn, hostx_get_screen());
-    EphyrHostImageFormat *image_formats = NULL;
-    int base_port_id = 0,
-        num_formats = 0, i = 0, port_priv_offset = 0;
+    int base_port_id = 0, i = 0, port_priv_offset = 0;
     Bool is_ok = FALSE;
     xcb_generic_error_t *e = NULL;
     xcb_xv_adaptor_info_iterator_t it;
@@ -535,14 +587,11 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
         }
         }
 
-        if (!ephyrHostXVQueryImageFormats(base_port_id,
-                                          &image_formats, &num_formats)) {
+        if (!translate_xv_image_formats(&a_this->adaptors[i], cur_host_adaptor)) {
             EPHYR_LOG_ERROR("failed to get image formats "
                             "for adaptor %d\n", i);
             continue;
         }
-        a_this->adaptors[i].pImages = (KdImagePtr) image_formats;
-        a_this->adaptors[i].nImages = num_formats;
 
         xcb_xv_adaptor_info_next(&it);
     }
commit 1dcc28bcb402d7286d18b41b469062a5c176d7eb
Author: Eric Anholt <eric at anholt.net>
Date:   Thu Aug 22 17:00:41 2013 -0700

    ephyr: Remove the host/server split for video encodings.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyrhostvideo.c b/hw/kdrive/ephyr/ephyrhostvideo.c
index 82a40a0..e91cb25 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.c
+++ b/hw/kdrive/ephyr/ephyrhostvideo.c
@@ -44,58 +44,6 @@
 #endif /*FALSE*/
 
 Bool
-ephyrHostXVQueryEncodings(int a_port_id,
-                          EphyrHostEncoding ** a_encodings,
-                          unsigned int *a_num_encodings)
-{
-    EphyrHostEncoding *encodings = NULL;
-    xcb_xv_encoding_info_iterator_t encoding_info;
-    xcb_xv_query_encodings_cookie_t cookie;
-    xcb_xv_query_encodings_reply_t *reply;
-    unsigned int num_encodings = 0, i;
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_encodings && a_num_encodings, FALSE);
-
-    cookie = xcb_xv_query_encodings(hostx_get_xcbconn(), a_port_id);
-    reply = xcb_xv_query_encodings_reply(hostx_get_xcbconn(), cookie, NULL);
-    if (!reply)
-        return FALSE;
-    num_encodings = reply->num_encodings;
-    encoding_info = xcb_xv_query_encodings_info_iterator(reply);
-    if (num_encodings) {
-        encodings = calloc(num_encodings, sizeof (EphyrHostEncoding));
-        for (i=0; i<num_encodings; i++, xcb_xv_encoding_info_next(&encoding_info)) {
-            encodings[i].id = encoding_info.data->encoding;
-            encodings[i].name = malloc(encoding_info.data->name_size + 1);
-	    memcpy(encodings[i].name, xcb_xv_encoding_info_name(encoding_info.data), encoding_info.data->name_size);
-	    encodings[i].name[encoding_info.data->name_size] = '\0';
-            encodings[i].width = encoding_info.data->width;
-            encodings[i].height = encoding_info.data->height;
-            encodings[i].rate.numerator = encoding_info.data->rate.numerator;
-            encodings[i].rate.denominator = encoding_info.data->rate.denominator;
-        }
-    }
-    free(reply);
-    *a_encodings = encodings;
-    *a_num_encodings = num_encodings;
-
-    return TRUE;
-}
-
-void
-ephyrHostEncodingsDelete(EphyrHostEncoding * a_encodings, int a_num_encodings)
-{
-    int i = 0;
-
-    if (!a_encodings)
-        return;
-    for (i = 0; i < a_num_encodings; i++) {
-        free(a_encodings[i].name);
-        a_encodings[i].name = NULL;
-    }
-    free(a_encodings);
-}
-Bool
 ephyrHostXVQueryImageFormats(int a_port_id,
                              EphyrHostImageFormat ** a_formats,
                              int *a_num_format)
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.h b/hw/kdrive/ephyr/ephyrhostvideo.h
index d37af00..0c1f1da 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.h
+++ b/hw/kdrive/ephyr/ephyrhostvideo.h
@@ -31,18 +31,6 @@
 #include <xcb/xv.h>
 #include <X11/Xdefs.h>
 
-typedef struct _EphyrHostRational {
-    int numerator;
-    int denominator;
-} EphyrHostRational;
-
-typedef struct _EphyrHostEncoding {
-    int id;
-    char *name;
-    unsigned short width, height;
-    EphyrHostRational rate;
-} EphyrHostEncoding;
-
 typedef struct _EphyrHostImageFormat {
     int id;                     /* Unique descriptor for the format */
     int type;                   /* XvRGB, XvYUV */
@@ -77,16 +65,6 @@ typedef struct {
 } EphyrHostBox;
 
 /*
- * encoding
- */
-Bool ephyrHostXVQueryEncodings(int a_port_id,
-                               EphyrHostEncoding ** a_encodings,
-                               unsigned int *a_num_encodings);
-
-void ephyrHostEncodingsDelete(EphyrHostEncoding * a_encodings,
-                              int a_num_encodings);
-
-/*
  * image format
  */
 
diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c
index 2b37674..eeddc4f 100644
--- a/hw/kdrive/ephyr/ephyrvideo.c
+++ b/hw/kdrive/ephyr/ephyrvideo.c
@@ -332,24 +332,47 @@ ephyrXVPrivDelete(EphyrXVPriv * a_this)
     EPHYR_LOG("leave\n");
 }
 
-static KdVideoEncodingPtr
-videoEncodingDup(EphyrHostEncoding * a_encodings, int a_num_encodings)
+static Bool
+translate_video_encodings(KdVideoAdaptorPtr adaptor,
+                          xcb_xv_adaptor_info_t *host_adaptor)
 {
-    KdVideoEncodingPtr result = NULL;
-    int i = 0;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    int i;
+    xcb_xv_query_encodings_cookie_t cookie;
+    xcb_xv_query_encodings_reply_t *reply;
+    xcb_xv_encoding_info_iterator_t encoding_it;
 
-    EPHYR_RETURN_VAL_IF_FAIL(a_encodings && a_num_encodings, NULL);
+    cookie = xcb_xv_query_encodings(conn, host_adaptor->base_id);
+    reply = xcb_xv_query_encodings_reply(conn, cookie, NULL);
+    if (!reply)
+        return FALSE;
 
-    result = calloc(a_num_encodings, sizeof(KdVideoEncodingRec));
-    for (i = 0; i < a_num_encodings; i++) {
-        result[i].id = a_encodings[i].id;
-        result[i].name = strdup(a_encodings[i].name);
-        result[i].width = a_encodings[i].width;
-        result[i].height = a_encodings[i].height;
-        result[i].rate.numerator = a_encodings[i].rate.numerator;
-        result[i].rate.denominator = a_encodings[i].rate.denominator;
+    adaptor->nEncodings = reply->num_encodings;
+    adaptor->pEncodings = calloc(adaptor->nEncodings,
+                                  sizeof(*adaptor->pEncodings));
+    if (!adaptor->pEncodings) {
+        free(reply);
+        return FALSE;
     }
-    return result;
+
+    encoding_it = xcb_xv_query_encodings_info_iterator(reply);
+    for (i = 0; i < adaptor->nEncodings; i++) {
+        xcb_xv_encoding_info_t *encoding_info = encoding_it.data;
+        KdVideoEncodingPtr encoding = &adaptor->pEncodings[i];
+
+        encoding->id = encoding_info->encoding;
+        encoding->name = strndup(xcb_xv_encoding_info_name(encoding_info),
+                                 encoding_info->name_size);
+        encoding->width = encoding_info->width;
+        encoding->height = encoding_info->height;
+        encoding->rate.numerator = encoding_info->rate.numerator;
+        encoding->rate.denominator = encoding_info->rate.denominator;
+
+        xcb_xv_encoding_info_next(&encoding_it);
+    }
+
+    free(reply);
+    return TRUE;
 }
 
 static Bool
@@ -401,11 +424,9 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
 {
     xcb_connection_t *conn = hostx_get_xcbconn();
     xcb_screen_t *xscreen = xcb_aux_get_screen(conn, hostx_get_screen());
-    EphyrHostEncoding *encodings = NULL;
     EphyrHostImageFormat *image_formats = NULL;
     int base_port_id = 0,
         num_formats = 0, i = 0, port_priv_offset = 0;
-    unsigned num_encodings = 0;
     Bool is_ok = FALSE;
     xcb_generic_error_t *e = NULL;
     xcb_xv_adaptor_info_iterator_t it;
@@ -472,15 +493,12 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
         if (!s_base_port_id)
             s_base_port_id = base_port_id;
 
-        if (!ephyrHostXVQueryEncodings(base_port_id,
-                                       &encodings, &num_encodings)) {
+        if (!translate_video_encodings(&a_this->adaptors[i],
+                                       cur_host_adaptor)) {
             EPHYR_LOG_ERROR("failed to get encodings for port port id %d,"
                             " adaptors %d\n", base_port_id, i);
             continue;
         }
-        a_this->adaptors[i].nEncodings = num_encodings;
-        a_this->adaptors[i].pEncodings =
-            videoEncodingDup(encodings, num_encodings);
 
         a_this->adaptors[i].nFormats = cur_host_adaptor->num_formats;
         a_this->adaptors[i].pFormats =
@@ -531,10 +549,6 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
     is_ok = TRUE;
 
  out:
-    if (encodings) {
-        ephyrHostEncodingsDelete(encodings, num_encodings);
-        encodings = NULL;
-    }
     EPHYR_LOG("leave\n");
     return is_ok;
 }
commit 28a37757e11068b4594f4128a0d64c6bc9a53ee0
Author: Eric Anholt <eric at anholt.net>
Date:   Thu Aug 22 17:26:21 2013 -0700

    ephyr: Remove the host/server split for XV formats.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyrhostvideo.c b/hw/kdrive/ephyr/ephyrhostvideo.c
index c1b7a97..82a40a0 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.c
+++ b/hw/kdrive/ephyr/ephyrhostvideo.c
@@ -43,31 +43,6 @@
 #define FALSE 0
 #endif /*FALSE*/
 
-EphyrHostVideoFormat*
-ephyrHostXVAdaptorGetVideoFormats (const xcb_xv_adaptor_info_t *a_this,
-                                   int *a_nb_formats)
-{
-    EphyrHostVideoFormat *formats = NULL;
-    int nb_formats = 0, i = 0;
-    xcb_xv_format_t *format = xcb_xv_adaptor_info_formats(a_this);
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_this, NULL);
-
-    nb_formats = a_this->num_formats;
-    formats = calloc(nb_formats, sizeof(EphyrHostVideoFormat));
-    for (i = 0; i < nb_formats; i++) {
-        xcb_visualtype_t *visual =
-            xcb_aux_find_visual_by_id(
-                    xcb_aux_get_screen(hostx_get_xcbconn(), hostx_get_screen()),
-                    format[i].visual);
-        formats[i].depth = format[i].depth;
-        formats[i].visual_class = visual->_class;
-    }
-    if (a_nb_formats)
-        *a_nb_formats = nb_formats;
-    return formats;
-}
-
 Bool
 ephyrHostXVQueryEncodings(int a_port_id,
                           EphyrHostEncoding ** a_encodings,
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.h b/hw/kdrive/ephyr/ephyrhostvideo.h
index 6fa8f7a..d37af00 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.h
+++ b/hw/kdrive/ephyr/ephyrhostvideo.h
@@ -31,11 +31,6 @@
 #include <xcb/xv.h>
 #include <X11/Xdefs.h>
 
-typedef struct _EphyrHostVideoFormat {
-    char depth;
-    short visual_class;
-} EphyrHostVideoFormat;
-
 typedef struct _EphyrHostRational {
     int numerator;
     int denominator;
@@ -82,12 +77,6 @@ typedef struct {
 } EphyrHostBox;
 
 /*
- * host adaptor
- */
-EphyrHostVideoFormat *ephyrHostXVAdaptorGetVideoFormats
-    (const xcb_xv_adaptor_info_t *a_this, int *a_nb_formats);
-
-/*
  * encoding
  */
 Bool ephyrHostXVQueryEncodings(int a_port_id,
diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c
index 5904265..2b37674 100644
--- a/hw/kdrive/ephyr/ephyrvideo.c
+++ b/hw/kdrive/ephyr/ephyrvideo.c
@@ -401,10 +401,9 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
 {
     xcb_connection_t *conn = hostx_get_xcbconn();
     xcb_screen_t *xscreen = xcb_aux_get_screen(conn, hostx_get_screen());
-    EphyrHostVideoFormat *video_formats = NULL;
     EphyrHostEncoding *encodings = NULL;
     EphyrHostImageFormat *image_formats = NULL;
-    int num_video_formats = 0, base_port_id = 0,
+    int base_port_id = 0,
         num_formats = 0, i = 0, port_priv_offset = 0;
     unsigned num_encodings = 0;
     Bool is_ok = FALSE;
@@ -425,6 +424,7 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
             goto out;
         }
     }
+
     if (a_this->host_adaptors)
         a_this->num_adaptors = a_this->host_adaptors->num_adaptors;
     if (a_this->num_adaptors < 0) {
@@ -447,6 +447,7 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
     it = xcb_xv_query_adaptors_info_iterator(a_this->host_adaptors);
     for (i = 0; i < a_this->num_adaptors; i++) {
         xcb_xv_adaptor_info_t *cur_host_adaptor = it.data;
+        xcb_xv_format_t *format = xcb_xv_adaptor_info_formats(cur_host_adaptor);
         int j = 0;
 
         a_this->adaptors[i].nPorts = cur_host_adaptor->num_ports;
@@ -480,11 +481,18 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
         a_this->adaptors[i].nEncodings = num_encodings;
         a_this->adaptors[i].pEncodings =
             videoEncodingDup(encodings, num_encodings);
-        video_formats = (EphyrHostVideoFormat *)
-            ephyrHostXVAdaptorGetVideoFormats(cur_host_adaptor,
-                                              &num_video_formats);
-        a_this->adaptors[i].pFormats = (KdVideoFormatPtr) video_formats;
-        a_this->adaptors[i].nFormats = num_video_formats;
+
+        a_this->adaptors[i].nFormats = cur_host_adaptor->num_formats;
+        a_this->adaptors[i].pFormats =
+            calloc(cur_host_adaptor->num_formats,
+                   sizeof(*a_this->adaptors[i].pFormats));
+        for (j = 0; j < cur_host_adaptor->num_formats; j++) {
+            xcb_visualtype_t *visual =
+                xcb_aux_find_visual_by_id(xscreen, format[j].visual);
+            a_this->adaptors[i].pFormats[j].depth = format[j].depth;
+            a_this->adaptors[i].pFormats[j].class = visual->_class;
+        }
+
         a_this->adaptors[i].pPortPrivates =
             calloc(a_this->adaptors[i].nPorts,
                    sizeof(DevUnion) + sizeof(EphyrPortPriv));
commit 41134d393a37dd5b971b018a3888fbfea0b9c736
Author: Eric Anholt <eric at anholt.net>
Date:   Thu Aug 22 17:21:37 2013 -0700

    ephyr: Remove the host/server split for XV attributes.
    
    v2: Fix leaks of xcb replies (caught by Julien)
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyrhostvideo.c b/hw/kdrive/ephyr/ephyrhostvideo.c
index 7665b25..c1b7a97 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.c
+++ b/hw/kdrive/ephyr/ephyrhostvideo.c
@@ -120,30 +120,6 @@ ephyrHostEncodingsDelete(EphyrHostEncoding * a_encodings, int a_num_encodings)
     }
     free(a_encodings);
 }
-
-void
-ephyrHostAttributesDelete(xcb_xv_query_port_attributes_reply_t *a_attributes)
-{
-    free(a_attributes);
-}
-
-Bool
-ephyrHostXVQueryPortAttributes(int a_port_id,
-                               xcb_xv_query_port_attributes_reply_t **a_attributes)
-{
-    xcb_xv_query_port_attributes_cookie_t cookie;
-    xcb_xv_query_port_attributes_reply_t *reply;
-    xcb_connection_t *conn = hostx_get_xcbconn();
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_attributes, FALSE);
-
-    cookie = xcb_xv_query_port_attributes(conn, a_port_id);
-    reply = xcb_xv_query_port_attributes_reply(conn, cookie, NULL);
-    *a_attributes = reply;
-
-    return (reply != NULL);
-}
-
 Bool
 ephyrHostXVQueryImageFormats(int a_port_id,
                              EphyrHostImageFormat ** a_formats,
@@ -200,51 +176,6 @@ ephyrHostXVQueryImageFormats(int a_port_id,
 }
 
 Bool
-ephyrHostXVSetPortAttribute(int a_port_id, int a_atom, int a_attr_value)
-{
-    EPHYR_LOG("atom,value: (%d,%d)\n", a_atom, a_attr_value);
-
-    xcb_xv_set_port_attribute(hostx_get_xcbconn(),
-                              a_port_id,
-                              a_atom,
-                              a_attr_value);
-    xcb_flush(hostx_get_xcbconn());
-    EPHYR_LOG("leave\n");
-
-    return TRUE;
-}
-
-Bool
-ephyrHostXVGetPortAttribute(int a_port_id, int a_atom, int *a_attr_value)
-{
-    Bool ret = FALSE;
-    xcb_connection_t *conn = hostx_get_xcbconn();
-    xcb_xv_get_port_attribute_cookie_t cookie;
-    xcb_xv_get_port_attribute_reply_t *reply;
-    xcb_generic_error_t *e;
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_attr_value, FALSE);
-
-    EPHYR_LOG("enter, a_port_id: %d, a_atomid: %d\n", a_port_id, a_atom);
-
-    cookie = xcb_xv_get_port_attribute(conn, a_port_id, a_atom);
-    reply = xcb_xv_get_port_attribute_reply(conn, cookie, &e);
-    if (e) {
-        EPHYR_LOG_ERROR ("XvGetPortAttribute() failed: %d \n", e->error_code);
-        free(e);
-        goto out;
-    }
-    *a_attr_value = reply->value;
-    EPHYR_LOG("atom,value: (%d, %d)\n", a_atom, *a_attr_value);
-
-    ret = TRUE;
-
- out:
-    EPHYR_LOG("leave\n");
-    return ret;
-}
-
-Bool
 ephyrHostXVQueryBestSize(int a_port_id,
                          Bool a_motion,
                          unsigned int a_frame_w,
@@ -286,44 +217,6 @@ out:
 }
 
 Bool
-ephyrHostXVQueryImageAttributes(int a_port_id,
-                                int a_image_id /*image fourcc code */ ,
-                                unsigned short *a_width,
-                                unsigned short *a_height,
-                                int *a_image_size,
-                                int *a_pitches, int *a_offsets)
-{
-    xcb_connection_t *conn = hostx_get_xcbconn ();
-    xcb_xv_query_image_attributes_cookie_t cookie;
-    xcb_xv_query_image_attributes_reply_t *reply;
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_width, FALSE);
-    EPHYR_RETURN_VAL_IF_FAIL(a_height, FALSE);
-    EPHYR_RETURN_VAL_IF_FAIL(a_image_size, FALSE);
-
-    cookie = xcb_xv_query_image_attributes(conn,
-                                           a_port_id, a_image_id,
-                                           *a_width, *a_height);
-    reply = xcb_xv_query_image_attributes_reply(conn, cookie, NULL);
-    if (!reply)
-        return FALSE;
-    if (a_pitches && a_offsets) {
-        memcpy(a_pitches,
-               xcb_xv_query_image_attributes_pitches(reply),
-               reply->num_planes << 2);
-        memcpy(a_offsets,
-               xcb_xv_query_image_attributes_offsets(reply),
-               reply->num_planes << 2);
-    }
-    *a_width = reply->width;
-    *a_height = reply->height;
-    *a_image_size = reply->data_size;
-    free(reply);
-
-    return TRUE;
-}
-
-Bool
 ephyrHostGetAtom(const char *a_name, Bool a_create_if_not_exists, int *a_atom)
 {
     xcb_connection_t *conn = hostx_get_xcbconn();
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.h b/hw/kdrive/ephyr/ephyrhostvideo.h
index 7d2dbe2..6fa8f7a 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.h
+++ b/hw/kdrive/ephyr/ephyrhostvideo.h
@@ -98,25 +98,12 @@ void ephyrHostEncodingsDelete(EphyrHostEncoding * a_encodings,
                               int a_num_encodings);
 
 /*
- * attribute
- */
-Bool ephyrHostXVQueryPortAttributes(int a_port_id,
-                                    xcb_xv_query_port_attributes_reply_t **a_attributes);
-
-void ephyrHostAttributesDelete(xcb_xv_query_port_attributes_reply_t *a_attributes);
-
-/*
  * image format
  */
 
 Bool ephyrHostXVQueryImageFormats(int a_port_id,
                                   EphyrHostImageFormat ** a_formats,
                                   int *a_num_format);
-/*
- * Port Attribute Get/Set
- */
-Bool ephyrHostXVSetPortAttribute(int a_port_id, int a_atom, int a_attr_value);
-Bool ephyrHostXVGetPortAttribute(int a_port_id, int a_atom, int *a_attr_value);
 
 /*
  *size query
@@ -130,12 +117,6 @@ Bool ephyrHostXVQueryBestSize(int a_port_id,
                               unsigned int *a_actual_w,
                               unsigned int *a_actual_h);
 
-Bool ephyrHostXVQueryImageAttributes(int a_port_id,
-                                     int a_image_id /*image fourcc code */ ,
-                                     unsigned short *a_width,
-                                     unsigned short *a_height,
-                                     int *a_image_size,
-                                     int *a_pitches, int *a_offsets);
 /*
  * atom
  */
diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c
index be59886..5904265 100644
--- a/hw/kdrive/ephyr/ephyrvideo.c
+++ b/hw/kdrive/ephyr/ephyrvideo.c
@@ -352,32 +352,48 @@ videoEncodingDup(EphyrHostEncoding * a_encodings, int a_num_encodings)
     return result;
 }
 
-static KdAttributePtr
-portAttributesDup(const xcb_xv_query_port_attributes_reply_t *a_encodings)
+static Bool
+translate_xv_attributes(KdVideoAdaptorPtr adaptor,
+                        xcb_xv_adaptor_info_t *host_adaptor)
 {
+    xcb_connection_t *conn = hostx_get_xcbconn();
     int i = 0;
-    KdAttributePtr result = NULL;
     xcb_xv_attribute_info_iterator_t it;
+    xcb_xv_query_port_attributes_cookie_t cookie =
+        xcb_xv_query_port_attributes(conn, host_adaptor->base_id);
+    xcb_xv_query_port_attributes_reply_t *reply =
+        xcb_xv_query_port_attributes_reply(conn, cookie, NULL);
 
-    EPHYR_RETURN_VAL_IF_FAIL(a_encodings, NULL);
+    if (!reply)
+        return FALSE;
 
-    result = calloc(a_encodings->num_attributes, sizeof(KdAttributeRec));
-    if (!result) {
+    adaptor->nAttributes = reply->num_attributes;
+    adaptor->pAttributes = calloc(reply->num_attributes,
+                                  sizeof(*adaptor->pAttributes));
+    if (!adaptor->pAttributes) {
         EPHYR_LOG_ERROR("failed to allocate attributes\n");
-        return NULL;
+        free(reply);
+        return FALSE;
     }
-    it = xcb_xv_query_port_attributes_attributes_iterator(a_encodings);
-    for (i = 0;
-         i < a_encodings->num_attributes;
-         xcb_xv_attribute_info_next(&it), i++) {
-        result[i].flags = it.data->flags;
-        result[i].min_value = it.data->min;
-        result[i].max_value = it.data->max;
-        result[i].name = malloc(it.data->size + 1);
-	memcpy (result[i].name, xcb_xv_attribute_info_name(it.data), it.data->size);
-	result[i].name[it.data->size] = '\0';
+
+    it = xcb_xv_query_port_attributes_attributes_iterator(reply);
+    for (i = 0; i < reply->num_attributes; i++) {
+        KdAttributePtr attribute = &adaptor->pAttributes[i];
+
+        attribute->flags = it.data->flags;
+        attribute->min_value = it.data->min;
+        attribute->max_value = it.data->max;
+        attribute->name = strndup(xcb_xv_attribute_info_name(it.data),
+                                  it.data->size);
+
+        /* make sure atoms of attrs names are created in xephyr */
+        MakeAtom(xcb_xv_attribute_info_name(it.data), it.data->size, TRUE);
+
+        xcb_xv_attribute_info_next(&it);
     }
-    return result;
+
+    free(reply);
+    return TRUE;
 }
 
 static Bool
@@ -387,7 +403,6 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
     xcb_screen_t *xscreen = xcb_aux_get_screen(conn, hostx_get_screen());
     EphyrHostVideoFormat *video_formats = NULL;
     EphyrHostEncoding *encodings = NULL;
-    xcb_xv_query_port_attributes_reply_t *attributes = NULL;
     EphyrHostImageFormat *image_formats = NULL;
     int num_video_formats = 0, base_port_id = 0,
         num_formats = 0, i = 0, port_priv_offset = 0;
@@ -485,20 +500,15 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
             port_priv->xv_priv = a_this;
             a_this->adaptors[i].pPortPrivates[j].ptr = port_priv;
         }
-        if (!ephyrHostXVQueryPortAttributes(base_port_id, &attributes)) {
+
+        if (!translate_xv_attributes(&a_this->adaptors[i], cur_host_adaptor)) {
+        {
             EPHYR_LOG_ERROR("failed to get port attribute "
                             "for adaptor %d\n", i);
             continue;
         }
-        a_this->adaptors[i].pAttributes =
-            portAttributesDup(attributes);
-        a_this->adaptors[i].nAttributes = attributes->num_attributes;
-        /*make sure atoms of attrs names are created in xephyr */
-        for (j = 0; j < a_this->adaptors[i].nAttributes; j++) {
-            if (a_this->adaptors[i].pAttributes[j].name)
-                MakeAtom(a_this->adaptors[i].pAttributes[j].name,
-                         strlen(a_this->adaptors[i].pAttributes[j].name), TRUE);
         }
+
         if (!ephyrHostXVQueryImageFormats(base_port_id,
                                           &image_formats, &num_formats)) {
             EPHYR_LOG_ERROR("failed to get image formats "
@@ -517,10 +527,6 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
         ephyrHostEncodingsDelete(encodings, num_encodings);
         encodings = NULL;
     }
-    if (attributes) {
-        ephyrHostAttributesDelete(attributes);
-        attributes = NULL;
-    }
     EPHYR_LOG("leave\n");
     return is_ok;
 }
@@ -650,20 +656,27 @@ ephyrXVPrivGetImageBufSize(int a_port_id,
                            unsigned short a_width,
                            unsigned short a_height, int *a_size)
 {
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_xv_query_image_attributes_cookie_t cookie;
+    xcb_xv_query_image_attributes_reply_t *reply;
     Bool is_ok = FALSE;
-    unsigned short width = a_width, height = a_height;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_size, FALSE);
 
     EPHYR_LOG("enter\n");
 
-    if (!ephyrHostXVQueryImageAttributes(a_port_id, a_image_id,
-                                         &width, &height, a_size, NULL, NULL)) {
-        EPHYR_LOG_ERROR("failed to get image attributes\n");
+    cookie = xcb_xv_query_image_attributes(conn,
+                                           a_port_id, a_image_id,
+                                           a_width, a_height);
+    reply = xcb_xv_query_image_attributes_reply(conn, cookie, NULL);
+    if (!reply)
         goto out;
-    }
+
+    *a_size = reply->data_size;
     is_ok = TRUE;
 
+    free(reply);
+
  out:
     EPHYR_LOG("leave\n");
     return is_ok;
@@ -715,6 +728,7 @@ static int
 ephyrSetPortAttribute(KdScreenInfo * a_info,
                       Atom a_attr_name, int a_attr_value, pointer a_port_priv)
 {
+    xcb_connection_t *conn = hostx_get_xcbconn();
     int res = Success, host_atom = 0;
     EphyrPortPriv *port_priv = a_port_priv;
     Bool is_attr_valid = FALSE;
@@ -755,12 +769,9 @@ ephyrSetPortAttribute(KdScreenInfo * a_info,
          */
     }
 
-    if (!ephyrHostXVSetPortAttribute(port_priv->port_number,
-                                     host_atom, a_attr_value)) {
-        EPHYR_LOG_ERROR("failed to set port attribute\n");
-        res = BadMatch;
-        goto out;
-    }
+    xcb_xv_set_port_attribute(conn, port_priv->port_number,
+                              host_atom, a_attr_value);
+    xcb_flush(conn);
 
     res = Success;
  out:
@@ -772,8 +783,12 @@ static int
 ephyrGetPortAttribute(KdScreenInfo * a_screen_info,
                       Atom a_attr_name, int *a_attr_value, pointer a_port_priv)
 {
+    xcb_connection_t *conn = hostx_get_xcbconn();
     int res = Success, host_atom = 0;
     EphyrPortPriv *port_priv = a_port_priv;
+    xcb_generic_error_t *e;
+    xcb_xv_get_port_attribute_cookie_t cookie;
+    xcb_xv_get_port_attribute_reply_t *reply;
 
     EPHYR_RETURN_VAL_IF_FAIL(port_priv, BadMatch);
     EPHYR_RETURN_VAL_IF_FAIL(ValidAtom(a_attr_name), BadMatch);
@@ -788,12 +803,17 @@ ephyrGetPortAttribute(KdScreenInfo * a_screen_info,
         goto out;
     }
 
-    if (!ephyrHostXVGetPortAttribute(port_priv->port_number,
-                                     host_atom, a_attr_value)) {
-        EPHYR_LOG_ERROR("failed to get port attribute\n");
+    cookie = xcb_xv_get_port_attribute(conn, port_priv->port_number, host_atom);
+    reply = xcb_xv_get_port_attribute_reply(conn, cookie, &e);
+    if (e) {
+        EPHYR_LOG_ERROR ("XvGetPortAttribute() failed: %d \n", e->error_code);
+        free(e);
         res = BadMatch;
         goto out;
     }
+    *a_attr_value = reply->value;
+
+    free(reply);
 
     res = Success;
  out:
@@ -1130,6 +1150,9 @@ ephyrQueryImageAttributes(KdScreenInfo * a_info,
                           unsigned short *a_w,
                           unsigned short *a_h, int *a_pitches, int *a_offsets)
 {
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_xv_query_image_attributes_cookie_t cookie;
+    xcb_xv_query_image_attributes_reply_t *reply;
     int image_size = 0;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_w && a_h, FALSE);
@@ -1137,13 +1160,25 @@ ephyrQueryImageAttributes(KdScreenInfo * a_info,
     EPHYR_LOG("enter: dim (%dx%d), pitches: %p, offsets: %p\n",
               *a_w, *a_h, a_pitches, a_offsets);
 
-    if (!ephyrHostXVQueryImageAttributes(s_base_port_id,
-                                         a_id,
-                                         a_w, a_h,
-                                         &image_size, a_pitches, a_offsets)) {
-        EPHYR_LOG_ERROR("EphyrHostXVQueryImageAttributes() failed\n");
+    cookie = xcb_xv_query_image_attributes(conn,
+                                           s_base_port_id, a_id,
+                                           *a_w, *a_h);
+    reply = xcb_xv_query_image_attributes_reply(conn, cookie, NULL);
+    if (!reply)
         goto out;
+
+    *a_w = reply->width;
+    *a_h = reply->height;
+    if (a_pitches && a_offsets) {
+        memcpy(a_pitches, xcb_xv_query_image_attributes_pitches(reply),
+               reply->num_planes << 2);
+        memcpy(a_offsets, xcb_xv_query_image_attributes_offsets(reply),
+               reply->num_planes << 2);
     }
+    image_size = reply->data_size;
+
+    free(reply);
+
     EPHYR_LOG("image size: %d, dim (%dx%d)\n", image_size, *a_w, *a_h);
 
  out:
commit 1342a93c49beb6e4924534304119d57fa587ad0f
Author: Eric Anholt <eric at anholt.net>
Date:   Thu Aug 22 17:26:08 2013 -0700

    ephyr: Remove the host/server split for XV adaptors.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyrhostvideo.c b/hw/kdrive/ephyr/ephyrhostvideo.c
index 5c3eb05..7665b25 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.c
+++ b/hw/kdrive/ephyr/ephyrhostvideo.c
@@ -43,75 +43,6 @@
 #define FALSE 0
 #endif /*FALSE*/
 
-Bool
-ephyrHostXVQueryAdaptors (xcb_xv_query_adaptors_reply_t **a_adaptors)
-{
-    Bool is_ok = FALSE;
-    xcb_connection_t *conn = hostx_get_xcbconn();
-    xcb_xv_query_adaptors_cookie_t cookie;
-    xcb_xv_query_adaptors_reply_t *reply = NULL;
-    xcb_generic_error_t *e = NULL;
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_adaptors, FALSE);
-
-    EPHYR_LOG("enter\n");
-
-    cookie = xcb_xv_query_adaptors(conn,
-		    xcb_aux_get_screen(conn, hostx_get_screen())->root);
-    reply = xcb_xv_query_adaptors_reply(hostx_get_xcbconn(), cookie, &e);
-    if (e) {
-        EPHYR_LOG_ERROR ("failed to query host adaptors: %d\n", e->error_code);
-        goto out;
-    }
-    *a_adaptors = reply;
-    is_ok = TRUE;
-
-out:
-    EPHYR_LOG("leave\n");
-    free(e);
-    return is_ok;
-}
-
-xcb_xv_adaptor_info_t *
-ephyrHostXVAdaptorArrayAt(const xcb_xv_query_adaptors_reply_t *a_this,
-                          int a_index)
-{
-    int i;
-    xcb_xv_adaptor_info_iterator_t it;
-    EPHYR_RETURN_VAL_IF_FAIL(a_this, NULL);
-
-    it = xcb_xv_query_adaptors_info_iterator(a_this);
-    if (a_index >= a_this->num_adaptors)
-        return NULL;
-    for (i = 0; i < a_index; i++)
-        xcb_xv_adaptor_info_next(&it);
-
-    return it.data;
-}
-
-char
-ephyrHostXVAdaptorGetType(const xcb_xv_adaptor_info_t *a_this)
-{
-    EPHYR_RETURN_VAL_IF_FAIL(a_this, -1);
-    return a_this->type;
-}
-
-char *
-ephyrHostXVAdaptorGetName(const xcb_xv_adaptor_info_t *a_this)
-{
-    char *name;
-
-    EPHYR_RETURN_VAL_IF_FAIL(a_this, NULL);
-
-    name = malloc(a_this->name_size + 1);
-    if (!name)
-        return NULL;
-    memcpy(name, xcb_xv_adaptor_info_name(a_this), a_this->name_size);
-    name[a_this->name_size] = '\0';
-
-    return name;
-}
-
 EphyrHostVideoFormat*
 ephyrHostXVAdaptorGetVideoFormats (const xcb_xv_adaptor_info_t *a_this,
                                    int *a_nb_formats)
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.h b/hw/kdrive/ephyr/ephyrhostvideo.h
index 40a12ac..7d2dbe2 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.h
+++ b/hw/kdrive/ephyr/ephyrhostvideo.h
@@ -28,7 +28,6 @@
 #ifndef __EPHYRHOSTVIDEO_H__
 #define __EPHYRHOSTVIDEO_H__
 
-typedef struct _EphyrHostXVAdaptorArray EphyrHostXVAdaptorArray;
 #include <xcb/xv.h>
 #include <X11/Xdefs.h>
 
@@ -83,18 +82,8 @@ typedef struct {
 } EphyrHostBox;
 
 /*
- * host adaptor array
- */
-Bool ephyrHostXVQueryAdaptors(xcb_xv_query_adaptors_reply_t **a_adaptors);
-xcb_xv_adaptor_info_t* ephyrHostXVAdaptorArrayAt(const xcb_xv_query_adaptors_reply_t *a_this,
-                                                 int a_index);
-
-/*
  * host adaptor
  */
-
-char ephyrHostXVAdaptorGetType(const xcb_xv_adaptor_info_t *a_this);
-char* ephyrHostXVAdaptorGetName(const xcb_xv_adaptor_info_t *a_this);
 EphyrHostVideoFormat *ephyrHostXVAdaptorGetVideoFormats
     (const xcb_xv_adaptor_info_t *a_this, int *a_nb_formats);
 
diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c
index bf00694..be59886 100644
--- a/hw/kdrive/ephyr/ephyrvideo.c
+++ b/hw/kdrive/ephyr/ephyrvideo.c
@@ -31,6 +31,8 @@
 #endif
 #include <string.h>
 #include <X11/extensions/Xv.h>
+#include <xcb/xcb.h>
+#include <xcb/xcb_aux.h>
 #include "ephyrlog.h"
 #include "kdrive.h"
 #include "kxv.h"
@@ -381,7 +383,8 @@ portAttributesDup(const xcb_xv_query_port_attributes_reply_t *a_encodings)
 static Bool
 ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
 {
-    xcb_xv_adaptor_info_t *cur_host_adaptor = NULL;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_screen_t *xscreen = xcb_aux_get_screen(conn, hostx_get_screen());
     EphyrHostVideoFormat *video_formats = NULL;
     EphyrHostEncoding *encodings = NULL;
     xcb_xv_query_port_attributes_reply_t *attributes = NULL;
@@ -390,14 +393,22 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
         num_formats = 0, i = 0, port_priv_offset = 0;
     unsigned num_encodings = 0;
     Bool is_ok = FALSE;
+    xcb_generic_error_t *e = NULL;
+    xcb_xv_adaptor_info_iterator_t it;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_this, FALSE);
 
     EPHYR_LOG("enter\n");
 
-    if (!ephyrHostXVQueryAdaptors(&a_this->host_adaptors)) {
-        EPHYR_LOG_ERROR("failed to query host adaptors\n");
-        goto out;
+    {
+        xcb_xv_query_adaptors_cookie_t cookie =
+            xcb_xv_query_adaptors(conn, xscreen->root);
+        a_this->host_adaptors = xcb_xv_query_adaptors_reply(conn, cookie, &e);
+        if (e) {
+            free(e);
+            EPHYR_LOG_ERROR("failed to query host adaptors\n");
+            goto out;
+        }
     }
     if (a_this->host_adaptors)
         a_this->num_adaptors = a_this->host_adaptors->num_adaptors;
@@ -417,22 +428,24 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
             goto out;
         }
     }
+
+    it = xcb_xv_query_adaptors_info_iterator(a_this->host_adaptors);
     for (i = 0; i < a_this->num_adaptors; i++) {
+        xcb_xv_adaptor_info_t *cur_host_adaptor = it.data;
         int j = 0;
 
-        cur_host_adaptor = ephyrHostXVAdaptorArrayAt(a_this->host_adaptors, i);
-        if (!cur_host_adaptor)
-            continue;
         a_this->adaptors[i].nPorts = cur_host_adaptor->num_ports;
         if (a_this->adaptors[i].nPorts <= 0) {
             EPHYR_LOG_ERROR("Could not find any port of adaptor %d\n", i);
             continue;
         }
-        a_this->adaptors[i].type = ephyrHostXVAdaptorGetType(cur_host_adaptor);
+        a_this->adaptors[i].type = cur_host_adaptor->type;
         a_this->adaptors[i].type |= XvWindowMask;
         a_this->adaptors[i].flags =
             VIDEO_OVERLAID_IMAGES | VIDEO_CLIP_TO_VIEWPORT;
-        a_this->adaptors[i].name = ephyrHostXVAdaptorGetName(cur_host_adaptor);
+        a_this->adaptors[i].name =
+            strndup(xcb_xv_adaptor_info_name(cur_host_adaptor),
+                    cur_host_adaptor->name_size);
         if (!a_this->adaptors[i].name)
             a_this->adaptors[i].name = strdup("Xephyr Video Overlay");
         base_port_id = cur_host_adaptor->base_id;
@@ -494,6 +507,8 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
         }
         a_this->adaptors[i].pImages = (KdImagePtr) image_formats;
         a_this->adaptors[i].nImages = num_formats;
+
+        xcb_xv_adaptor_info_next(&it);
     }
     is_ok = TRUE;
 
@@ -514,13 +529,16 @@ static Bool
 ephyrXVPrivSetAdaptorsHooks(EphyrXVPriv * a_this)
 {
     int i = 0;
-    xcb_xv_adaptor_info_t *cur_host_adaptor = NULL;
+    xcb_xv_adaptor_info_iterator_t it;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_this, FALSE);
 
     EPHYR_LOG("enter\n");
 
+    it = xcb_xv_query_adaptors_info_iterator(a_this->host_adaptors);
     for (i = 0; i < a_this->num_adaptors; i++) {
+        xcb_xv_adaptor_info_t *cur_host_adaptor = it.data;
+
         a_this->adaptors[i].ReputImage = ephyrReputImage;
         a_this->adaptors[i].StopVideo = ephyrStopVideo;
         a_this->adaptors[i].SetPortAttribute = ephyrSetPortAttribute;
@@ -528,12 +546,6 @@ ephyrXVPrivSetAdaptorsHooks(EphyrXVPriv * a_this)
         a_this->adaptors[i].QueryBestSize = ephyrQueryBestSize;
         a_this->adaptors[i].QueryImageAttributes = ephyrQueryImageAttributes;
 
-        cur_host_adaptor = ephyrHostXVAdaptorArrayAt(a_this->host_adaptors, i);
-        if (!cur_host_adaptor) {
-            EPHYR_LOG_ERROR("failed to get host adaptor at index %d\n", i);
-            continue;
-        }
-
         if (adaptor_has_flags(cur_host_adaptor,
                               XCB_XV_TYPE_IMAGE_MASK | XCB_XV_TYPE_INPUT_MASK))
             a_this->adaptors[i].PutImage = ephyrPutImage;
commit fad79d2e3e53de4f25b3d1dd7accb558464a4a46
Author: Eric Anholt <eric at anholt.net>
Date:   Sun Aug 18 20:08:32 2013 +0200

    ephyr: Refactor XV adaptor feature detection.
    
    This obviously wanted a helper function beforehand, but even more so
    now that we have XCB.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyrhostvideo.c b/hw/kdrive/ephyr/ephyrhostvideo.c
index 9a5a3ba..5c3eb05 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.c
+++ b/hw/kdrive/ephyr/ephyrhostvideo.c
@@ -138,74 +138,6 @@ ephyrHostXVAdaptorGetVideoFormats (const xcb_xv_adaptor_info_t *a_this,
 }
 
 Bool
-ephyrHostXVAdaptorHasPutVideo (const xcb_xv_adaptor_info_t *a_this,
-                               Bool *a_result)
-{
-    EPHYR_RETURN_VAL_IF_FAIL(a_this && a_result, FALSE);
-
-    if ((a_this->type & (XCB_XV_TYPE_VIDEO_MASK | XCB_XV_TYPE_INPUT_MASK)) ==
-        (XCB_XV_TYPE_VIDEO_MASK | XCB_XV_TYPE_INPUT_MASK))
-        *a_result = TRUE;
-    else
-        *a_result = FALSE;
-    return TRUE;
-}
-
-Bool
-ephyrHostXVAdaptorHasGetVideo(const xcb_xv_adaptor_info_t *a_this,
-                              Bool *a_result)
-{
-    if ((a_this->type & (XCB_XV_TYPE_VIDEO_MASK | XCB_XV_TYPE_OUTPUT_MASK)) ==
-        (XCB_XV_TYPE_VIDEO_MASK | XCB_XV_TYPE_OUTPUT_MASK))
-        *a_result = TRUE;
-    else
-        *a_result = FALSE;
-    return TRUE;
-}
-
-Bool
-ephyrHostXVAdaptorHasPutStill(const xcb_xv_adaptor_info_t *a_this,
-                              Bool *a_result)
-{
-    EPHYR_RETURN_VAL_IF_FAIL(a_this && a_result, FALSE);
-
-    if ((a_this->type & (XCB_XV_TYPE_STILL_MASK | XCB_XV_TYPE_INPUT_MASK)) ==
-        (XCB_XV_TYPE_STILL_MASK | XCB_XV_TYPE_INPUT_MASK))
-        *a_result = TRUE;
-    else
-        *a_result = FALSE;
-    return TRUE;
-}
-
-Bool
-ephyrHostXVAdaptorHasGetStill(const xcb_xv_adaptor_info_t *a_this,
-                              Bool *a_result)
-{
-    EPHYR_RETURN_VAL_IF_FAIL(a_this && a_result, FALSE);
-
-    if ((a_this->type & (XCB_XV_TYPE_STILL_MASK | XCB_XV_TYPE_OUTPUT_MASK)) ==
-        (XCB_XV_TYPE_STILL_MASK | XCB_XV_TYPE_OUTPUT_MASK))
-        *a_result = TRUE;
-    else
-        *a_result = FALSE;
-    return TRUE;
-}
-
-Bool
-ephyrHostXVAdaptorHasPutImage(const xcb_xv_adaptor_info_t *a_this,
-                              Bool *a_result)
-{
-    EPHYR_RETURN_VAL_IF_FAIL(a_this && a_result, FALSE);
-
-    if ((a_this->type & (XCB_XV_TYPE_IMAGE_MASK | XCB_XV_TYPE_INPUT_MASK)) ==
-        (XCB_XV_TYPE_IMAGE_MASK | XCB_XV_TYPE_INPUT_MASK))
-        *a_result = TRUE;
-    else
-        *a_result = FALSE;
-    return TRUE;
-}
-
-Bool
 ephyrHostXVQueryEncodings(int a_port_id,
                           EphyrHostEncoding ** a_encodings,
                           unsigned int *a_num_encodings)
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.h b/hw/kdrive/ephyr/ephyrhostvideo.h
index 56a7359..40a12ac 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.h
+++ b/hw/kdrive/ephyr/ephyrhostvideo.h
@@ -98,17 +98,6 @@ char* ephyrHostXVAdaptorGetName(const xcb_xv_adaptor_info_t *a_this);
 EphyrHostVideoFormat *ephyrHostXVAdaptorGetVideoFormats
     (const xcb_xv_adaptor_info_t *a_this, int *a_nb_formats);
 
-Bool ephyrHostXVAdaptorHasPutVideo(const xcb_xv_adaptor_info_t *a_this,
-                                   Bool *a_result);
-Bool ephyrHostXVAdaptorHasGetVideo(const xcb_xv_adaptor_info_t *a_this,
-                                   Bool *a_result);
-Bool ephyrHostXVAdaptorHasPutStill(const xcb_xv_adaptor_info_t *a_this,
-                                   Bool *a_result);
-Bool ephyrHostXVAdaptorHasGetStill(const xcb_xv_adaptor_info_t *a_this,
-                                   Bool *a_result);
-Bool ephyrHostXVAdaptorHasPutImage(const xcb_xv_adaptor_info_t *a_this,
-                                   Bool *a_result);
-
 /*
  * encoding
  */
diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c
index 7d249d2..bf00694 100644
--- a/hw/kdrive/ephyr/ephyrvideo.c
+++ b/hw/kdrive/ephyr/ephyrvideo.c
@@ -170,6 +170,12 @@ static int s_base_port_id;
  * ************/
 
 static Bool
+adaptor_has_flags(const xcb_xv_adaptor_info_t *adaptor, uint32_t flags)
+{
+    return (adaptor->type & flags) == flags;
+}
+
+static Bool
 DoSimpleClip(BoxPtr a_dst_box, BoxPtr a_clipper, BoxPtr a_result)
 {
     BoxRec dstClippedBox;
@@ -508,7 +514,6 @@ static Bool
 ephyrXVPrivSetAdaptorsHooks(EphyrXVPriv * a_this)
 {
     int i = 0;
-    Bool has_it = FALSE;
     xcb_xv_adaptor_info_t *cur_host_adaptor = NULL;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_this, FALSE);
@@ -528,45 +533,26 @@ ephyrXVPrivSetAdaptorsHooks(EphyrXVPriv * a_this)
             EPHYR_LOG_ERROR("failed to get host adaptor at index %d\n", i);
             continue;
         }
-        has_it = FALSE;
-        if (!ephyrHostXVAdaptorHasPutImage(cur_host_adaptor, &has_it)) {
-            EPHYR_LOG_ERROR("error\n");
-        }
-        if (has_it) {
+
+        if (adaptor_has_flags(cur_host_adaptor,
+                              XCB_XV_TYPE_IMAGE_MASK | XCB_XV_TYPE_INPUT_MASK))
             a_this->adaptors[i].PutImage = ephyrPutImage;
-        }
 
-        has_it = FALSE;
-        if (!ephyrHostXVAdaptorHasPutVideo(cur_host_adaptor, &has_it)) {
-            EPHYR_LOG_ERROR("error\n");
-        }
-        if (has_it) {
+        if (adaptor_has_flags(cur_host_adaptor,
+                              XCB_XV_TYPE_VIDEO_MASK | XCB_XV_TYPE_INPUT_MASK))
             a_this->adaptors[i].PutVideo = ephyrPutVideo;
-        }
 
-        has_it = FALSE;
-        if (!ephyrHostXVAdaptorHasGetVideo(cur_host_adaptor, &has_it)) {
-            EPHYR_LOG_ERROR("error\n");
-        }
-        if (has_it) {
+        if (adaptor_has_flags(cur_host_adaptor,
+                              XCB_XV_TYPE_VIDEO_MASK | XCB_XV_TYPE_OUTPUT_MASK))
             a_this->adaptors[i].GetVideo = ephyrGetVideo;
-        }
 
-        has_it = FALSE;
-        if (!ephyrHostXVAdaptorHasPutStill(cur_host_adaptor, &has_it)) {
-            EPHYR_LOG_ERROR("error\n");
-        }
-        if (has_it) {
+        if (adaptor_has_flags(cur_host_adaptor,
+                              XCB_XV_TYPE_STILL_MASK | XCB_XV_TYPE_INPUT_MASK))
             a_this->adaptors[i].PutStill = ephyrPutStill;
-        }
 
-        has_it = FALSE;
-        if (!ephyrHostXVAdaptorHasGetStill(cur_host_adaptor, &has_it)) {
-            EPHYR_LOG_ERROR("error\n");
-        }
-        if (has_it) {
+        if (adaptor_has_flags(cur_host_adaptor,
+                              XCB_XV_TYPE_STILL_MASK | XCB_XV_TYPE_OUTPUT_MASK))
             a_this->adaptors[i].GetStill = ephyrGetStill;
-        }
     }
     EPHYR_LOG("leave\n");
     return TRUE;
commit 7a9c311add62026972419ef0b04a55680072bfeb
Author: Eric Anholt <eric at anholt.net>
Date:   Sun Aug 18 20:02:53 2013 +0200

    ephyr: Remove some pointless indirection in the XV code.
    
    Now that we have XCB on the server side, we don't need to split these
    functions out.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyrhostvideo.c b/hw/kdrive/ephyr/ephyrhostvideo.c
index ea5fc9b..9a5a3ba 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.c
+++ b/hw/kdrive/ephyr/ephyrhostvideo.c
@@ -43,12 +43,6 @@
 #define FALSE 0
 #endif /*FALSE*/
 
-
-void
-ephyrHostXVInit(void)
-{
-}
-
 Bool
 ephyrHostXVQueryAdaptors (xcb_xv_query_adaptors_reply_t **a_adaptors)
 {
@@ -78,19 +72,6 @@ out:
     return is_ok;
 }
 
-void
-ephyrHostXVAdaptorArrayDelete (xcb_xv_query_adaptors_reply_t *a_adaptors)
-{
-    free (a_adaptors);
-}
-
-int
-ephyrHostXVAdaptorArrayGetSize (const xcb_xv_query_adaptors_reply_t *a_this)
-{
-    EPHYR_RETURN_VAL_IF_FAIL(a_this, -1);
-    return a_this->num_adaptors;
-}
-
 xcb_xv_adaptor_info_t *
 ephyrHostXVAdaptorArrayAt(const xcb_xv_query_adaptors_reply_t *a_this,
                           int a_index)
@@ -156,20 +137,6 @@ ephyrHostXVAdaptorGetVideoFormats (const xcb_xv_adaptor_info_t *a_this,
     return formats;
 }
 
-int
-ephyrHostXVAdaptorGetNbPorts(const xcb_xv_adaptor_info_t *a_this)
-{
-    EPHYR_RETURN_VAL_IF_FAIL(a_this, -1);
-
-    return a_this->num_ports;
-}
-
-int
-ephyrHostXVAdaptorGetFirstPortID (const xcb_xv_adaptor_info_t *a_this)
-{
-    return a_this->base_id;
-}
-
 Bool
 ephyrHostXVAdaptorHasPutVideo (const xcb_xv_adaptor_info_t *a_this,
                                Bool *a_result)
@@ -538,12 +505,6 @@ ephyrHostGetAtomName(int a_atom)
     return ret;
 }
 
-void
-ephyrHostFree(void *a_pointer)
-{
-    free(a_pointer);
-}
-
 Bool
 ephyrHostXVPutImage(int a_screen_num,
                     int a_port_id,
@@ -732,18 +693,3 @@ ephyrHostXVGetStill(int a_screen_num, int a_port_id,
 
     return TRUE;
 }
-
-Bool
-ephyrHostXVStopVideo(int a_screen_num, int a_port_id)
-{
-    xcb_connection_t *conn = hostx_get_xcbconn();
-
-    EPHYR_RETURN_VAL_IF_FAIL(conn, FALSE);
-
-    EPHYR_LOG("enter\n");
-
-    xcb_xv_stop_video(conn, a_port_id, hostx_get_window (a_screen_num));
-
-    EPHYR_LOG("leave\n");
-    return TRUE;
-}
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.h b/hw/kdrive/ephyr/ephyrhostvideo.h
index b946add..56a7359 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.h
+++ b/hw/kdrive/ephyr/ephyrhostvideo.h
@@ -82,16 +82,10 @@ typedef struct {
     unsigned short x1, y1, x2, y2;
 } EphyrHostBox;
 
-void ephyrHostXVInit(void);
-
-void ephyrHostFree(void *a_pointer);
-
 /*
  * host adaptor array
  */
 Bool ephyrHostXVQueryAdaptors(xcb_xv_query_adaptors_reply_t **a_adaptors);
-void ephyrHostXVAdaptorArrayDelete(xcb_xv_query_adaptors_reply_t *a_adaptors);
-int ephyrHostXVAdaptorArrayGetSize(const xcb_xv_query_adaptors_reply_t *a_this);
 xcb_xv_adaptor_info_t* ephyrHostXVAdaptorArrayAt(const xcb_xv_query_adaptors_reply_t *a_this,
                                                  int a_index);
 
@@ -103,8 +97,6 @@ char ephyrHostXVAdaptorGetType(const xcb_xv_adaptor_info_t *a_this);
 char* ephyrHostXVAdaptorGetName(const xcb_xv_adaptor_info_t *a_this);
 EphyrHostVideoFormat *ephyrHostXVAdaptorGetVideoFormats
     (const xcb_xv_adaptor_info_t *a_this, int *a_nb_formats);
-int ephyrHostXVAdaptorGetNbPorts(const xcb_xv_adaptor_info_t *a_this);
-int ephyrHostXVAdaptorGetFirstPortID(const xcb_xv_adaptor_info_t *a_this);
 
 Bool ephyrHostXVAdaptorHasPutVideo(const xcb_xv_adaptor_info_t *a_this,
                                    Bool *a_result);
@@ -216,9 +208,4 @@ Bool ephyrHostXVGetStill(int a_screen_num,
                          int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
                          int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h);
 
-/*
- * StopVideo
- */
-Bool ephyrHostXVStopVideo(int a_screen_num, int a_port_id);
-
 #endif /*__EPHYRHOSTVIDEO_H__*/
diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c
index 5813634..7d249d2 100644
--- a/hw/kdrive/ephyr/ephyrvideo.c
+++ b/hw/kdrive/ephyr/ephyrvideo.c
@@ -287,8 +287,6 @@ ephyrXVPrivNew(void)
         goto error;
     }
 
-    ephyrHostXVInit();
-
     if (!ephyrXVPrivQueryHostAdaptors(xv_priv)) {
         EPHYR_LOG_ERROR("failed to query the host x for xv properties\n");
         goto error;
@@ -317,7 +315,7 @@ ephyrXVPrivDelete(EphyrXVPriv * a_this)
     if (!a_this)
         return;
     if (a_this->host_adaptors) {
-        ephyrHostXVAdaptorArrayDelete(a_this->host_adaptors);
+        free(a_this->host_adaptors);
         a_this->host_adaptors = NULL;
     }
     free(a_this->adaptors);
@@ -396,8 +394,7 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
         goto out;
     }
     if (a_this->host_adaptors)
-        a_this->num_adaptors =
-            ephyrHostXVAdaptorArrayGetSize(a_this->host_adaptors);
+        a_this->num_adaptors = a_this->host_adaptors->num_adaptors;
     if (a_this->num_adaptors < 0) {
         EPHYR_LOG_ERROR("failed to get number of host adaptors\n");
         goto out;
@@ -420,8 +417,7 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
         cur_host_adaptor = ephyrHostXVAdaptorArrayAt(a_this->host_adaptors, i);
         if (!cur_host_adaptor)
             continue;
-        a_this->adaptors[i].nPorts =
-            ephyrHostXVAdaptorGetNbPorts(cur_host_adaptor);
+        a_this->adaptors[i].nPorts = cur_host_adaptor->num_ports;
         if (a_this->adaptors[i].nPorts <= 0) {
             EPHYR_LOG_ERROR("Could not find any port of adaptor %d\n", i);
             continue;
@@ -433,7 +429,7 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
         a_this->adaptors[i].name = ephyrHostXVAdaptorGetName(cur_host_adaptor);
         if (!a_this->adaptors[i].name)
             a_this->adaptors[i].name = strdup("Xephyr Video Overlay");
-        base_port_id = ephyrHostXVAdaptorGetFirstPortID(cur_host_adaptor);
+        base_port_id = cur_host_adaptor->base_id;
         if (base_port_id < 0) {
             EPHYR_LOG_ERROR("failed to get port id for adaptor %d\n", i);
             continue;
@@ -455,10 +451,6 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
                                               &num_video_formats);
         a_this->adaptors[i].pFormats = (KdVideoFormatPtr) video_formats;
         a_this->adaptors[i].nFormats = num_video_formats;
-        /* got a_this->adaptors[i].nPorts already
-           a_this->adaptors[i].nPorts =
-           ephyrHostXVAdaptorGetNbPorts (cur_host_adaptor) ;
-         */
         a_this->adaptors[i].pPortPrivates =
             calloc(a_this->adaptors[i].nPorts,
                    sizeof(DevUnion) + sizeof(EphyrPortPriv));
@@ -710,15 +702,14 @@ ephyrXVPrivSaveImageToPortPriv(EphyrPortPriv * a_port_priv,
 static void
 ephyrStopVideo(KdScreenInfo * a_info, pointer a_port_priv, Bool a_exit)
 {
+    xcb_connection_t *conn = hostx_get_xcbconn();
     EphyrPortPriv *port_priv = a_port_priv;
+    EphyrScrPriv *scrpriv = a_info->driver;
 
-    EPHYR_RETURN_IF_FAIL(a_info && a_info->pScreen);
     EPHYR_RETURN_IF_FAIL(port_priv);
 
     EPHYR_LOG("enter\n");
-    if (!ephyrHostXVStopVideo(a_info->pScreen->myNum, port_priv->port_number)) {
-        EPHYR_LOG_ERROR("XvStopVideo() failed\n");
-    }
+    xcb_xv_stop_video(conn, port_priv->port_number, scrpriv->win);
     EPHYR_LOG("leave\n");
 }
 
commit 46cf6bf5692ef751ec9d17ae2292565d4b13f14b
Author: Eric Anholt <eric at anholt.net>
Date:   Sun Aug 18 18:38:29 2013 +0200

    ephyr: Move event processing into ephyr.c.
    
    No more extra event structure to translate between hostx.c and
    ephyr.c!
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index 089c0e2..932327d 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -27,6 +27,9 @@
 #include <kdrive-config.h>
 #endif
 
+#include <xcb/xcb_keysyms.h>
+#include <X11/keysym.h>
+
 #include "ephyr.h"
 
 #include "inputstr.h"
@@ -799,13 +802,13 @@ ephyrCrossScreen(ScreenPtr pScreen, Bool entering)
 {
 }
 
-int ephyrCurScreen;             /*current event screen */
+ScreenPtr ephyrCursorScreen; /* screen containing the cursor */
 
 static void
 ephyrWarpCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
 {
     OsBlockSIGIO();
-    ephyrCurScreen = pScreen->myNum;
+    ephyrCursorScreen = pScreen;
     miPointerWarpCursor(inputInfo.pointer, pScreen, x, y);
 
     OsReleaseSIGIO();
@@ -853,123 +856,324 @@ ephyrExposePairedWindow(int a_remote)
 }
 #endif                          /* XF86DRI */
 
-void
-ephyrPoll(void)
+static KdScreenInfo *
+screen_from_window(Window w)
 {
-    EphyrHostXEvent ev;
-
-    while (hostx_get_event(&ev)) {
-        switch (ev.type) {
-        case EPHYR_EV_MOUSE_MOTION:
-            if (!ephyrMouse ||
-                !((EphyrPointerPrivate *) ephyrMouse->driverPrivate)->enabled) {
-                EPHYR_LOG("skipping mouse motion:%d\n", ephyrCurScreen);
-                continue;
-            }
-            {
-                if (ev.data.mouse_motion.screen >= 0
-                    && (ephyrCurScreen != ev.data.mouse_motion.screen)) {
-                    EPHYR_LOG("warping mouse cursor. "
-                              "cur_screen%d, motion_screen:%d\n",
-                              ephyrCurScreen, ev.data.mouse_motion.screen);
-                    if (ev.data.mouse_motion.screen >= 0) {
-                        ephyrWarpCursor
-                            (inputInfo.pointer,
-                             screenInfo.screens[ev.data.mouse_motion.screen],
-                             ev.data.mouse_motion.x, ev.data.mouse_motion.y);
-                    }
-                }
-                else {
-                    int x = 0, y = 0;
+    int i = 0;
+
+    for (i = 0; i < screenInfo.numScreens; i++) {
+        ScreenPtr pScreen = screenInfo.screens[i];
+        KdPrivScreenPtr kdscrpriv = KdGetScreenPriv(pScreen);
+        KdScreenInfo *screen = kdscrpriv->screen;
+        EphyrScrPriv *scrpriv = screen->driver;
+
+        if (scrpriv->win == w
+            || scrpriv->peer_win == w
+            || scrpriv->win_pre_existing == w) {
+            return screen;
+        }
+    }
+
+    return NULL;
+}
+
+static void
+ephyrProcessErrorEvent(xcb_generic_event_t *xev)
+{
+    xcb_generic_error_t *e = (xcb_generic_error_t *)xev;
+
+    FatalError("X11 error\n"
+               "Error code: %hhu\n"
+               "Sequence number: %hu\n"
+               "Major code: %hhu\tMinor code: %hu\n"
+               "Error value: %u\n",
+               e->error_code,
+               e->sequence,
+               e->major_code, e->minor_code,
+               e->resource_id);
+}
+
+static void
+ephyrProcessExpose(xcb_generic_event_t *xev)
+{
+    xcb_expose_event_t *expose = (xcb_expose_event_t *)xev;
+    KdScreenInfo *screen = screen_from_window(expose->window);
+    EphyrScrPriv *scrpriv = screen->driver;
 
+    /* Wait for the last expose event in a series of cliprects
+     * to actually paint our screen.
+     */
+    if (expose->count != 0)
+        return;
+
+    if (scrpriv) {
+        hostx_paint_rect(scrpriv->screen, 0, 0, 0, 0,
+                         scrpriv->win_width,
+                         scrpriv->win_height);
+    } else {
+        EPHYR_LOG_ERROR("failed to get host screen\n");
 #ifdef XF86DRI
-                    EphyrWindowPair *pair = NULL;
+        /*
+         * We only receive expose events when the expose event
+         * have be generated for a drawable that is a host X
+         * window managed by Xephyr. Host X windows managed by
+         * Xephyr exists for instance when Xephyr is asked to
+         * create a GL drawable in a DRI environment.
+         */
+        ephyrExposePairedWindow(expose->window);
+#endif                          /* XF86DRI */
+    }
+}
+
+static void
+ephyrProcessMouseMotion(xcb_generic_event_t *xev)
+{
+    xcb_motion_notify_event_t *motion = (xcb_motion_notify_event_t *)xev;
+    KdScreenInfo *screen = screen_from_window(motion->event);
+
+    if (!ephyrMouse ||
+        !((EphyrPointerPrivate *) ephyrMouse->driverPrivate)->enabled) {
+        EPHYR_LOG("skipping mouse motion:%d\n", screen->pScreen->myNum);
+        return;
+    }
+
+    if (ephyrCursorScreen != screen->pScreen) {
+        EPHYR_LOG("warping mouse cursor. "
+                  "cur_screen%d, motion_screen:%d\n",
+                  ephyrCursorScreen, screen->pScreen->myNum);
+        ephyrWarpCursor(inputInfo.pointer, screen->pScreen,
+                        motion->event_x, motion->event_y);
+    }
+    else {
+        int x = 0, y = 0;
+
+#ifdef XF86DRI
+        EphyrWindowPair *pair = NULL;
 #endif
-                    EPHYR_LOG("enqueuing mouse motion:%d\n", ephyrCurScreen);
-                    x = ev.data.mouse_motion.x;
-                    y = ev.data.mouse_motion.y;
-                    EPHYR_LOG("initial (x,y):(%d,%d)\n", x, y);
+        EPHYR_LOG("enqueuing mouse motion:%d\n", ephyrCurScreen);
+        x = motion->event_x;
+        y = motion->event_y;
+        EPHYR_LOG("initial (x,y):(%d,%d)\n", x, y);
 #ifdef XF86DRI
-                    EPHYR_LOG("is this window peered by a gl drawable ?\n");
-                    if (findWindowPairFromRemote(ev.data.mouse_motion.window,
-                                                 &pair)) {
-                        EPHYR_LOG("yes, it is peered\n");
-                        x += pair->local->drawable.x;
-                        y += pair->local->drawable.y;
-                    }
-                    else {
-                        EPHYR_LOG("no, it is not peered\n");
-                    }
-                    EPHYR_LOG("final (x,y):(%d,%d)\n", x, y);
+        EPHYR_LOG("is this window peered by a gl drawable ?\n");
+        if (findWindowPairFromRemote(motion->event, &pair)) {
+            EPHYR_LOG("yes, it is peered\n");
+            x += pair->local->drawable.x;
+            y += pair->local->drawable.y;
+        }
+        else {
+            EPHYR_LOG("no, it is not peered\n");
+        }
+        EPHYR_LOG("final (x,y):(%d,%d)\n", x, y);
 #endif
-                    KdEnqueuePointerEvent(ephyrMouse, mouseState, x, y, 0);
+        KdEnqueuePointerEvent(ephyrMouse, mouseState, x, y, 0);
+    }
+}
+
+static void
+ephyrProcessButtonPress(xcb_generic_event_t *xev)
+{
+    xcb_button_press_event_t *button = (xcb_button_press_event_t *)xev;
+
+    if (!ephyrMouse ||
+        !((EphyrPointerPrivate *) ephyrMouse->driverPrivate)->enabled) {
+        EPHYR_LOG("skipping mouse press:%d\n", ephyrCurScreen);
+        return;
+    }
+
+    ephyrUpdateModifierState(button->state);
+    /* This is a bit hacky. will break for button 5 ( defined as 0x10 )
+     * Check KD_BUTTON defines in kdrive.h
+     */
+    mouseState |= 1 << (button->detail - 1);
+
+    EPHYR_LOG("enqueuing mouse press:%d\n", ephyrCurScreen);
+    KdEnqueuePointerEvent(ephyrMouse, mouseState | KD_MOUSE_DELTA, 0, 0, 0);
+}
+
+static void
+ephyrProcessButtonRelease(xcb_generic_event_t *xev)
+{
+    xcb_button_press_event_t *button = (xcb_button_press_event_t *)xev;
+
+    if (!ephyrMouse ||
+        !((EphyrPointerPrivate *) ephyrMouse->driverPrivate)->enabled) {
+        return;
+    }
+
+    ephyrUpdateModifierState(button->state);
+    mouseState &= ~(1 << (button->detail - 1));
+
+    EPHYR_LOG("enqueuing mouse release:%d\n", ephyrCurScreen);
+    KdEnqueuePointerEvent(ephyrMouse, mouseState | KD_MOUSE_DELTA, 0, 0, 0);
+}
+
+static void
+ephyrProcessKeyPress(xcb_generic_event_t *xev)
+{
+    xcb_key_press_event_t *key = (xcb_key_press_event_t *)xev;
+
+    if (!ephyrKbd ||
+        !((EphyrKbdPrivate *) ephyrKbd->driverPrivate)->enabled) {
+        return;
+    }
+
+    ephyrUpdateModifierState(key->state);
+    KdEnqueueKeyboardEvent(ephyrKbd, key->detail, FALSE);
+}
+
+static void
+ephyrProcessKeyRelease(xcb_generic_event_t *xev)
+{
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_key_release_event_t *key = (xcb_key_release_event_t *)xev;
+    static xcb_key_symbols_t *keysyms;
+    static int grabbed_screen = -1;
+
+    if (!keysyms)
+        keysyms = xcb_key_symbols_alloc(conn);
+
+    if ((xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_L
+         || xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_R)
+        && (key->state & XCB_MOD_MASK_CONTROL)) {
+        KdScreenInfo *screen = screen_from_window(key->event);
+        EphyrScrPriv *scrpriv = screen->driver;
+
+        if (grabbed_screen != -1) {
+            xcb_ungrab_keyboard(conn, XCB_TIME_CURRENT_TIME);
+            xcb_ungrab_pointer(conn, XCB_TIME_CURRENT_TIME);
+            grabbed_screen = -1;
+            hostx_set_win_title(screen,
+                                "(ctrl+shift grabs mouse and keyboard)");
+        }
+        else {
+            /* Attempt grab */
+            xcb_grab_keyboard_cookie_t kbgrabc =
+                xcb_grab_keyboard(conn,
+                                  TRUE,
+                                  scrpriv->win,
+                                  XCB_TIME_CURRENT_TIME,
+                                  XCB_GRAB_MODE_ASYNC,
+                                  XCB_GRAB_MODE_ASYNC);
+            xcb_grab_keyboard_reply_t *kbgrabr;
+            xcb_grab_pointer_cookie_t pgrabc =
+                xcb_grab_pointer(conn,
+                                 TRUE,
+                                 scrpriv->win,
+                                 0,
+                                 XCB_GRAB_MODE_ASYNC,
+                                 XCB_GRAB_MODE_ASYNC,
+                                 scrpriv->win,
+                                 XCB_NONE,
+                                 XCB_TIME_CURRENT_TIME);
+            xcb_grab_pointer_reply_t *pgrabr;
+            kbgrabr = xcb_grab_keyboard_reply(conn, kbgrabc, NULL);
+            if (!kbgrabr || kbgrabr->status != XCB_GRAB_STATUS_SUCCESS) {
+                xcb_discard_reply(conn, pgrabc.sequence);
+                xcb_ungrab_pointer(conn, XCB_TIME_CURRENT_TIME);
+            } else {
+                pgrabr = xcb_grab_pointer_reply(conn, pgrabc, NULL);
+                if (!pgrabr || pgrabr->status != XCB_GRAB_STATUS_SUCCESS)
+                    {
+                        xcb_ungrab_keyboard(conn,
+                                            XCB_TIME_CURRENT_TIME);
+                    } else {
+                    grabbed_screen = scrpriv->mynum;
+                    hostx_set_win_title
+                        (screen,
+                         "(ctrl+shift releases mouse and keyboard)");
                 }
             }
-            break;
+        }
+    }
+
+    if (!ephyrKbd ||
+        !((EphyrKbdPrivate *) ephyrKbd->driverPrivate)->enabled) {
+        return;
+    }
+
+    /* Still send the release event even if above has happened server
+     * will get confused with just an up event.  Maybe it would be
+     * better to just block shift+ctrls getting to kdrive all
+     * together.
+     */
+    ephyrUpdateModifierState(key->state);
+    KdEnqueueKeyboardEvent(ephyrKbd, key->detail, TRUE);
+}
+
+static void
+ephyrProcessConfigureNotify(xcb_generic_event_t *xev)
+{
+    xcb_configure_notify_event_t *configure =
+        (xcb_configure_notify_event_t *)xev;
+    KdScreenInfo *screen = screen_from_window(configure->window);
+    EphyrScrPriv *scrpriv = screen->driver;
+
+    if (!scrpriv ||
+        (scrpriv->win_pre_existing == None && !EphyrWantResize)) {
+        return;
+    }
+
+#ifdef RANDR
+    ephyrResizeScreen(screen->pScreen, configure->width, configure->height);
+#endif /* RANDR */
+}
+
+void
+ephyrPoll(void)
+{
+    xcb_connection_t *conn = hostx_get_xcbconn();
 
-        case EPHYR_EV_MOUSE_PRESS:
-            if (!ephyrMouse ||
-                !((EphyrPointerPrivate *) ephyrMouse->driverPrivate)->enabled) {
-                EPHYR_LOG("skipping mouse press:%d\n", ephyrCurScreen);
-                continue;
+    while (TRUE) {
+        xcb_generic_event_t *xev = xcb_poll_for_event(conn);
+        if (!xev) {
+            /* If our XCB connection has died (for example, our window was
+             * closed), exit now.
+             */
+            if (xcb_connection_has_error(conn)) {
+                CloseWellKnownConnections();
+                OsCleanup(1);
+                exit(1);
             }
-            EPHYR_LOG("enqueuing mouse press:%d\n", ephyrCurScreen);
-            ephyrUpdateModifierState(ev.key_state);
-            mouseState |= ev.data.mouse_down.button_num;
-            KdEnqueuePointerEvent(ephyrMouse, mouseState | KD_MOUSE_DELTA, 0, 0,
-                                  0);
+
             break;
+        }
 
-        case EPHYR_EV_MOUSE_RELEASE:
-            if (!ephyrMouse ||
-                !((EphyrPointerPrivate *) ephyrMouse->driverPrivate)->enabled)
-                continue;
-            ephyrUpdateModifierState(ev.key_state);
-            mouseState &= ~ev.data.mouse_up.button_num;
-            EPHYR_LOG("enqueuing mouse release:%d\n", ephyrCurScreen);
-            KdEnqueuePointerEvent(ephyrMouse, mouseState | KD_MOUSE_DELTA, 0, 0,
-                                  0);
+        switch (xev->response_type & 0x7f) {
+        case 0:
+            ephyrProcessErrorEvent(xev);
             break;
 
-        case EPHYR_EV_KEY_PRESS:
-            if (!ephyrKbd ||
-                !((EphyrKbdPrivate *) ephyrKbd->driverPrivate)->enabled)
-                continue;
-            ephyrUpdateModifierState(ev.key_state);
-            KdEnqueueKeyboardEvent(ephyrKbd, ev.data.key_down.scancode, FALSE);
+        case XCB_EXPOSE:
+            ephyrProcessExpose(xev);
             break;
 
-        case EPHYR_EV_KEY_RELEASE:
-            if (!ephyrKbd ||
-                !((EphyrKbdPrivate *) ephyrKbd->driverPrivate)->enabled)
-                continue;
-            ephyrUpdateModifierState(ev.key_state);
-            KdEnqueueKeyboardEvent(ephyrKbd, ev.data.key_up.scancode, TRUE);
+        case XCB_MOTION_NOTIFY:
+            ephyrProcessMouseMotion(xev);
             break;
 
-#ifdef XF86DRI
-        case EPHYR_EV_EXPOSE:
-            /*
-             * We only receive expose events when the expose event have
-             * be generated for a drawable that is a host X window managed
-             * by Xephyr. Host X windows managed by Xephyr exists for instance
-             * when Xephyr is asked to create a GL drawable in a DRI environment.
-             */
-            ephyrExposePairedWindow(ev.data.expose.window);
+        case XCB_KEY_PRESS:
+            ephyrProcessKeyPress(xev);
             break;
-#endif                          /* XF86DRI */
 
-#ifdef RANDR
-        case EPHYR_EV_CONFIGURE:
-            ephyrResizeScreen(screenInfo.screens[ev.data.configure.screen],
-                              ev.data.configure.width,
-                              ev.data.configure.height);
+        case XCB_KEY_RELEASE:
+            ephyrProcessKeyRelease(xev);
+            break;
+
+        case XCB_BUTTON_PRESS:
+            ephyrProcessButtonPress(xev);
             break;
-#endif /* RANDR */
 
-        default:
+        case XCB_BUTTON_RELEASE:
+            ephyrProcessButtonRelease(xev);
+            break;
+
+        case XCB_CONFIGURE_NOTIFY:
+            ephyrProcessConfigureNotify(xev);
             break;
         }
+
+        free(xev);
     }
 }
 
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index c2754e3..b189ebd 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -853,231 +853,6 @@ hostx_load_keymap(void)
     ephyrKeySyms.maxKeyCode = max_keycode;
 }
 
-static KdScreenInfo *
-screen_from_window(Window w)
-{
-    int index = 0;
-
-    for (index = 0; index < HostX.n_screens; index++) {
-        EphyrScrPriv *scrpriv = HostX.screens[index]->driver;
-        if (scrpriv->win == w
-            || scrpriv->peer_win == w
-            || scrpriv->win_pre_existing == w) {
-            return HostX.screens[index];
-        }
-    }
-
-    return NULL;
-}
-
-int
-hostx_get_event(EphyrHostXEvent * ev)
-{
-    xcb_generic_event_t *xev;
-    static int grabbed_screen = -1;
-    static xcb_key_symbols_t *keysyms;
-
-    if (!keysyms)
-        keysyms = xcb_key_symbols_alloc(HostX.conn);
-
-    xev = xcb_poll_for_event(HostX.conn);
-    if (!xev) {
-        /* If our XCB connection has died (for example, our window was
-         * closed), exit now.
-         */
-        if (xcb_connection_has_error(HostX.conn)) {
-            CloseWellKnownConnections();
-            OsCleanup(1);
-            exit(1);
-        }
-
-        return 0;
-    }
-
-    switch (xev->response_type & 0x7f) {
-    case 0: { /* error */
-        xcb_generic_error_t *e = (xcb_generic_error_t *)xev;
-        fprintf(stderr, "X11 error\n"
-                "Error code: %hhu\n"
-                "Sequence number: %hu\n"
-                "Major code: %hhu\tMinor code: %hu\n"
-                "Error value: %u\n",
-                e->error_code,
-                e->sequence,
-                e->major_code, e->minor_code,
-                e->resource_id);
-        free(xev);
-        exit(1);
-    }
-
-    case XCB_EXPOSE: {
-        xcb_expose_event_t *expose = (xcb_expose_event_t *)xev;
-        KdScreenInfo *screen = screen_from_window(expose->window);
-        EphyrScrPriv *scrpriv = screen->driver;
-
-        /* Wait for the last expose event in a series of cliprects
-         * to actually paint our screen.
-         */
-        if (expose->count != 0)
-            break;
-
-        if (scrpriv) {
-            hostx_paint_rect(screen, 0, 0, 0, 0,
-                             scrpriv->win_width,
-                             scrpriv->win_height);
-        }
-        else {
-            EPHYR_LOG_ERROR("failed to get host screen\n");
-            ev->type = EPHYR_EV_EXPOSE;
-            ev->data.expose.window = expose->window;
-            free(xev);
-            return 1;
-        }
-        return 0;
-    }
-
-    case XCB_MOTION_NOTIFY: {
-        xcb_motion_notify_event_t *motion = (xcb_motion_notify_event_t *)xev;
-        KdScreenInfo *screen = screen_from_window(motion->event);
-        EphyrScrPriv *scrpriv = screen->driver;
-
-        ev->type = EPHYR_EV_MOUSE_MOTION;
-        ev->data.mouse_motion.x = motion->event_x;
-        ev->data.mouse_motion.y = motion->event_y;
-        ev->data.mouse_motion.window = motion->event;
-        ev->data.mouse_motion.screen = scrpriv ? scrpriv->mynum : -1;
-        free(xev);
-        return 1;
-    }
-
-    case XCB_BUTTON_PRESS: {
-        xcb_button_press_event_t *button = (xcb_button_press_event_t *)xev;
-        ev->type = EPHYR_EV_MOUSE_PRESS;
-        ev->key_state = button->state;
-        /* 
-         * This is a bit hacky. will break for button 5 ( defined as 0x10 )
-         * Check KD_BUTTON defines in kdrive.h 
-         */
-        ev->data.mouse_down.button_num = 1 << (button->detail - 1);
-        free(xev);
-        return 1;
-    }
-
-    case XCB_BUTTON_RELEASE: {
-        xcb_button_release_event_t *button = (xcb_button_release_event_t *)xev;
-        ev->type = EPHYR_EV_MOUSE_RELEASE;
-        ev->key_state = button->state;
-        ev->data.mouse_up.button_num = 1 << (button->detail-1);
-        free(xev);
-        return 1;
-    }
-
-    case XCB_KEY_PRESS: {
-        xcb_key_press_event_t *key = (xcb_key_press_event_t *)xev;
-        ev->type = EPHYR_EV_KEY_PRESS;
-        ev->key_state = key->state;
-        ev->data.key_down.scancode = key->detail;
-        free(xev);
-        return 1;
-    }
-
-    case XCB_KEY_RELEASE: {
-        xcb_key_release_event_t *key = (xcb_key_release_event_t *)xev;
-        if ((xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_L
-             || xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_R)
-            && (key->state & XCB_MOD_MASK_CONTROL)) {
-            KdScreenInfo *screen = screen_from_window(key->event);
-            EphyrScrPriv *scrpriv = screen->driver;
-
-            if (grabbed_screen != -1) {
-                xcb_ungrab_keyboard(HostX.conn, XCB_TIME_CURRENT_TIME);
-                xcb_ungrab_pointer(HostX.conn, XCB_TIME_CURRENT_TIME);
-                grabbed_screen = -1;
-                hostx_set_win_title(screen,
-                                    "(ctrl+shift grabs mouse and keyboard)");
-            }
-            else {
-                /* Attempt grab */
-                xcb_grab_keyboard_cookie_t kbgrabc =
-                    xcb_grab_keyboard(HostX.conn,
-                                      TRUE,
-                                      scrpriv->win,
-                                      XCB_TIME_CURRENT_TIME,
-                                      XCB_GRAB_MODE_ASYNC,
-                                      XCB_GRAB_MODE_ASYNC);
-                xcb_grab_keyboard_reply_t *kbgrabr;
-                xcb_grab_pointer_cookie_t pgrabc =
-                    xcb_grab_pointer(HostX.conn,
-                                     TRUE,
-                                     scrpriv->win,
-                                     0,
-                                     XCB_GRAB_MODE_ASYNC,
-                                     XCB_GRAB_MODE_ASYNC,
-                                     scrpriv->win,
-                                     XCB_NONE,
-                                     XCB_TIME_CURRENT_TIME);
-                xcb_grab_pointer_reply_t *pgrabr;
-                kbgrabr = xcb_grab_keyboard_reply(HostX.conn, kbgrabc, NULL);
-                if (!kbgrabr || kbgrabr->status != XCB_GRAB_STATUS_SUCCESS) {
-                    xcb_discard_reply(HostX.conn, pgrabc.sequence);
-                    xcb_ungrab_pointer(HostX.conn, XCB_TIME_CURRENT_TIME);
-                } else {
-                    pgrabr = xcb_grab_pointer_reply(HostX.conn, pgrabc, NULL);
-                    if (!pgrabr || pgrabr->status != XCB_GRAB_STATUS_SUCCESS)
-                        {
-                            xcb_ungrab_keyboard(HostX.conn,
-                                                XCB_TIME_CURRENT_TIME);
-                        } else {
-                        grabbed_screen = scrpriv->mynum;
-                        hostx_set_win_title
-                            (screen,
-                             "(ctrl+shift releases mouse and keyboard)");
-                    }
-                }
-            }
-        }
-
-        /* Still send the release event even if above has happened
-         * server will get confused with just an up event. 
-         * Maybe it would be better to just block shift+ctrls getting to
-         * kdrive all togeather. 
-         */
-        ev->type = EPHYR_EV_KEY_RELEASE;
-        ev->key_state = key->state;
-        ev->data.key_up.scancode = key->detail;
-        return 1;
-    }
-
-    case ConfigureNotify:
-        {
-            xcb_configure_notify_event_t *configure =
-                (xcb_configure_notify_event_t *)xev;
-            KdScreenInfo *screen = screen_from_window(configure->window);
-            EphyrScrPriv *scrpriv = screen->driver;
-
-            if (!scrpriv ||
-                (scrpriv->win_pre_existing == None && !EphyrWantResize)) {
-                free(xev);
-                return 0;
-            }
-
-            ev->type = EPHYR_EV_CONFIGURE;
-            ev->data.configure.width = configure->width;
-            ev->data.configure.height = configure->height;
-            ev->data.configure.window = configure->window;
-            ev->data.configure.screen = scrpriv->mynum;
-            free(xev);
-
-            return 1;
-        }
-    default:
-        break;
-
-    }
-    free(xev);
-    return 0;
-}
-
 xcb_connection_t *
 hostx_get_xcbconn(void)
 {
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index 8018f94..0323b33 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -41,65 +41,12 @@
 #endif
 
 typedef struct EphyrHostXVars EphyrHostXVars;
-typedef struct EphyrHostXEvent EphyrHostXEvent;
-typedef enum EphyrHostXEventType {
-    EPHYR_EV_MOUSE_MOTION,
-    EPHYR_EV_MOUSE_PRESS,
-    EPHYR_EV_MOUSE_RELEASE,
-    EPHYR_EV_KEY_PRESS,
-    EPHYR_EV_KEY_RELEASE,
-    EPHYR_EV_EXPOSE,
-    EPHYR_EV_CONFIGURE,
-} EphyrHostXEventType;
 
 typedef struct {
     int minKeyCode;
     int maxKeyCode;
 } EphyrKeySyms;
 
-struct EphyrHostXEvent {
-    EphyrHostXEventType type;
-
-    union {
-        struct mouse_motion {
-            int x;
-            int y;
-            int screen;
-            int window;
-        } mouse_motion;
-
-        struct mouse_down {
-            int button_num;
-        } mouse_down;
-
-        struct mouse_up {
-            int button_num;
-        } mouse_up;
-
-        struct key_up {
-            int scancode;
-        } key_up;
-
-        struct key_down {
-            int scancode;
-        } key_down;
-
-        struct expose {
-            int window;
-        } expose;
-
-        struct configure {
-            int width;
-            int height;
-            int screen;
-            int window;
-        } configure;
-
-    } data;
-
-    int key_state;
-};
-
 typedef struct {
     VisualID visualid;
     int screen;
@@ -199,9 +146,6 @@ hostx_paint_rect(KdScreenInfo *screen,
 void
  hostx_load_keymap(void);
 
-int
- hostx_get_event(EphyrHostXEvent * ev);
-
 xcb_connection_t *
 hostx_get_xcbconn(void);
 
commit 847c856effde482c13cdefcdca8176cee3bf67c4
Author: Eric Anholt <eric at anholt.net>
Date:   Sun Aug 18 17:28:08 2013 +0200

    ephyr: Move the host screen info into the kdrive screen private.
    
    We can include xcb bits from the same place as server headers, so
    there's no need to hide them any more.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index 003ef21..089c0e2 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -99,8 +99,9 @@ ephyrCardInit(KdCardInfo * card)
 }
 
 Bool
-ephyrScreenInitialize(KdScreenInfo * screen, EphyrScrPriv * scrpriv)
+ephyrScreenInitialize(KdScreenInfo *screen)
 {
+    EphyrScrPriv *scrpriv = screen->driver;
     int width = 640, height = 480;
     CARD32 redMask, greenMask, blueMask;
 
@@ -117,7 +118,7 @@ ephyrScreenInitialize(KdScreenInfo * screen, EphyrScrPriv * scrpriv)
         if (screen->fb.depth < hostx_get_depth()
             && (screen->fb.depth == 24 || screen->fb.depth == 16
                 || screen->fb.depth == 8)) {
-            hostx_set_server_depth(screen, screen->fb.depth);
+            scrpriv->server_depth = screen->fb.depth;
         }
         else
             ErrorF
@@ -180,27 +181,6 @@ ephyrScreenInitialize(KdScreenInfo * screen, EphyrScrPriv * scrpriv)
     return ephyrMapFramebuffer(screen);
 }
 
-Bool
-ephyrScreenInit(KdScreenInfo * screen)
-{
-    EphyrScrPriv *scrpriv;
-
-    scrpriv = calloc(1, sizeof(EphyrScrPriv));
-
-    if (!scrpriv)
-        return FALSE;
-
-    screen->driver = scrpriv;
-
-    if (!ephyrScreenInitialize(screen, scrpriv)) {
-        screen->driver = 0;
-        free(scrpriv);
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
 void *
 ephyrWindowLinear(ScreenPtr pScreen,
                   CARD32 row,
diff --git a/hw/kdrive/ephyr/ephyr.h b/hw/kdrive/ephyr/ephyr.h
index be910c1..73fdb59 100644
--- a/hw/kdrive/ephyr/ephyr.h
+++ b/hw/kdrive/ephyr/ephyr.h
@@ -29,6 +29,7 @@
 #include <unistd.h>
 #include <signal.h>
 #include <libgen.h>
+#include <xcb/xcb_image.h>
 
 #include "os.h"                 /* for OsSignal() */
 #include "kdrive.h"
@@ -61,10 +62,24 @@ typedef struct _ephyrFakexaPriv {
 } EphyrFakexaPriv;
 
 typedef struct _ephyrScrPriv {
+    /* ephyr server info */
     Rotation randr;
     Bool shadow;
     DamagePtr pDamage;
     EphyrFakexaPriv *fakexa;
+
+    /* Host X window info */
+    xcb_window_t win;
+    xcb_window_t win_pre_existing;    /* Set via -parent option like xnest */
+    xcb_window_t peer_win;            /* Used for GL; should be at most one */
+    xcb_image_t *ximg;
+    int win_width, win_height;
+    int server_depth;
+    unsigned char *fb_data;     /* only used when host bpp != server bpp */
+    xcb_shm_segment_info_t shminfo;
+
+    KdScreenInfo *screen;
+    int mynum;                  /* Screen number */
 } EphyrScrPriv;
 
 extern KdCardFuncs ephyrFuncs;
@@ -80,10 +95,7 @@ Bool
  ephyrCardInit(KdCardInfo * card);
 
 Bool
- ephyrScreenInit(KdScreenInfo * screen);
-
-Bool
- ephyrScreenInitialize(KdScreenInfo * screen, EphyrScrPriv * scrpriv);
+ephyrScreenInitialize(KdScreenInfo *screen);
 
 Bool
  ephyrInitScreen(ScreenPtr pScreen);
diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index 9a1dd7d..7812dbe 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -147,6 +147,9 @@ processScreenArg(const char *screen_size, char *parent_id)
 
         screen = KdScreenInfoAdd(card);
         KdParseScreen(screen, screen_size);
+        screen->driver = calloc(1, sizeof(EphyrScrPriv));
+        if (!screen->driver)
+            FatalError("Couldn't alloc screen private\n");
 
         if (parent_id) {
             p_id = strtol(parent_id, NULL, 0);
@@ -369,7 +372,7 @@ ephyrCursorEnable(ScreenPtr pScreen)
 
 KdCardFuncs ephyrFuncs = {
     ephyrCardInit,              /* cardinit */
-    ephyrScreenInit,            /* scrinit */
+    ephyrScreenInitialize,      /* scrinit */
     ephyrInitScreen,            /* initScreen */
     ephyrFinishInitScreen,      /* finishInitScreen */
     ephyrCreateResources,       /* createRes */
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 6d780cd..c2754e3 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -56,20 +56,6 @@
 #include "ephyrlog.h"
 #include "ephyr.h"
 
-struct EphyrHostScreen {
-    Window win;
-    Window win_pre_existing;    /* Set via -parent option like xnest */
-    Window peer_win;            /* Used for GL; should be at most one */
-    xcb_image_t    *ximg;
-    int win_width, win_height;
-    int server_depth;
-    unsigned char *fb_data;     /* only used when host bpp != server bpp */
-    xcb_shm_segment_info_t shminfo;
-
-    KdScreenInfo *screen;
-    int mynum;                  /* Screen number */
-};
-
 struct EphyrHostXVars {
     char *server_dpy_name;
     xcb_connection_t *conn;
@@ -83,7 +69,7 @@ struct EphyrHostXVars {
     Bool have_shm;
 
     int n_screens;
-    struct EphyrHostScreen *screens;
+    KdScreenInfo **screens;
 
     long damage_debug_msec;
 
@@ -111,29 +97,15 @@ static void
 
 #define host_depth_matches_server(_vars) (HostX.depth == (_vars)->server_depth)
 
-static struct EphyrHostScreen *
-host_screen_from_screen_info(KdScreenInfo *screen)
-{
-    int i;
-
-    for (i = 0; i < HostX.n_screens; i++) {
-        if (HostX.screens[i].screen == screen) {
-            return &HostX.screens[i];
-        }
-    }
-    return NULL;
-}
-
 int
 hostx_want_screen_size(KdScreenInfo *screen, int *width, int *height)
 {
-    struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
+    EphyrScrPriv *scrpriv = screen->driver;
 
-    if (host_screen &&
-        (host_screen->win_pre_existing != None ||
-         HostX.use_fullscreen == TRUE)) {
-        *width = host_screen->win_width;
-        *height = host_screen->win_height;
+    if (scrpriv && (scrpriv->win_pre_existing != None ||
+                    HostX.use_fullscreen == TRUE)) {
+        *width = scrpriv->win_width;
+        *height = scrpriv->win_height;
         return 1;
     }
 
@@ -143,15 +115,16 @@ hostx_want_screen_size(KdScreenInfo *screen, int *width, int *height)
 void
 hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num)
 {
+    EphyrScrPriv *scrpriv = screen->driver;
     int index = HostX.n_screens;
 
     HostX.n_screens += 1;
     HostX.screens = realloc(HostX.screens,
-                            HostX.n_screens * sizeof(struct EphyrHostScreen));
-    memset(&HostX.screens[index], 0, sizeof(struct EphyrHostScreen));
+                            HostX.n_screens * sizeof(HostX.screens[0]));
+    HostX.screens[index] = screen;
 
-    HostX.screens[index].screen = screen;
-    HostX.screens[index].win_pre_existing = win_id;
+    scrpriv->screen = screen;
+    scrpriv->win_pre_existing = win_id;
 }
 
 void
@@ -163,25 +136,25 @@ hostx_set_display_name(char *name)
 void
 hostx_set_screen_number(KdScreenInfo *screen, int number)
 {
-    struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
+    EphyrScrPriv *scrpriv = screen->driver;
 
-    if (host_screen) {
-        host_screen->mynum = number;
-        hostx_set_win_title(host_screen->screen, "");
+    if (scrpriv) {
+        scrpriv->mynum = number;
+        hostx_set_win_title(screen, "");
     }
 }
 
 void
 hostx_set_win_title(KdScreenInfo *screen, const char *extra_text)
 {
-    struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
+    EphyrScrPriv *scrpriv = screen->driver;
 
-    if (!host_screen)
+    if (!scrpriv)
         return;
 
     if (ephyrTitle) {
         xcb_icccm_set_wm_name(HostX.conn,
-                              host_screen->win,
+                              scrpriv->win,
                               XCB_ATOM_STRING,
                               8,
                               strlen(ephyrTitle),
@@ -193,10 +166,10 @@ hostx_set_win_title(KdScreenInfo *screen, const char *extra_text)
         memset(buf, 0, BUF_LEN + 1);
         snprintf(buf, BUF_LEN, "Xephyr on %s.%d %s",
                  HostX.server_dpy_name,
-                 host_screen->mynum, (extra_text != NULL) ? extra_text : "");
+                 scrpriv->mynum, (extra_text != NULL) ? extra_text : "");
 
         xcb_icccm_set_wm_name(HostX.conn,
-                              host_screen->win,
+                              scrpriv->win,
                               XCB_ATOM_STRING,
                               8,
                               strlen(buf),
@@ -219,9 +192,9 @@ hostx_use_host_cursor(void)
 int
 hostx_want_preexisting_window(KdScreenInfo *screen)
 {
-    struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
+    EphyrScrPriv *scrpriv = screen->driver;
 
-    if (host_screen && host_screen->win_pre_existing) {
+    if (scrpriv && scrpriv->win_pre_existing) {
         return 1;
     }
     else {
@@ -261,9 +234,10 @@ hostx_set_fullscreen_hint(void)
     free(reply);
 
     for (index = 0; index < HostX.n_screens; index++) {
+        EphyrScrPriv *scrpriv = HostX.screens[index]->driver;
         xcb_change_property(HostX.conn,
                             PropModeReplace,
-                            HostX.screens[index].win,
+                            scrpriv->win,
                             atom_WINDOW_STATE,
                             XCB_ATOM_ATOM,
                             32,
@@ -316,7 +290,7 @@ hostx_init(void)
     char *class_hint;
     size_t class_len;
     const xcb_query_extension_reply_t *shm_rep;
-    xcb_screen_t *screen;
+    xcb_screen_t *xscreen;
 
     attr =
         XCB_EVENT_MASK_BUTTON_PRESS
@@ -334,11 +308,11 @@ hostx_init(void)
         exit(1);
     }
 
-    screen = xcb_aux_get_screen(HostX.conn, HostX.screen);
-    HostX.winroot = screen->root;
+    xscreen = xcb_aux_get_screen(HostX.conn, HostX.screen);
+    HostX.winroot = xscreen->root;
     HostX.gc = xcb_generate_id(HostX.conn);
-    HostX.depth = screen->root_depth;
-    HostX.visual  = xcb_aux_find_visual_by_id(screen, screen->root_visual);
+    HostX.depth = xscreen->root_depth;
+    HostX.visual  = xcb_aux_find_visual_by_id(xscreen, xscreen->root_visual);
 
     xcb_create_gc(HostX.conn, HostX.gc, HostX.winroot, 0, NULL);
     cookie_WINDOW_STATE = xcb_intern_atom(HostX.conn, FALSE,
@@ -350,19 +324,21 @@ hostx_init(void)
                         "_NET_WM_STATE_FULLSCREEN");
 
     for (index = 0; index < HostX.n_screens; index++) {
-        struct EphyrHostScreen *host_screen = &HostX.screens[index];
+        KdScreenInfo *screen = HostX.screens[index];
+        EphyrScrPriv *scrpriv = screen->driver;
 
-        host_screen->win = xcb_generate_id(HostX.conn);
-        host_screen->server_depth = HostX.depth;
+        scrpriv->win = xcb_generate_id(HostX.conn);
+        scrpriv->server_depth = HostX.depth;
+        scrpriv->ximg = NULL;
 
-        if (host_screen->win_pre_existing != XCB_WINDOW_NONE) {
+        if (scrpriv->win_pre_existing != XCB_WINDOW_NONE) {
             xcb_get_geometry_reply_t *prewin_geom;
             xcb_get_geometry_cookie_t cookie;
             xcb_generic_error_t *e = NULL;
 
             /* Get screen size from existing window */
             cookie = xcb_get_geometry(HostX.conn,
-                                      host_screen->win_pre_existing);
+                                      scrpriv->win_pre_existing);
             prewin_geom = xcb_get_geometry_reply(HostX.conn, cookie, &e);
 
             if (e) {
@@ -372,18 +348,18 @@ hostx_init(void)
                 exit (1);
             }
 
-            host_screen->win_width  = prewin_geom->width;
-            host_screen->win_height = prewin_geom->height;
+            scrpriv->win_width  = prewin_geom->width;
+            scrpriv->win_height = prewin_geom->height;
 
             free(prewin_geom);
 
             xcb_create_window(HostX.conn,
                               XCB_COPY_FROM_PARENT,
-                              host_screen->win,
-                              host_screen->win_pre_existing,
+                              scrpriv->win,
+                              scrpriv->win_pre_existing,
                               0,0,
-                              host_screen->win_width,
-                              host_screen->win_height,
+                              scrpriv->win_width,
+                              scrpriv->win_height,
                               0,
                               XCB_WINDOW_CLASS_COPY_FROM_PARENT,
                               XCB_COPY_FROM_PARENT,
@@ -393,7 +369,7 @@ hostx_init(void)
         else {
             xcb_create_window(HostX.conn,
                               XCB_COPY_FROM_PARENT,
-                              host_screen->win,
+                              scrpriv->win,
                               HostX.winroot,
                               0,0,100,100, /* will resize */
                               0,
@@ -402,12 +378,12 @@ hostx_init(void)
                               XCB_CW_EVENT_MASK,
                               &attr);
 
-            hostx_set_win_title (host_screen->screen,
-                                 "(ctrl+shift grabs mouse and keyboard)");
+            hostx_set_win_title(screen,
+                                "(ctrl+shift grabs mouse and keyboard)");
 
             if (HostX.use_fullscreen) {
-                host_screen->win_width  = screen->width_in_pixels;
-                host_screen->win_height = screen->height_in_pixels;
+                scrpriv->win_width  = xscreen->width_in_pixels;
+                scrpriv->win_height = xscreen->height_in_pixels;
 
                 hostx_set_fullscreen_hint();
             }
@@ -422,7 +398,7 @@ hostx_init(void)
                 strcpy(class_hint + strlen(ephyrResName) + 1, "Xephyr");
                 xcb_change_property(HostX.conn,
                                     XCB_PROP_MODE_REPLACE,
-                                    host_screen->win,
+                                    scrpriv->win,
                                     XCB_ATOM_WM_CLASS,
                                     XCB_ATOM_STRING,
                                     8,
@@ -435,7 +411,7 @@ hostx_init(void)
 
     if (!xcb_aux_parse_color("red", &red, &green, &blue)) {
         xcb_lookup_color_cookie_t c =
-            xcb_lookup_color(HostX.conn, screen->default_colormap, 3, "red");
+            xcb_lookup_color(HostX.conn, xscreen->default_colormap, 3, "red");
         xcb_lookup_color_reply_t *reply =
             xcb_lookup_color_reply(HostX.conn, c, NULL);
         red = reply->exact_red;
@@ -446,7 +422,7 @@ hostx_init(void)
 
     {
         xcb_alloc_color_cookie_t c = xcb_alloc_color(HostX.conn,
-                                                     screen->default_colormap,
+                                                     xscreen->default_colormap,
                                                      red, green, blue);
         xcb_alloc_color_reply_t *r = xcb_alloc_color_reply(HostX.conn, c, NULL);
         red = r->red;
@@ -470,18 +446,17 @@ hostx_init(void)
                           0,0,0,
                           1,1);
         for (index = 0; index < HostX.n_screens; index++) {
+            KdScreenInfo *screen = HostX.screens[index];
+            EphyrScrPriv *scrpriv = screen->driver;
+
             xcb_change_window_attributes(HostX.conn,
-                                         HostX.screens[index].win,
+                                         scrpriv->win,
                                          XCB_CW_CURSOR,
                                          &empty_cursor);
         }
         xcb_free_pixmap(HostX.conn, cursor_pxm);
     }
 
-    for (index = 0; index < HostX.n_screens; index++) {
-        HostX.screens[index].ximg = NULL;
-    }
-
     /* Try to get share memory ximages for a little bit more speed */
     shm_rep = xcb_get_extension_data(HostX.conn, &xcb_shm_id);
     if (!shm_rep || !shm_rep->present || getenv("XEPHYR_NO_SHM")) {
@@ -538,49 +513,40 @@ hostx_get_depth(void)
 int
 hostx_get_server_depth(KdScreenInfo *screen)
 {
-    struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
+    EphyrScrPriv *scrpriv = screen->driver;
 
-    return host_screen ? host_screen->server_depth : 0;
-}
-
-void
-hostx_set_server_depth(KdScreenInfo *screen, int depth)
-{
-    struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
-
-    if (host_screen)
-        host_screen->server_depth = depth;
+    return scrpriv ? scrpriv->server_depth : 0;
 }
 
 int
 hostx_get_bpp(KdScreenInfo *screen)
 {
-    struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
+    EphyrScrPriv *scrpriv = screen->driver;
 
-    if (!host_screen)
+    if (!scrpriv)
         return 0;
 
-    if (host_depth_matches_server (host_screen))
+    if (host_depth_matches_server(scrpriv))
         return HostX.visual->bits_per_rgb_value;
     else
-        return host_screen->server_depth; /*XXX correct ?*/
+        return scrpriv->server_depth; /*XXX correct ?*/
 }
 
 void
 hostx_get_visual_masks(KdScreenInfo *screen,
                        CARD32 *rmsk, CARD32 *gmsk, CARD32 *bmsk)
 {
-    struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
+    EphyrScrPriv *scrpriv = screen->driver;
 
-    if (!host_screen)
+    if (!scrpriv)
         return;
 
-    if (host_depth_matches_server(host_screen)) {
+    if (host_depth_matches_server(scrpriv)) {
         *rmsk = HostX.visual->red_mask;
         *gmsk = HostX.visual->green_mask;
         *bmsk = HostX.visual->blue_mask;
     }
-    else if (host_screen->server_depth == 16) {
+    else if (scrpriv->server_depth == 16) {
         /* Assume 16bpp 565 */
         *rmsk = 0xf800;
         *gmsk = 0x07e0;
@@ -645,11 +611,10 @@ hostx_screen_init(KdScreenInfo *screen,
                   int width, int height, int buffer_height,
                   int *bytes_per_line, int *bits_per_pixel)
 {
+    EphyrScrPriv *scrpriv = screen->driver;
     Bool shm_success = FALSE;
 
-    struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
-
-    if (!host_screen) {
+    if (!scrpriv) {
         fprintf(stderr, "%s: Error in accessing hostx data\n", __func__);
         exit(1);
     }
@@ -657,64 +622,64 @@ hostx_screen_init(KdScreenInfo *screen,
     EPHYR_DBG("host_screen=%p wxh=%dx%d, buffer_height=%d",
               host_screen, width, height, buffer_height);
 
-    if (host_screen->ximg != NULL) {
+    if (scrpriv->ximg != NULL) {
         /* Free up the image data if previously used
          * i.ie called by server reset
          */
 
         if (HostX.have_shm) {
-            xcb_shm_detach(HostX.conn, host_screen->shminfo.shmseg);
-            xcb_image_destroy (host_screen->ximg);
-            shmdt(host_screen->shminfo.shmaddr);
-            shmctl(host_screen->shminfo.shmid, IPC_RMID, 0);
+            xcb_shm_detach(HostX.conn, scrpriv->shminfo.shmseg);
+            xcb_image_destroy(scrpriv->ximg);
+            shmdt(scrpriv->shminfo.shmaddr);
+            shmctl(scrpriv->shminfo.shmid, IPC_RMID, 0);
         }
         else {
-            free(host_screen->ximg->data);
-            host_screen->ximg->data = NULL;
+            free(scrpriv->ximg->data);
+            scrpriv->ximg->data = NULL;
 
-            xcb_image_destroy(host_screen->ximg);
+            xcb_image_destroy(scrpriv->ximg);
         }
     }
 
     if (HostX.have_shm) {
-        host_screen->ximg = xcb_image_create_native(HostX.conn,
-                                                    width,
-                                                    buffer_height,
-                                                    XCB_IMAGE_FORMAT_Z_PIXMAP,
-                                                    HostX.depth,
-                                                    NULL,
-                                                    ~0,
-                                                    NULL);
-
-        host_screen->shminfo.shmid =
+        scrpriv->ximg = xcb_image_create_native(HostX.conn,
+                                                width,
+                                                buffer_height,
+                                                XCB_IMAGE_FORMAT_Z_PIXMAP,
+                                                HostX.depth,
+                                                NULL,
+                                                ~0,
+                                                NULL);
+
+        scrpriv->shminfo.shmid =
             shmget(IPC_PRIVATE,
-                   host_screen->ximg->stride * buffer_height,
+                   scrpriv->ximg->stride * buffer_height,
                    IPC_CREAT | 0777);
-        host_screen->ximg->data = shmat(host_screen->shminfo.shmid, 0, 0);
-        host_screen->shminfo.shmaddr = host_screen->ximg->data;
+        scrpriv->ximg->data = shmat(scrpriv->shminfo.shmid, 0, 0);
+        scrpriv->shminfo.shmaddr = scrpriv->ximg->data;
 
-        if (host_screen->ximg->data == (uint8_t *) -1) {
+        if (scrpriv->ximg->data == (uint8_t *) -1) {
             EPHYR_DBG
                 ("Can't attach SHM Segment, falling back to plain XImages");
             HostX.have_shm = FALSE;
-            xcb_image_destroy (host_screen->ximg);
-            shmctl(host_screen->shminfo.shmid, IPC_RMID, 0);
+            xcb_image_destroy (scrpriv->ximg);
+            shmctl(scrpriv->shminfo.shmid, IPC_RMID, 0);
         }
         else {
-            EPHYR_DBG("SHM segment attached %p", host_screen->shminfo.shmaddr);
-            host_screen->shminfo.shmseg = xcb_generate_id(HostX.conn);
+            EPHYR_DBG("SHM segment attached %p", scrpriv->shminfo.shmaddr);
+            scrpriv->shminfo.shmseg = xcb_generate_id(HostX.conn);
             xcb_shm_attach(HostX.conn,
-                           host_screen->shminfo.shmseg,
-                           host_screen->shminfo.shmid,
+                           scrpriv->shminfo.shmseg,
+                           scrpriv->shminfo.shmid,
                            FALSE);
             shm_success = TRUE;
         }
     }
 
     if (!shm_success) {
-        EPHYR_DBG("Creating image %dx%d for screen host_screen=%p\n",
-                  width, buffer_height, host_screen);
-        host_screen->ximg = xcb_image_create_native(HostX.conn,
+        EPHYR_DBG("Creating image %dx%d for screen scrpriv=%p\n",
+                  width, buffer_height, scrpriv);
+        scrpriv->ximg = xcb_image_create_native(HostX.conn,
                                                     width,
                                                     buffer_height,
                                                     XCB_IMAGE_FORMAT_Z_PIXMAP,
@@ -723,53 +688,53 @@ hostx_screen_init(KdScreenInfo *screen,
                                                     ~0,
                                                     NULL);
 
-        host_screen->ximg->data =
-            malloc(host_screen->ximg->stride * buffer_height);
+        scrpriv->ximg->data =
+            malloc(scrpriv->ximg->stride * buffer_height);
     }
 
-    *bytes_per_line = host_screen->ximg->stride;
-    *bits_per_pixel = host_screen->ximg->bpp;
+    *bytes_per_line = scrpriv->ximg->stride;
+    *bits_per_pixel = scrpriv->ximg->bpp;
 
-    if (host_screen->win_pre_existing == None && !EphyrWantResize) {
+    if (scrpriv->win_pre_existing == None && !EphyrWantResize) {
         /* Ask the WM to keep our size static */
         xcb_size_hints_t size_hints = {0};
         size_hints.max_width = size_hints.min_width = width;
         size_hints.max_height = size_hints.min_height = height;
         size_hints.flags = (XCB_ICCCM_SIZE_HINT_P_MIN_SIZE |
                             XCB_ICCCM_SIZE_HINT_P_MAX_SIZE);
-        xcb_icccm_set_wm_normal_hints(HostX.conn, host_screen->win,
+        xcb_icccm_set_wm_normal_hints(HostX.conn, scrpriv->win,
                                       &size_hints);
     }
 
-    xcb_map_window(HostX.conn, host_screen->win);
+    xcb_map_window(HostX.conn, scrpriv->win);
 
     xcb_aux_sync(HostX.conn);
 
-    host_screen->win_width = width;
-    host_screen->win_height = height;
+    scrpriv->win_width = width;
+    scrpriv->win_height = height;
 
-    if (host_depth_matches_server(host_screen)) {
+    if (host_depth_matches_server(scrpriv)) {
         EPHYR_DBG("Host matches server");
-        return host_screen->ximg->data;
+        return scrpriv->ximg->data;
     }
     else {
-        EPHYR_DBG("server bpp %i", host_screen->server_depth >> 3);
-        host_screen->fb_data =
-            malloc(width * buffer_height * (host_screen->server_depth >> 3));
-        return host_screen->fb_data;
+        EPHYR_DBG("server bpp %i", scrpriv->server_depth >> 3);
+        scrpriv->fb_data =
+            malloc(width * buffer_height * (scrpriv->server_depth >> 3));
+        return scrpriv->fb_data;
     }
 }
 
-static void hostx_paint_debug_rect(struct EphyrHostScreen *host_screen,
+static void hostx_paint_debug_rect(KdScreenInfo *screen,
                                    int x, int y, int width, int height);
 
 void
 hostx_paint_rect(KdScreenInfo *screen,
                  int sx, int sy, int dx, int dy, int width, int height)
 {
-    struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
+    EphyrScrPriv *scrpriv = screen->driver;
 
-    EPHYR_DBG("painting in screen %d\n", host_screen->mynum);
+    EPHYR_DBG("painting in screen %d\n", scrpriv->mynum);
 
     /*
      *  Copy the image data updated by the shadow layer
@@ -777,7 +742,7 @@ hostx_paint_rect(KdScreenInfo *screen,
      */
 
     if (HostXWantDamageDebug) {
-        hostx_paint_debug_rect(host_screen, dx, dy, width, height);
+        hostx_paint_debug_rect(screen, dx, dy, width, height);
     }
 
     /* 
@@ -792,23 +757,23 @@ hostx_paint_rect(KdScreenInfo *screen,
      *       ... and it will be slower than the matching depth case.
      */
 
-    if (!host_depth_matches_server(host_screen)) {
-        int x, y, idx, bytes_per_pixel = (host_screen->server_depth >> 3);
+    if (!host_depth_matches_server(scrpriv)) {
+        int x, y, idx, bytes_per_pixel = (scrpriv->server_depth >> 3);
         unsigned char r, g, b;
         unsigned long host_pixel;
 
-        EPHYR_DBG("Unmatched host depth host_screen=%p\n", host_screen);
+        EPHYR_DBG("Unmatched host depth scrpriv=%p\n", scrpriv);
         for (y = sy; y < sy + height; y++)
             for (x = sx; x < sx + width; x++) {
                 idx =
-                    (host_screen->win_width * y * bytes_per_pixel) +
+                    (scrpriv->win_width * y * bytes_per_pixel) +
                     (x * bytes_per_pixel);
 
-                switch (host_screen->server_depth) {
+                switch (scrpriv->server_depth) {
                 case 16:
                 {
                     unsigned short pixel =
-                        *(unsigned short *) (host_screen->fb_data + idx);
+                        *(unsigned short *) (scrpriv->fb_data + idx);
 
                     r = ((pixel & 0xf800) >> 8);
                     g = ((pixel & 0x07e0) >> 3);
@@ -816,14 +781,14 @@ hostx_paint_rect(KdScreenInfo *screen,
 
                     host_pixel = (r << 16) | (g << 8) | (b);
 
-                    xcb_image_put_pixel(host_screen->ximg, x, y, host_pixel);
+                    xcb_image_put_pixel(scrpriv->ximg, x, y, host_pixel);
                     break;
                 }
                 case 8:
                 {
                     unsigned char pixel =
-                        *(unsigned char *) (host_screen->fb_data + idx);
-                    xcb_image_put_pixel(host_screen->ximg, x, y,
+                        *(unsigned char *) (scrpriv->fb_data + idx);
+                    xcb_image_put_pixel(scrpriv->ximg, x, y,
                                         HostX.cmap[pixel]);
                     break;
                 }
@@ -834,13 +799,13 @@ hostx_paint_rect(KdScreenInfo *screen,
     }
 
     if (HostX.have_shm) {
-        xcb_image_shm_put(HostX.conn, host_screen->win,
-                          HostX.gc, host_screen->ximg,
-                          host_screen->shminfo,
+        xcb_image_shm_put(HostX.conn, scrpriv->win,
+                          HostX.gc, scrpriv->ximg,
+                          scrpriv->shminfo,
                           sx, sy, dx, dy, width, height, FALSE);
     }
     else {
-        xcb_image_put(HostX.conn, host_screen->win, HostX.gc, host_screen->ximg,
+        xcb_image_put(HostX.conn, scrpriv->win, HostX.gc, scrpriv->ximg,
                       dx, dy, 0);
     }
 
@@ -848,9 +813,10 @@ hostx_paint_rect(KdScreenInfo *screen,
 }
 
 static void
-hostx_paint_debug_rect(struct EphyrHostScreen *host_screen,
+hostx_paint_debug_rect(KdScreenInfo *screen,
                        int x, int y, int width, int height)
 {
+    EphyrScrPriv *scrpriv = screen->driver;
     struct timespec tspec;
     xcb_rectangle_t rect = { .x = x, .y = y, .width = width, .height = height };
     xcb_void_cookie_t cookie;
@@ -864,7 +830,7 @@ hostx_paint_debug_rect(struct EphyrHostScreen *host_screen,
 
     /* fprintf(stderr, "Xephyr updating: %i+%i %ix%i\n", x, y, width, height); */
 
-    cookie = xcb_poly_fill_rectangle_checked(HostX.conn, host_screen->win,
+    cookie = xcb_poly_fill_rectangle_checked(HostX.conn, scrpriv->win,
                                              HostX.gc, 1, &rect);
     e = xcb_request_check(HostX.conn, cookie);
     free(e);
@@ -887,23 +853,21 @@ hostx_load_keymap(void)
     ephyrKeySyms.maxKeyCode = max_keycode;
 }
 
-static struct EphyrHostScreen *
-host_screen_from_window(Window w)
+static KdScreenInfo *
+screen_from_window(Window w)
 {
     int index = 0;
-    struct EphyrHostScreen *result = NULL;
 
     for (index = 0; index < HostX.n_screens; index++) {
-        if (HostX.screens[index].win == w
-            || HostX.screens[index].peer_win == w
-            || HostX.screens[index].win_pre_existing == w) {
-            result = &HostX.screens[index];
-            goto out;
+        EphyrScrPriv *scrpriv = HostX.screens[index]->driver;
+        if (scrpriv->win == w
+            || scrpriv->peer_win == w
+            || scrpriv->win_pre_existing == w) {
+            return HostX.screens[index];
         }
     }
 
- out:
-    return result;
+    return NULL;
 }
 
 int
@@ -948,8 +912,8 @@ hostx_get_event(EphyrHostXEvent * ev)
 
     case XCB_EXPOSE: {
         xcb_expose_event_t *expose = (xcb_expose_event_t *)xev;
-        struct EphyrHostScreen *host_screen =
-            host_screen_from_window(expose->window);
+        KdScreenInfo *screen = screen_from_window(expose->window);
+        EphyrScrPriv *scrpriv = screen->driver;
 
         /* Wait for the last expose event in a series of cliprects
          * to actually paint our screen.
@@ -957,10 +921,10 @@ hostx_get_event(EphyrHostXEvent * ev)
         if (expose->count != 0)
             break;
 
-        if (host_screen) {
-            hostx_paint_rect(host_screen->screen, 0, 0, 0, 0,
-                             host_screen->win_width,
-                             host_screen->win_height);
+        if (scrpriv) {
+            hostx_paint_rect(screen, 0, 0, 0, 0,
+                             scrpriv->win_width,
+                             scrpriv->win_height);
         }
         else {
             EPHYR_LOG_ERROR("failed to get host screen\n");
@@ -974,15 +938,14 @@ hostx_get_event(EphyrHostXEvent * ev)
 
     case XCB_MOTION_NOTIFY: {
         xcb_motion_notify_event_t *motion = (xcb_motion_notify_event_t *)xev;
-        struct EphyrHostScreen *host_screen =
-            host_screen_from_window(motion->event);
+        KdScreenInfo *screen = screen_from_window(motion->event);
+        EphyrScrPriv *scrpriv = screen->driver;
 
         ev->type = EPHYR_EV_MOUSE_MOTION;
         ev->data.mouse_motion.x = motion->event_x;
         ev->data.mouse_motion.y = motion->event_y;
         ev->data.mouse_motion.window = motion->event;
-        ev->data.mouse_motion.screen =
-            (host_screen ? host_screen->mynum : -1);
+        ev->data.mouse_motion.screen = scrpriv ? scrpriv->mynum : -1;
         free(xev);
         return 1;
     }
@@ -1023,14 +986,14 @@ hostx_get_event(EphyrHostXEvent * ev)
         if ((xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_L
              || xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_R)
             && (key->state & XCB_MOD_MASK_CONTROL)) {
-            struct EphyrHostScreen *host_screen =
-                host_screen_from_window(key->event);
+            KdScreenInfo *screen = screen_from_window(key->event);
+            EphyrScrPriv *scrpriv = screen->driver;
 
             if (grabbed_screen != -1) {
                 xcb_ungrab_keyboard(HostX.conn, XCB_TIME_CURRENT_TIME);
                 xcb_ungrab_pointer(HostX.conn, XCB_TIME_CURRENT_TIME);
                 grabbed_screen = -1;
-                hostx_set_win_title(host_screen->screen,
+                hostx_set_win_title(screen,
                                     "(ctrl+shift grabs mouse and keyboard)");
             }
             else {
@@ -1038,7 +1001,7 @@ hostx_get_event(EphyrHostXEvent * ev)
                 xcb_grab_keyboard_cookie_t kbgrabc =
                     xcb_grab_keyboard(HostX.conn,
                                       TRUE,
-                                      host_screen->win,
+                                      scrpriv->win,
                                       XCB_TIME_CURRENT_TIME,
                                       XCB_GRAB_MODE_ASYNC,
                                       XCB_GRAB_MODE_ASYNC);
@@ -1046,11 +1009,11 @@ hostx_get_event(EphyrHostXEvent * ev)
                 xcb_grab_pointer_cookie_t pgrabc =
                     xcb_grab_pointer(HostX.conn,
                                      TRUE,
-                                     host_screen->win,
+                                     scrpriv->win,
                                      0,
                                      XCB_GRAB_MODE_ASYNC,
                                      XCB_GRAB_MODE_ASYNC,
-                                     host_screen->win,
+                                     scrpriv->win,
                                      XCB_NONE,
                                      XCB_TIME_CURRENT_TIME);
                 xcb_grab_pointer_reply_t *pgrabr;
@@ -1065,9 +1028,9 @@ hostx_get_event(EphyrHostXEvent * ev)
                             xcb_ungrab_keyboard(HostX.conn,
                                                 XCB_TIME_CURRENT_TIME);
                         } else {
-                        grabbed_screen = host_screen->mynum;
+                        grabbed_screen = scrpriv->mynum;
                         hostx_set_win_title
-                            (host_screen->screen,
+                            (screen,
                              "(ctrl+shift releases mouse and keyboard)");
                     }
                 }
@@ -1087,14 +1050,13 @@ hostx_get_event(EphyrHostXEvent * ev)
 
     case ConfigureNotify:
         {
-            struct EphyrHostScreen *host_screen;
             xcb_configure_notify_event_t *configure =
                 (xcb_configure_notify_event_t *)xev;
+            KdScreenInfo *screen = screen_from_window(configure->window);
+            EphyrScrPriv *scrpriv = screen->driver;
 
-            host_screen = host_screen_from_window(configure->window);
-
-            if (!host_screen ||
-                (host_screen->win_pre_existing == None && !EphyrWantResize)) {
+            if (!scrpriv ||
+                (scrpriv->win_pre_existing == None && !EphyrWantResize)) {
                 free(xev);
                 return 0;
             }
@@ -1103,7 +1065,7 @@ hostx_get_event(EphyrHostXEvent * ev)
             ev->data.configure.width = configure->width;
             ev->data.configure.height = configure->height;
             ev->data.configure.window = configure->window;
-            ev->data.configure.screen = host_screen->mynum;
+            ev->data.configure.screen = scrpriv->mynum;
             free(xev);
 
             return 1;
@@ -1131,11 +1093,13 @@ hostx_get_screen(void)
 int
 hostx_get_window(int a_screen_number)
 {
+    EphyrScrPriv *scrpriv;
     if (a_screen_number < 0 || a_screen_number >= HostX.n_screens) {
         EPHYR_LOG_ERROR("bad screen number:%d\n", a_screen_number);
         return 0;
     }
-    return HostX.screens[a_screen_number].win;
+    scrpriv = HostX.screens[a_screen_number]->driver;
+    return scrpriv->win;
 }
 
 int
@@ -1228,6 +1192,8 @@ hostx_create_window(int a_screen_number,
     xcb_screen_t *screen = xcb_aux_get_screen(HostX.conn, hostx_get_screen());
     xcb_visualtype_t *visual;
     int depth = 0;
+    EphyrScrPriv *scrpriv = HostX.screens[a_screen_number]->driver;
+
     EPHYR_RETURN_VAL_IF_FAIL(screen && a_geometry, FALSE);
 
     EPHYR_LOG("enter\n");
@@ -1264,8 +1230,8 @@ hostx_create_window(int a_screen_number,
                       XCB_WINDOW_CLASS_COPY_FROM_PARENT,
                       a_visual_id, winmask, attrs);
 
-    if (HostX.screens[a_screen_number].peer_win == XCB_NONE) {
-        HostX.screens[a_screen_number].peer_win = win;
+    if (scrpriv->peer_win == XCB_NONE) {
+        scrpriv->peer_win = win;
     }
     else {
         EPHYR_LOG_ERROR("multiple peer windows created for same screen\n");
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index b582e66..8018f94 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -177,9 +177,6 @@ int
 int
 hostx_get_server_depth(KdScreenInfo *screen);
 
-void
-hostx_set_server_depth(KdScreenInfo *screen, int depth);
-
 int
 hostx_get_bpp(KdScreenInfo *screen);
 
commit 8dadc78e233f341f1ecb8d404de03d98ab210620
Author: Eric Anholt <eric at anholt.net>
Date:   Sun Aug 18 16:45:06 2013 +0200

    ephyr: Rename and use the proper type for what was host_screen->info.
    
    Now that we can include server headers in talking to host X, we don't
    need to hide any more.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 3715956..6d780cd 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -54,6 +54,7 @@
 #include <xcb/glx.h>
 #endif /* XF86DRI */
 #include "ephyrlog.h"
+#include "ephyr.h"
 
 struct EphyrHostScreen {
     Window win;
@@ -65,7 +66,7 @@ struct EphyrHostScreen {
     unsigned char *fb_data;     /* only used when host bpp != server bpp */
     xcb_shm_segment_info_t shminfo;
 
-    void *info;                 /* Pointer to the screen this is associated with */
+    KdScreenInfo *screen;
     int mynum;                  /* Screen number */
 };
 
@@ -111,12 +112,12 @@ static void
 #define host_depth_matches_server(_vars) (HostX.depth == (_vars)->server_depth)
 
 static struct EphyrHostScreen *
-host_screen_from_screen_info(EphyrScreenInfo * screen)
+host_screen_from_screen_info(KdScreenInfo *screen)
 {
     int i;
 
     for (i = 0; i < HostX.n_screens; i++) {
-        if (HostX.screens[i].info == screen) {
+        if (HostX.screens[i].screen == screen) {
             return &HostX.screens[i];
         }
     }
@@ -124,7 +125,7 @@ host_screen_from_screen_info(EphyrScreenInfo * screen)
 }
 
 int
-hostx_want_screen_size(EphyrScreenInfo screen, int *width, int *height)
+hostx_want_screen_size(KdScreenInfo *screen, int *width, int *height)
 {
     struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
 
@@ -140,7 +141,7 @@ hostx_want_screen_size(EphyrScreenInfo screen, int *width, int *height)
 }
 
 void
-hostx_add_screen(EphyrScreenInfo screen, unsigned long win_id, int screen_num)
+hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num)
 {
     int index = HostX.n_screens;
 
@@ -149,7 +150,7 @@ hostx_add_screen(EphyrScreenInfo screen, unsigned long win_id, int screen_num)
                             HostX.n_screens * sizeof(struct EphyrHostScreen));
     memset(&HostX.screens[index], 0, sizeof(struct EphyrHostScreen));
 
-    HostX.screens[index].info = screen;
+    HostX.screens[index].screen = screen;
     HostX.screens[index].win_pre_existing = win_id;
 }
 
@@ -160,18 +161,18 @@ hostx_set_display_name(char *name)
 }
 
 void
-hostx_set_screen_number(EphyrScreenInfo screen, int number)
+hostx_set_screen_number(KdScreenInfo *screen, int number)
 {
     struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
 
     if (host_screen) {
         host_screen->mynum = number;
-        hostx_set_win_title(host_screen->info, "");
+        hostx_set_win_title(host_screen->screen, "");
     }
 }
 
 void
-hostx_set_win_title(EphyrScreenInfo screen, const char *extra_text)
+hostx_set_win_title(KdScreenInfo *screen, const char *extra_text)
 {
     struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
 
@@ -216,7 +217,7 @@ hostx_use_host_cursor(void)
 }
 
 int
-hostx_want_preexisting_window(EphyrScreenInfo screen)
+hostx_want_preexisting_window(KdScreenInfo *screen)
 {
     struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
 
@@ -401,7 +402,7 @@ hostx_init(void)
                               XCB_CW_EVENT_MASK,
                               &attr);
 
-            hostx_set_win_title (host_screen->info,
+            hostx_set_win_title (host_screen->screen,
                                  "(ctrl+shift grabs mouse and keyboard)");
 
             if (HostX.use_fullscreen) {
@@ -535,7 +536,7 @@ hostx_get_depth(void)
 }
 
 int
-hostx_get_server_depth(EphyrScreenInfo screen)
+hostx_get_server_depth(KdScreenInfo *screen)
 {
     struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
 
@@ -543,7 +544,7 @@ hostx_get_server_depth(EphyrScreenInfo screen)
 }
 
 void
-hostx_set_server_depth(EphyrScreenInfo screen, int depth)
+hostx_set_server_depth(KdScreenInfo *screen, int depth)
 {
     struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
 
@@ -552,7 +553,7 @@ hostx_set_server_depth(EphyrScreenInfo screen, int depth)
 }
 
 int
-hostx_get_bpp(EphyrScreenInfo screen)
+hostx_get_bpp(KdScreenInfo *screen)
 {
     struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
 
@@ -566,7 +567,7 @@ hostx_get_bpp(EphyrScreenInfo screen)
 }
 
 void
-hostx_get_visual_masks(EphyrScreenInfo screen,
+hostx_get_visual_masks(KdScreenInfo *screen,
                        CARD32 *rmsk, CARD32 *gmsk, CARD32 *bmsk)
 {
     struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
@@ -640,7 +641,7 @@ hostx_set_cmap_entry(unsigned char idx,
  * by fakexa for storing offscreen pixmap data.
  */
 void *
-hostx_screen_init(EphyrScreenInfo screen,
+hostx_screen_init(KdScreenInfo *screen,
                   int width, int height, int buffer_height,
                   int *bytes_per_line, int *bits_per_pixel)
 {
@@ -763,7 +764,7 @@ static void hostx_paint_debug_rect(struct EphyrHostScreen *host_screen,
                                    int x, int y, int width, int height);
 
 void
-hostx_paint_rect(EphyrScreenInfo screen,
+hostx_paint_rect(KdScreenInfo *screen,
                  int sx, int sy, int dx, int dy, int width, int height)
 {
     struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
@@ -957,7 +958,7 @@ hostx_get_event(EphyrHostXEvent * ev)
             break;
 
         if (host_screen) {
-            hostx_paint_rect(host_screen->info, 0, 0, 0, 0,
+            hostx_paint_rect(host_screen->screen, 0, 0, 0, 0,
                              host_screen->win_width,
                              host_screen->win_height);
         }
@@ -1029,7 +1030,7 @@ hostx_get_event(EphyrHostXEvent * ev)
                 xcb_ungrab_keyboard(HostX.conn, XCB_TIME_CURRENT_TIME);
                 xcb_ungrab_pointer(HostX.conn, XCB_TIME_CURRENT_TIME);
                 grabbed_screen = -1;
-                hostx_set_win_title(host_screen->info,
+                hostx_set_win_title(host_screen->screen,
                                     "(ctrl+shift grabs mouse and keyboard)");
             }
             else {
@@ -1066,7 +1067,7 @@ hostx_get_event(EphyrHostXEvent * ev)
                         } else {
                         grabbed_screen = host_screen->mynum;
                         hostx_set_win_title
-                            (host_screen->info,
+                            (host_screen->screen,
                              "(ctrl+shift releases mouse and keyboard)");
                     }
                 }
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index 625ca8a..b582e66 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -29,6 +29,7 @@
 #include <X11/X.h>
 #include <X11/Xmd.h>
 #include <xcb/xcb.h>
+#include "ephyr.h"
 
 #define EPHYR_WANT_DEBUG 0
 
@@ -41,7 +42,6 @@
 
 typedef struct EphyrHostXVars EphyrHostXVars;
 typedef struct EphyrHostXEvent EphyrHostXEvent;
-typedef void *EphyrScreenInfo;
 typedef enum EphyrHostXEventType {
     EPHYR_EV_MOUSE_MOTION,
     EPHYR_EV_MOUSE_PRESS,
@@ -127,7 +127,7 @@ typedef struct {
 } EphyrRect;
 
 int
- hostx_want_screen_size(EphyrScreenInfo screen, int *width, int *height);
+hostx_want_screen_size(KdScreenInfo *screen, int *width, int *height);
 
 int
  hostx_want_host_cursor(void);
@@ -142,7 +142,7 @@ int
  hostx_want_fullscreen(void);
 
 int
- hostx_want_preexisting_window(EphyrScreenInfo screen);
+hostx_want_preexisting_window(KdScreenInfo *screen);
 
 void
  hostx_use_preexisting_window(unsigned long win_id);
@@ -160,43 +160,43 @@ int
  hostx_init(void);
 
 void
- hostx_add_screen(EphyrScreenInfo screen, unsigned long win_id, int screen_num);
+hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num);
 
 void
  hostx_set_display_name(char *name);
 
 void
- hostx_set_screen_number(EphyrScreenInfo screen, int number);
+hostx_set_screen_number(KdScreenInfo *screen, int number);
 
 void
- hostx_set_win_title(EphyrScreenInfo screen, const char *extra_text);
+hostx_set_win_title(KdScreenInfo *screen, const char *extra_text);
 
 int
  hostx_get_depth(void);
 
 int
- hostx_get_server_depth(EphyrScreenInfo screen);
+hostx_get_server_depth(KdScreenInfo *screen);
 
 void
- hostx_set_server_depth(EphyrScreenInfo screen, int depth);
+hostx_set_server_depth(KdScreenInfo *screen, int depth);
 
 int
- hostx_get_bpp(void *info);
+hostx_get_bpp(KdScreenInfo *screen);
 
 void
- hostx_get_visual_masks(void *info, CARD32 *rmsk, CARD32 *gmsk, CARD32 *bmsk);
+hostx_get_visual_masks(KdScreenInfo *screen,
+                       CARD32 *rmsk, CARD32 *gmsk, CARD32 *bmsk);
 void
 
 hostx_set_cmap_entry(unsigned char idx,
                      unsigned char r, unsigned char g, unsigned char b);
 
-void *hostx_screen_init(EphyrScreenInfo screen,
+void *hostx_screen_init(KdScreenInfo *screen,
                         int width, int height, int buffer_height,
                         int *bytes_per_line, int *bits_per_pixel);
 
 void
-
-hostx_paint_rect(EphyrScreenInfo screen,
+hostx_paint_rect(KdScreenInfo *screen,
                  int sx, int sy, int dx, int dy, int width, int height);
 
 void
commit 18d836f6dde46bcac8b794d34f76032688c28851
Author: Eric Anholt <eric at anholt.net>
Date:   Sun Aug 18 14:12:45 2013 +0200

    ephyr: Expose a single function for detecting extensions.
    
    v2: Fix trying to include xcb-dri in the non-dri-build case (Noted by
        Julien)
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index b34b5cc..003ef21 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -26,6 +26,7 @@
 #ifdef HAVE_CONFIG_H
 #include <kdrive-config.h>
 #endif
+
 #include "ephyr.h"
 
 #include "inputstr.h"
@@ -33,6 +34,7 @@
 #include "ephyrlog.h"
 
 #ifdef XF86DRI
+#include <xcb/xf86dri.h>
 #include "ephyrdri.h"
 #include "ephyrdriext.h"
 #include "ephyrglxext.h"
@@ -59,6 +61,16 @@ Bool EphyrWantGrayScale = 0;
 Bool EphyrWantResize = 0;
 
 Bool
+host_has_extension(xcb_extension_t *extension)
+{
+    const xcb_query_extension_reply_t *rep;
+
+    rep = xcb_get_extension_data(hostx_get_xcbconn(), extension);
+
+    return rep && rep->present;
+}
+
+Bool
 ephyrInitialize(KdCardInfo * card, EphyrPriv * priv)
 {
     OsSignal(SIGUSR1, hostx_handle_signal);
@@ -657,7 +669,7 @@ ephyrInitScreen(ScreenPtr pScreen)
     }
 #endif /*XV*/
 #ifdef XF86DRI
-    if (!ephyrNoDRI && !hostx_has_dri()) {
+    if (!ephyrNoDRI && !host_has_extension(&xcb_xf86dri_id)) {
         EPHYR_LOG("host x does not support DRI. Disabling DRI forwarding\n");
         ephyrNoDRI = TRUE;
     }
diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c
index 617ffb1..13df60a 100644
--- a/hw/kdrive/ephyr/ephyrdriext.c
+++ b/hw/kdrive/ephyr/ephyrdriext.c
@@ -39,6 +39,9 @@
 #define _XF86DRI_SERVER_
 #include <X11/dri/xf86dri.h>
 #include <X11/dri/xf86driproto.h>
+#include <xcb/xcb.h>
+#include <xcb/shape.h>
+#include <xcb/xf86dri.h>
 #include "misc.h"
 #include "privates.h"
 #include "dixstruct.h"
@@ -1319,12 +1322,12 @@ ephyrDRIExtensionInit(ScreenPtr a_screen)
     EphyrDRIScreenPrivPtr screen_priv = NULL;
 
     EPHYR_LOG("enter\n");
-    if (!hostx_has_dri()) {
+    if (!host_has_extension(&xcb_xf86dri_id)) {
         EPHYR_LOG("host does not have DRI extension\n");
         goto out;
     }
     EPHYR_LOG("host X does have DRI extension\n");
-    if (!hostx_has_xshape()) {
+    if (!host_has_extension(&xcb_shape_id)) {
         EPHYR_LOG("host does not have XShape extension\n");
         goto out;
     }
diff --git a/hw/kdrive/ephyr/ephyrglxext.c b/hw/kdrive/ephyr/ephyrglxext.c
index 1231b0d..632a9c4 100644
--- a/hw/kdrive/ephyr/ephyrglxext.c
+++ b/hw/kdrive/ephyr/ephyrglxext.c
@@ -29,6 +29,7 @@
 #include <kdrive-config.h>
 #endif
 
+#include <xcb/glx.h>
 #include "extnsionst.h"
 #include "ephyrglxext.h"
 #include "ephyrhostglx.h"
@@ -83,7 +84,7 @@ ephyrHijackGLXExtension(void)
 {
     const void *(*dispatch_functions)[2];
 
-    if (!hostx_has_glx()) {
+    if (!host_has_extension(&xcb_glx_id)) {
         EPHYR_LOG("host X does not have GLX\n");
         return FALSE;
     }
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 97b2dc0..3715956 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -1390,15 +1390,6 @@ out:
     return is_ok;
 }
 
-int
-hostx_has_xshape(void)
-{
-    const xcb_query_extension_reply_t *rep;
-
-    rep = xcb_get_extension_data(HostX.conn, &xcb_shape_id);
-    return rep && rep->present;
-}
-
 #ifdef XF86DRI
 typedef struct {
     int is_valid;
@@ -1471,24 +1462,4 @@ hostx_get_resource_id_peer(int a_local_resource_id, int *a_remote_resource_id)
     return FALSE;
 }
 
-int
-hostx_has_dri(void)
-{
-    const xcb_query_extension_reply_t *dri;
-
-    dri = xcb_get_extension_data(HostX.conn, &xcb_xf86dri_id);
-
-    return dri && dri->present;
-}
-
-int
-hostx_has_glx(void)
-{
-    const xcb_query_extension_reply_t *glx;
-
-    glx = xcb_get_extension_data(HostX.conn, &xcb_glx_id);
-
-    return glx && glx->present;
-}
-
 #endif                          /* XF86DRI */
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index 3276eb1..625ca8a 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -233,7 +233,8 @@ int hostx_set_window_bounding_rectangles(int a_window,
 
 int hostx_set_window_clipping_rectangles(int a_window,
                                          EphyrRect * a_rects, int a_num_rects);
-int hostx_has_xshape(void);
+
+int host_has_extension(xcb_extension_t *extension);
 
 #ifdef XF86DRI
 int hostx_lookup_peer_window(void *a_local_window,
commit 3aacb22d6473480c31fb08f0b2527747dbf5be57
Author: Eric Anholt <eric at anholt.net>
Date:   Sun Aug 18 14:01:53 2013 +0200

    ephyr: Drop dead ephyrHostAtomToLocal code.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c
index 345c7b9..5813634 100644
--- a/hw/kdrive/ephyr/ephyrvideo.c
+++ b/hw/kdrive/ephyr/ephyrvideo.c
@@ -62,10 +62,6 @@ static Bool DoSimpleClip(BoxPtr a_dst_drw, BoxPtr a_clipper, BoxPtr a_result);
 
 static Bool ephyrLocalAtomToHost(int a_local_atom, int *a_host_atom);
 
-/*
-static Bool ephyrHostAtomToLocal (int a_host_atom, int *a_local_atom) ;
-*/
-
 static EphyrXVPriv *ephyrXVPrivNew(void);
 static void ephyrXVPrivDelete(EphyrXVPriv * a_this);
 static Bool ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this);
@@ -240,36 +236,6 @@ ephyrLocalAtomToHost(int a_local_atom, int *a_host_atom)
     return TRUE;
 }
 
-/*
- Not used yed.
-static Bool
-ephyrHostAtomToLocal (int a_host_atom, int *a_local_atom)
-{
-    Bool is_ok=FALSE ;
-    char *atom_name=NULL ;
-    int atom=None ;
-
-    EPHYR_RETURN_VAL_IF_FAIL (a_local_atom, FALSE) ;
-
-    atom_name = ephyrHostGetAtomName (a_host_atom) ;
-    if (!atom_name)
-        goto out ;
-
-    atom = MakeAtom (atom_name, strlen (atom_name), TRUE) ;
-    if (atom == None)
-        goto out ;
-
-    *a_local_atom = atom ;
-    is_ok = TRUE ;
-
-out:
-    if (atom_name) {
-        ephyrHostFree (atom_name) ;
-    }
-    return is_ok ;
-}
-*/
-
 /**************
  *</helpers>
  * ************/
commit 4aaad0bfbcef018eb36839b1d034c3f60022694a
Author: Julien Cristau <jcristau at debian.org>
Date:   Wed Oct 20 20:10:43 2010 +0200

    Xephyr: we're not using Xlib anymore, no need to undef _XSERVER64
    
    Drop obsolete comments about interaction between Xlib code and that
    macro, and stop undefining it.
    
    Signed-off-by: Julien Cristau <jcristau at debian.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>

diff --git a/hw/kdrive/ephyr/ephyrhostglx.c b/hw/kdrive/ephyr/ephyrhostglx.c
index a115866..007524d 100644
--- a/hw/kdrive/ephyr/ephyrhostglx.c
+++ b/hw/kdrive/ephyr/ephyrhostglx.c
@@ -31,17 +31,6 @@
 #include <kdrive-config.h>
 #endif
 
-/*
- * including some server headers (like kdrive-config.h)
- * might define the macro _XSERVER64
- * on 64 bits machines. That macro must _NOT_ be defined for Xlib
- * client code, otherwise bad things happen.
- * So let's undef that macro if necessary.
- */
-#ifdef _XSERVER64
-#undef _XSERVER64
-#endif
-
 #include <X11/Xdefs.h>
 #include <X11/Xmd.h>
 #include <GL/glxproto.h>
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.c b/hw/kdrive/ephyr/ephyrhostvideo.c
index 8b71687..ea5fc9b 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.c
+++ b/hw/kdrive/ephyr/ephyrhostvideo.c
@@ -28,16 +28,6 @@
 #ifdef HAVE_CONFIG_H
 #include <kdrive-config.h>
 #endif
-/*
- * including some server headers (like kdrive-config.h)
- * might define the macro _XSERVER64
- * on 64 bits machines. That macro must _NOT_ be defined for Xlib
- * client code, otherwise bad things happen.
- * So let's undef that macro if necessary.
- */
-#ifdef _XSERVER64
-#undef _XSERVER64
-#endif
 #include <xcb/xv.h>
 #include <xcb/xcb_aux.h>
 #define _HAVE_XALLOC_DECLS
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 1eef64e..97b2dc0 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -27,17 +27,6 @@
 #include <kdrive-config.h>
 #endif
 
-/*
- * including some server headers (like kdrive-config.h)
- * might define the macro _XSERVER64
- * on 64 bits machines. That macro must _NOT_ be defined for Xlib
- * client code, otherwise bad things happen.
- * So let's undef that macro if necessary.
- */
-#ifdef _XSERVER64
-#undef _XSERVER64
-#endif
-
 #include "hostx.h"
 
 #include <stdlib.h>
@@ -66,12 +55,6 @@
 #endif /* XF86DRI */
 #include "ephyrlog.h"
 
-/*  
- * All xlib calls go here, which gets built as its own .a .
- * Mixing kdrive and xlib headers causes all sorts of types
- * to get clobbered. 
- */
-
 struct EphyrHostScreen {
     Window win;
     Window win_pre_existing;    /* Set via -parent option like xnest */
commit 0fc2f9f04a44599f598380d4df992bec60c0e3a1
Author: Julien Cristau <jcristau at debian.org>
Date:   Sat Sep 25 16:05:07 2010 +0200

    Xephyr: handle errors in event loop
    
    Signed-off-by: Julien Cristau <jcristau at debian.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 68bb48a..1eef64e 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -947,6 +947,21 @@ hostx_get_event(EphyrHostXEvent * ev)
     }
 
     switch (xev->response_type & 0x7f) {
+    case 0: { /* error */
+        xcb_generic_error_t *e = (xcb_generic_error_t *)xev;
+        fprintf(stderr, "X11 error\n"
+                "Error code: %hhu\n"
+                "Sequence number: %hu\n"
+                "Major code: %hhu\tMinor code: %hu\n"
+                "Error value: %u\n",
+                e->error_code,
+                e->sequence,
+                e->major_code, e->minor_code,
+                e->resource_id);
+        free(xev);
+        exit(1);
+    }
+
     case XCB_EXPOSE: {
         xcb_expose_event_t *expose = (xcb_expose_event_t *)xev;
         struct EphyrHostScreen *host_screen =
commit 3309a73c826f02c4b2e14180a3254546314ec323
Author: Julien Cristau <jcristau at debian.org>
Date:   Fri Jun 25 14:20:57 2010 +0100

    Xephyr: drop remaining Xlib dependency
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/configure.ac b/configure.ac
index a6c466e..8c72cc0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2116,12 +2116,12 @@ if test "$KDRIVE" = yes; then
        AC_DEFINE(KDRIVE_MOUSE, 1, [Enable KDrive mouse driver])
     fi
 
-    XEPHYR_REQUIRED_LIBS="x11 >= 1.6 $LIBXEXT xau xdmcp xcb x11-xcb xcb-shape xcb-aux xcb-image xcb-icccm xcb-shm xcb-keysyms"
+    XEPHYR_REQUIRED_LIBS="xau xdmcp xcb xcb-shape xcb-aux xcb-image xcb-icccm xcb-shm xcb-keysyms"
     if test "x$XV" = xyes; then
         XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xcb-xv"
     fi
     if test "x$DRI" = xyes && test "x$GLX" = xyes; then
-        XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBGL libdrm xcb-glx xcb-xf86dri > 1.6"
+        XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS libdrm xcb-glx xcb-xf86dri > 1.6"
     fi
 
     if test "x$XEPHYR" = xauto; then
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 07a2772..68bb48a 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -51,12 +51,9 @@
 #include <sys/shm.h>
 #include <sys/time.h>
 
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
 #include <X11/keysym.h>
 #include <xcb/xcb.h>
 #include <xcb/xproto.h>
-#include <X11/Xlib-xcb.h>
 #include <xcb/xcb_icccm.h>
 #include <xcb/xcb_aux.h>
 #include <xcb/shm.h>
@@ -91,7 +88,6 @@ struct EphyrHostScreen {
 
 struct EphyrHostXVars {
     char *server_dpy_name;
-    Display *dpy;
     xcb_connection_t *conn;
     int screen;
     xcb_visualtype_t *visual;
@@ -151,7 +147,7 @@ hostx_want_screen_size(EphyrScreenInfo screen, int *width, int *height)
 
     if (host_screen &&
         (host_screen->win_pre_existing != None ||
-         HostX.use_fullscreen == True)) {
+         HostX.use_fullscreen == TRUE)) {
         *width = host_screen->win_width;
         *height = host_screen->win_height;
         return 1;
@@ -233,7 +229,7 @@ hostx_want_host_cursor(void)
 void
 hostx_use_host_cursor(void)
 {
-    HostX.use_host_cursor = True;
+    HostX.use_host_cursor = TRUE;
 }
 
 int
@@ -252,7 +248,7 @@ hostx_want_preexisting_window(EphyrScreenInfo screen)
 void
 hostx_use_fullscreen(void)
 {
-    HostX.use_fullscreen = True;
+    HostX.use_fullscreen = TRUE;
 }
 
 int
@@ -323,15 +319,6 @@ hostx_set_title(char *title)
 #pragma does_not_return(exit)
 #endif
 
-static int _X_NORETURN
-x_io_error_handler(Display * dpy)
-{
-    ErrorF("Lost connection to X server: %s\n", strerror(errno));
-    CloseWellKnownConnections();
-    OsCleanup(1);
-    exit(1);
-}
-
 int
 hostx_init(void)
 {
@@ -358,15 +345,11 @@ hostx_init(void)
 
     EPHYR_DBG("mark");
 
-    if ((HostX.dpy = XOpenDisplay(getenv("DISPLAY"))) == NULL) {
+    if ((HostX.conn = xcb_connect(NULL, &HostX.screen)) == NULL) {
         fprintf(stderr, "\nXephyr cannot open host display. Is DISPLAY set?\n");
         exit(1);
     }
 
-    XSetIOErrorHandler(x_io_error_handler);
-
-    HostX.conn = XGetXCBConnection(HostX.dpy);
-    HostX.screen = DefaultScreen(HostX.dpy);
     screen = xcb_aux_get_screen(HostX.conn, HostX.screen);
     HostX.winroot = screen->root;
     HostX.gc = xcb_generate_id(HostX.conn);
@@ -374,11 +357,11 @@ hostx_init(void)
     HostX.visual  = xcb_aux_find_visual_by_id(screen, screen->root_visual);
 
     xcb_create_gc(HostX.conn, HostX.gc, HostX.winroot, 0, NULL);
-    cookie_WINDOW_STATE = xcb_intern_atom(HostX.conn, False,
+    cookie_WINDOW_STATE = xcb_intern_atom(HostX.conn, FALSE,
                                           strlen("_NET_WM_STATE"),
                                           "_NET_WM_STATE");
     cookie_WINDOW_STATE_FULLSCREEN =
-        xcb_intern_atom(HostX.conn, False,
+        xcb_intern_atom(HostX.conn, FALSE,
                         strlen("_NET_WM_STATE_FULLSCREEN"),
                         "_NET_WM_STATE_FULLSCREEN");
 
@@ -519,7 +502,7 @@ hostx_init(void)
     shm_rep = xcb_get_extension_data(HostX.conn, &xcb_shm_id);
     if (!shm_rep || !shm_rep->present || getenv("XEPHYR_NO_SHM")) {
         fprintf(stderr, "\nXephyr unable to use SHM XImages\n");
-        HostX.have_shm = False;
+        HostX.have_shm = FALSE;
     }
     else {
         /* Really really check we have shm - better way ?*/
@@ -528,19 +511,19 @@ hostx_init(void)
         xcb_void_cookie_t cookie;
         xcb_shm_seg_t shmseg;
 
-        HostX.have_shm = True;
+        HostX.have_shm = TRUE;
 
         shminfo.shmid = shmget(IPC_PRIVATE, 1, IPC_CREAT|0777);
         shminfo.shmaddr = shmat(shminfo.shmid,0,0);
 
         shmseg = xcb_generate_id(HostX.conn);
         cookie = xcb_shm_attach_checked(HostX.conn, shmseg, shminfo.shmid,
-                                        True);
+                                        TRUE);
         e = xcb_request_check(HostX.conn, cookie);
 
         if (e) {
             fprintf(stderr, "\nXephyr unable to use SHM XImages\n");
-            HostX.have_shm = False;
+            HostX.have_shm = FALSE;
             free(e);
         }
 
@@ -678,7 +661,7 @@ hostx_screen_init(EphyrScreenInfo screen,
                   int width, int height, int buffer_height,
                   int *bytes_per_line, int *bits_per_pixel)
 {
-    Bool shm_success = False;
+    Bool shm_success = FALSE;
 
     struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
 
@@ -729,7 +712,7 @@ hostx_screen_init(EphyrScreenInfo screen,
         if (host_screen->ximg->data == (uint8_t *) -1) {
             EPHYR_DBG
                 ("Can't attach SHM Segment, falling back to plain XImages");
-            HostX.have_shm = False;
+            HostX.have_shm = FALSE;
             xcb_image_destroy (host_screen->ximg);
             shmctl(host_screen->shminfo.shmid, IPC_RMID, 0);
         }
@@ -739,8 +722,8 @@ hostx_screen_init(EphyrScreenInfo screen,
             xcb_shm_attach(HostX.conn,
                            host_screen->shminfo.shmseg,
                            host_screen->shminfo.shmid,
-                           False);
-            shm_success = True;
+                           FALSE);
+            shm_success = TRUE;
         }
     }
 
@@ -870,7 +853,7 @@ hostx_paint_rect(EphyrScreenInfo screen,
         xcb_image_shm_put(HostX.conn, host_screen->win,
                           HostX.gc, host_screen->ximg,
                           host_screen->shminfo,
-                          sx, sy, dx, dy, width, height, False);
+                          sx, sy, dx, dy, width, height, FALSE);
     }
     else {
         xcb_image_put(HostX.conn, host_screen->win, HostX.gc, host_screen->ximg,
@@ -1055,7 +1038,7 @@ hostx_get_event(EphyrHostXEvent * ev)
                 /* Attempt grab */
                 xcb_grab_keyboard_cookie_t kbgrabc =
                     xcb_grab_keyboard(HostX.conn,
-                                      True,
+                                      TRUE,
                                       host_screen->win,
                                       XCB_TIME_CURRENT_TIME,
                                       XCB_GRAB_MODE_ASYNC,
@@ -1063,7 +1046,7 @@ hostx_get_event(EphyrHostXEvent * ev)
                 xcb_grab_keyboard_reply_t *kbgrabr;
                 xcb_grab_pointer_cookie_t pgrabc =
                     xcb_grab_pointer(HostX.conn,
-                                     True,
+                                     TRUE,
                                      host_screen->win,
                                      0,
                                      XCB_GRAB_MODE_ASYNC,
@@ -1134,12 +1117,6 @@ hostx_get_event(EphyrHostXEvent * ev)
     return 0;
 }
 
-void *
-hostx_get_display(void)
-{
-    return HostX.dpy;
-}
-
 xcb_connection_t *
 hostx_get_xcbconn(void)
 {
@@ -1189,13 +1166,13 @@ hostx_get_window_attributes(int a_window, EphyrHostWindowAttributes * a_attrs)
 int
 hostx_get_visuals_info(EphyrHostVisualInfo ** a_visuals, int *a_num_entries)
 {
-    Bool is_ok = False;
+    Bool is_ok = FALSE;
     EphyrHostVisualInfo *host_visuals = NULL;
     int nb_items = 0, i = 0, screen_num;
     xcb_screen_iterator_t screens;
     xcb_depth_iterator_t depths;
 
-    EPHYR_RETURN_VAL_IF_FAIL(a_visuals && a_num_entries, False);
+    EPHYR_RETURN_VAL_IF_FAIL(a_visuals && a_num_entries, FALSE);
     EPHYR_LOG("enter\n");
 
     screens = xcb_setup_roots_iterator(xcb_get_setup(HostX.conn));
@@ -1380,11 +1357,10 @@ hostx_set_window_clipping_rectangles(int a_window,
                                      EphyrRect * a_rects, int a_num_rects)
 {
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
     int i = 0;
     xcb_rectangle_t *rects = NULL;
 
-    EPHYR_RETURN_VAL_IF_FAIL(dpy && a_rects, FALSE);
+    EPHYR_RETURN_VAL_IF_FAIL(a_rects, FALSE);
 
     EPHYR_LOG("enter. num rects:%d\n", a_num_rects);
 
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index 1c01f8b..3276eb1 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -205,8 +205,6 @@ void
 int
  hostx_get_event(EphyrHostXEvent * ev);
 
-void *hostx_get_display(void);
-
 xcb_connection_t *
 hostx_get_xcbconn(void);
 
commit 7da2174cf93f59b7e0372a6dc9d37a510076e187
Author: Julien Cristau <jcristau at debian.org>
Date:   Mon Jun 21 14:39:03 2010 +0100

    Xephyr: move glx code to xcb
    
    v2: Rebase on master, notably adding XCB for
        X_GLXvop_MakeCurrentReadSGI (anholt).
    v3: Fix use-after-free (caught by Julien).
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net> (v1)
    Signed-off-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/hw/kdrive/ephyr/ephyrglxext.c b/hw/kdrive/ephyr/ephyrglxext.c
index 22d5108..1231b0d 100644
--- a/hw/kdrive/ephyr/ephyrglxext.c
+++ b/hw/kdrive/ephyr/ephyrglxext.c
@@ -380,10 +380,9 @@ ephyrGLXQueryServerString(__GLXclientState * a_cl, GLbyte * a_pc)
     int length = 0;
 
     EPHYR_LOG("enter\n");
-    if (!ephyrHostGLXGetStringFromServer(req->screen,
-                                         req->name,
-                                         EPHYR_HOST_GLX_QueryServerString,
-                                         &server_string)) {
+    if (!ephyrHostGLXQueryServerString(req->screen,
+                                       req->name,
+                                       &server_string)) {
         EPHYR_LOG_ERROR("failed to query string from host\n");
         goto out;
     }
@@ -724,9 +723,7 @@ ephyrGLXGetStringReal(__GLXclientState * a_cl, GLbyte * a_pc, Bool a_do_swap)
     a_pc += __GLX_SINGLE_HDR_SIZE;
     name = *(GLenum *) (a_pc + 0);
     EPHYR_LOG("context_tag:%d, name:%d\n", context_tag, name);
-    if (!ephyrHostGLXGetStringFromServer(context_tag,
-                                         name,
-                                         EPHYR_HOST_GLX_GetString, &string)) {
+    if (!ephyrHostGLXGetString(context_tag, name, &string)) {
         EPHYR_LOG_ERROR("failed to get string from server\n");
         goto out;
     }
diff --git a/hw/kdrive/ephyr/ephyrhostglx.c b/hw/kdrive/ephyr/ephyrhostglx.c
index 5ecb02d..a115866 100644
--- a/hw/kdrive/ephyr/ephyrhostglx.c
+++ b/hw/kdrive/ephyr/ephyrhostglx.c
@@ -42,11 +42,10 @@
 #undef _XSERVER64
 #endif
 
-#include <X11/Xlibint.h>
-#include <GL/glx.h>
-#include <GL/internal/glcore.h>
+#include <X11/Xdefs.h>
+#include <X11/Xmd.h>
 #include <GL/glxproto.h>
-#include <GL/glxint.h>
+#include <xcb/glx.h>
 #include "ephyrhostglx.h"
 #define _HAVE_XALLOC_DECLS
 #include "ephyrlog.h"
@@ -62,41 +61,20 @@ enum VisualConfRequestType {
 
 static Bool ephyrHostGLXGetVisualConfigsInternal
     (enum VisualConfRequestType a_type,
+     xcb_glx_get_visual_configs_reply_t *reply,
      int32_t a_screen,
-     int32_t * a_num_visuals,
-     int32_t * a_num_props, int32_t * a_props_buf_size, int32_t ** a_props_buf);
-Bool
-ephyrHostGLXGetMajorOpcode(int *a_opcode)
-{
-    Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
-    static int opcode;
-    int first_event_return = 0, first_error_return = 0;
-
-    EPHYR_RETURN_VAL_IF_FAIL(dpy, FALSE);
-    EPHYR_LOG("enter\n");
-    if (!opcode) {
-        if (!XQueryExtension(dpy, GLX_EXTENSION_NAME, &opcode,
-                             &first_event_return, &first_error_return)) {
-            EPHYR_LOG_ERROR("XQueryExtension() failed\n");
-            goto out;
-        }
-    }
-    *a_opcode = opcode;
-    is_ok = TRUE;
- out:
-    EPHYR_LOG("release\n");
-    return is_ok;
-}
+     int32_t *a_num_visuals,
+     int32_t *a_num_props,
+     int32_t *a_props_buf_size,
+     int32_t **a_props_buf);
 
 Bool
 ephyrHostGLXQueryVersion(int *a_major, int *a_minor)
 {
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
-    int major_opcode = 0;
-    xGLXQueryVersionReq *req = NULL;
-    xGLXQueryVersionReply reply;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_glx_query_version_cookie_t cookie;
+    xcb_glx_query_version_reply_t *reply;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_major && a_minor, FALSE);
     EPHYR_LOG("enter\n");
@@ -107,26 +85,14 @@ ephyrHostGLXQueryVersion(int *a_major, int *a_minor)
         return TRUE;
     }
 
-    if (!ephyrHostGLXGetMajorOpcode(&major_opcode)) {
-        EPHYR_LOG_ERROR("failed to get major opcode\n");
-        goto out;
-    }
-    EPHYR_LOG("major opcode: %d\n", major_opcode);
-
     /* Send the glXQueryVersion request */
-    memset(&reply, 0, sizeof(reply));
-    LockDisplay(dpy);
-    GetReq(GLXQueryVersion, req);
-    req->reqType = major_opcode;
-    req->glxCode = X_GLXQueryVersion;
-    req->majorVersion = 2;
-    req->minorVersion = 1;
-    _XReply(dpy, (xReply *) &reply, 0, False);
-    UnlockDisplay(dpy);
-    SyncHandle();
-
-    *a_major = glx_major = reply.majorVersion;
-    *a_minor = glx_minor = reply.minorVersion;
+    cookie = xcb_glx_query_version(conn, 2, 1);
+    reply = xcb_glx_query_version_reply(conn, cookie, NULL);
+    if (!reply)
+        goto out;
+    *a_major = reply->major_version;
+    *a_minor = reply->minor_version;
+    free(reply);
 
     EPHYR_LOG("major:%d, minor:%d\n", *a_major, *a_minor);
 
@@ -136,129 +102,63 @@ ephyrHostGLXQueryVersion(int *a_major, int *a_minor)
     return is_ok;
 }
 
-/**
- * GLX protocol structure for the ficticious "GLXGenericGetString" 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.
- * (this has been copied from the mesa source code)
- */
-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
-
 Bool
-ephyrHostGLXGetStringFromServer(int a_screen_number,
-                                int a_string_name,
-                                enum EphyrHostGLXGetStringOps a_op,
-                                char **a_string)
+ephyrHostGLXGetString(int a_context_tag,
+                      int a_string_name,
+                      char **a_string)
 {
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
-    int default_screen = DefaultScreen(dpy);
-    xGLXGenericGetStringReq *req = NULL;
-    xGLXSingleReply reply;
-    unsigned long length = 0, numbytes = 0;
-    int major_opcode = 0, get_string_op = 0;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_glx_get_string_cookie_t cookie;
+    xcb_glx_get_string_reply_t *reply;
 
-    EPHYR_RETURN_VAL_IF_FAIL(dpy && a_string, FALSE);
+    EPHYR_RETURN_VAL_IF_FAIL(conn && a_string, FALSE);
 
     EPHYR_LOG("enter\n");
-    switch (a_op) {
-    case EPHYR_HOST_GLX_QueryServerString:
-        get_string_op = X_GLXQueryServerString;
-        break;
-    case EPHYR_HOST_GLX_GetString:
-        get_string_op = X_GLsop_GetString;
-        EPHYR_LOG("Going to glXGetString. strname:%#x, ctxttag:%d\n",
-                  a_string_name, a_screen_number);
-        break;
-    default:
-        EPHYR_LOG_ERROR("unknown EphyrHostGLXGetStringOp:%d\n", a_op);
-        goto out;
-    }
-
-    if (!ephyrHostGLXGetMajorOpcode(&major_opcode)) {
-        EPHYR_LOG_ERROR("failed to get major opcode\n");
+    cookie = xcb_glx_get_string(conn, a_context_tag, a_string_name);
+    reply = xcb_glx_get_string_reply(conn, cookie, NULL);
+    if (!reply)
         goto out;
-    }
-    EPHYR_LOG("major opcode: %d\n", major_opcode);
-
-    LockDisplay(dpy);
-
-    /* All of the GLX protocol requests for getting a string from the server
-     * look the same.  The exact meaning of the a_for_whom field is usually
-     * either the screen number (for glXQueryServerString) or the context tag
-     * (for GLXSingle).
-     */
-    GetReq(GLXGenericGetString, req);
-    req->reqType = major_opcode;
-    req->glxCode = get_string_op;
-    req->for_whom = default_screen;
-    req->name = a_string_name;
-
-    _XReply(dpy, (xReply *) &reply, 0, False);
-
-#if UINT32_MAX >= (ULONG_MAX / 4)
-    if (reply.length >= (ULONG_MAX / 4)) {
-        _XEatDataWords(dpy, reply.length);
-        goto eat_out;
-    }
-#endif
-    if (reply.length > 0) {
-        length = (unsigned long) reply.length * 4;
-        numbytes = reply.size;
-        if (numbytes > length) {
-            EPHYR_LOG_ERROR("string length %d longer than reply length %d\n",
-                            numbytes, length);
-            goto eat_out;
-        }
-    }
-    EPHYR_LOG("going to get a string of size:%d\n", numbytes);
-
-    if (numbytes < INT_MAX)
-        *a_string = Xcalloc(numbytes + 1, 1);
-    else
-        *a_string = NULL;
-    if (*a_string == NULL) {
-        EPHYR_LOG_ERROR("allocation failed\n");
-        goto eat_out;
-    }
+    *a_string = malloc(reply->n + 1);
+    memcpy(*a_string, xcb_glx_get_string_string(reply), reply->n);
+    (*a_string)[reply->n] = '\0';
+    free(reply);
+    is_ok = TRUE;
+out:
+    EPHYR_LOG("leave\n");
+    return is_ok;
+}
 
-    if (_XRead(dpy, *a_string, numbytes)) {
-        EPHYR_LOG_ERROR("read failed\n");
-        length = 0; /* if read failed, no idea how much to eat */
-    }
-    else {
-        length -= numbytes;
-        EPHYR_LOG("strname:%#x, strvalue:'%s', strlen:%d\n",
-                  a_string_name, *a_string, numbytes);
-        is_ok = TRUE;
-    }
+Bool ephyrHostGLXQueryServerString(int a_screen_number,
+                                   int a_string_name,
+                                   char **a_string)
+{
+    Bool is_ok = FALSE;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    int default_screen = hostx_get_screen();
+    xcb_glx_query_server_string_cookie_t cookie;
+    xcb_glx_query_server_string_reply_t *reply;
 
- eat_out:
-    _XEatData(dpy, length);
-    UnlockDisplay(dpy);
-    SyncHandle();
+    EPHYR_RETURN_VAL_IF_FAIL(conn && a_string, FALSE);
 
- out:
+    EPHYR_LOG("enter\n");
+    cookie = xcb_glx_query_server_string(conn, default_screen, a_string_name);
+    reply = xcb_glx_query_server_string_reply(conn, cookie, NULL);
+    if (!reply)
+        goto out;
+    *a_string = malloc(reply->str_len + 1);
+    memcpy(*a_string, xcb_glx_query_server_string_string(reply), reply->str_len);
+    (*a_string)[reply->str_len] = '\0';
+    free(reply);
+    is_ok = TRUE;
+out:
     EPHYR_LOG("leave\n");
     return is_ok;
 }
 
 static Bool
 ephyrHostGLXGetVisualConfigsInternal(enum VisualConfRequestType a_type,
+                                     xcb_glx_get_visual_configs_reply_t *reply,
                                      int32_t a_screen,
                                      int32_t * a_num_visuals,
                                      int32_t * a_num_props,
@@ -266,110 +166,36 @@ ephyrHostGLXGetVisualConfigsInternal(enum VisualConfRequestType a_type,
                                      int32_t ** a_props_buf)
 {
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
-    xGLXGetVisualConfigsReq *req;
-    xGLXGetFBConfigsReq *fb_req;
-    xGLXVendorPrivateWithReplyReq *vpreq;
-    xGLXGetFBConfigsSGIXReq *sgi_req;
-    xGLXGetVisualConfigsReply reply;
-    char *server_glx_version = NULL, *server_glx_extensions = NULL;
-    int j = 0,
-        major_opcode = 0,
-        num_props = 0,
-        num_visuals = 0, props_buf_size = 0, props_per_visual_size = 0;
+    int num_props = 0, num_visuals = 0, props_buf_size = 0;
+    int props_per_visual_size = 0;
     int32_t *props_buf = NULL;
 
-    EPHYR_RETURN_VAL_IF_FAIL(dpy, FALSE);
-
-    if (!ephyrHostGLXGetMajorOpcode(&major_opcode)) {
-        EPHYR_LOG_ERROR("failed to get opcode\n");
-        goto out;
-    }
-
-    LockDisplay(dpy);
-    switch (a_type) {
-    case EPHYR_GET_FB_CONFIG:
-        GetReq(GLXGetFBConfigs, fb_req);
-        fb_req->reqType = major_opcode;
-        fb_req->glxCode = X_GLXGetFBConfigs;
-        fb_req->screen = DefaultScreen(dpy);
-        break;
-
-    case EPHYR_VENDOR_PRIV_GET_FB_CONFIG_SGIX:
-        GetReqExtra(GLXVendorPrivateWithReply,
-                    sz_xGLXGetFBConfigsSGIXReq
-                    - sz_xGLXVendorPrivateWithReplyReq, vpreq);
-        sgi_req = (xGLXGetFBConfigsSGIXReq *) vpreq;
-        sgi_req->reqType = major_opcode;
-        sgi_req->glxCode = X_GLXVendorPrivateWithReply;
-        sgi_req->vendorCode = X_GLXvop_GetFBConfigsSGIX;
-        sgi_req->screen = DefaultScreen(dpy);
-        break;
-
-    case EPHYR_GET_VISUAL_CONFIGS:
-        GetReq(GLXGetVisualConfigs, req);
-        req->reqType = major_opcode;
-        req->glxCode = X_GLXGetVisualConfigs;
-        req->screen = DefaultScreen(dpy);
-        break;
-    }
-
-    if (!_XReply(dpy, (xReply *) &reply, 0, False)) {
-        EPHYR_LOG_ERROR("unknown error\n");
-        UnlockDisplay(dpy);
-        goto out;
-    }
-    if (!reply.numVisuals) {
+   if (!reply->num_visuals) {
         EPHYR_LOG_ERROR("screen does not support GL rendering\n");
-        UnlockDisplay(dpy);
-        goto out;
-    }
-    num_visuals = reply.numVisuals;
-
-    /* FIXME: Is the __GLX_MIN_CONFIG_PROPS test correct for
-     * FIXME: FBconfigs? 
-     */
-    /* Check number of properties */
-    num_props = reply.numProps;
-    if ((num_props < __GLX_MIN_CONFIG_PROPS) ||
-        (num_props > __GLX_MAX_CONFIG_PROPS)) {
-        /* Huh?  Not in protocol defined limits.  Punt */
-        EPHYR_LOG_ERROR("got a bad reply to request\n");
-        UnlockDisplay(dpy);
         goto out;
     }
+    num_visuals = reply->num_visuals;
+
+    num_props = reply->num_properties;
 
     if (a_type != EPHYR_GET_VISUAL_CONFIGS) {
         num_props *= 2;
     }
-    props_per_visual_size = num_props * __GLX_SIZE_INT32;
-    props_buf_size = props_per_visual_size * reply.numVisuals;
+    props_per_visual_size = num_props * sizeof(uint32_t);
+    props_buf_size = props_per_visual_size * reply->num_visuals;
     props_buf = malloc(props_buf_size);
-    for (j = 0; j < reply.numVisuals; j++) {
-        if (_XRead(dpy,
-                   &((char *) props_buf)[j * props_per_visual_size],
-                   props_per_visual_size) != Success) {
-            EPHYR_LOG_ERROR("read failed\n");
-        }
-    }
-    UnlockDisplay(dpy);
+    if (!props_buf)
+        goto out;
+    memcpy(props_buf, xcb_glx_get_visual_configs_property_list(reply),
+           props_buf_size);
 
     *a_num_visuals = num_visuals;
-    *a_num_props = reply.numProps;
+    *a_num_props = reply->num_properties;
     *a_props_buf_size = props_buf_size;
     *a_props_buf = props_buf;
     is_ok = TRUE;
 
- out:
-    if (server_glx_version) {
-        XFree(server_glx_version);
-        server_glx_version = NULL;
-    }
-    if (server_glx_extensions) {
-        XFree(server_glx_extensions);
-        server_glx_extensions = NULL;
-    }
-    SyncHandle();
+out:
     return is_ok;
 }
 
@@ -380,14 +206,27 @@ ephyrHostGLXGetVisualConfigs(int32_t a_screen,
                              int32_t * a_props_buf_size, int32_t ** a_props_buf)
 {
     Bool is_ok = FALSE;
+    xcb_glx_get_visual_configs_cookie_t cookie;
+    xcb_glx_get_visual_configs_reply_t *reply;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    int screen = hostx_get_screen();
 
     EPHYR_LOG("enter\n");
-    is_ok = ephyrHostGLXGetVisualConfigsInternal(EPHYR_GET_VISUAL_CONFIGS,
-                                                 a_screen,
-                                                 a_num_visuals,
-                                                 a_num_props,
-                                                 a_props_buf_size, a_props_buf);
-
+    cookie = xcb_glx_get_visual_configs(conn, screen);
+    reply = xcb_glx_get_visual_configs_reply(conn, cookie, NULL);
+    if (!reply)
+        goto out;
+    is_ok = ephyrHostGLXGetVisualConfigsInternal
+        (EPHYR_GET_VISUAL_CONFIGS,
+         reply,
+         a_screen,
+         a_num_visuals,
+         a_num_props,
+         a_props_buf_size,
+         a_props_buf);
+
+out:
+    free(reply);
     EPHYR_LOG("leave:%d\n", is_ok);
     return is_ok;
 }
@@ -399,12 +238,32 @@ ephyrHostGLXVendorPrivGetFBConfigsSGIX(int a_screen,
                                        int32_t * a_props_buf_size,
                                        int32_t ** a_props_buf)
 {
-    Bool is_ok = FALSE;
+    Bool is_ok=FALSE;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    int screen = hostx_get_screen();
+    xcb_glx_vendor_private_with_reply_cookie_t cookie;
+    union {
+        xcb_glx_vendor_private_with_reply_reply_t *vprep;
+        xcb_glx_get_visual_configs_reply_t *rep;
+    } reply;
 
     EPHYR_LOG("enter\n");
+    cookie = xcb_glx_vendor_private_with_reply(conn,
+                                               X_GLXvop_GetFBConfigsSGIX,
+                                               0, 4, (uint8_t *)&screen);
+    reply.vprep = xcb_glx_vendor_private_with_reply_reply(conn, cookie, NULL);
+    if (!reply.vprep)
+        goto out;
     is_ok = ephyrHostGLXGetVisualConfigsInternal
         (EPHYR_VENDOR_PRIV_GET_FB_CONFIG_SGIX,
-         a_screen, a_num_visuals, a_num_props, a_props_buf_size, a_props_buf);
+         reply.rep,
+         a_screen,
+         a_num_visuals,
+         a_num_props,
+         a_props_buf_size,
+         a_props_buf);
+out:
+    free(reply.vprep);
     EPHYR_LOG("leave\n");
     return is_ok;
 }
@@ -413,39 +272,15 @@ Bool
 ephyrHostGLXSendClientInfo(int32_t a_major, int32_t a_minor,
                            const char *a_extension_list)
 {
-    Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
-    xGLXClientInfoReq *req;
+    xcb_connection_t *conn = hostx_get_xcbconn();
     int size;
-    int32_t major_opcode = 0;
-
-    EPHYR_RETURN_VAL_IF_FAIL(dpy && a_extension_list, FALSE);
-
-    if (!ephyrHostGLXGetMajorOpcode(&major_opcode)) {
-        EPHYR_LOG_ERROR("failed to get major opcode\n");
-        goto out;
-    }
-
-    LockDisplay(dpy);
-
-    GetReq(GLXClientInfo, req);
-    req->reqType = major_opcode;
-    req->glxCode = X_GLXClientInfo;
-    req->major = a_major;
-    req->minor = a_minor;
 
-    size = strlen(a_extension_list) + 1;
-    req->length += bytes_to_int32(size);
-    req->numbytes = size;
-    Data(dpy, a_extension_list, size);
+    EPHYR_RETURN_VAL_IF_FAIL(conn && a_extension_list, FALSE);
 
-    UnlockDisplay(dpy);
-    SyncHandle();
+    size = strlen (a_extension_list) + 1;
+    xcb_glx_client_info(conn, a_major, a_minor, size, a_extension_list);
 
-    is_ok = TRUE;
-
- out:
-    return is_ok;
+    return TRUE;
 }
 
 Bool
@@ -457,9 +292,9 @@ ephyrHostGLXCreateContext(int a_screen,
                           Bool a_direct,
                           int code)
 {
+    xcb_connection_t *conn = hostx_get_xcbconn();
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
-    int major_opcode = 0, remote_context_id = 0;
+    int remote_context_id = 0;
 
     EPHYR_LOG("enter. screen:%d, generic_id:%d, contextid:%d, rendertype:%d, "
                  "direct:%d\n", a_screen, a_generic_id, a_context_id,
@@ -471,39 +306,24 @@ ephyrHostGLXCreateContext(int a_screen,
         goto out;
     }
 
-    if (!ephyrHostGLXGetMajorOpcode(&major_opcode)) {
-        EPHYR_LOG_ERROR("failed to get major opcode\n");
-        goto out;
-    }
-
-    LockDisplay(dpy);
-
     switch (code) {
     case X_GLXCreateContext: {
-        /* Send the glXCreateContext request */
-        xGLXCreateContextReq *req;
-        GetReq(GLXCreateContext, req);
-        req->reqType = major_opcode;
-        req->glxCode = X_GLXCreateContext;
-        req->context = remote_context_id;
-        req->visual = a_generic_id;
-        req->screen = DefaultScreen(dpy);
-        req->shareList = a_share_list_ctxt_id;
-        req->isDirect = a_direct;
-    }
+        xcb_glx_create_context(conn,
+                               remote_context_id,
+                               a_generic_id,
+                               hostx_get_screen(),
+                               a_share_list_ctxt_id,
+                               a_direct);
+   }
 
     case X_GLXCreateNewContext: {
-        /* Send the glXCreateNewContext request */
-        xGLXCreateNewContextReq *req;
-        GetReq(GLXCreateNewContext, req);
-        req->reqType = major_opcode;
-        req->glxCode = X_GLXCreateNewContext;
-        req->context = remote_context_id;
-        req->fbconfig = a_generic_id;
-        req->screen = DefaultScreen(dpy);
-        req->renderType = a_render_type;
-        req->shareList = a_share_list_ctxt_id;
-        req->isDirect = a_direct;
+        xcb_glx_create_new_context(conn,
+                                   remote_context_id,
+                                   a_generic_id,
+                                   hostx_get_screen(),
+                                   a_render_type,
+                                   a_share_list_ctxt_id,
+                                   a_direct);
     }
 
     default:
@@ -511,9 +331,6 @@ ephyrHostGLXCreateContext(int a_screen,
         EPHYR_LOG("Internal error! Invalid CreateContext code!\n");
     }
 
-    UnlockDisplay(dpy);
-    SyncHandle();
-
     is_ok = TRUE;
 
  out:
@@ -524,30 +341,19 @@ ephyrHostGLXCreateContext(int a_screen,
 Bool
 ephyrHostDestroyContext(int a_ctxt_id)
 {
+    xcb_connection_t *conn = hostx_get_xcbconn();
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
-    int major_opcode = 0, remote_ctxt_id = 0;
-    xGLXDestroyContextReq *req = NULL;
+    int remote_ctxt_id = 0;
 
     EPHYR_LOG("enter:%d\n", a_ctxt_id);
 
-    if (!ephyrHostGLXGetMajorOpcode(&major_opcode)) {
-        EPHYR_LOG_ERROR("failed to get major opcode\n");
-        goto out;
-    }
     if (!hostx_get_resource_id_peer(a_ctxt_id, &remote_ctxt_id)) {
         EPHYR_LOG_ERROR("failed to get remote glx ctxt id\n");
         goto out;
     }
     EPHYR_LOG("host context id:%d\n", remote_ctxt_id);
 
-    LockDisplay(dpy);
-    GetReq(GLXDestroyContext, req);
-    req->reqType = major_opcode;
-    req->glxCode = X_GLXDestroyContext;
-    req->context = remote_ctxt_id;
-    UnlockDisplay(dpy);
-    SyncHandle();
+    xcb_glx_destroy_context(conn, remote_ctxt_id);
 
     is_ok = TRUE;
 
@@ -560,81 +366,71 @@ Bool
 ephyrHostGLXMakeCurrent(int a_drawable, int a_readable,
                         int a_glx_ctxt_id, int a_old_ctxt_tag, int *a_ctxt_tag)
 {
+    xcb_connection_t *conn = hostx_get_xcbconn();
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
-    int32_t major_opcode = 0;
     int remote_glx_ctxt_id = 0;
-    xGLXMakeCurrentReply reply;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_ctxt_tag, FALSE);
 
     EPHYR_LOG("enter. drawable:%d, read:%d, context:%d, oldtag:%d\n",
               a_drawable, a_readable, a_glx_ctxt_id, a_old_ctxt_tag);
 
-    if (!ephyrHostGLXGetMajorOpcode(&major_opcode)) {
-        EPHYR_LOG_ERROR("failed to get major opcode\n");
-        goto out;
-    }
     if (!hostx_get_resource_id_peer(a_glx_ctxt_id, &remote_glx_ctxt_id)) {
         EPHYR_LOG_ERROR("failed to get remote glx ctxt id\n");
         goto out;
     }
 
-    LockDisplay(dpy);
-
     /* If both drawables are the same, use the old MakeCurrent request.
      * Otherwise, if we have GLX 1.3 or higher, use the MakeContextCurrent
      * request which supports separate read and draw targets.  Failing that,
      * try the SGI MakeCurrentRead extension.  Logic cribbed from Mesa. */
     if (a_drawable == a_readable) {
-        xGLXMakeCurrentReq *req;
-
-        GetReq(GLXMakeCurrent, req);
-        req->reqType = major_opcode;
-        req->glxCode = X_GLXMakeCurrent;
-        req->drawable = a_drawable;
-        req->context = remote_glx_ctxt_id;
-        req->oldContextTag = a_old_ctxt_tag;
+        xcb_glx_make_current_cookie_t cookie;
+        xcb_glx_make_current_reply_t *reply;
+        cookie = xcb_glx_make_current(conn,
+                                      a_drawable,
+                                      remote_glx_ctxt_id,
+                                      a_old_ctxt_tag);
+        reply = xcb_glx_make_current_reply(conn, cookie, NULL);
+        if (!reply)
+            goto out;
+        *a_ctxt_tag = reply->context_tag;
+        free(reply);
     }
     else if (glx_major > 1 || glx_minor >= 3) {
-        xGLXMakeContextCurrentReq *req;
-
-        GetReq(GLXMakeContextCurrent, req);
-        req->reqType = major_opcode;
-        req->glxCode = X_GLXMakeContextCurrent;
-        req->drawable = a_drawable;
-        req->readdrawable = a_readable;
-        req->context = remote_glx_ctxt_id;
-        req->oldContextTag = a_old_ctxt_tag;
+        xcb_glx_make_context_current_cookie_t cookie;
+        xcb_glx_make_context_current_reply_t *reply;
+        cookie = xcb_glx_make_context_current(conn,
+                                              a_old_ctxt_tag,
+                                              a_drawable,
+                                              a_readable,
+                                              remote_glx_ctxt_id);
+        reply = xcb_glx_make_context_current_reply(conn, cookie, NULL);
+        if (!reply)
+            goto out;
+        *a_ctxt_tag = reply->context_tag;
+        free(reply);
     }
     else {
-        xGLXVendorPrivateWithReplyReq *vpreq;
-        xGLXMakeCurrentReadSGIReq *req;
-
-        GetReqExtra(GLXVendorPrivateWithReply,
-                    (sz_xGLXMakeCurrentReadSGIReq -
-                     sz_xGLXVendorPrivateWithReplyReq),
-                    vpreq);
-        req = (xGLXMakeCurrentReadSGIReq *) vpreq;
-        req->reqType = major_opcode;
-        req->glxCode = X_GLXVendorPrivateWithReply;
-        req->vendorCode = X_GLXvop_MakeCurrentReadSGI;
-        req->drawable = a_drawable;
-        req->readable = a_readable;
-        req->context = remote_glx_ctxt_id;
-        req->oldContextTag = a_old_ctxt_tag;
-    }
+        xcb_glx_vendor_private_with_reply_cookie_t cookie;
+        xcb_glx_vendor_private_with_reply_reply_t *reply;
+        uint32_t data[3] = {
+            a_drawable, a_readable, remote_glx_ctxt_id,
+        };
 
-    memset(&reply, 0, sizeof(reply));
-    if (!_XReply(dpy, (xReply *) &reply, 0, False)) {
-        EPHYR_LOG_ERROR("failed to get reply from host\n");
-        UnlockDisplay(dpy);
-        SyncHandle();
-        goto out;
+        EPHYR_LOG("enter\n");
+        cookie = xcb_glx_vendor_private_with_reply(conn,
+                                                   X_GLXvop_MakeCurrentReadSGI,
+                                                   a_old_ctxt_tag,
+                                                   sizeof(data),
+                                                   (uint8_t *)data);
+        reply = xcb_glx_vendor_private_with_reply_reply(conn, cookie, NULL);
+
+        *a_ctxt_tag = reply->retval;
+
+        free(reply);
     }
-    UnlockDisplay(dpy);
-    SyncHandle();
-    *a_ctxt_tag = reply.contextTag;
+
     EPHYR_LOG("context tag:%d\n", *a_ctxt_tag);
     is_ok = TRUE;
 
@@ -643,79 +439,32 @@ ephyrHostGLXMakeCurrent(int a_drawable, int a_readable,
     return is_ok;
 }
 
-#define X_GLXSingle 0
-
-#define __EPHYR_GLX_SINGLE_PUT_CHAR(offset,a) \
-    *((INT8 *) (pc + offset)) = a
-
-#define EPHYR_GLX_SINGLE_PUT_SHORT(offset,a) \
-    *((INT16 *) (pc + offset)) = a
-
-#define EPHYR_GLX_SINGLE_PUT_LONG(offset,a) \
-    *((INT32 *) (pc + offset)) = a
-
-#define EPHYR_GLX_SINGLE_PUT_FLOAT(offset,a) \
-    *((FLOAT32 *) (pc + offset)) = a
-
-#define EPHYR_GLX_SINGLE_READ_XREPLY()       \
-    (void) _XReply(dpy, (xReply*) &reply, 0, False)
-
-#define EPHYR_GLX_SINGLE_GET_RETVAL(a,cast) \
-    a = (cast) reply.retval
-
-#define EPHYR_GLX_SINGLE_GET_SIZE(a) \
-    a = (GLint) reply.size
-
-#define EPHYR_GLX_SINGLE_GET_CHAR(p) \
-    *p = *(GLbyte *)&reply.pad3;
-
-#define EPHYR_GLX_SINGLE_GET_SHORT(p) \
-    *p = *(GLshort *)&reply.pad3;
-
-#define EPHYR_GLX_SINGLE_GET_LONG(p) \
-    *p = *(GLint *)&reply.pad3;
-
-#define EPHYR_GLX_SINGLE_GET_FLOAT(p) \
-    *p = *(GLfloat *)&reply.pad3;
-
 Bool
 ephyrHostGetIntegerValue(int a_current_context_tag, int a_int, int *a_val)
 {
+    xcb_connection_t *conn = hostx_get_xcbconn();
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
-    int major_opcode = 0, size = 0;
-    xGLXSingleReq *req = NULL;
-    xGLXSingleReply reply;
-    unsigned char *pc = NULL;
+    int size = 0;
+    xcb_glx_get_integerv_cookie_t cookie;
+    xcb_glx_get_integerv_reply_t *reply;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_val, FALSE);
 
     EPHYR_LOG("enter\n");
-    if (!ephyrHostGLXGetMajorOpcode(&major_opcode)) {
-        EPHYR_LOG_ERROR("failed to get major opcode\n");
+    cookie = xcb_glx_get_integerv(conn, a_current_context_tag, a_int);
+    reply = xcb_glx_get_integerv_reply(conn, cookie, NULL);
+    if (!reply)
         goto out;
-    }
-    LockDisplay(dpy);
-    GetReqExtra(GLXSingle, 4, req);
-    req->reqType = major_opcode;
-    req->glxCode = X_GLsop_GetIntegerv;
-    req->contextTag = a_current_context_tag;
-    pc = ((unsigned char *) (req) + sz_xGLXSingleReq);
-    EPHYR_GLX_SINGLE_PUT_LONG(0, a_int);
-    EPHYR_GLX_SINGLE_READ_XREPLY();
-    EPHYR_GLX_SINGLE_GET_SIZE(size);
+    size = reply->n;
     if (!size) {
-        UnlockDisplay(dpy);
-        SyncHandle();
         EPHYR_LOG_ERROR("X_GLsop_GetIngerv failed\n");
         goto out;
     }
-    EPHYR_GLX_SINGLE_GET_LONG(a_val);
-    UnlockDisplay(dpy);
-    SyncHandle();
+    *a_val = reply->datum;
     is_ok = TRUE;
 
- out:
+out:
+    free(reply);
     EPHYR_LOG("leave\n");
     return is_ok;
 }
@@ -724,40 +473,29 @@ Bool
 ephyrHostIsContextDirect(int a_ctxt_id, int *a_is_direct)
 {
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
-    xGLXIsDirectReq *req = NULL;
-    xGLXIsDirectReply reply;
-    int major_opcode = 0, remote_glx_ctxt_id = 0;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_glx_is_direct_cookie_t cookie;
+    xcb_glx_is_direct_reply_t *reply = NULL;
+    int remote_glx_ctxt_id = 0;
 
     EPHYR_LOG("enter\n");
-    if (!ephyrHostGLXGetMajorOpcode(&major_opcode)) {
-        EPHYR_LOG_ERROR("failed to get major opcode\n");
-        goto out;
-    }
-    if (!hostx_get_resource_id_peer(a_ctxt_id, &remote_glx_ctxt_id)) {
-        EPHYR_LOG_ERROR("failed to get remote glx ctxt id\n");
+    if (!hostx_get_resource_id_peer (a_ctxt_id, &remote_glx_ctxt_id)) {
+        EPHYR_LOG_ERROR ("failed to get remote glx ctxt id\n");
         goto out;
     }
-    memset(&reply, 0, sizeof(reply));
 
     /* Send the glXIsDirect request */
-    LockDisplay(dpy);
-    GetReq(GLXIsDirect, req);
-    req->reqType = major_opcode;
-    req->glxCode = X_GLXIsDirect;
-    req->context = remote_glx_ctxt_id;
-    if (!_XReply(dpy, (xReply *) &reply, 0, False)) {
+    cookie = xcb_glx_is_direct(conn, remote_glx_ctxt_id);
+    reply = xcb_glx_is_direct_reply(conn, cookie, NULL);
+    if (!reply) {
         EPHYR_LOG_ERROR("fail in reading reply from host\n");
-        UnlockDisplay(dpy);
-        SyncHandle();
         goto out;
     }
-    UnlockDisplay(dpy);
-    SyncHandle();
-    *a_is_direct = reply.isDirect;
+    *a_is_direct = reply->is_direct;
     is_ok = TRUE;
 
- out:
+out:
+    free(reply);
     EPHYR_LOG("leave\n");
     return is_ok;
 }
diff --git a/hw/kdrive/ephyr/ephyrhostglx.h b/hw/kdrive/ephyr/ephyrhostglx.h
index 7ff515d..309d0f2 100644
--- a/hw/kdrive/ephyr/ephyrhostglx.h
+++ b/hw/kdrive/ephyr/ephyrhostglx.h
@@ -35,10 +35,12 @@ enum EphyrHostGLXGetStringOps {
 };
 
 Bool ephyrHostGLXQueryVersion(int *a_maj, int *a_min);
-Bool ephyrHostGLXGetStringFromServer(int a_screen_number,
-                                     int a_string_name,
-                                     enum EphyrHostGLXGetStringOps a_op,
-                                     char **a_string);
+Bool ephyrHostGLXGetString(int a_context_tag,
+                           int a_string_name,
+                           char **a_string);
+Bool ephyrHostGLXQueryServerString(int a_screen_number,
+                                   int a_string_name,
+                                   char **a_string);
 Bool ephyrHostGLXGetVisualConfigs(int a_screen,
                                   int32_t * a_num_visuals,
                                   int32_t * a_num_props,
@@ -51,7 +53,6 @@ ephyrHostGLXVendorPrivGetFBConfigsSGIX(int a_screen,
                                        int32_t * a_num_props,
                                        int32_t * a_props_buf_size,
                                        int32_t ** a_props_buf);
-Bool ephyrHostGLXGetMajorOpcode(int32_t * a_opcode);
 Bool ephyrHostGLXSendClientInfo(int32_t a_major, int32_t a_minor,
                                 const char *a_extension_list);
 Bool ephyrHostGLXCreateContext(int a_screen,
commit 19c2699b954e2978301c4449dfccc7ca40bf6ae6
Author: Julien Cristau <jcristau at debian.org>
Date:   Wed Jun 23 18:36:00 2010 +0100

    Xephyr: remove unused DRI1 code
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/Makefile.am b/hw/kdrive/ephyr/Makefile.am
index ab02437..7648e14 100644
--- a/hw/kdrive/ephyr/Makefile.am
+++ b/hw/kdrive/ephyr/Makefile.am
@@ -34,8 +34,6 @@ HOSTDRI_SRCS =			\
 	ephyrdriext.h		\
 	ephyrdri.c		\
 	ephyrdri.h		\
-	XF86dri.c		\
-	xf86dri.h		\
 	ephyrglxext.c		\
 	ephyrglxext.h		\
 	ephyrhostglx.c		\
diff --git a/hw/kdrive/ephyr/XF86dri.c b/hw/kdrive/ephyr/XF86dri.c
deleted file mode 100644
index 15b6219..0000000
--- a/hw/kdrive/ephyr/XF86dri.c
+++ /dev/null
@@ -1,654 +0,0 @@
-/* $XFree86: xc/lib/GL/dri/XF86dri.c,v 1.13 2002/10/30 12:51:25 alanh Exp $ */
-/**************************************************************************
-
-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 <martin at valinux.com>
- *   Jens Owen <jens at tungstengraphics.com>
- *   Rickard E. (Rik) Faith <faith at valinux.com>
- *
- */
-
-/*
- * This file has been copied from the mesa source tree and a little bit
- * modified by:
- *
- * Dodji Seketeli <dodji at openedhand.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <kdrive-config.h>
-#endif
-/*
- * including some server headers (like kdrive-config.h)
- * might define the macro _XSERVER64
- * on 64 bits machines. That macro must _NOT_ be defined for Xlib
- * client code, otherwise bad things happen.
- * So let's undef that macro if necessary.
- */
-#ifdef _XSERVER64
-#undef _XSERVER64
-#endif
-
-/* THIS IS NOT AN X CONSORTIUM STANDARD */
-
-#include <X11/Xlibint.h>
-#include <X11/extensions/Xext.h>
-#include <X11/extensions/extutil.h>
-#include <GL/glx.h>
-#include "xf86dri.h"
-#include <X11/dri/xf86driproto.h>
-#include <limits.h>
-
-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
-XF86DRIOpenFullScreen(Display * dpy, int screen, Drawable drawable);
-Bool
-XF86DRICloseFullScreen(Display * dpy, int screen, Drawable drawable);
-
-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 (rep.busIdStringLength < INT_MAX)
-            *busIdString = calloc(rep.busIdStringLength + 1, 1);
-        else
-            *busIdString = NULL;
-        if (*busIdString == NULL) {
-            _XEatDataWords(dpy, rep.length);
-            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 (rep.clientDriverNameLength < INT_MAX)
-            *clientDriverName = calloc(rep.clientDriverNameLength + 1, 1);
-        else
-            *clientDriverName = NULL;
-        if (*clientDriverName == NULL) {
-            _XEatDataWords(dpy, rep.length);
-            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);
-}
-
-GLboolean
-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;
-}
-
-GLboolean
-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;
-}
-
-GLboolean
-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, GL_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 = NULL;
-    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)) {
-        _XEatDataWords(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 *) calloc(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 *) calloc(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 *) calloc(rep.devPrivateSize, 1))) {
-            _XEatDataWords(dpy, rep.length);
-            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;
-}
diff --git a/hw/kdrive/ephyr/xf86dri.h b/hw/kdrive/ephyr/xf86dri.h
deleted file mode 100644
index 88d3f3b..0000000
--- a/hw/kdrive/ephyr/xf86dri.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/* $XFree86: xc/lib/GL/dri/xf86dri.h,v 1.8 2002/10/30 12:51:25 alanh Exp $ */
-/**************************************************************************
-
-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 <martin at valinux.com>
- * \author Jens Owen <jens at tungstengraphics.com>
- * \author Rickard E. (Rik) Faith <faith at valinux.com>
- */
-
-#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 GLboolean XF86DRIDestroyContext(Display * dpy, int screen,
-                                       XID context_id);
-
-extern GLboolean XF86DRICreateDrawable(Display * dpy, int screen,
-                                       XID drawable,
-                                       drm_drawable_t * hHWDrawable);
-
-extern GLboolean 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);
-
-_XFUNCPROTOEND
-#endif                          /* _XF86DRI_SERVER_ */
-#endif                          /* _XF86DRI_H_ */
commit 68b7db19e8d3c1ac55a811327d3058f4c8fb45ec
Author: Julien Cristau <jcristau at debian.org>
Date:   Sun Jun 20 00:07:08 2010 +0100

    Xephyr: move ephyrdri over to xcb
    
    Require new xcb-xf86dri to get fixed GetDrawableInfo.
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/configure.ac b/configure.ac
index b8d9a25..a6c466e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2121,7 +2121,7 @@ if test "$KDRIVE" = yes; then
         XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xcb-xv"
     fi
     if test "x$DRI" = xyes && test "x$GLX" = xyes; then
-        XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBGL libdrm xcb-glx xcb-xf86dri"
+        XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBGL libdrm xcb-glx xcb-xf86dri > 1.6"
     fi
 
     if test "x$XEPHYR" = xauto; then
diff --git a/hw/kdrive/ephyr/ephyrdri.c b/hw/kdrive/ephyr/ephyrdri.c
index 3a4a063..16678fc 100644
--- a/hw/kdrive/ephyr/ephyrdri.c
+++ b/hw/kdrive/ephyr/ephyrdri.c
@@ -29,10 +29,8 @@
 #include <kdrive-config.h>
 #endif
 
-#include <X11/Xutil.h>
-#include <X11/Xlibint.h>
-#include <GL/glx.h>
-#include "xf86dri.h"
+#include <X11/Xdefs.h>
+#include <xcb/xf86dri.h>
 #include "hostx.h"
 #include "ephyrdri.h"
 #define _HAVE_XALLOC_DECLS
@@ -49,13 +47,21 @@
     Bool
 ephyrDRIQueryDirectRenderingCapable(int a_screen, Bool *a_is_capable)
 {
-    Display *dpy = hostx_get_display();
+    xcb_connection_t *conn = hostx_get_xcbconn();
     Bool is_ok = FALSE;
+    xcb_xf86dri_query_direct_rendering_capable_cookie_t cookie;
+    xcb_xf86dri_query_direct_rendering_capable_reply_t *reply;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_is_capable, FALSE);
     EPHYR_LOG("enter\n");
-    is_ok = XF86DRIQueryDirectRenderingCapable(dpy, DefaultScreen(dpy),
-                                               a_is_capable);
+    cookie = xcb_xf86dri_query_direct_rendering_capable(conn,
+                                                        hostx_get_screen());
+    reply = xcb_xf86dri_query_direct_rendering_capable_reply(conn, cookie, NULL);
+    if (reply) {
+        is_ok = TRUE;
+        *a_is_capable = reply->is_capable;
+        free(reply);
+    }
     EPHYR_LOG("leave. is_capable:%d, is_ok=%d\n", *a_is_capable, is_ok);
 
     return is_ok;
@@ -65,31 +71,48 @@ Bool
 ephyrDRIOpenConnection(int a_screen,
                        drm_handle_t * a_sarea, char **a_bus_id_string)
 {
-    Display *dpy = hostx_get_display();
+    xcb_connection_t *conn = hostx_get_xcbconn();
     Bool is_ok = FALSE;
+    xcb_xf86dri_open_connection_cookie_t cookie;
+    xcb_xf86dri_open_connection_reply_t *reply;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_bus_id_string, FALSE);
     EPHYR_LOG("enter. screen:%d\n", a_screen);
-    is_ok = XF86DRIOpenConnection(dpy, DefaultScreen(dpy),
-                                  a_sarea, a_bus_id_string);
-    if (*a_bus_id_string) {
-        EPHYR_LOG("leave. bus_id_string:%s, is_ok:%d\n",
-                  *a_bus_id_string, is_ok);
-    }
-    else {
-        EPHYR_LOG("leave. bus_id_string:null, is_ok:%d\n", is_ok);
+    cookie = xcb_xf86dri_open_connection(conn, hostx_get_screen());
+    reply = xcb_xf86dri_open_connection_reply(conn, cookie, NULL);
+    if (!reply)
+        goto out;
+    *a_sarea = reply->sarea_handle_low;
+    if (sizeof(drm_handle_t) == 8) {
+        int shift = 32;
+        *a_sarea |= ((drm_handle_t) reply->sarea_handle_high) << shift;
     }
+    *a_bus_id_string = malloc(reply->bus_id_len + 1);
+    if (!*a_bus_id_string)
+        goto out;
+    memcpy(*a_bus_id_string, xcb_xf86dri_open_connection_bus_id(reply), reply->bus_id_len);
+    *a_bus_id_string[reply->bus_id_len] = '\0';
+    is_ok = TRUE;
+out:
+    free(reply);
+    EPHYR_LOG("leave. bus_id_string:%s, is_ok:%d\n", *a_bus_id_string, is_ok);
     return is_ok;
 }
 
 Bool
 ephyrDRIAuthConnection(int a_screen, drm_magic_t a_magic)
 {
-    Display *dpy = hostx_get_display();
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    int screen = hostx_get_screen();
+    xcb_xf86dri_auth_connection_cookie_t cookie;
+    xcb_xf86dri_auth_connection_reply_t *reply;
     Bool is_ok = FALSE;
 
     EPHYR_LOG("enter\n");
-    is_ok = XF86DRIAuthConnection(dpy, DefaultScreen(dpy), a_magic);
+    cookie = xcb_xf86dri_auth_connection(conn, screen, a_magic);
+    reply = xcb_xf86dri_auth_connection_reply(conn, cookie, NULL);
+    is_ok = reply->authenticated;
+    free(reply);
     EPHYR_LOG("leave. is_ok:%d\n", is_ok);
     return is_ok;
 }
@@ -97,13 +120,13 @@ ephyrDRIAuthConnection(int a_screen, drm_magic_t a_magic)
 Bool
 ephyrDRICloseConnection(int a_screen)
 {
-    Display *dpy = hostx_get_display();
-    Bool is_ok = FALSE;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    int screen = hostx_get_screen();
 
     EPHYR_LOG("enter\n");
-    is_ok = XF86DRICloseConnection(dpy, DefaultScreen(dpy));
+    xcb_xf86dri_close_connection(conn, screen);
     EPHYR_LOG("leave\n");
-    return is_ok;
+    return TRUE;
 }
 
 Bool
@@ -113,7 +136,10 @@ ephyrDRIGetClientDriverName(int a_screen,
                             int *a_ddx_driver_patch_version,
                             char **a_client_driver_name)
 {
-    Display *dpy = hostx_get_display();
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    int screen = hostx_get_screen();
+    xcb_xf86dri_get_client_driver_name_cookie_t cookie;
+    xcb_xf86dri_get_client_driver_name_reply_t *reply;
     Bool is_ok = FALSE;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_ddx_driver_major_version
@@ -121,15 +147,27 @@ ephyrDRIGetClientDriverName(int a_screen,
                              && a_ddx_driver_patch_version
                              && a_client_driver_name, FALSE);
     EPHYR_LOG("enter\n");
-    is_ok = XF86DRIGetClientDriverName(dpy, DefaultScreen(dpy),
-                                       a_ddx_driver_major_version,
-                                       a_ddx_driver_minor_version,
-                                       a_ddx_driver_patch_version,
-                                       a_client_driver_name);
+    cookie = xcb_xf86dri_get_client_driver_name(conn, screen);
+    reply = xcb_xf86dri_get_client_driver_name_reply(conn, cookie, NULL);
+    if (!reply)
+        goto out;
+    *a_ddx_driver_major_version = reply->client_driver_major_version;
+    *a_ddx_driver_minor_version = reply->client_driver_minor_version;
+    *a_ddx_driver_patch_version = reply->client_driver_patch_version;
+    *a_client_driver_name = malloc(reply->client_driver_name_len + 1);
+    if (!*a_client_driver_name)
+        goto out;
+    memcpy(*a_client_driver_name,
+           xcb_xf86dri_get_client_driver_name_client_driver_name(reply),
+           reply->client_driver_name_len);
+    (*a_client_driver_name)[reply->client_driver_name_len] = '\0';
+    is_ok = TRUE;
     EPHYR_LOG("major:%d, minor:%d, patch:%d, name:%s\n",
               *a_ddx_driver_major_version,
               *a_ddx_driver_minor_version,
               *a_ddx_driver_patch_version, *a_client_driver_name);
+ out:
+    free(reply);
     EPHYR_LOG("leave:%d\n", is_ok);
     return is_ok;
 }
@@ -139,17 +177,23 @@ ephyrDRICreateContext(int a_screen,
                       int a_visual_id,
                       CARD32 ctxt_id, drm_context_t * a_hw_ctxt)
 {
-    Display *dpy = hostx_get_display();
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    int screen = hostx_get_screen();
     Bool is_ok = FALSE;
-    Visual v;
-    XID returned_ctxt_id = ctxt_id;
+    xcb_xf86dri_create_context_cookie_t cookie;
+    xcb_xf86dri_create_context_reply_t *reply;
+
+    ctxt_id = xcb_generate_id(conn);
 
     EPHYR_LOG("enter. screen:%d, visual:%d\n", a_screen, a_visual_id);
-    memset(&v, 0, sizeof(v));
-    v.visualid = a_visual_id;
-    is_ok = XF86DRICreateContext(dpy,
-                                 DefaultScreen(dpy),
-                                 &v, &returned_ctxt_id, a_hw_ctxt);
+    cookie = xcb_xf86dri_create_context(conn, screen, a_visual_id, ctxt_id);
+    reply = xcb_xf86dri_create_context_reply(conn, cookie, NULL);
+    if (!reply)
+        goto out;
+    *a_hw_ctxt = reply->hw_context;
+    is_ok = TRUE;
+out:
+    free(reply);
     EPHYR_LOG("leave:%d\n", is_ok);
     return is_ok;
 }
@@ -157,13 +201,13 @@ ephyrDRICreateContext(int a_screen,
 Bool
 ephyrDRIDestroyContext(int a_screen, int a_context_id)
 {
-    Display *dpy = hostx_get_display();
-    Bool is_ok = FALSE;
+    xcb_connection_t *conn = hostx_get_xcbconn ();
+    int screen = hostx_get_screen();
 
     EPHYR_LOG("enter\n");
-    is_ok = XF86DRIDestroyContext(dpy, DefaultScreen(dpy), a_context_id);
-    EPHYR_LOG("leave:%d\n", is_ok);
-    return is_ok;
+    xcb_xf86dri_destroy_context(conn, screen, a_context_id);
+    EPHYR_LOG("leave\n");
+    return TRUE;
 }
 
 Bool
@@ -171,11 +215,20 @@ ephyrDRICreateDrawable(int a_screen,
                        int a_drawable, drm_drawable_t * a_hw_drawable)
 {
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    int screen = hostx_get_screen();
+    xcb_xf86dri_create_drawable_cookie_t cookie;
+    xcb_xf86dri_create_drawable_reply_t *reply;
 
     EPHYR_LOG("enter\n");
-    is_ok = XF86DRICreateDrawable(dpy, DefaultScreen(dpy),
-                                  a_drawable, a_hw_drawable);
+    cookie = xcb_xf86dri_create_drawable(conn, screen, a_drawable);
+    reply = xcb_xf86dri_create_drawable_reply(conn, cookie, NULL);
+    if (!reply)
+        goto out;
+    *a_hw_drawable = reply->hw_drawable_handle;
+    is_ok = TRUE;
+out:
+    free(reply);
     EPHYR_LOG("leave. is_ok:%d\n", is_ok);
     return is_ok;
 }
@@ -206,7 +259,10 @@ ephyrDRIGetDrawableInfo(int a_screen,
                         drm_clip_rect_t ** a_back_clip_rects)
 {
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    int screen = hostx_get_screen();
+    xcb_xf86dri_get_drawable_info_cookie_t cookie;
+    xcb_xf86dri_get_drawable_info_reply_t *reply = NULL;
     EphyrHostWindowAttributes attrs;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_x && a_y && a_w && a_h
@@ -218,16 +274,22 @@ ephyrDRIGetDrawableInfo(int a_screen,
         EPHYR_LOG_ERROR("failed to query host window attributes\n");
         goto out;
     }
-    if (!XF86DRIGetDrawableInfo(dpy, DefaultScreen(dpy), a_drawable,
-                                a_index, a_stamp,
-                                a_x, a_y,
-                                a_w, a_h,
-                                a_num_clip_rects, a_clip_rects,
-                                a_back_x, a_back_y,
-                                a_num_back_clip_rects, a_back_clip_rects)) {
-        EPHYR_LOG_ERROR("XF86DRIGetDrawableInfo ()\n");
+    cookie = xcb_xf86dri_get_drawable_info(conn, screen, a_drawable);
+    reply =  xcb_xf86dri_get_drawable_info_reply(conn, cookie, NULL);
+    if (!reply) {
+        EPHYR_LOG_ERROR ("XF86DRIGetDrawableInfo ()\n");
         goto out;
     }
+    *a_index = reply->drawable_table_index;
+    *a_stamp = reply->drawable_table_stamp;
+    *a_x = reply->drawable_origin_X;
+    *a_y = reply->drawable_origin_Y;
+    *a_w = reply->drawable_size_W;
+    *a_h = reply->drawable_size_H;
+    *a_num_clip_rects = reply->num_clip_rects;
+    *a_clip_rects = calloc(*a_num_clip_rects, sizeof(drm_clip_rect_t));
+    memcpy(*a_clip_rects, xcb_xf86dri_get_drawable_info_clip_rects(reply),
+           *a_num_clip_rects * sizeof(drm_clip_rect_t));
     EPHYR_LOG("host x,y,w,h: (%d,%d,%d,%d)\n", *a_x, *a_y, *a_w, *a_h);
     if (*a_num_clip_rects) {
         free(*a_back_clip_rects);
@@ -247,6 +309,7 @@ ephyrDRIGetDrawableInfo(int a_screen,
  out:
     EPHYR_LOG("leave. index:%d, stamp:%d, x,y:(%d,%d), w,y:(%d,%d)\n",
               *a_index, *a_stamp, *a_x, *a_y, *a_w, *a_h);
+    free(reply);
     return is_ok;
 }
 
@@ -259,13 +322,35 @@ ephyrDRIGetDeviceInfo(int a_screen,
                       int *a_dev_private_size, void **a_dev_private)
 {
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
+    xcb_connection_t *conn = hostx_get_xcbconn ();
+    int screen = hostx_get_screen();
+    xcb_xf86dri_get_device_info_cookie_t cookie;
+    xcb_xf86dri_get_device_info_reply_t *reply;
 
-    EPHYR_RETURN_VAL_IF_FAIL(dpy, FALSE);
+    EPHYR_RETURN_VAL_IF_FAIL(conn, FALSE);
     EPHYR_LOG("enter\n");
-    is_ok = XF86DRIGetDeviceInfo(dpy, DefaultScreen(dpy), a_frame_buffer,
-                                 a_fb_origin, a_fb_size, a_fb_stride,
-                                 a_dev_private_size, a_dev_private);
+    cookie = xcb_xf86dri_get_device_info(conn, screen);
+    reply = xcb_xf86dri_get_device_info_reply(conn, cookie, NULL);
+    if (!reply)
+        goto out;
+    *a_frame_buffer = reply->framebuffer_handle_low;
+    if (sizeof(drm_handle_t) == 8) {
+        int shift = 32;
+        *a_frame_buffer |= ((drm_handle_t)reply->framebuffer_handle_high) << shift;
+    }
+    *a_fb_origin = reply->framebuffer_origin_offset;
+    *a_fb_size = reply->framebuffer_size;
+    *a_fb_stride = reply->framebuffer_stride;
+    *a_dev_private_size = reply->device_private_size;
+    *a_dev_private = calloc(reply->device_private_size, 1);
+    if (!*a_dev_private)
+        goto out;
+    memcpy(*a_dev_private,
+           xcb_xf86dri_get_device_info_device_private(reply),
+           reply->device_private_size);
+    is_ok = TRUE;
+out:
+    free(reply);
     EPHYR_LOG("leave:%d\n", is_ok);
     return is_ok;
 }
commit aea119cd05807ed77336f96a40f8e4607c6ce169
Author: Julien Cristau <jcristau at debian.org>
Date:   Sun Jun 20 11:13:26 2010 +0100

    Xephyr: use xcb-xv instead of libXv
    
    v2: Massive, conflict-filled rebase.  I think I resolved everything
        right, but this host xv code makes my eyes bleed.  Touch-tested XV
        after the rebase (anholt).
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net> (v1)
    Signed-off-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/configure.ac b/configure.ac
index db7ef7c..b8d9a25 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2118,7 +2118,7 @@ if test "$KDRIVE" = yes; then
 
     XEPHYR_REQUIRED_LIBS="x11 >= 1.6 $LIBXEXT xau xdmcp xcb x11-xcb xcb-shape xcb-aux xcb-image xcb-icccm xcb-shm xcb-keysyms"
     if test "x$XV" = xyes; then
-        XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xv"
+        XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xcb-xv"
     fi
     if test "x$DRI" = xyes && test "x$GLX" = xyes; then
         XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBGL libdrm xcb-glx xcb-xf86dri"
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.c b/hw/kdrive/ephyr/ephyrhostvideo.c
index 99f0f50..8b71687 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.c
+++ b/hw/kdrive/ephyr/ephyrhostvideo.c
@@ -38,12 +38,8 @@
 #ifdef _XSERVER64
 #undef _XSERVER64
 #endif
-#include <X11/Xutil.h>
-#include <X11/Xlibint.h>
-#include <X11/extensions/Xvlib.h>
-#include <X11/extensions/Xvproto.h>
-#include <X11/extensions/Xext.h>
-#include <X11/extensions/extutil.h>
+#include <xcb/xv.h>
+#include <xcb/xcb_aux.h>
 #define _HAVE_XALLOC_DECLS
 
 #include "hostx.h"
@@ -56,295 +52,114 @@
 #ifndef FALSE
 #define FALSE 0
 #endif /*FALSE*/
-static XExtensionInfo _xv_info_data;
-static XExtensionInfo *xv_info = &_xv_info_data;
-static const char *xv_extension_name = XvName;
-static char *xv_error_string(Display * dpy, int code, XExtCodes * codes,
-                             char *buf, int n);
-static int xv_close_display(Display * dpy, XExtCodes * codes);
-static Bool xv_wire_to_event(Display * dpy, XEvent * host, xEvent *wire);
-
-static XExtensionHooks xv_extension_hooks = {
-    NULL,                       /* create_gc */
-    NULL,                       /* copy_gc */
-    NULL,                       /* flush_gc */
-    NULL,                       /* free_gc */
-    NULL,                       /* create_font */
-    NULL,                       /* free_font */
-    xv_close_display,           /* close_display */
-    xv_wire_to_event,           /* wire_to_event */
-    NULL,                       /* event_to_wire */
-    NULL,                       /* error */
-    xv_error_string             /* error_string */
-};
-
-static const char *xv_error_list[] = {
-    "BadPort",                  /* XvBadPort     */
-    "BadEncoding",              /* XvBadEncoding */
-    "BadControl"                /* XvBadControl  */
-};
-
-#define XvCheckExtension(dpy, i, val) \
-  XextCheckExtension(dpy, i, xv_extension_name, val)
-#define XvGetReq(name, req) \
-        WORD64ALIGN\
-        if ((dpy->bufptr + SIZEOF(xv##name##Req)) > dpy->bufmax)\
-                _XFlush(dpy);\
-        req = (xv##name##Req *)(dpy->last_req = dpy->bufptr);\
-        req->reqType = info->codes->major_opcode;\
-        req->xvReqType = xv_##name; \
-        req->length = (SIZEOF(xv##name##Req))>>2;\
-        dpy->bufptr += SIZEOF(xv##name##Req);\
-        dpy->request++
-
-static
-XEXT_GENERATE_CLOSE_DISPLAY(xv_close_display, xv_info)
-
-static
-XEXT_GENERATE_FIND_DISPLAY(xv_find_display, xv_info,
-                           xv_extension_name,
-                           &xv_extension_hooks, XvNumEvents, NULL)
-
-static
-XEXT_GENERATE_ERROR_STRING(xv_error_string, xv_extension_name,
-                           XvNumErrors, xv_error_list)
-
-struct _EphyrHostXVAdaptorArray {
-    XvAdaptorInfo *adaptors;
-    unsigned int nb_adaptors;
-};
-
-/*heavily copied from libx11*/
-#define BUFSIZE 2048
-static void
-ephyrHostXVLogXErrorEvent(Display * a_display,
-                          XErrorEvent * a_err_event, FILE * a_fp)
-{
-    char buffer[BUFSIZ];
-    char mesg[BUFSIZ];
-    char number[32];
-    const char *mtype = "XlibMessage";
-    register _XExtension *ext = (_XExtension *) NULL;
-    _XExtension *bext = (_XExtension *) NULL;
-    Display *dpy = a_display;
-
-    XGetErrorText(dpy, a_err_event->error_code, buffer, BUFSIZ);
-    XGetErrorDatabaseText(dpy, mtype, "XError", "X Error", mesg, BUFSIZ);
-    (void) fprintf(a_fp, "%s:  %s\n  ", mesg, buffer);
-    XGetErrorDatabaseText(dpy, mtype, "MajorCode", "Request Major code %d",
-                          mesg, BUFSIZ);
-    (void) fprintf(a_fp, mesg, a_err_event->request_code);
-    if (a_err_event->request_code < 128) {
-        snprintf(number, sizeof(number), "%d", a_err_event->request_code);
-        XGetErrorDatabaseText(dpy, "XRequest", number, "", buffer, BUFSIZ);
-    }
-    else {
-        for (ext = dpy->ext_procs;
-             ext && (ext->codes.major_opcode != a_err_event->request_code);
-             ext = ext->next);
-        if (ext)
-            strcpy(buffer, ext->name);
-        else
-            buffer[0] = '\0';
-    }
-    (void) fprintf(a_fp, " (%s)\n", buffer);
-    if (a_err_event->request_code >= 128) {
-        XGetErrorDatabaseText(dpy, mtype, "MinorCode", "Request Minor code %d",
-                              mesg, BUFSIZ);
-        fputs("  ", a_fp);
-        (void) fprintf(a_fp, mesg, a_err_event->minor_code);
-        if (ext) {
-            snprintf(mesg, sizeof(mesg), "%s.%d",
-                     ext->name, a_err_event->minor_code);
-            XGetErrorDatabaseText(dpy, "XRequest", mesg, "", buffer, BUFSIZ);
-            (void) fprintf(a_fp, " (%s)", buffer);
-        }
-        fputs("\n", a_fp);
-    }
-    if (a_err_event->error_code >= 128) {
-        /* kludge, try to find the extension that caused it */
-        buffer[0] = '\0';
-        for (ext = dpy->ext_procs; ext; ext = ext->next) {
-            if (ext->error_string)
-                (*ext->error_string) (dpy, a_err_event->error_code, &ext->codes,
-                                      buffer, BUFSIZ);
-            if (buffer[0]) {
-                bext = ext;
-                break;
-            }
-            if (ext->codes.first_error &&
-                ext->codes.first_error < (int) a_err_event->error_code &&
-                (!bext || ext->codes.first_error > bext->codes.first_error))
-                bext = ext;
-        }
-        if (bext)
-            snprintf(buffer, sizeof(buffer), "%s.%d", bext->name,
-                     a_err_event->error_code - bext->codes.first_error);
-        else
-            strcpy(buffer, "Value");
-        XGetErrorDatabaseText(dpy, mtype, buffer, "", mesg, BUFSIZ);
-        if (mesg[0]) {
-            fputs("  ", a_fp);
-            (void) fprintf(a_fp, mesg, a_err_event->resourceid);
-            fputs("\n", a_fp);
-        }
-        /* let extensions try to print the values */
-        for (ext = dpy->ext_procs; ext; ext = ext->next) {
-            if (ext->error_values)
-                (*ext->error_values) (dpy, a_err_event, a_fp);
-        }
-    }
-    else if ((a_err_event->error_code == BadWindow) ||
-             (a_err_event->error_code == BadPixmap) ||
-             (a_err_event->error_code == BadCursor) ||
-             (a_err_event->error_code == BadFont) ||
-             (a_err_event->error_code == BadDrawable) ||
-             (a_err_event->error_code == BadColor) ||
-             (a_err_event->error_code == BadGC) ||
-             (a_err_event->error_code == BadIDChoice) ||
-             (a_err_event->error_code == BadValue) ||
-             (a_err_event->error_code == BadAtom)) {
-        if (a_err_event->error_code == BadValue)
-            XGetErrorDatabaseText(dpy, mtype, "Value", "Value 0x%x",
-                                  mesg, BUFSIZ);
-        else if (a_err_event->error_code == BadAtom)
-            XGetErrorDatabaseText(dpy, mtype, "AtomID", "AtomID 0x%x",
-                                  mesg, BUFSIZ);
-        else
-            XGetErrorDatabaseText(dpy, mtype, "ResourceID", "ResourceID 0x%x",
-                                  mesg, BUFSIZ);
-        fputs("  ", a_fp);
-        (void) fprintf(a_fp, mesg, a_err_event->resourceid);
-        fputs("\n", a_fp);
-    }
-    XGetErrorDatabaseText(dpy, mtype, "ErrorSerial", "Error Serial #%d",
-                          mesg, BUFSIZ);
-    fputs("  ", a_fp);
-    (void) fprintf(a_fp, mesg, a_err_event->serial);
-    XGetErrorDatabaseText(dpy, mtype, "CurrentSerial", "Current Serial #%d",
-                          mesg, BUFSIZ);
-    fputs("\n  ", a_fp);
-    (void) fprintf(a_fp, mesg, dpy->request);
-    fputs("\n", a_fp);
-}
 
-static int
-ephyrHostXVErrorHandler(Display * a_display, XErrorEvent * a_error_event)
-{
-    EPHYR_LOG_ERROR("got an error from the host xserver:\n");
-    ephyrHostXVLogXErrorEvent(a_display, a_error_event, stderr);
-    return Success;
-}
 
 void
 ephyrHostXVInit(void)
 {
-    static Bool s_initialized;
-
-    if (s_initialized)
-        return;
-    XSetErrorHandler(ephyrHostXVErrorHandler);
-    s_initialized = TRUE;
 }
 
 Bool
-ephyrHostXVQueryAdaptors(EphyrHostXVAdaptorArray ** a_adaptors)
+ephyrHostXVQueryAdaptors (xcb_xv_query_adaptors_reply_t **a_adaptors)
 {
-    EphyrHostXVAdaptorArray *result = NULL;
-    int ret = 0;
     Bool is_ok = FALSE;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_xv_query_adaptors_cookie_t cookie;
+    xcb_xv_query_adaptors_reply_t *reply = NULL;
+    xcb_generic_error_t *e = NULL;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_adaptors, FALSE);
 
     EPHYR_LOG("enter\n");
 
-    result = calloc(1, sizeof(EphyrHostXVAdaptorArray));
-    if (!result)
-        goto out;
-
-    ret = XvQueryAdaptors(hostx_get_display(),
-                          DefaultRootWindow(hostx_get_display()),
-                          &result->nb_adaptors, &result->adaptors);
-    if (ret != Success) {
-        EPHYR_LOG_ERROR("failed to query host adaptors: %d\n", ret);
+    cookie = xcb_xv_query_adaptors(conn,
+		    xcb_aux_get_screen(conn, hostx_get_screen())->root);
+    reply = xcb_xv_query_adaptors_reply(hostx_get_xcbconn(), cookie, &e);
+    if (e) {
+        EPHYR_LOG_ERROR ("failed to query host adaptors: %d\n", e->error_code);
         goto out;
     }
-    *a_adaptors = result;
+    *a_adaptors = reply;
     is_ok = TRUE;
 
- out:
+out:
     EPHYR_LOG("leave\n");
+    free(e);
     return is_ok;
 }
 
 void
-ephyrHostXVAdaptorArrayDelete(EphyrHostXVAdaptorArray * a_adaptors)
+ephyrHostXVAdaptorArrayDelete (xcb_xv_query_adaptors_reply_t *a_adaptors)
 {
-    if (!a_adaptors)
-        return;
-    if (a_adaptors->adaptors) {
-        XvFreeAdaptorInfo(a_adaptors->adaptors);
-        a_adaptors->adaptors = NULL;
-        a_adaptors->nb_adaptors = 0;
-    }
-    XFree(a_adaptors);
+    free (a_adaptors);
 }
 
 int
-ephyrHostXVAdaptorArrayGetSize(const EphyrHostXVAdaptorArray * a_this)
+ephyrHostXVAdaptorArrayGetSize (const xcb_xv_query_adaptors_reply_t *a_this)
 {
     EPHYR_RETURN_VAL_IF_FAIL(a_this, -1);
-    return a_this->nb_adaptors;
+    return a_this->num_adaptors;
 }
 
-EphyrHostXVAdaptor *
-ephyrHostXVAdaptorArrayAt(const EphyrHostXVAdaptorArray * a_this, int a_index)
+xcb_xv_adaptor_info_t *
+ephyrHostXVAdaptorArrayAt(const xcb_xv_query_adaptors_reply_t *a_this,
+                          int a_index)
 {
+    int i;
+    xcb_xv_adaptor_info_iterator_t it;
     EPHYR_RETURN_VAL_IF_FAIL(a_this, NULL);
 
-    if (a_index >= a_this->nb_adaptors)
+    it = xcb_xv_query_adaptors_info_iterator(a_this);
+    if (a_index >= a_this->num_adaptors)
         return NULL;
-    return (EphyrHostXVAdaptor *) &a_this->adaptors[a_index];
+    for (i = 0; i < a_index; i++)
+        xcb_xv_adaptor_info_next(&it);
+
+    return it.data;
 }
 
 char
-ephyrHostXVAdaptorGetType(const EphyrHostXVAdaptor * a_this)
+ephyrHostXVAdaptorGetType(const xcb_xv_adaptor_info_t *a_this)
 {
     EPHYR_RETURN_VAL_IF_FAIL(a_this, -1);
-    return ((const XvAdaptorInfo *) a_this)->type;
+    return a_this->type;
 }
 
-const char *
-ephyrHostXVAdaptorGetName(const EphyrHostXVAdaptor * a_this)
+char *
+ephyrHostXVAdaptorGetName(const xcb_xv_adaptor_info_t *a_this)
 {
+    char *name;
+
     EPHYR_RETURN_VAL_IF_FAIL(a_this, NULL);
 
-    return ((const XvAdaptorInfo *) a_this)->name;
+    name = malloc(a_this->name_size + 1);
+    if (!name)
+        return NULL;
+    memcpy(name, xcb_xv_adaptor_info_name(a_this), a_this->name_size);
+    name[a_this->name_size] = '\0';
+
+    return name;
 }
 
-EphyrHostVideoFormat *
-ephyrHostXVAdaptorGetVideoFormats(const EphyrHostXVAdaptor * a_this,
-                                  int *a_nb_formats)
+EphyrHostVideoFormat*
+ephyrHostXVAdaptorGetVideoFormats (const xcb_xv_adaptor_info_t *a_this,
+                                   int *a_nb_formats)
 {
     EphyrHostVideoFormat *formats = NULL;
     int nb_formats = 0, i = 0;
-    XVisualInfo *visual_info, visual_info_template;
-    int nb_visual_info;
+    xcb_xv_format_t *format = xcb_xv_adaptor_info_formats(a_this);
 
     EPHYR_RETURN_VAL_IF_FAIL(a_this, NULL);
 
-    nb_formats = ((const XvAdaptorInfo *) a_this)->num_formats;
+    nb_formats = a_this->num_formats;
     formats = calloc(nb_formats, sizeof(EphyrHostVideoFormat));
     for (i = 0; i < nb_formats; i++) {
-        memset(&visual_info_template, 0, sizeof(visual_info_template));
-        visual_info_template.visualid =
-            ((const XvAdaptorInfo *) a_this)->formats[i].visual_id;
-        visual_info = XGetVisualInfo(hostx_get_display(),
-                                     VisualIDMask,
-                                     &visual_info_template, &nb_visual_info);
-        formats[i].depth = ((const XvAdaptorInfo *) a_this)->formats[i].depth;
-        formats[i].visual_class = visual_info->class;
-        XFree(visual_info);
+        xcb_visualtype_t *visual =
+            xcb_aux_find_visual_by_id(
+                    xcb_aux_get_screen(hostx_get_xcbconn(), hostx_get_screen()),
+                    format[i].visual);
+        formats[i].depth = format[i].depth;
+        formats[i].visual_class = visual->_class;
     }
     if (a_nb_formats)
         *a_nb_formats = nb_formats;
@@ -352,28 +167,27 @@ ephyrHostXVAdaptorGetVideoFormats(const EphyrHostXVAdaptor * a_this,
 }
 
 int
-ephyrHostXVAdaptorGetNbPorts(const EphyrHostXVAdaptor * a_this)
+ephyrHostXVAdaptorGetNbPorts(const xcb_xv_adaptor_info_t *a_this)
 {
     EPHYR_RETURN_VAL_IF_FAIL(a_this, -1);
 
-    return ((const XvAdaptorInfo *) a_this)->num_ports;
+    return a_this->num_ports;
 }
 
 int
-ephyrHostXVAdaptorGetFirstPortID(const EphyrHostXVAdaptor * a_this)
+ephyrHostXVAdaptorGetFirstPortID (const xcb_xv_adaptor_info_t *a_this)
 {
-    EPHYR_RETURN_VAL_IF_FAIL(a_this, -1);
-
-    return ((const XvAdaptorInfo *) a_this)->base_id;
+    return a_this->base_id;
 }
 
 Bool
-ephyrHostXVAdaptorHasPutVideo(const EphyrHostXVAdaptor * a_this, Bool *a_result)
+ephyrHostXVAdaptorHasPutVideo (const xcb_xv_adaptor_info_t *a_this,
+                               Bool *a_result)
 {
     EPHYR_RETURN_VAL_IF_FAIL(a_this && a_result, FALSE);
 
-    if ((((const XvAdaptorInfo *) a_this)->type &
-         (XvVideoMask | XvInputMask)) == (XvVideoMask | XvInputMask))
+    if ((a_this->type & (XCB_XV_TYPE_VIDEO_MASK | XCB_XV_TYPE_INPUT_MASK)) ==
+        (XCB_XV_TYPE_VIDEO_MASK | XCB_XV_TYPE_INPUT_MASK))
         *a_result = TRUE;
     else
         *a_result = FALSE;
@@ -381,10 +195,11 @@ ephyrHostXVAdaptorHasPutVideo(const EphyrHostXVAdaptor * a_this, Bool *a_result)
 }
 
 Bool
-ephyrHostXVAdaptorHasGetVideo(const EphyrHostXVAdaptor * a_this, Bool *a_result)
+ephyrHostXVAdaptorHasGetVideo(const xcb_xv_adaptor_info_t *a_this,
+                              Bool *a_result)
 {
-    if ((((const XvAdaptorInfo *) a_this)->type &
-         (XvVideoMask | XvOutputMask)) == (XvVideoMask | XvOutputMask))
+    if ((a_this->type & (XCB_XV_TYPE_VIDEO_MASK | XCB_XV_TYPE_OUTPUT_MASK)) ==
+        (XCB_XV_TYPE_VIDEO_MASK | XCB_XV_TYPE_OUTPUT_MASK))
         *a_result = TRUE;
     else
         *a_result = FALSE;
@@ -392,12 +207,13 @@ ephyrHostXVAdaptorHasGetVideo(const EphyrHostXVAdaptor * a_this, Bool *a_result)
 }
 
 Bool
-ephyrHostXVAdaptorHasPutStill(const EphyrHostXVAdaptor * a_this, Bool *a_result)
+ephyrHostXVAdaptorHasPutStill(const xcb_xv_adaptor_info_t *a_this,
+                              Bool *a_result)
 {
     EPHYR_RETURN_VAL_IF_FAIL(a_this && a_result, FALSE);
 
-    if ((((const XvAdaptorInfo *) a_this)->type &
-         (XvStillMask | XvInputMask)) == (XvStillMask | XvInputMask))
+    if ((a_this->type & (XCB_XV_TYPE_STILL_MASK | XCB_XV_TYPE_INPUT_MASK)) ==
+        (XCB_XV_TYPE_STILL_MASK | XCB_XV_TYPE_INPUT_MASK))
         *a_result = TRUE;
     else
         *a_result = FALSE;
@@ -405,12 +221,13 @@ ephyrHostXVAdaptorHasPutStill(const EphyrHostXVAdaptor * a_this, Bool *a_result)
 }
 
 Bool
-ephyrHostXVAdaptorHasGetStill(const EphyrHostXVAdaptor * a_this, Bool *a_result)
+ephyrHostXVAdaptorHasGetStill(const xcb_xv_adaptor_info_t *a_this,
+                              Bool *a_result)
 {
     EPHYR_RETURN_VAL_IF_FAIL(a_this && a_result, FALSE);
 
-    if ((((const XvAdaptorInfo *) a_this)->type &
-         (XvStillMask | XvOutputMask)) == (XvStillMask | XvOutputMask))
+    if ((a_this->type & (XCB_XV_TYPE_STILL_MASK | XCB_XV_TYPE_OUTPUT_MASK)) ==
+        (XCB_XV_TYPE_STILL_MASK | XCB_XV_TYPE_OUTPUT_MASK))
         *a_result = TRUE;
     else
         *a_result = FALSE;
@@ -418,12 +235,13 @@ ephyrHostXVAdaptorHasGetStill(const EphyrHostXVAdaptor * a_this, Bool *a_result)
 }
 
 Bool
-ephyrHostXVAdaptorHasPutImage(const EphyrHostXVAdaptor * a_this, Bool *a_result)
+ephyrHostXVAdaptorHasPutImage(const xcb_xv_adaptor_info_t *a_this,
+                              Bool *a_result)
 {
     EPHYR_RETURN_VAL_IF_FAIL(a_this && a_result, FALSE);
 
-    if ((((const XvAdaptorInfo *) a_this)->type &
-         (XvImageMask | XvInputMask)) == (XvImageMask | XvInputMask))
+    if ((a_this->type & (XCB_XV_TYPE_IMAGE_MASK | XCB_XV_TYPE_INPUT_MASK)) ==
+        (XCB_XV_TYPE_IMAGE_MASK | XCB_XV_TYPE_INPUT_MASK))
         *a_result = TRUE;
     else
         *a_result = FALSE;
@@ -436,34 +254,36 @@ ephyrHostXVQueryEncodings(int a_port_id,
                           unsigned int *a_num_encodings)
 {
     EphyrHostEncoding *encodings = NULL;
-    XvEncodingInfo *encoding_info = NULL;
+    xcb_xv_encoding_info_iterator_t encoding_info;
+    xcb_xv_query_encodings_cookie_t cookie;
+    xcb_xv_query_encodings_reply_t *reply;
     unsigned int num_encodings = 0, i;
-    int ret = 0;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_encodings && a_num_encodings, FALSE);
 
-    ret = XvQueryEncodings(hostx_get_display(),
-                           a_port_id, &num_encodings, &encoding_info);
-    if (num_encodings && encoding_info) {
-        encodings = calloc(num_encodings, sizeof(EphyrHostEncoding));
-        for (i = 0; i < num_encodings; i++) {
-            encodings[i].id = encoding_info[i].encoding_id;
-            encodings[i].name = strdup(encoding_info[i].name);
-            encodings[i].width = encoding_info[i].width;
-            encodings[i].height = encoding_info[i].height;
-            encodings[i].rate.numerator = encoding_info[i].rate.numerator;
-            encodings[i].rate.denominator = encoding_info[i].rate.denominator;
+    cookie = xcb_xv_query_encodings(hostx_get_xcbconn(), a_port_id);
+    reply = xcb_xv_query_encodings_reply(hostx_get_xcbconn(), cookie, NULL);
+    if (!reply)
+        return FALSE;
+    num_encodings = reply->num_encodings;
+    encoding_info = xcb_xv_query_encodings_info_iterator(reply);
+    if (num_encodings) {
+        encodings = calloc(num_encodings, sizeof (EphyrHostEncoding));
+        for (i=0; i<num_encodings; i++, xcb_xv_encoding_info_next(&encoding_info)) {
+            encodings[i].id = encoding_info.data->encoding;
+            encodings[i].name = malloc(encoding_info.data->name_size + 1);
+	    memcpy(encodings[i].name, xcb_xv_encoding_info_name(encoding_info.data), encoding_info.data->name_size);
+	    encodings[i].name[encoding_info.data->name_size] = '\0';
+            encodings[i].width = encoding_info.data->width;
+            encodings[i].height = encoding_info.data->height;
+            encodings[i].rate.numerator = encoding_info.data->rate.numerator;
+            encodings[i].rate.denominator = encoding_info.data->rate.denominator;
         }
     }
-    if (encoding_info) {
-        XvFreeEncodingInfo(encoding_info);
-        encoding_info = NULL;
-    }
+    free(reply);
     *a_encodings = encodings;
     *a_num_encodings = num_encodings;
 
-    if (ret != Success)
-        return FALSE;
     return TRUE;
 }
 
@@ -482,26 +302,26 @@ ephyrHostEncodingsDelete(EphyrHostEncoding * a_encodings, int a_num_encodings)
 }
 
 void
-ephyrHostAttributesDelete(EphyrHostAttribute * a_attributes)
+ephyrHostAttributesDelete(xcb_xv_query_port_attributes_reply_t *a_attributes)
 {
-    if (!a_attributes)
-        return;
-    XFree(a_attributes);
+    free(a_attributes);
 }
 
 Bool
 ephyrHostXVQueryPortAttributes(int a_port_id,
-                               EphyrHostAttribute ** a_attributes,
-                               int *a_num_attributes)
+                               xcb_xv_query_port_attributes_reply_t **a_attributes)
 {
-    EPHYR_RETURN_VAL_IF_FAIL(a_attributes && a_num_attributes, FALSE);
+    xcb_xv_query_port_attributes_cookie_t cookie;
+    xcb_xv_query_port_attributes_reply_t *reply;
+    xcb_connection_t *conn = hostx_get_xcbconn();
 
-    *a_attributes =
-        (EphyrHostAttribute *) XvQueryPortAttributes(hostx_get_display(),
-                                                     a_port_id,
-                                                     a_num_attributes);
+    EPHYR_RETURN_VAL_IF_FAIL(a_attributes, FALSE);
 
-    return TRUE;
+    cookie = xcb_xv_query_port_attributes(conn, a_port_id);
+    reply = xcb_xv_query_port_attributes_reply(conn, cookie, NULL);
+    *a_attributes = reply;
+
+    return (reply != NULL);
 }
 
 Bool
@@ -509,31 +329,66 @@ ephyrHostXVQueryImageFormats(int a_port_id,
                              EphyrHostImageFormat ** a_formats,
                              int *a_num_format)
 {
-    XvImageFormatValues *result = NULL;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_xv_list_image_formats_cookie_t cookie;
+    xcb_xv_list_image_formats_reply_t *reply;
+    xcb_xv_image_format_info_t *format;
+    EphyrHostImageFormat *ephyrFormats;
+    int i;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_formats && a_num_format, FALSE);
 
-    result = XvListImageFormats(hostx_get_display(), a_port_id, a_num_format);
-    *a_formats = (EphyrHostImageFormat *) result;
+    cookie = xcb_xv_list_image_formats(conn, a_port_id);
+    reply = xcb_xv_list_image_formats_reply(conn, cookie, NULL);
+    if (!reply)
+        return FALSE;
+    *a_num_format = reply->num_formats;
+    ephyrFormats = calloc(reply->num_formats, sizeof(EphyrHostImageFormat));
+    if (!ephyrFormats) {
+        free(reply);
+        return FALSE;
+    }
+    format = xcb_xv_list_image_formats_format(reply);
+    for (i = 0; i < reply->num_formats; i++) {
+        ephyrFormats[i].id = format[i].id;
+        ephyrFormats[i].type = format[i].type;
+        ephyrFormats[i].byte_order = format[i].byte_order;
+        memcpy(ephyrFormats[i].guid, format[i].guid, 16);
+        ephyrFormats[i].bits_per_pixel = format[i].bpp;
+        ephyrFormats[i].format = format[i].format;
+        ephyrFormats[i].num_planes = format[i].num_planes;
+        ephyrFormats[i].depth = format[i].depth;
+        ephyrFormats[i].red_mask = format[i].red_mask;
+        ephyrFormats[i].green_mask = format[i].green_mask;
+        ephyrFormats[i].blue_mask = format[i].blue_mask;
+        ephyrFormats[i].y_sample_bits = format[i].y_sample_bits;
+        ephyrFormats[i].u_sample_bits = format[i].u_sample_bits;
+        ephyrFormats[i].v_sample_bits = format[i].v_sample_bits;
+        ephyrFormats[i].horz_y_period = format[i].vhorz_y_period;
+        ephyrFormats[i].horz_u_period = format[i].vhorz_u_period;
+        ephyrFormats[i].horz_v_period = format[i].vhorz_v_period;
+        ephyrFormats[i].vert_y_period = format[i].vvert_y_period;
+        ephyrFormats[i].vert_u_period = format[i].vvert_u_period;
+        ephyrFormats[i].vert_v_period = format[i].vvert_v_period;
+        memcpy(ephyrFormats[i].component_order, format[i].vcomp_order, 32);
+        ephyrFormats[i].scanline_order = format[i].vscanline_order;
+    }
+    *a_formats = ephyrFormats;
+
+    free(reply);
     return TRUE;
-
 }
 
 Bool
 ephyrHostXVSetPortAttribute(int a_port_id, int a_atom, int a_attr_value)
 {
-    int res = Success;
-
-    EPHYR_LOG("atom,name,value: (%d,%s,%d)\n",
-              a_atom, XGetAtomName(hostx_get_display(), a_atom), a_attr_value);
+    EPHYR_LOG("atom,value: (%d,%d)\n", a_atom, a_attr_value);
 
-    res = XvSetPortAttribute(hostx_get_display(),
-                             a_port_id, a_atom, a_attr_value);
-    if (res != Success) {
-        EPHYR_LOG_ERROR("XvSetPortAttribute() failed: %d\n", res);
-        return FALSE;
-    }
-    XFlush(hostx_get_display());
+    xcb_xv_set_port_attribute(hostx_get_xcbconn(),
+                              a_port_id,
+                              a_atom,
+                              a_attr_value);
+    xcb_flush(hostx_get_xcbconn());
     EPHYR_LOG("leave\n");
 
     return TRUE;
@@ -542,20 +397,24 @@ ephyrHostXVSetPortAttribute(int a_port_id, int a_atom, int a_attr_value)
 Bool
 ephyrHostXVGetPortAttribute(int a_port_id, int a_atom, int *a_attr_value)
 {
-    int res = Success;
     Bool ret = FALSE;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_xv_get_port_attribute_cookie_t cookie;
+    xcb_xv_get_port_attribute_reply_t *reply;
+    xcb_generic_error_t *e;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_attr_value, FALSE);
 
-    EPHYR_LOG("enter, a_port_id: %d, a_atomid: %d, attr_name: %s\n",
-              a_port_id, a_atom, XGetAtomName(hostx_get_display(), a_atom));
+    EPHYR_LOG("enter, a_port_id: %d, a_atomid: %d\n", a_port_id, a_atom);
 
-    res = XvGetPortAttribute(hostx_get_display(),
-                             a_port_id, a_atom, a_attr_value);
-    if (res != Success) {
-        EPHYR_LOG_ERROR("XvGetPortAttribute() failed: %d \n", res);
+    cookie = xcb_xv_get_port_attribute(conn, a_port_id, a_atom);
+    reply = xcb_xv_get_port_attribute_reply(conn, cookie, &e);
+    if (e) {
+        EPHYR_LOG_ERROR ("XvGetPortAttribute() failed: %d \n", e->error_code);
+        free(e);
         goto out;
     }
+    *a_attr_value = reply->value;
     EPHYR_LOG("atom,value: (%d, %d)\n", a_atom, *a_attr_value);
 
     ret = TRUE;
@@ -574,70 +433,38 @@ ephyrHostXVQueryBestSize(int a_port_id,
                          unsigned int a_drw_h,
                          unsigned int *a_actual_w, unsigned int *a_actual_h)
 {
-    int res = 0;
     Bool is_ok = FALSE;
+    xcb_xv_query_best_size_cookie_t cookie;
+    xcb_xv_query_best_size_reply_t *reply;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_actual_w && a_actual_h, FALSE);
 
     EPHYR_LOG("enter: frame (%dx%d), drw (%dx%d)\n",
               a_frame_w, a_frame_h, a_drw_w, a_drw_h);
 
-    res = XvQueryBestSize(hostx_get_display(),
-                          a_port_id,
-                          a_motion,
-                          a_frame_w, a_frame_h,
-                          a_drw_w, a_drw_h, a_actual_w, a_actual_h);
-    if (res != Success) {
-        EPHYR_LOG_ERROR("XvQueryBestSize() failed: %d\n", res);
+    cookie = xcb_xv_query_best_size(hostx_get_xcbconn(),
+                                    a_port_id,
+                                    a_frame_w, a_frame_h,
+                                    a_drw_w, a_drw_h,
+                                    a_motion);
+    reply = xcb_xv_query_best_size_reply(hostx_get_xcbconn(), cookie, NULL);
+    if (!reply) {
+        EPHYR_LOG_ERROR ("XvQueryBestSize() failed\n");
         goto out;
     }
-    XSync(hostx_get_display(), FALSE);
+    *a_actual_w = reply->actual_width;
+    *a_actual_h = reply->actual_height;
+    free(reply);
 
     EPHYR_LOG("actual (%dx%d)\n", *a_actual_w, *a_actual_h);
     is_ok = TRUE;
 
- out:
+out:
+    free(reply);
     EPHYR_LOG("leave\n");
     return is_ok;
 }
 
-static Bool
-xv_wire_to_event(Display * dpy, XEvent * host, xEvent *wire)
-{
-    XExtDisplayInfo *info = xv_find_display(dpy);
-    XvEvent *re = (XvEvent *) host;
-    xvEvent *event = (xvEvent *) wire;
-
-    XvCheckExtension(dpy, info, False);
-
-    switch ((event->u.u.type & 0x7F) - info->codes->first_event) {
-    case XvVideoNotify:
-        re->xvvideo.type = event->u.u.type & 0x7f;
-        re->xvvideo.serial = _XSetLastRequestRead(dpy, (xGenericReply *) event);
-        re->xvvideo.send_event = ((event->u.u.type & 0x80) != 0);
-        re->xvvideo.display = dpy;
-        re->xvvideo.time = event->u.videoNotify.time;
-        re->xvvideo.reason = event->u.videoNotify.reason;
-        re->xvvideo.drawable = event->u.videoNotify.drawable;
-        re->xvvideo.port_id = event->u.videoNotify.port;
-        break;
-    case XvPortNotify:
-        re->xvport.type = event->u.u.type & 0x7f;
-        re->xvport.serial = _XSetLastRequestRead(dpy, (xGenericReply *) event);
-        re->xvport.send_event = ((event->u.u.type & 0x80) != 0);
-        re->xvport.display = dpy;
-        re->xvport.time = event->u.portNotify.time;
-        re->xvport.port_id = event->u.portNotify.port;
-        re->xvport.attribute = event->u.portNotify.attribute;
-        re->xvport.value = event->u.portNotify.value;
-        break;
-    default:
-        return False;
-    }
-
-    return True;
-}
-
 Bool
 ephyrHostXVQueryImageAttributes(int a_port_id,
                                 int a_image_id /*image fourcc code */ ,
@@ -646,77 +473,85 @@ ephyrHostXVQueryImageAttributes(int a_port_id,
                                 int *a_image_size,
                                 int *a_pitches, int *a_offsets)
 {
-    Display *dpy = hostx_get_display();
-    Bool ret = FALSE;
-    XExtDisplayInfo *info = xv_find_display(dpy);
-    xvQueryImageAttributesReq *req = NULL;
-    xvQueryImageAttributesReply rep;
+    xcb_connection_t *conn = hostx_get_xcbconn ();
+    xcb_xv_query_image_attributes_cookie_t cookie;
+    xcb_xv_query_image_attributes_reply_t *reply;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_width, FALSE);
     EPHYR_RETURN_VAL_IF_FAIL(a_height, FALSE);
     EPHYR_RETURN_VAL_IF_FAIL(a_image_size, FALSE);
 
-    XvCheckExtension(dpy, info, FALSE);
-
-    LockDisplay(dpy);
-
-    XvGetReq(QueryImageAttributes, req);
-    req->id = a_image_id;
-    req->port = a_port_id;
-    req->width = *a_width;
-    req->height = *a_height;
-    /*
-     * read the reply
-     */
-    if (!_XReply(dpy, (xReply *) &rep, 0, xFalse)) {
-        EPHYR_LOG_ERROR("QeryImageAttribute req failed\n");
-        goto out;
-    }
+    cookie = xcb_xv_query_image_attributes(conn,
+                                           a_port_id, a_image_id,
+                                           *a_width, *a_height);
+    reply = xcb_xv_query_image_attributes_reply(conn, cookie, NULL);
+    if (!reply)
+        return FALSE;
     if (a_pitches && a_offsets) {
-        _XRead(dpy, (char *) a_pitches, rep.num_planes << 2);
-        _XRead(dpy, (char *) a_offsets, rep.num_planes << 2);
-    }
-    else {
-        _XEatDataWords(dpy, rep.length);
-    }
-    *a_width = rep.width;
-    *a_height = rep.height;
-    *a_image_size = rep.data_size;
-
-    ret = TRUE;
+        memcpy(a_pitches,
+               xcb_xv_query_image_attributes_pitches(reply),
+               reply->num_planes << 2);
+        memcpy(a_offsets,
+               xcb_xv_query_image_attributes_offsets(reply),
+               reply->num_planes << 2);
+    }
+    *a_width = reply->width;
+    *a_height = reply->height;
+    *a_image_size = reply->data_size;
+    free(reply);
 
- out:
-    UnlockDisplay(dpy);
-    SyncHandle();
-    return ret;
+    return TRUE;
 }
 
 Bool
 ephyrHostGetAtom(const char *a_name, Bool a_create_if_not_exists, int *a_atom)
 {
-    int atom = None;
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_intern_atom_cookie_t cookie;
+    xcb_intern_atom_reply_t *reply;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_atom, FALSE);
 
-    atom = XInternAtom(hostx_get_display(), a_name, a_create_if_not_exists);
-    if (atom == None) {
+    cookie = xcb_intern_atom(conn,
+                             a_create_if_not_exists,
+                             strlen(a_name),
+                             a_name);
+    reply = xcb_intern_atom_reply(conn, cookie, NULL);
+    if (!reply || reply->atom == None) {
+        free(reply);
         return FALSE;
     }
-    *a_atom = atom;
+    *a_atom = reply->atom;
+    free(reply);
     return TRUE;
 }
 
 char *
 ephyrHostGetAtomName(int a_atom)
 {
-    return XGetAtomName(hostx_get_display(), a_atom);
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_get_atom_name_cookie_t cookie;
+    xcb_get_atom_name_reply_t *reply;
+    char *ret;
+
+    cookie = xcb_get_atom_name(conn, a_atom);
+    reply = xcb_get_atom_name_reply(conn, cookie, NULL);
+    if (!reply)
+        return NULL;
+    ret = malloc(xcb_get_atom_name_name_length(reply) + 1);
+    if (ret) {
+        memcpy(ret, xcb_get_atom_name_name(reply),
+               xcb_get_atom_name_name_length(reply));
+        ret[xcb_get_atom_name_name_length(reply)] = '\0';
+    }
+    free(reply);
+    return ret;
 }
 
 void
 ephyrHostFree(void *a_pointer)
 {
-    if (a_pointer)
-        XFree(a_pointer);
+    free(a_pointer);
 }
 
 Bool
@@ -737,36 +572,39 @@ ephyrHostXVPutImage(int a_screen_num,
                     EphyrHostBox * a_clip_rects, int a_clip_rect_nums)
 {
     Bool is_ok = TRUE;
-    XvImage *xv_image = NULL;
-    GC gc = 0;
-    XGCValues gc_values;
-    Display *dpy = hostx_get_display();
-    XRectangle *rects = NULL;
-    int res = 0;
+    xcb_connection_t *conn = hostx_get_xcbconn ();
+    xcb_gcontext_t gc;
+    xcb_rectangle_t *rects = NULL;
+    int data_len, width, height;
+    xcb_xv_query_image_attributes_cookie_t image_attr_cookie;
+    xcb_xv_query_image_attributes_reply_t *image_attr_reply;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_buf, FALSE);
 
     EPHYR_LOG("enter, num_clip_rects: %d\n", a_clip_rect_nums);
 
-    memset(&gc_values, 0, sizeof(gc_values));
-    gc = XCreateGC(dpy, hostx_get_window(a_screen_num), 0L, &gc_values);
-    if (!gc) {
-        EPHYR_LOG_ERROR("failed to create gc \n");
+    gc = xcb_generate_id(conn);
+    xcb_create_gc(conn, gc, hostx_get_window(a_screen_num), 0, NULL);
+
+    image_attr_cookie = xcb_xv_query_image_attributes(conn,
+                                                      a_port_id,
+                                                      a_image_id,
+                                                      a_image_width,
+                                                      a_image_height);
+    image_attr_reply = xcb_xv_query_image_attributes_reply(conn,
+                                                           image_attr_cookie,
+                                                           NULL);
+    if (!image_attr_reply)
         goto out;
-    }
-    xv_image = (XvImage *) XvCreateImage(hostx_get_display(),
-                                         a_port_id, a_image_id,
-                                         NULL, a_image_width, a_image_height);
-    if (!xv_image) {
-        EPHYR_LOG_ERROR("failed to create image\n");
-        goto out;
-    }
-    xv_image->data = (char *) a_buf;
+    data_len = image_attr_reply->data_size;
+    width = image_attr_reply->width;
+    height = image_attr_reply->height;
+    free(image_attr_reply);
+
     if (a_clip_rect_nums) {
         int i = 0;
-
-        rects = calloc(a_clip_rect_nums, sizeof(XRectangle));
-        for (i = 0; i < a_clip_rect_nums; i++) {
+        rects = calloc(a_clip_rect_nums, sizeof(xcb_rectangle_t));
+        for (i=0; i < a_clip_rect_nums; i++) {
             rects[i].x = a_clip_rects[i].x1;
             rects[i].y = a_clip_rects[i].y1;
             rects[i].width = a_clip_rects[i].x2 - a_clip_rects[i].x1;
@@ -774,31 +612,28 @@ ephyrHostXVPutImage(int a_screen_num,
             EPHYR_LOG("(x,y,w,h): (%d,%d,%d,%d)\n",
                       rects[i].x, rects[i].y, rects[i].width, rects[i].height);
         }
-        XSetClipRectangles(dpy, gc, 0, 0, rects, a_clip_rect_nums, YXBanded);
-        /*this always returns 1 */
-    }
-    res = XvPutImage(dpy, a_port_id,
-                     hostx_get_window(a_screen_num),
-                     gc, xv_image,
+        xcb_set_clip_rectangles(conn,
+                                XCB_CLIP_ORDERING_YX_BANDED,
+                                gc,
+                                0,
+                                0,
+                                a_clip_rect_nums,
+                                rects);
+	free(rects);
+    }
+    xcb_xv_put_image(conn,
+                     a_port_id,
+                     hostx_get_window (a_screen_num),
+                     gc,
+                     a_image_id,
                      a_src_x, a_src_y, a_src_w, a_src_h,
-                     a_drw_x, a_drw_y, a_drw_w, a_drw_h);
-    if (res != Success) {
-        EPHYR_LOG_ERROR("XvPutImage() failed: %d\n", res);
-        goto out;
-    }
+                     a_drw_x, a_drw_y, a_drw_w, a_drw_h,
+                     width, height,
+                     data_len, a_buf);
     is_ok = TRUE;
 
- out:
-    if (xv_image) {
-        XFree(xv_image);
-        xv_image = NULL;
-    }
-    if (gc) {
-        XFreeGC(dpy, gc);
-        gc = NULL;
-    }
-    free(rects);
-    rects = NULL;
+out:
+    xcb_free_gc(conn, gc);
     EPHYR_LOG("leave\n");
     return is_ok;
 }
@@ -809,34 +644,22 @@ ephyrHostXVPutVideo(int a_screen_num, int a_port_id,
                     int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h)
 {
     Bool is_ok = FALSE;
-    int res = FALSE;
-    GC gc = 0;
-    XGCValues gc_values;
-    Display *dpy = hostx_get_display();
+    xcb_gcontext_t gc;
+    xcb_connection_t *conn = hostx_get_xcbconn();
 
-    EPHYR_RETURN_VAL_IF_FAIL(dpy, FALSE);
+    EPHYR_RETURN_VAL_IF_FAIL(conn, FALSE);
 
-    gc = XCreateGC(dpy, hostx_get_window(a_screen_num), 0L, &gc_values);
-    if (!gc) {
-        EPHYR_LOG_ERROR("failed to create gc \n");
-        goto out;
-    }
-    res = XvPutVideo(dpy, a_port_id, hostx_get_window(a_screen_num), gc,
+    gc = xcb_generate_id(conn);
+    xcb_create_gc(conn, gc, hostx_get_window (a_screen_num), 0, NULL);
+    xcb_xv_put_video(conn,
+                     a_port_id,
+                     hostx_get_window (a_screen_num), gc,
                      a_vid_x, a_vid_y, a_vid_w, a_vid_h,
                      a_drw_x, a_drw_y, a_drw_w, a_drw_h);
-
-    if (res != Success) {
-        EPHYR_LOG_ERROR("XvPutVideo() failed: %d\n", res);
-        goto out;
-    }
-
     is_ok = TRUE;
 
- out:
-    if (gc) {
-        XFreeGC(dpy, gc);
-        gc = NULL;
-    }
+    xcb_free_gc(conn, gc);
+
     return is_ok;
 }
 
@@ -845,36 +668,26 @@ ephyrHostXVGetVideo(int a_screen_num, int a_port_id,
                     int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
                     int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h)
 {
-    Bool is_ok = FALSE;
-    int res = FALSE;
-    GC gc = 0;
-    XGCValues gc_values;
-    Display *dpy = hostx_get_display();
+    xcb_gcontext_t gc;
+    xcb_connection_t *conn = hostx_get_xcbconn();
 
-    EPHYR_RETURN_VAL_IF_FAIL(dpy, FALSE);
+    EPHYR_RETURN_VAL_IF_FAIL(conn, FALSE);
 
-    gc = XCreateGC(dpy, hostx_get_window(a_screen_num), 0L, &gc_values);
-    if (!gc) {
-        EPHYR_LOG_ERROR("failed to create gc \n");
-        goto out;
-    }
-    res = XvGetVideo(dpy, a_port_id, hostx_get_window(a_screen_num), gc,
+    gc = xcb_generate_id(conn);
+    xcb_create_gc(conn,
+                  gc,
+                  hostx_get_window (a_screen_num),
+                  0, NULL);
+    xcb_xv_get_video(conn,
+                     a_port_id,
+                     hostx_get_window (a_screen_num),
+                     gc,
                      a_vid_x, a_vid_y, a_vid_w, a_vid_h,
                      a_drw_x, a_drw_y, a_drw_w, a_drw_h);
 
-    if (res != Success) {
-        EPHYR_LOG_ERROR("XvGetVideo() failed: %d\n", res);
-        goto out;
-    }
-
-    is_ok = TRUE;
+    xcb_free_gc(conn, gc);
 
- out:
-    if (gc) {
-        XFreeGC(dpy, gc);
-        gc = NULL;
-    }
-    return is_ok;
+    return TRUE;
 }
 
 Bool
@@ -882,36 +695,26 @@ ephyrHostXVPutStill(int a_screen_num, int a_port_id,
                     int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
                     int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h)
 {
-    Bool is_ok = FALSE;
-    int res = FALSE;
-    GC gc = 0;
-    XGCValues gc_values;
-    Display *dpy = hostx_get_display();
+    xcb_connection_t *conn = hostx_get_xcbconn();
+    xcb_gcontext_t gc;
 
-    EPHYR_RETURN_VAL_IF_FAIL(dpy, FALSE);
+    EPHYR_RETURN_VAL_IF_FAIL(conn, FALSE);
 
-    gc = XCreateGC(dpy, hostx_get_window(a_screen_num), 0L, &gc_values);
-    if (!gc) {
-        EPHYR_LOG_ERROR("failed to create gc \n");
-        goto out;
-    }
-    res = XvPutStill(dpy, a_port_id, hostx_get_window(a_screen_num), gc,
+    gc = xcb_generate_id(conn);
+    xcb_create_gc(conn,
+                  gc,
+                  hostx_get_window (a_screen_num),
+                  0, NULL);
+    xcb_xv_put_still(conn,
+                     a_port_id,
+                     hostx_get_window (a_screen_num),
+                     gc,
                      a_vid_x, a_vid_y, a_vid_w, a_vid_h,
                      a_drw_x, a_drw_y, a_drw_w, a_drw_h);
 
-    if (res != Success) {
-        EPHYR_LOG_ERROR("XvPutStill() failed: %d\n", res);
-        goto out;
-    }
-
-    is_ok = TRUE;
+    xcb_free_gc(conn, gc);
 
- out:
-    if (gc) {
-        XFreeGC(dpy, gc);
-        gc = NULL;
-    }
-    return is_ok;
+    return TRUE;
 }
 
 Bool
@@ -919,57 +722,38 @@ ephyrHostXVGetStill(int a_screen_num, int a_port_id,
                     int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
                     int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h)
 {
-    Bool is_ok = FALSE;
-    int res = FALSE;
-    GC gc = 0;
-    XGCValues gc_values;
-    Display *dpy = hostx_get_display();
+    xcb_gcontext_t gc;
+    xcb_connection_t *conn = hostx_get_xcbconn();
 
-    EPHYR_RETURN_VAL_IF_FAIL(dpy, FALSE);
+    EPHYR_RETURN_VAL_IF_FAIL(conn, FALSE);
 
-    gc = XCreateGC(dpy, hostx_get_window(a_screen_num), 0L, &gc_values);
-    if (!gc) {
-        EPHYR_LOG_ERROR("failed to create gc \n");
-        goto out;
-    }
-    res = XvGetStill(dpy, a_port_id, hostx_get_window(a_screen_num), gc,
+    gc = xcb_generate_id(conn);
+    xcb_create_gc(conn,
+                  gc,
+                  hostx_get_window (a_screen_num),
+                  0, NULL);
+    xcb_xv_get_still(conn,
+                     a_port_id,
+                     hostx_get_window (a_screen_num),
+                     gc,
                      a_vid_x, a_vid_y, a_vid_w, a_vid_h,
                      a_drw_x, a_drw_y, a_drw_w, a_drw_h);
+    xcb_free_gc(conn, gc);
 
-    if (res != Success) {
-        EPHYR_LOG_ERROR("XvGetStill() failed: %d\n", res);
-        goto out;
-    }
-
-    is_ok = TRUE;
-
- out:
-    if (gc) {
-        XFreeGC(dpy, gc);
-        gc = NULL;
-    }
-    return is_ok;
+    return TRUE;
 }
 
 Bool
 ephyrHostXVStopVideo(int a_screen_num, int a_port_id)
 {
-    int ret = 0;
-    Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
+    xcb_connection_t *conn = hostx_get_xcbconn();
 
-    EPHYR_RETURN_VAL_IF_FAIL(dpy, FALSE);
+    EPHYR_RETURN_VAL_IF_FAIL(conn, FALSE);
 
     EPHYR_LOG("enter\n");
 
-    ret = XvStopVideo(dpy, a_port_id, hostx_get_window(a_screen_num));
-    if (ret != Success) {
-        EPHYR_LOG_ERROR("XvStopVideo() failed: %d \n", ret);
-        goto out;
-    }
-    is_ok = TRUE;
+    xcb_xv_stop_video(conn, a_port_id, hostx_get_window (a_screen_num));
 
- out:
     EPHYR_LOG("leave\n");
-    return is_ok;
+    return TRUE;
 }
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.h b/hw/kdrive/ephyr/ephyrhostvideo.h
index 0d31772..b946add 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.h
+++ b/hw/kdrive/ephyr/ephyrhostvideo.h
@@ -28,8 +28,9 @@
 #ifndef __EPHYRHOSTVIDEO_H__
 #define __EPHYRHOSTVIDEO_H__
 
-typedef void *EphyrHostXVAdaptor;
 typedef struct _EphyrHostXVAdaptorArray EphyrHostXVAdaptorArray;
+#include <xcb/xv.h>
+#include <X11/Xdefs.h>
 
 typedef struct _EphyrHostVideoFormat {
     char depth;
@@ -48,13 +49,6 @@ typedef struct _EphyrHostEncoding {
     EphyrHostRational rate;
 } EphyrHostEncoding;
 
-typedef struct _EphyrHostAttribute {
-    int flags;
-    int min_value;
-    int max_value;
-    char *name;
-} EphyrHostAttribute;
-
 typedef struct _EphyrHostImageFormat {
     int id;                     /* Unique descriptor for the format */
     int type;                   /* XvRGB, XvYUV */
@@ -95,32 +89,32 @@ void ephyrHostFree(void *a_pointer);
 /*
  * host adaptor array
  */
-Bool ephyrHostXVQueryAdaptors(EphyrHostXVAdaptorArray ** a_adaptors);
-void ephyrHostXVAdaptorArrayDelete(EphyrHostXVAdaptorArray * a_adaptors);
-int ephyrHostXVAdaptorArrayGetSize(const EphyrHostXVAdaptorArray * a_this);
-EphyrHostXVAdaptor *ephyrHostXVAdaptorArrayAt(const EphyrHostXVAdaptorArray *
-                                              a_this, int a_index);
+Bool ephyrHostXVQueryAdaptors(xcb_xv_query_adaptors_reply_t **a_adaptors);
+void ephyrHostXVAdaptorArrayDelete(xcb_xv_query_adaptors_reply_t *a_adaptors);
+int ephyrHostXVAdaptorArrayGetSize(const xcb_xv_query_adaptors_reply_t *a_this);
+xcb_xv_adaptor_info_t* ephyrHostXVAdaptorArrayAt(const xcb_xv_query_adaptors_reply_t *a_this,
+                                                 int a_index);
 
 /*
  * host adaptor
  */
 
-char ephyrHostXVAdaptorGetType(const EphyrHostXVAdaptor * a_this);
-const char *ephyrHostXVAdaptorGetName(const EphyrHostXVAdaptor * a_this);
+char ephyrHostXVAdaptorGetType(const xcb_xv_adaptor_info_t *a_this);
+char* ephyrHostXVAdaptorGetName(const xcb_xv_adaptor_info_t *a_this);
 EphyrHostVideoFormat *ephyrHostXVAdaptorGetVideoFormats
-    (const EphyrHostXVAdaptor * a_this, int *a_nb_formats);
-int ephyrHostXVAdaptorGetNbPorts(const EphyrHostXVAdaptor * a_this);
-int ephyrHostXVAdaptorGetFirstPortID(const EphyrHostXVAdaptor * a_this);
+    (const xcb_xv_adaptor_info_t *a_this, int *a_nb_formats);
+int ephyrHostXVAdaptorGetNbPorts(const xcb_xv_adaptor_info_t *a_this);
+int ephyrHostXVAdaptorGetFirstPortID(const xcb_xv_adaptor_info_t *a_this);
 
-Bool ephyrHostXVAdaptorHasPutVideo(const EphyrHostXVAdaptor * a_this,
+Bool ephyrHostXVAdaptorHasPutVideo(const xcb_xv_adaptor_info_t *a_this,
                                    Bool *a_result);
-Bool ephyrHostXVAdaptorHasGetVideo(const EphyrHostXVAdaptor * a_this,
+Bool ephyrHostXVAdaptorHasGetVideo(const xcb_xv_adaptor_info_t *a_this,
                                    Bool *a_result);
-Bool ephyrHostXVAdaptorHasPutStill(const EphyrHostXVAdaptor * a_this,
+Bool ephyrHostXVAdaptorHasPutStill(const xcb_xv_adaptor_info_t *a_this,
                                    Bool *a_result);
-Bool ephyrHostXVAdaptorHasGetStill(const EphyrHostXVAdaptor * a_this,
+Bool ephyrHostXVAdaptorHasGetStill(const xcb_xv_adaptor_info_t *a_this,
                                    Bool *a_result);
-Bool ephyrHostXVAdaptorHasPutImage(const EphyrHostXVAdaptor * a_this,
+Bool ephyrHostXVAdaptorHasPutImage(const xcb_xv_adaptor_info_t *a_this,
                                    Bool *a_result);
 
 /*
@@ -137,10 +131,9 @@ void ephyrHostEncodingsDelete(EphyrHostEncoding * a_encodings,
  * attribute
  */
 Bool ephyrHostXVQueryPortAttributes(int a_port_id,
-                                    EphyrHostAttribute ** a_attributes,
-                                    int *a_num_attributes);
+                                    xcb_xv_query_port_attributes_reply_t **a_attributes);
 
-void ephyrHostAttributesDelete(EphyrHostAttribute * a_attributes);
+void ephyrHostAttributesDelete(xcb_xv_query_port_attributes_reply_t *a_attributes);
 
 /*
  * image format
diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c
index dfc29f5..345c7b9 100644
--- a/hw/kdrive/ephyr/ephyrvideo.c
+++ b/hw/kdrive/ephyr/ephyrvideo.c
@@ -39,7 +39,7 @@
 #include "ephyrhostvideo.h"
 
 struct _EphyrXVPriv {
-    EphyrHostXVAdaptorArray *host_adaptors;
+    xcb_xv_query_adaptors_reply_t *host_adaptors;
     KdVideoAdaptorPtr adaptors;
     int num_adaptors;
 };
@@ -381,23 +381,29 @@ videoEncodingDup(EphyrHostEncoding * a_encodings, int a_num_encodings)
 }
 
 static KdAttributePtr
-portAttributesDup(EphyrHostAttribute * a_encodings, int a_num_encodings)
+portAttributesDup(const xcb_xv_query_port_attributes_reply_t *a_encodings)
 {
     int i = 0;
     KdAttributePtr result = NULL;
+    xcb_xv_attribute_info_iterator_t it;
 
-    EPHYR_RETURN_VAL_IF_FAIL(a_encodings && a_num_encodings, NULL);
+    EPHYR_RETURN_VAL_IF_FAIL(a_encodings, NULL);
 
-    result = calloc(a_num_encodings, sizeof(KdAttributeRec));
+    result = calloc(a_encodings->num_attributes, sizeof(KdAttributeRec));
     if (!result) {
         EPHYR_LOG_ERROR("failed to allocate attributes\n");
         return NULL;
     }
-    for (i = 0; i < a_num_encodings; i++) {
-        result[i].flags = a_encodings[i].flags;
-        result[i].min_value = a_encodings[i].min_value;
-        result[i].max_value = a_encodings[i].max_value;
-        result[i].name = strdup(a_encodings[i].name);
+    it = xcb_xv_query_port_attributes_attributes_iterator(a_encodings);
+    for (i = 0;
+         i < a_encodings->num_attributes;
+         xcb_xv_attribute_info_next(&it), i++) {
+        result[i].flags = it.data->flags;
+        result[i].min_value = it.data->min;
+        result[i].max_value = it.data->max;
+        result[i].name = malloc(it.data->size + 1);
+	memcpy (result[i].name, xcb_xv_attribute_info_name(it.data), it.data->size);
+	result[i].name[it.data->size] = '\0';
     }
     return result;
 }
@@ -405,13 +411,13 @@ portAttributesDup(EphyrHostAttribute * a_encodings, int a_num_encodings)
 static Bool
 ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
 {
-    EphyrHostXVAdaptor *cur_host_adaptor = NULL;
+    xcb_xv_adaptor_info_t *cur_host_adaptor = NULL;
     EphyrHostVideoFormat *video_formats = NULL;
     EphyrHostEncoding *encodings = NULL;
-    EphyrHostAttribute *attributes = NULL;
+    xcb_xv_query_port_attributes_reply_t *attributes = NULL;
     EphyrHostImageFormat *image_formats = NULL;
     int num_video_formats = 0, base_port_id = 0,
-        num_attributes = 0, num_formats = 0, i = 0, port_priv_offset = 0;
+        num_formats = 0, i = 0, port_priv_offset = 0;
     unsigned num_encodings = 0;
     Bool is_ok = FALSE;
 
@@ -458,10 +464,8 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
         a_this->adaptors[i].type |= XvWindowMask;
         a_this->adaptors[i].flags =
             VIDEO_OVERLAID_IMAGES | VIDEO_CLIP_TO_VIEWPORT;
-        if (ephyrHostXVAdaptorGetName(cur_host_adaptor))
-            a_this->adaptors[i].name =
-                strdup(ephyrHostXVAdaptorGetName(cur_host_adaptor));
-        else
+        a_this->adaptors[i].name = ephyrHostXVAdaptorGetName(cur_host_adaptor);
+        if (!a_this->adaptors[i].name)
             a_this->adaptors[i].name = strdup("Xephyr Video Overlay");
         base_port_id = ephyrHostXVAdaptorGetFirstPortID(cur_host_adaptor);
         if (base_port_id < 0) {
@@ -504,15 +508,14 @@ ephyrXVPrivQueryHostAdaptors(EphyrXVPriv * a_this)
             port_priv->xv_priv = a_this;
             a_this->adaptors[i].pPortPrivates[j].ptr = port_priv;
         }
-        if (!ephyrHostXVQueryPortAttributes(base_port_id,
-                                            &attributes, &num_attributes)) {
+        if (!ephyrHostXVQueryPortAttributes(base_port_id, &attributes)) {
             EPHYR_LOG_ERROR("failed to get port attribute "
                             "for adaptor %d\n", i);
             continue;
         }
         a_this->adaptors[i].pAttributes =
-            portAttributesDup(attributes, num_attributes);
-        a_this->adaptors[i].nAttributes = num_attributes;
+            portAttributesDup(attributes);
+        a_this->adaptors[i].nAttributes = attributes->num_attributes;
         /*make sure atoms of attrs names are created in xephyr */
         for (j = 0; j < a_this->adaptors[i].nAttributes; j++) {
             if (a_this->adaptors[i].pAttributes[j].name)
@@ -548,7 +551,7 @@ ephyrXVPrivSetAdaptorsHooks(EphyrXVPriv * a_this)
 {
     int i = 0;
     Bool has_it = FALSE;
-    EphyrHostXVAdaptor *cur_host_adaptor = NULL;
+    xcb_xv_adaptor_info_t *cur_host_adaptor = NULL;
 
     EPHYR_RETURN_VAL_IF_FAIL(a_this, FALSE);
 
commit 3ea75a59d5fec3c4099388724942e216f2344328
Author: Julien Cristau <jcristau at debian.org>
Date:   Mon Jun 21 17:20:32 2010 +0100

    Xephyr: use xcb for event handling
    
    v2: Rebase on indentation changes, squash in a simpler variant of the
        later event compression patch, fix server hang or segfault on
        window close by reimplementing the x_io_error_handler in the new
        XCB event loop (anholt).
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net> (v1)
    Signed-off-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 3d3519b..07a2772 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -942,169 +942,195 @@ host_screen_from_window(Window w)
 int
 hostx_get_event(EphyrHostXEvent * ev)
 {
-    XEvent xev;
+    xcb_generic_event_t *xev;
     static int grabbed_screen = -1;
     static xcb_key_symbols_t *keysyms;
 
     if (!keysyms)
         keysyms = xcb_key_symbols_alloc(HostX.conn);
 
-    if (XPending(HostX.dpy)) {
-        XNextEvent(HostX.dpy, &xev);
-
-        switch (xev.type) {
-        case Expose:
-            /* Not so great event compression, but works ok */
-            while (XCheckTypedWindowEvent(HostX.dpy, xev.xexpose.window,
-                                          Expose, &xev));
-            {
-                struct EphyrHostScreen *host_screen =
-                    host_screen_from_window(xev.xexpose.window);
-                if (host_screen) {
-                    hostx_paint_rect(host_screen->info, 0, 0, 0, 0,
-                                     host_screen->win_width,
-                                     host_screen->win_height);
-                }
-                else {
-                    EPHYR_LOG_ERROR("failed to get host screen\n");
-                    ev->type = EPHYR_EV_EXPOSE;
-                    ev->data.expose.window = xev.xexpose.window;
-                    return 1;
-                }
-            }
-            return 0;
-
-        case MotionNotify:
-        {
-            struct EphyrHostScreen *host_screen =
-                host_screen_from_window(xev.xmotion.window);
-
-            ev->type = EPHYR_EV_MOUSE_MOTION;
-            ev->data.mouse_motion.x = xev.xmotion.x;
-            ev->data.mouse_motion.y = xev.xmotion.y;
-            ev->data.mouse_motion.window = xev.xmotion.window;
-            ev->data.mouse_motion.screen =
-                (host_screen ? host_screen->mynum : -1);
+    xev = xcb_poll_for_event(HostX.conn);
+    if (!xev) {
+        /* If our XCB connection has died (for example, our window was
+         * closed), exit now.
+         */
+        if (xcb_connection_has_error(HostX.conn)) {
+            CloseWellKnownConnections();
+            OsCleanup(1);
+            exit(1);
         }
-            return 1;
 
-        case ButtonPress:
-            ev->type = EPHYR_EV_MOUSE_PRESS;
-            ev->key_state = xev.xkey.state;
-            /* 
-             * This is a bit hacky. will break for button 5 ( defined as 0x10 )
-             * Check KD_BUTTON defines in kdrive.h 
-             */
-            ev->data.mouse_down.button_num = 1 << (xev.xbutton.button - 1);
-            return 1;
+        return 0;
+    }
 
-        case ButtonRelease:
-            ev->type = EPHYR_EV_MOUSE_RELEASE;
-            ev->key_state = xev.xkey.state;
-            ev->data.mouse_up.button_num = 1 << (xev.xbutton.button - 1);
-            return 1;
+    switch (xev->response_type & 0x7f) {
+    case XCB_EXPOSE: {
+        xcb_expose_event_t *expose = (xcb_expose_event_t *)xev;
+        struct EphyrHostScreen *host_screen =
+            host_screen_from_window(expose->window);
 
-        case KeyPress:
-        {
-            ev->type = EPHYR_EV_KEY_PRESS;
-            ev->key_state = xev.xkey.state;
-            ev->data.key_down.scancode = xev.xkey.keycode;
+        /* Wait for the last expose event in a series of cliprects
+         * to actually paint our screen.
+         */
+        if (expose->count != 0)
+            break;
+
+        if (host_screen) {
+            hostx_paint_rect(host_screen->info, 0, 0, 0, 0,
+                             host_screen->win_width,
+                             host_screen->win_height);
+        }
+        else {
+            EPHYR_LOG_ERROR("failed to get host screen\n");
+            ev->type = EPHYR_EV_EXPOSE;
+            ev->data.expose.window = expose->window;
+            free(xev);
             return 1;
         }
-        case KeyRelease:
-            if ((xcb_key_symbols_get_keysym(keysyms,xev.xkey.keycode, 0) == XK_Shift_L
-                 || xcb_key_symbols_get_keysym(keysyms,xev.xkey.keycode, 0) == XK_Shift_R)
-                && (xev.xkey.state & XCB_MOD_MASK_CONTROL)) {
-                struct EphyrHostScreen *host_screen =
-                    host_screen_from_window(xev.xexpose.window);
-
-                if (grabbed_screen != -1) {
-                    xcb_ungrab_keyboard(HostX.conn, XCB_TIME_CURRENT_TIME);
+        return 0;
+    }
+
+    case XCB_MOTION_NOTIFY: {
+        xcb_motion_notify_event_t *motion = (xcb_motion_notify_event_t *)xev;
+        struct EphyrHostScreen *host_screen =
+            host_screen_from_window(motion->event);
+
+        ev->type = EPHYR_EV_MOUSE_MOTION;
+        ev->data.mouse_motion.x = motion->event_x;
+        ev->data.mouse_motion.y = motion->event_y;
+        ev->data.mouse_motion.window = motion->event;
+        ev->data.mouse_motion.screen =
+            (host_screen ? host_screen->mynum : -1);
+        free(xev);
+        return 1;
+    }
+
+    case XCB_BUTTON_PRESS: {
+        xcb_button_press_event_t *button = (xcb_button_press_event_t *)xev;
+        ev->type = EPHYR_EV_MOUSE_PRESS;
+        ev->key_state = button->state;
+        /* 
+         * This is a bit hacky. will break for button 5 ( defined as 0x10 )
+         * Check KD_BUTTON defines in kdrive.h 
+         */
+        ev->data.mouse_down.button_num = 1 << (button->detail - 1);
+        free(xev);
+        return 1;
+    }
+
+    case XCB_BUTTON_RELEASE: {
+        xcb_button_release_event_t *button = (xcb_button_release_event_t *)xev;
+        ev->type = EPHYR_EV_MOUSE_RELEASE;
+        ev->key_state = button->state;
+        ev->data.mouse_up.button_num = 1 << (button->detail-1);
+        free(xev);
+        return 1;
+    }
+
+    case XCB_KEY_PRESS: {
+        xcb_key_press_event_t *key = (xcb_key_press_event_t *)xev;
+        ev->type = EPHYR_EV_KEY_PRESS;
+        ev->key_state = key->state;
+        ev->data.key_down.scancode = key->detail;
+        free(xev);
+        return 1;
+    }
+
+    case XCB_KEY_RELEASE: {
+        xcb_key_release_event_t *key = (xcb_key_release_event_t *)xev;
+        if ((xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_L
+             || xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_R)
+            && (key->state & XCB_MOD_MASK_CONTROL)) {
+            struct EphyrHostScreen *host_screen =
+                host_screen_from_window(key->event);
+
+            if (grabbed_screen != -1) {
+                xcb_ungrab_keyboard(HostX.conn, XCB_TIME_CURRENT_TIME);
+                xcb_ungrab_pointer(HostX.conn, XCB_TIME_CURRENT_TIME);
+                grabbed_screen = -1;
+                hostx_set_win_title(host_screen->info,
+                                    "(ctrl+shift grabs mouse and keyboard)");
+            }
+            else {
+                /* Attempt grab */
+                xcb_grab_keyboard_cookie_t kbgrabc =
+                    xcb_grab_keyboard(HostX.conn,
+                                      True,
+                                      host_screen->win,
+                                      XCB_TIME_CURRENT_TIME,
+                                      XCB_GRAB_MODE_ASYNC,
+                                      XCB_GRAB_MODE_ASYNC);
+                xcb_grab_keyboard_reply_t *kbgrabr;
+                xcb_grab_pointer_cookie_t pgrabc =
+                    xcb_grab_pointer(HostX.conn,
+                                     True,
+                                     host_screen->win,
+                                     0,
+                                     XCB_GRAB_MODE_ASYNC,
+                                     XCB_GRAB_MODE_ASYNC,
+                                     host_screen->win,
+                                     XCB_NONE,
+                                     XCB_TIME_CURRENT_TIME);
+                xcb_grab_pointer_reply_t *pgrabr;
+                kbgrabr = xcb_grab_keyboard_reply(HostX.conn, kbgrabc, NULL);
+                if (!kbgrabr || kbgrabr->status != XCB_GRAB_STATUS_SUCCESS) {
+                    xcb_discard_reply(HostX.conn, pgrabc.sequence);
                     xcb_ungrab_pointer(HostX.conn, XCB_TIME_CURRENT_TIME);
-                    grabbed_screen = -1;
-                    hostx_set_win_title(host_screen->info,
-                                        "(ctrl+shift grabs mouse and keyboard)");
-                }
-                else {
-                    /* Attempt grab */
-                    xcb_grab_keyboard_cookie_t kbgrabc =
-                        xcb_grab_keyboard(HostX.conn,
-                                          True,
-                                          host_screen->win,
-                                          XCB_TIME_CURRENT_TIME,
-                                          XCB_GRAB_MODE_ASYNC,
-                                          XCB_GRAB_MODE_ASYNC);
-                    xcb_grab_keyboard_reply_t *kbgrabr;
-                    xcb_grab_pointer_cookie_t pgrabc =
-                        xcb_grab_pointer(HostX.conn,
-                                         True,
-                                         host_screen->win,
-                                         0,
-                                         XCB_GRAB_MODE_ASYNC,
-                                         XCB_GRAB_MODE_ASYNC,
-                                         host_screen->win,
-                                         XCB_NONE,
-                                         XCB_TIME_CURRENT_TIME);
-                    xcb_grab_pointer_reply_t *pgrabr;
-                    kbgrabr = xcb_grab_keyboard_reply(HostX.conn, kbgrabc, NULL);
-                    if (!kbgrabr || kbgrabr->status != XCB_GRAB_STATUS_SUCCESS) {
-                        xcb_discard_reply(HostX.conn, pgrabc.sequence);
-                        xcb_ungrab_pointer(HostX.conn, XCB_TIME_CURRENT_TIME);
-                    } else {
-                        pgrabr = xcb_grab_pointer_reply(HostX.conn, pgrabc, NULL);
-                        if (!pgrabr || pgrabr->status != XCB_GRAB_STATUS_SUCCESS)
-                            {
-                                xcb_ungrab_keyboard(HostX.conn,
-                                                    XCB_TIME_CURRENT_TIME);
-                            } else {
-                            grabbed_screen = host_screen->mynum;
-                            hostx_set_win_title
-                                (host_screen->info,
-                                 "(ctrl+shift releases mouse and keyboard)");
-                        }
+                } else {
+                    pgrabr = xcb_grab_pointer_reply(HostX.conn, pgrabc, NULL);
+                    if (!pgrabr || pgrabr->status != XCB_GRAB_STATUS_SUCCESS)
+                        {
+                            xcb_ungrab_keyboard(HostX.conn,
+                                                XCB_TIME_CURRENT_TIME);
+                        } else {
+                        grabbed_screen = host_screen->mynum;
+                        hostx_set_win_title
+                            (host_screen->info,
+                             "(ctrl+shift releases mouse and keyboard)");
                     }
                 }
             }
+        }
 
-            /* Still send the release event even if above has happened
-             * server will get confused with just an up event. 
-             * Maybe it would be better to just block shift+ctrls getting to
-             * kdrive all togeather. 
-             */
-            ev->type = EPHYR_EV_KEY_RELEASE;
-            ev->key_state = xev.xkey.state;
-            ev->data.key_up.scancode = xev.xkey.keycode;
-            return 1;
+        /* Still send the release event even if above has happened
+         * server will get confused with just an up event. 
+         * Maybe it would be better to just block shift+ctrls getting to
+         * kdrive all togeather. 
+         */
+        ev->type = EPHYR_EV_KEY_RELEASE;
+        ev->key_state = key->state;
+        ev->data.key_up.scancode = key->detail;
+        return 1;
+    }
 
-        case ConfigureNotify:
+    case ConfigureNotify:
         {
             struct EphyrHostScreen *host_screen;
+            xcb_configure_notify_event_t *configure =
+                (xcb_configure_notify_event_t *)xev;
 
-            /* event compression as for Expose events, cause
-             * we don't want to resize the framebuffer for
-             * every single change */
-            while (XCheckTypedWindowEvent(HostX.dpy, xev.xconfigure.window,
-                                          ConfigureNotify, &xev));
-            host_screen = host_screen_from_window(xev.xconfigure.window);
+            host_screen = host_screen_from_window(configure->window);
 
             if (!host_screen ||
                 (host_screen->win_pre_existing == None && !EphyrWantResize)) {
+                free(xev);
                 return 0;
             }
 
             ev->type = EPHYR_EV_CONFIGURE;
-            ev->data.configure.width = xev.xconfigure.width;
-            ev->data.configure.height = xev.xconfigure.height;
-            ev->data.configure.window = xev.xconfigure.window;
+            ev->data.configure.width = configure->width;
+            ev->data.configure.height = configure->height;
+            ev->data.configure.window = configure->window;
             ev->data.configure.screen = host_screen->mynum;
+            free(xev);
 
             return 1;
         }
-        default:
-            break;
+    default:
+        break;
 
-        }
     }
+    free(xev);
     return 0;
 }
 
commit ff26845252889f7cc3258a0d3aa116189acc6aae
Author: Julien Cristau <jcristau at debian.org>
Date:   Thu Jun 24 23:45:16 2010 +0100

    Xephyr: some more hostx.c xcb-ification
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index d984db9..3d3519b 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -368,9 +368,9 @@ hostx_init(void)
     HostX.conn = XGetXCBConnection(HostX.dpy);
     HostX.screen = DefaultScreen(HostX.dpy);
     screen = xcb_aux_get_screen(HostX.conn, HostX.screen);
-    HostX.winroot = RootWindow(HostX.dpy, HostX.screen);
+    HostX.winroot = screen->root;
     HostX.gc = xcb_generate_id(HostX.conn);
-    HostX.depth = DefaultDepth(HostX.dpy, HostX.screen);
+    HostX.depth = screen->root_depth;
     HostX.visual  = xcb_aux_find_visual_by_id(screen, screen->root_visual);
 
     xcb_create_gc(HostX.conn, HostX.gc, HostX.winroot, 0, NULL);
@@ -439,8 +439,8 @@ hostx_init(void)
                                  "(ctrl+shift grabs mouse and keyboard)");
 
             if (HostX.use_fullscreen) {
-                host_screen->win_width  = DisplayWidth(HostX.dpy, HostX.screen);
-                host_screen->win_height = DisplayHeight(HostX.dpy, HostX.screen);
+                host_screen->win_width  = screen->width_in_pixels;
+                host_screen->win_height = screen->height_in_pixels;
 
                 hostx_set_fullscreen_hint();
             }
@@ -1123,7 +1123,7 @@ hostx_get_xcbconn(void)
 int
 hostx_get_screen(void)
 {
-    return DefaultScreen(HostX.dpy);
+    return HostX.screen;
 }
 
 int
commit 9b55f76a265aab0d9943a40208a38800e5782ba5
Author: Julien Cristau <jcristau at debian.org>
Date:   Thu Jun 24 23:35:15 2010 +0100

    Xephyr: move HostX.visual to xcb
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 4bcc902..d984db9 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -94,7 +94,7 @@ struct EphyrHostXVars {
     Display *dpy;
     xcb_connection_t *conn;
     int screen;
-    Visual *visual;
+    xcb_visualtype_t *visual;
     Window winroot;
     xcb_gcontext_t  gc;
     int depth;
@@ -371,7 +371,7 @@ hostx_init(void)
     HostX.winroot = RootWindow(HostX.dpy, HostX.screen);
     HostX.gc = xcb_generate_id(HostX.conn);
     HostX.depth = DefaultDepth(HostX.dpy, HostX.screen);
-    HostX.visual = DefaultVisual(HostX.dpy, HostX.screen);
+    HostX.visual  = xcb_aux_find_visual_by_id(screen, screen->root_visual);
 
     xcb_create_gc(HostX.conn, HostX.gc, HostX.winroot, 0, NULL);
     cookie_WINDOW_STATE = xcb_intern_atom(HostX.conn, False,
@@ -593,10 +593,10 @@ hostx_get_bpp(EphyrScreenInfo screen)
     if (!host_screen)
         return 0;
 
-    if (host_depth_matches_server(host_screen))
-        return HostX.visual->bits_per_rgb;
+    if (host_depth_matches_server (host_screen))
+        return HostX.visual->bits_per_rgb_value;
     else
-        return host_screen->server_depth;       /*XXX correct ? */
+        return host_screen->server_depth; /*XXX correct ?*/
 }
 
 void
commit 126312fb4a6e06024a306341e675163108426390
Author: Julien Cristau <jcristau at debian.org>
Date:   Thu Jun 24 23:26:48 2010 +0100

    Xephyr: replace XKeycodeToKeysym with xcb-keysyms
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/configure.ac b/configure.ac
index 2c9585d..db7ef7c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2116,7 +2116,7 @@ if test "$KDRIVE" = yes; then
        AC_DEFINE(KDRIVE_MOUSE, 1, [Enable KDrive mouse driver])
     fi
 
-    XEPHYR_REQUIRED_LIBS="x11 >= 1.6 $LIBXEXT xau xdmcp xcb x11-xcb xcb-shape xcb-aux xcb-image xcb-icccm xcb-shm"
+    XEPHYR_REQUIRED_LIBS="x11 >= 1.6 $LIBXEXT xau xdmcp xcb x11-xcb xcb-shape xcb-aux xcb-image xcb-icccm xcb-shm xcb-keysyms"
     if test "x$XV" = xyes; then
         XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xv"
     fi
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 1261487..4bcc902 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -62,6 +62,7 @@
 #include <xcb/shm.h>
 #include <xcb/xcb_image.h>
 #include <xcb/shape.h>
+#include <xcb/xcb_keysyms.h>
 #ifdef XF86DRI
 #include <xcb/xf86dri.h>
 #include <xcb/glx.h>
@@ -943,6 +944,10 @@ hostx_get_event(EphyrHostXEvent * ev)
 {
     XEvent xev;
     static int grabbed_screen = -1;
+    static xcb_key_symbols_t *keysyms;
+
+    if (!keysyms)
+        keysyms = xcb_key_symbols_alloc(HostX.conn);
 
     if (XPending(HostX.dpy)) {
         XNextEvent(HostX.dpy, &xev);
@@ -1007,11 +1012,9 @@ hostx_get_event(EphyrHostXEvent * ev)
             return 1;
         }
         case KeyRelease:
-
-            if ((XKeycodeToKeysym(HostX.dpy, xev.xkey.keycode, 0) == XK_Shift_L
-                 || XKeycodeToKeysym(HostX.dpy, xev.xkey.keycode,
-                                     0) == XK_Shift_R)
-                && (xev.xkey.state & ControlMask)) {
+            if ((xcb_key_symbols_get_keysym(keysyms,xev.xkey.keycode, 0) == XK_Shift_L
+                 || xcb_key_symbols_get_keysym(keysyms,xev.xkey.keycode, 0) == XK_Shift_R)
+                && (xev.xkey.state & XCB_MOD_MASK_CONTROL)) {
                 struct EphyrHostScreen *host_screen =
                     host_screen_from_window(xev.xexpose.window);
 
commit 8543d3fdfd47d2a0423f3ef8e7429c23c5d6b053
Author: Julien Cristau <jcristau at debian.org>
Date:   Thu Jun 24 23:17:32 2010 +0100

    Xephyr: delete unused hostx_get_extension_info function
    
    v2: Also remove the prototype (anholt)
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net> (v1)
    Signed-off-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 2b69b0e..1261487 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -1158,21 +1158,6 @@ hostx_get_window_attributes(int a_window, EphyrHostWindowAttributes * a_attrs)
 }
 
 int
-hostx_get_extension_info(const char *a_ext_name,
-                         int *a_major_opcode,
-                         int *a_first_event, int *a_first_error)
-{
-    if (!a_ext_name || !a_major_opcode || !a_first_event || !a_first_error)
-        return 0;
-    if (!XQueryExtension(HostX.dpy,
-                         a_ext_name,
-                         a_major_opcode, a_first_event, a_first_error)) {
-        return 0;
-    }
-    return 1;
-}
-
-int
 hostx_get_visuals_info(EphyrHostVisualInfo ** a_visuals, int *a_num_entries)
 {
     Bool is_ok = False;
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index c065f2d..1c01f8b 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -220,11 +220,6 @@ int
  hostx_get_window_attributes(int a_window, EphyrHostWindowAttributes * a_attr);
 
 int
-
-hostx_get_extension_info(const char *a_ext_name,
-                         int *a_major_opcode,
-                         int *a_first_even, int *a_first_error);
-int
  hostx_get_visuals_info(EphyrHostVisualInfo ** a_visuals, int *a_num_entries);
 
 int hostx_create_window(int a_screen_number,
commit d72c11b9df4a98fd80cb6635d34964483e33bc41
Author: Julien Cristau <jcristau at debian.org>
Date:   Mon Jun 21 14:25:11 2010 +0100

    Xephyr: delete unused proxy code
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/ephyrhostproxy.c b/hw/kdrive/ephyr/ephyrhostproxy.c
deleted file mode 100644
index a4f25c1..0000000
--- a/hw/kdrive/ephyr/ephyrhostproxy.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Xephyr - A kdrive X server thats runs in a host X window.
- *          Authored by Matthew Allum <mallum at openedhand.com>
- * 
- * Copyright © 2007 OpenedHand Ltd 
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of OpenedHand Ltd not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. OpenedHand Ltd makes no
- * representations about the suitability of this software for any purpose.  It
- * is provided "as is" without express or implied warranty.
- *
- * OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL 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
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors:
- *    Dodji Seketeli <dodji at openedhand.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <kdrive-config.h>
-#endif
-
-#include <X11/Xlibint.h>
-#define _HAVE_XALLOC_DECLS
-#include "ephyrlog.h"
-#include "ephyrhostproxy.h"
-#include "hostx.h"
-
-/* byte swap a short */
-#define swaps(x, n) { \
-    n = ((char *) (x))[0];\
-    ((char *) (x))[0] = ((char *) (x))[1];\
-    ((char *) (x))[1] = n; }
-
-#define GetXReq(req) \
-    WORD64ALIGN ;\
-    if ((dpy->bufptr + SIZEOF(xReq)) > dpy->bufmax)\
-            _XFlush(dpy);\
-    req = (xReq *)(dpy->last_req = dpy->bufptr);\
-    dpy->bufptr += SIZEOF(xReq);\
-    dpy->request++
-
-Bool
-ephyrHostProxyDoForward(pointer a_request_buffer,
-                        struct XReply *a_reply, Bool a_do_swap)
-{
-    Bool is_ok = FALSE;
-    int n = 0;
-    Display *dpy = hostx_get_display();
-    xReq *in_req = (xReq *) a_request_buffer;
-    xReq *forward_req = NULL;
-    struct XReply reply;
-
-    EPHYR_RETURN_VAL_IF_FAIL(in_req && dpy, FALSE);
-
-    EPHYR_LOG("enter\n");
-
-    if (a_do_swap) {
-        swaps(&in_req->length);
-    }
-    EPHYR_LOG("Req {type:%d, data:%d, length:%d}\n",
-              in_req->reqType, in_req->data, in_req->length);
-    GetXReq(forward_req);
-    memmove(forward_req, in_req, 4);
-
-    if (!_XReply(dpy, (xReply *) &reply, 0, FALSE)) {
-        EPHYR_LOG_ERROR("failed to get reply\n");
-        goto out;
-    }
-    EPHYR_LOG("XReply{type:%d, foo:%d, seqnum:%d, length:%d}\n",
-              reply.type, reply.foo, reply.sequence_number, reply.length);
-
-    if (a_reply) {
-        memmove(a_reply, &reply, sizeof(reply));
-    }
-    is_ok = TRUE;
-
- out:
-    EPHYR_LOG("leave\n");
-    return is_ok;
-}
diff --git a/hw/kdrive/ephyr/ephyrhostproxy.h b/hw/kdrive/ephyr/ephyrhostproxy.h
deleted file mode 100644
index 1372160..0000000
--- a/hw/kdrive/ephyr/ephyrhostproxy.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Xephyr - A kdrive X server thats runs in a host X window.
- *          Authored by Matthew Allum <mallum at openedhand.com>
- * 
- * Copyright © 2007 OpenedHand Ltd 
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of OpenedHand Ltd not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. OpenedHand Ltd makes no
- * representations about the suitability of this software for any purpose.  It
- * is provided "as is" without express or implied warranty.
- *
- * OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL 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
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors:
- *    Dodji Seketeli <dodji at openedhand.com>
- */
-
-#ifndef __EPHYRHOSTPROXY_H__
-#define __EPHYRHOSTPROXY_H__
-
-struct XReply {
-    int8_t type;                /*X_Reply */
-    int8_t foo;
-    int16_t sequence_number;
-    int32_t length;
-    /*following is some data up to 32 bytes lenght */
-    int32_t pad0;
-    int32_t pad1;
-    int32_t pad2;
-    int32_t pad3;
-    int32_t pad4;
-    int32_t pad5;
-};
-
-Bool
-
-ephyrHostProxyDoForward(pointer a_request_buffer,
-                        struct XReply *a_reply, Bool a_do_swap);
-
-#endif /*__EPHYRHOSTPROXY_H__*/
diff --git a/hw/kdrive/ephyr/ephyrproxyext.c b/hw/kdrive/ephyr/ephyrproxyext.c
deleted file mode 100644
index c24238c..0000000
--- a/hw/kdrive/ephyr/ephyrproxyext.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Xephyr - A kdrive X server thats runs in a host X window.
- *          Authored by Matthew Allum <mallum at openedhand.com>
- * 
- * Copyright © 2007 OpenedHand Ltd 
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of OpenedHand Ltd not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. OpenedHand Ltd makes no
- * representations about the suitability of this software for any purpose.  It
- * is provided "as is" without express or implied warranty.
- *
- * OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL 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
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors:
- *    Dodji Seketeli <dodji at openedhand.com>
- */
-
-/*
- * \file
- * This file defines a proxy extension that forwards requests.
- * When a request to extension FOO is sent to Xephyr, that request is forwared
- * to the host X, without even trying to know what the request means.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <kdrive-config.h>
-#endif
-
-#include "misc.h"
-#include "dixstruct.h"
-#include "extnsionst.h"
-#include "ephyrproxyext.h"
-#define _HAVE_XALLOC_DECLS
-#include "ephyrlog.h"
-#include "ephyrhostproxy.h"
-#include "hostx.h"
-
-static Bool ephyrProxyGetHostExtensionInfo(const char *a_ext_name,
-                                           int *a_major_opcode,
-                                           int *a_first_event,
-                                           int *a_first_error);
-
-static int ephyrProxyProcDispatch(ClientPtr client);
-
-static Bool
-ephyrProxyGetHostExtensionInfo(const char *a_ext_name,
-                               int *a_major_opcode,
-                               int *a_first_event, int *a_first_error)
-{
-    return hostx_get_extension_info(a_ext_name, a_major_opcode,
-                                    a_first_event, a_first_error);
-}
-
-static int
-ephyrProxyProcDispatch(ClientPtr a_client)
-{
-    int res = BadImplementation;
-    struct XReply reply;
-
-    if (!ephyrHostProxyDoForward(a_client->requestBuffer, &reply, FALSE)) {
-        EPHYR_LOG_ERROR("forwarding failed\n");
-        goto out;
-    }
-    reply.sequence_number = a_client->sequence;
-    res = Success;
-
-    WriteToClient(a_client, 32, &reply);
-
- out:
-    return res;
-}
-
-static void
-ephyrProxyProcReset(ExtensionEntry * a_entry)
-{
-}
-
-Bool
-ephyrProxyExtensionInit(const char *a_extension_name)
-{
-    Bool is_ok = FALSE;
-    int major_opcode = 0, first_event = 0, first_error = 0;
-    ExtensionEntry *ext = NULL;
-
-    if (!ephyrProxyGetHostExtensionInfo(a_extension_name,
-                                        &major_opcode,
-                                        &first_event, &first_error)) {
-        EPHYR_LOG("failed to query extension %s from host\n", a_extension_name);
-        goto out;
-    }
-    ext = AddExtension((char *) a_extension_name, 0, 0,
-                       ephyrProxyProcDispatch,
-                       ephyrProxyProcDispatch,
-                       ephyrProxyProcReset, StandardMinorOpcode);
-    if (!ext) {
-        EPHYR_LOG_ERROR("failed to add the extension\n");
-        goto out;
-    }
-    is_ok = TRUE;
-
- out:
-    EPHYR_LOG("leave\n");
-    return is_ok;
-}
diff --git a/hw/kdrive/ephyr/ephyrproxyext.h b/hw/kdrive/ephyr/ephyrproxyext.h
deleted file mode 100644
index 018b69b..0000000
--- a/hw/kdrive/ephyr/ephyrproxyext.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Xephyr - A kdrive X server thats runs in a host X window.
- *          Authored by Matthew Allum <mallum at openedhand.com>
- * 
- * Copyright © 2007 OpenedHand Ltd 
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of OpenedHand Ltd not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. OpenedHand Ltd makes no
- * representations about the suitability of this software for any purpose.  It
- * is provided "as is" without express or implied warranty.
- *
- * OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL 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
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors:
- *    Dodji Seketeli <dodji at openedhand.com>
- */
-#ifndef __EPHYRPROXYEXT_H__
-#define __EPHYRPROXYEXT_H__
-
-Bool ephyrProxyExtensionInit(const char *a_extension_name);
-
-#endif /*__EPHYRPROXYEXT_H__*/
commit a71ea3f96769da157dde82a591e43264820772ac
Author: Julien Cristau <jcristau at debian.org>
Date:   Sun Jun 20 23:34:54 2010 +0100

    Xephyr: xcb-ify visual list construction
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 2ebf978..2b69b0e 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -1175,43 +1175,50 @@ hostx_get_extension_info(const char *a_ext_name,
 int
 hostx_get_visuals_info(EphyrHostVisualInfo ** a_visuals, int *a_num_entries)
 {
-    Display *dpy = hostx_get_display();
     Bool is_ok = False;
-    XVisualInfo templ, *visuals = NULL;
     EphyrHostVisualInfo *host_visuals = NULL;
-    int nb_items = 0, i = 0;
+    int nb_items = 0, i = 0, screen_num;
+    xcb_screen_iterator_t screens;
+    xcb_depth_iterator_t depths;
 
-    EPHYR_RETURN_VAL_IF_FAIL(a_visuals && a_num_entries && dpy, False);
+    EPHYR_RETURN_VAL_IF_FAIL(a_visuals && a_num_entries, False);
     EPHYR_LOG("enter\n");
-    memset(&templ, 0, sizeof(templ));
-    visuals = XGetVisualInfo(dpy, VisualNoMask, &templ, &nb_items);
-    if (!visuals) {
-        EPHYR_LOG_ERROR("host does not advertise any visual\n");
-        goto out;
+
+    screens = xcb_setup_roots_iterator(xcb_get_setup(HostX.conn));
+    for (screen_num = 0; screens.rem; screen_num++, xcb_screen_next(&screens)) {
+        depths = xcb_screen_allowed_depths_iterator(screens.data);
+        for (; depths.rem; xcb_depth_next(&depths)) {
+            xcb_visualtype_t *visuals = xcb_depth_visuals(depths.data);
+            EphyrHostVisualInfo *tmp_visuals =
+                realloc(host_visuals,
+                        (nb_items + depths.data->visuals_len)
+                        * sizeof(EphyrHostVisualInfo));
+            if (!tmp_visuals) {
+                goto out;
+            }
+            host_visuals = tmp_visuals;
+            for (i = 0; i < depths.data->visuals_len; i++) {
+                host_visuals[nb_items + i].visualid = visuals[i].visual_id;
+                host_visuals[nb_items + i].screen = screen_num;
+                host_visuals[nb_items + i].depth = depths.data->depth;
+                host_visuals[nb_items + i].class = visuals[i]._class;
+                host_visuals[nb_items + i].red_mask = visuals[i].red_mask;
+                host_visuals[nb_items + i].green_mask = visuals[i].green_mask;
+                host_visuals[nb_items + i].blue_mask = visuals[i].blue_mask;
+                host_visuals[nb_items + i].colormap_size = visuals[i].colormap_entries;
+                host_visuals[nb_items + i].bits_per_rgb = visuals[i].bits_per_rgb_value;
+            }
+            nb_items += depths.data->visuals_len;
+        }
     }
+
     EPHYR_LOG("host advertises %d visuals\n", nb_items);
-    host_visuals = calloc(nb_items, sizeof(EphyrHostVisualInfo));
-    for (i = 0; i < nb_items; i++) {
-        host_visuals[i].visualid = visuals[i].visualid;
-        host_visuals[i].screen = visuals[i].screen;
-        host_visuals[i].depth = visuals[i].depth;
-        host_visuals[i].class = visuals[i].class;
-        host_visuals[i].red_mask = visuals[i].red_mask;
-        host_visuals[i].green_mask = visuals[i].green_mask;
-        host_visuals[i].blue_mask = visuals[i].blue_mask;
-        host_visuals[i].colormap_size = visuals[i].colormap_size;
-        host_visuals[i].bits_per_rgb = visuals[i].bits_per_rgb;
-    }
     *a_visuals = host_visuals;
     *a_num_entries = nb_items;
     host_visuals = NULL;
 
     is_ok = TRUE;
- out:
-    if (visuals) {
-        XFree(visuals);
-        visuals = NULL;
-    }
+out:
     free(host_visuals);
     host_visuals = NULL;
     EPHYR_LOG("leave\n");
commit ac2b0348c00d692ec1bd8d6c8ab99e9198e755a7
Author: Julien Cristau <jcristau at debian.org>
Date:   Sun Jun 20 23:34:39 2010 +0100

    Xephyr: xcb-ify pointer/keyboard grab
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 699805b..2ebf978 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -1016,30 +1016,49 @@ hostx_get_event(EphyrHostXEvent * ev)
                     host_screen_from_window(xev.xexpose.window);
 
                 if (grabbed_screen != -1) {
-                    XUngrabKeyboard(HostX.dpy, CurrentTime);
-                    XUngrabPointer(HostX.dpy, CurrentTime);
+                    xcb_ungrab_keyboard(HostX.conn, XCB_TIME_CURRENT_TIME);
+                    xcb_ungrab_pointer(HostX.conn, XCB_TIME_CURRENT_TIME);
                     grabbed_screen = -1;
                     hostx_set_win_title(host_screen->info,
                                         "(ctrl+shift grabs mouse and keyboard)");
                 }
                 else {
                     /* Attempt grab */
-                    if (XGrabKeyboard(HostX.dpy, host_screen->win, True,
-                                      GrabModeAsync,
-                                      GrabModeAsync, CurrentTime) == 0) {
-                        if (XGrabPointer(HostX.dpy, host_screen->win, True,
-                                         NoEventMask,
-                                         GrabModeAsync,
-                                         GrabModeAsync,
-                                         host_screen->win, None,
-                                         CurrentTime) == 0) {
+                    xcb_grab_keyboard_cookie_t kbgrabc =
+                        xcb_grab_keyboard(HostX.conn,
+                                          True,
+                                          host_screen->win,
+                                          XCB_TIME_CURRENT_TIME,
+                                          XCB_GRAB_MODE_ASYNC,
+                                          XCB_GRAB_MODE_ASYNC);
+                    xcb_grab_keyboard_reply_t *kbgrabr;
+                    xcb_grab_pointer_cookie_t pgrabc =
+                        xcb_grab_pointer(HostX.conn,
+                                         True,
+                                         host_screen->win,
+                                         0,
+                                         XCB_GRAB_MODE_ASYNC,
+                                         XCB_GRAB_MODE_ASYNC,
+                                         host_screen->win,
+                                         XCB_NONE,
+                                         XCB_TIME_CURRENT_TIME);
+                    xcb_grab_pointer_reply_t *pgrabr;
+                    kbgrabr = xcb_grab_keyboard_reply(HostX.conn, kbgrabc, NULL);
+                    if (!kbgrabr || kbgrabr->status != XCB_GRAB_STATUS_SUCCESS) {
+                        xcb_discard_reply(HostX.conn, pgrabc.sequence);
+                        xcb_ungrab_pointer(HostX.conn, XCB_TIME_CURRENT_TIME);
+                    } else {
+                        pgrabr = xcb_grab_pointer_reply(HostX.conn, pgrabc, NULL);
+                        if (!pgrabr || pgrabr->status != XCB_GRAB_STATUS_SUCCESS)
+                            {
+                                xcb_ungrab_keyboard(HostX.conn,
+                                                    XCB_TIME_CURRENT_TIME);
+                            } else {
                             grabbed_screen = host_screen->mynum;
                             hostx_set_win_title
                                 (host_screen->info,
                                  "(ctrl+shift releases mouse and keyboard)");
                         }
-                        else    /* Failed pointer grabm  ungrab keyboard */
-                            XUngrabKeyboard(HostX.dpy, CurrentTime);
                     }
                 }
             }
commit 1f93e6b350d1b9a058009052a666a2e8796708cb
Author: Julien Cristau <jcristau at debian.org>
Date:   Sun Jun 20 23:34:03 2010 +0100

    Xephyr: no need for XDisplayKeycodes
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index f4948b9..699805b 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -910,7 +910,8 @@ hostx_load_keymap(void)
 {
     int min_keycode, max_keycode;
 
-    XDisplayKeycodes(HostX.dpy, &min_keycode, &max_keycode);
+    min_keycode = xcb_get_setup(HostX.conn)->min_keycode;
+    max_keycode = xcb_get_setup(HostX.conn)->max_keycode;
 
     EPHYR_DBG("min: %d, max: %d", min_keycode, max_keycode);
 
commit 73398e5bf61c30e69a40a19a1057c2263fbb91ef
Author: Julien Cristau <jcristau at debian.org>
Date:   Thu Jun 24 23:00:38 2010 +0100

    Xephyr: use xcb-shape instead of XShape*
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Signed-off-by: Julien Cristau <jcristau at debian.org>

diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 2ecda14..f4948b9 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -54,7 +54,6 @@
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include <X11/keysym.h>
-#include <X11/extensions/shape.h>
 #include <xcb/xcb.h>
 #include <xcb/xproto.h>
 #include <X11/Xlib-xcb.h>
@@ -1300,15 +1299,16 @@ hostx_set_window_bounding_rectangles(int a_window,
                                      EphyrRect * a_rects, int a_num_rects)
 {
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
     int i = 0;
-    XRectangle *rects = NULL;
+    xcb_rectangle_t *rects = NULL;
 
-    EPHYR_RETURN_VAL_IF_FAIL(dpy && a_rects, FALSE);
+    EPHYR_RETURN_VAL_IF_FAIL(a_rects, FALSE);
 
     EPHYR_LOG("enter. num rects:%d\n", a_num_rects);
 
-    rects = calloc(a_num_rects, sizeof(XRectangle));
+    rects = calloc(a_num_rects, sizeof (xcb_rectangle_t));
+    if (!rects)
+        goto out;
     for (i = 0; i < a_num_rects; i++) {
         rects[i].x = a_rects[i].x1;
         rects[i].y = a_rects[i].y1;
@@ -1317,11 +1317,17 @@ hostx_set_window_bounding_rectangles(int a_window,
         EPHYR_LOG("borders clipped to rect[x:%d,y:%d,w:%d,h:%d]\n",
                   rects[i].x, rects[i].y, rects[i].width, rects[i].height);
     }
-    /*this aways returns 1 */
-    XShapeCombineRectangles(dpy, a_window, ShapeBounding, 0, 0,
-                            rects, a_num_rects, ShapeSet, YXBanded);
+    xcb_shape_rectangles(HostX.conn,
+                         XCB_SHAPE_SO_SET,
+                         XCB_SHAPE_SK_BOUNDING,
+                         XCB_CLIP_ORDERING_YX_BANDED,
+                         a_window,
+                         0, 0,
+                         a_num_rects,
+                         rects);
     is_ok = TRUE;
 
+out:
     free(rects);
     rects = NULL;
     EPHYR_LOG("leave\n");
@@ -1335,13 +1341,15 @@ hostx_set_window_clipping_rectangles(int a_window,
     Bool is_ok = FALSE;
     Display *dpy = hostx_get_display();
     int i = 0;
-    XRectangle *rects = NULL;
+    xcb_rectangle_t *rects = NULL;
 
     EPHYR_RETURN_VAL_IF_FAIL(dpy && a_rects, FALSE);
 
     EPHYR_LOG("enter. num rects:%d\n", a_num_rects);
 
-    rects = calloc(a_num_rects, sizeof(XRectangle));
+    rects = calloc(a_num_rects, sizeof (xcb_rectangle_t));
+    if (!rects)
+        goto out;
     for (i = 0; i < a_num_rects; i++) {
         rects[i].x = a_rects[i].x1;
         rects[i].y = a_rects[i].y1;
@@ -1350,11 +1358,17 @@ hostx_set_window_clipping_rectangles(int a_window,
         EPHYR_LOG("clipped to rect[x:%d,y:%d,w:%d,h:%d]\n",
                   rects[i].x, rects[i].y, rects[i].width, rects[i].height);
     }
-    /*this aways returns 1 */
-    XShapeCombineRectangles(dpy, a_window, ShapeClip, 0, 0,
-                            rects, a_num_rects, ShapeSet, YXBanded);
+    xcb_shape_rectangles(HostX.conn,
+                         XCB_SHAPE_SO_SET,
+                         XCB_SHAPE_SK_CLIP,
+                         XCB_CLIP_ORDERING_YX_BANDED,
+                         a_window,
+                         0, 0,
+                         a_num_rects,
+                         rects);
     is_ok = TRUE;
 
+out:
     free(rects);
     rects = NULL;
     EPHYR_LOG("leave\n");
commit a2b73da78de4e627965213d24a6c33f243a60eb6
Author: Julien Cristau <jcristau at debian.org>
Date:   Sun Jun 20 00:05:40 2010 +0100

    Xephyr: start converting hostx.c over to xcb
    
    v2: Dropped the hostx_load_keymap changes, now that that function is
        gutted (anholt).
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net> (v1)
    Signed-off-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/configure.ac b/configure.ac
index d27ca23..2c9585d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2116,12 +2116,12 @@ if test "$KDRIVE" = yes; then
        AC_DEFINE(KDRIVE_MOUSE, 1, [Enable KDrive mouse driver])
     fi
 
-    XEPHYR_REQUIRED_LIBS="x11 >= 1.6 $LIBXEXT xau xdmcp"
+    XEPHYR_REQUIRED_LIBS="x11 >= 1.6 $LIBXEXT xau xdmcp xcb x11-xcb xcb-shape xcb-aux xcb-image xcb-icccm xcb-shm"
     if test "x$XV" = xyes; then
         XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xv"
     fi
     if test "x$DRI" = xyes && test "x$GLX" = xyes; then
-        XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBGL libdrm"
+        XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBGL libdrm xcb-glx xcb-xf86dri"
     fi
 
     if test "x$XEPHYR" = xauto; then
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index f46770f..2ecda14 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -53,20 +53,22 @@
 
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
-#include <X11/Xatom.h>
 #include <X11/keysym.h>
-#include <X11/extensions/XShm.h>
 #include <X11/extensions/shape.h>
+#include <xcb/xcb.h>
+#include <xcb/xproto.h>
+#include <X11/Xlib-xcb.h>
+#include <xcb/xcb_icccm.h>
+#include <xcb/xcb_aux.h>
+#include <xcb/shm.h>
+#include <xcb/xcb_image.h>
+#include <xcb/shape.h>
 #ifdef XF86DRI
-#include <GL/glx.h>
-#endif                          /* XF86DRI */
+#include <xcb/xf86dri.h>
+#include <xcb/glx.h>
+#endif /* XF86DRI */
 #include "ephyrlog.h"
 
-#ifdef XF86DRI
-extern Bool XF86DRIQueryExtension(Display * dpy,
-                                  int *event_basep, int *error_basep);
-#endif
-
 /*  
  * All xlib calls go here, which gets built as its own .a .
  * Mixing kdrive and xlib headers causes all sorts of types
@@ -77,11 +79,11 @@ struct EphyrHostScreen {
     Window win;
     Window win_pre_existing;    /* Set via -parent option like xnest */
     Window peer_win;            /* Used for GL; should be at most one */
-    XImage *ximg;
+    xcb_image_t    *ximg;
     int win_width, win_height;
     int server_depth;
     unsigned char *fb_data;     /* only used when host bpp != server bpp */
-    XShmSegmentInfo shminfo;
+    xcb_shm_segment_info_t shminfo;
 
     void *info;                 /* Pointer to the screen this is associated with */
     int mynum;                  /* Screen number */
@@ -90,10 +92,11 @@ struct EphyrHostScreen {
 struct EphyrHostXVars {
     char *server_dpy_name;
     Display *dpy;
+    xcb_connection_t *conn;
     int screen;
     Visual *visual;
     Window winroot;
-    GC gc;
+    xcb_gcontext_t  gc;
     int depth;
     Bool use_host_cursor;
     Bool use_fullscreen;
@@ -126,11 +129,6 @@ char *ephyrTitle = NULL;
 static void
  hostx_set_fullscreen_hint(void);
 
-/* X Error traps */
-
-static int trapped_error_code = 0;
-static int (*old_error_handler) (Display * d, XErrorEvent * e);
-
 #define host_depth_matches_server(_vars) (HostX.depth == (_vars)->server_depth)
 
 static struct EphyrHostScreen *
@@ -146,27 +144,6 @@ host_screen_from_screen_info(EphyrScreenInfo * screen)
     return NULL;
 }
 
-static int
-error_handler(Display * display, XErrorEvent * error)
-{
-    trapped_error_code = error->error_code;
-    return 0;
-}
-
-static void
-hostx_errors_trap(void)
-{
-    trapped_error_code = 0;
-    old_error_handler = XSetErrorHandler(error_handler);
-}
-
-static int
-hostx_errors_untrap(void)
-{
-    XSetErrorHandler(old_error_handler);
-    return trapped_error_code;
-}
-
 int
 hostx_want_screen_size(EphyrScreenInfo screen, int *width, int *height)
 {
@@ -223,9 +200,13 @@ hostx_set_win_title(EphyrScreenInfo screen, const char *extra_text)
         return;
 
     if (ephyrTitle) {
-        XStoreName(HostX.dpy, host_screen->win, ephyrTitle);
-    }
-    else {
+        xcb_icccm_set_wm_name(HostX.conn,
+                              host_screen->win,
+                              XCB_ATOM_STRING,
+                              8,
+                              strlen(ephyrTitle),
+                              ephyrTitle);
+    } else {
 #define BUF_LEN 256
         char buf[BUF_LEN + 1];
 
@@ -234,7 +215,12 @@ hostx_set_win_title(EphyrScreenInfo screen, const char *extra_text)
                  HostX.server_dpy_name,
                  host_screen->mynum, (extra_text != NULL) ? extra_text : "");
 
-        XStoreName(HostX.dpy, host_screen->win, buf);
+        xcb_icccm_set_wm_name(HostX.conn,
+                              host_screen->win,
+                              XCB_ATOM_STRING,
+                              8,
+                              strlen(buf),
+                              buf);
     }
 }
 
@@ -275,21 +261,34 @@ hostx_want_fullscreen(void)
     return HostX.use_fullscreen;
 }
 
+static xcb_intern_atom_cookie_t cookie_WINDOW_STATE,
+				cookie_WINDOW_STATE_FULLSCREEN;
+
 static void
 hostx_set_fullscreen_hint(void)
 {
-    Atom atom_WINDOW_STATE, atom_WINDOW_STATE_FULLSCREEN;
+    xcb_atom_t atom_WINDOW_STATE, atom_WINDOW_STATE_FULLSCREEN;
     int index;
+    xcb_intern_atom_reply_t *reply;
+
+    reply = xcb_intern_atom_reply(HostX.conn, cookie_WINDOW_STATE, NULL);
+    atom_WINDOW_STATE = reply->atom;
+    free(reply);
 
-    atom_WINDOW_STATE = XInternAtom(HostX.dpy, "_NET_WM_STATE", False);
-    atom_WINDOW_STATE_FULLSCREEN
-        = XInternAtom(HostX.dpy, "_NET_WM_STATE_FULLSCREEN", False);
+    reply = xcb_intern_atom_reply(HostX.conn, cookie_WINDOW_STATE_FULLSCREEN,
+                                  NULL);
+    atom_WINDOW_STATE_FULLSCREEN = reply->atom;
+    free(reply);
 
     for (index = 0; index < HostX.n_screens; index++) {
-        XChangeProperty(HostX.dpy, HostX.screens[index].win,
-                        atom_WINDOW_STATE, XA_ATOM, 32,
-                        PropModeReplace,
-                        (unsigned char *) &atom_WINDOW_STATE_FULLSCREEN, 1);
+        xcb_change_property(HostX.conn,
+                            PropModeReplace,
+                            HostX.screens[index].win,
+                            atom_WINDOW_STATE,
+                            XCB_ATOM_ATOM,
+                            32,
+                            1,
+                            &atom_WINDOW_STATE_FULLSCREEN);
     }
 }
 
@@ -336,22 +335,26 @@ x_io_error_handler(Display * dpy)
 int
 hostx_init(void)
 {
-    XSetWindowAttributes attr;
-    Cursor empty_cursor;
-    Pixmap cursor_pxm;
-    XColor col;
+    uint32_t attr;
+    xcb_cursor_t empty_cursor;
+    xcb_pixmap_t cursor_pxm;
+    uint16_t red, green, blue;
+    uint32_t pixel;
     int index;
     char *tmpstr;
-    XClassHint *class_hint;
-
-    attr.event_mask =
-        ButtonPressMask
-        | ButtonReleaseMask
-        | PointerMotionMask
-        | KeyPressMask
-        | KeyReleaseMask
-        | ExposureMask
-        | StructureNotifyMask;
+    char *class_hint;
+    size_t class_len;
+    const xcb_query_extension_reply_t *shm_rep;
+    xcb_screen_t *screen;
+
+    attr =
+        XCB_EVENT_MASK_BUTTON_PRESS
+        | XCB_EVENT_MASK_BUTTON_RELEASE
+        | XCB_EVENT_MASK_POINTER_MOTION
+        | XCB_EVENT_MASK_KEY_PRESS
+        | XCB_EVENT_MASK_KEY_RELEASE
+        | XCB_EVENT_MASK_EXPOSURE
+        | XCB_EVENT_MASK_STRUCTURE_NOTIFY;
 
     EPHYR_DBG("mark");
 
@@ -362,137 +365,190 @@ hostx_init(void)
 
     XSetIOErrorHandler(x_io_error_handler);
 
+    HostX.conn = XGetXCBConnection(HostX.dpy);
     HostX.screen = DefaultScreen(HostX.dpy);
+    screen = xcb_aux_get_screen(HostX.conn, HostX.screen);
     HostX.winroot = RootWindow(HostX.dpy, HostX.screen);
-    HostX.gc = XCreateGC(HostX.dpy, HostX.winroot, 0, NULL);
+    HostX.gc = xcb_generate_id(HostX.conn);
     HostX.depth = DefaultDepth(HostX.dpy, HostX.screen);
     HostX.visual = DefaultVisual(HostX.dpy, HostX.screen);
 
-    class_hint = XAllocClassHint();
+    xcb_create_gc(HostX.conn, HostX.gc, HostX.winroot, 0, NULL);
+    cookie_WINDOW_STATE = xcb_intern_atom(HostX.conn, False,
+                                          strlen("_NET_WM_STATE"),
+                                          "_NET_WM_STATE");
+    cookie_WINDOW_STATE_FULLSCREEN =
+        xcb_intern_atom(HostX.conn, False,
+                        strlen("_NET_WM_STATE_FULLSCREEN"),
+                        "_NET_WM_STATE_FULLSCREEN");
 
     for (index = 0; index < HostX.n_screens; index++) {
         struct EphyrHostScreen *host_screen = &HostX.screens[index];
 
+        host_screen->win = xcb_generate_id(HostX.conn);
         host_screen->server_depth = HostX.depth;
-        if (host_screen->win_pre_existing != None) {
-            Status result;
-            XWindowAttributes prewin_attr;
-
-            /* Get screen size from existing window */
-
-            hostx_errors_trap();
 
-            result = XGetWindowAttributes(HostX.dpy,
-                                          host_screen->win_pre_existing,
-                                          &prewin_attr);
+        if (host_screen->win_pre_existing != XCB_WINDOW_NONE) {
+            xcb_get_geometry_reply_t *prewin_geom;
+            xcb_get_geometry_cookie_t cookie;
+            xcb_generic_error_t *e = NULL;
 
-            if (hostx_errors_untrap() || !result) {
-                fprintf(stderr, "\nXephyr -parent window' does not exist!\n");
-                exit(1);
+            /* Get screen size from existing window */
+            cookie = xcb_get_geometry(HostX.conn,
+                                      host_screen->win_pre_existing);
+            prewin_geom = xcb_get_geometry_reply(HostX.conn, cookie, &e);
+
+            if (e) {
+                free(e);
+                free(prewin_geom);
+                fprintf (stderr, "\nXephyr -parent window' does not exist!\n");
+                exit (1);
             }
 
-            host_screen->win_width = prewin_attr.width;
-            host_screen->win_height = prewin_attr.height;
-
-            host_screen->win = XCreateWindow(HostX.dpy,
-                                             host_screen->win_pre_existing,
-                                             0, 0,
-                                             host_screen->win_width,
-                                             host_screen->win_height,
-                                             0,
-                                             CopyFromParent,
-                                             CopyFromParent,
-                                             CopyFromParent,
-                                             CWEventMask, &attr);
+            host_screen->win_width  = prewin_geom->width;
+            host_screen->win_height = prewin_geom->height;
+
+            free(prewin_geom);
+
+            xcb_create_window(HostX.conn,
+                              XCB_COPY_FROM_PARENT,
+                              host_screen->win,
+                              host_screen->win_pre_existing,
+                              0,0,
+                              host_screen->win_width,
+                              host_screen->win_height,
+                              0,
+                              XCB_WINDOW_CLASS_COPY_FROM_PARENT,
+                              XCB_COPY_FROM_PARENT,
+                              XCB_CW_EVENT_MASK,
+                              &attr);
         }
         else {
-            host_screen->win = XCreateWindow(HostX.dpy, HostX.winroot, 0, 0, 100, 100,  /* will resize */
-                                             0,
-                                             CopyFromParent,
-                                             CopyFromParent,
-                                             CopyFromParent,
-                                             CWEventMask, &attr);
-
-            hostx_set_win_title(host_screen->info,
-                                "(ctrl+shift grabs mouse and keyboard)");
+            xcb_create_window(HostX.conn,
+                              XCB_COPY_FROM_PARENT,
+                              host_screen->win,
+                              HostX.winroot,
+                              0,0,100,100, /* will resize */
+                              0,
+                              XCB_WINDOW_CLASS_COPY_FROM_PARENT,
+                              XCB_COPY_FROM_PARENT,
+                              XCB_CW_EVENT_MASK,
+                              &attr);
+
+            hostx_set_win_title (host_screen->info,
+                                 "(ctrl+shift grabs mouse and keyboard)");
 
             if (HostX.use_fullscreen) {
-                host_screen->win_width = DisplayWidth(HostX.dpy, HostX.screen);
-                host_screen->win_height =
-                    DisplayHeight(HostX.dpy, HostX.screen);
+                host_screen->win_width  = DisplayWidth(HostX.dpy, HostX.screen);
+                host_screen->win_height = DisplayHeight(HostX.dpy, HostX.screen);
 
                 hostx_set_fullscreen_hint();
             }
 
+            tmpstr = getenv("RESOURCE_NAME");
+            if (tmpstr && (!ephyrResNameFromCmd))
+                ephyrResName = tmpstr;
+            class_len = strlen(ephyrResName) + 1 + strlen("Xephyr") + 1;
+            class_hint = malloc(class_len);
             if (class_hint) {
-                tmpstr = getenv("RESOURCE_NAME");
-                if (tmpstr && (!ephyrResNameFromCmd))
-                    ephyrResName = tmpstr;
-                class_hint->res_name = ephyrResName;
-                class_hint->res_class = "Xephyr";
-                XSetClassHint(hostx_get_display(), host_screen->win,
-                              class_hint);
-
+                strcpy(class_hint, ephyrResName);
+                strcpy(class_hint + strlen(ephyrResName) + 1, "Xephyr");
+                xcb_change_property(HostX.conn,
+                                    XCB_PROP_MODE_REPLACE,
+                                    host_screen->win,
+                                    XCB_ATOM_WM_CLASS,
+                                    XCB_ATOM_STRING,
+                                    8,
+                                    class_len,
+                                    class_hint);
+                free(class_hint);
             }
-
         }
     }
 
-    if (class_hint)
-        XFree(class_hint);
+    if (!xcb_aux_parse_color("red", &red, &green, &blue)) {
+        xcb_lookup_color_cookie_t c =
+            xcb_lookup_color(HostX.conn, screen->default_colormap, 3, "red");
+        xcb_lookup_color_reply_t *reply =
+            xcb_lookup_color_reply(HostX.conn, c, NULL);
+        red = reply->exact_red;
+        green = reply->exact_green;
+        blue = reply->exact_blue;
+        free(reply);
+    }
 
-    XParseColor(HostX.dpy, DefaultColormap(HostX.dpy, HostX.screen),
-                "red", &col);
-    XAllocColor(HostX.dpy, DefaultColormap(HostX.dpy, HostX.screen), &col);
-    XSetForeground(HostX.dpy, HostX.gc, col.pixel);
+    {
+        xcb_alloc_color_cookie_t c = xcb_alloc_color(HostX.conn,
+                                                     screen->default_colormap,
+                                                     red, green, blue);
+        xcb_alloc_color_reply_t *r = xcb_alloc_color_reply(HostX.conn, c, NULL);
+        red = r->red;
+        green = r->green;
+        blue = r->blue;
+        pixel = r->pixel;
+        free(r);
+    }
+
+    xcb_change_gc(HostX.conn, HostX.gc, XCB_GC_FOREGROUND, &pixel);
 
-    if (!hostx_want_host_cursor()) {
+    if (!hostx_want_host_cursor ()) {
         /* Ditch the cursor, we provide our 'own' */
-        cursor_pxm = XCreatePixmap(HostX.dpy, HostX.winroot, 1, 1, 1);
-        memset(&col, 0, sizeof(col));
-        empty_cursor = XCreatePixmapCursor(HostX.dpy,
-                                           cursor_pxm, cursor_pxm,
-                                           &col, &col, 1, 1);
+        cursor_pxm = xcb_generate_id(HostX.conn);
+        xcb_create_pixmap(HostX.conn, 1, cursor_pxm, HostX.winroot, 1, 1);
+        empty_cursor = xcb_generate_id(HostX.conn);
+        xcb_create_cursor(HostX.conn,
+                          empty_cursor,
+                          cursor_pxm, cursor_pxm,
+                          0,0,0,
+                          0,0,0,
+                          1,1);
         for (index = 0; index < HostX.n_screens; index++) {
-            XDefineCursor(HostX.dpy, HostX.screens[index].win, empty_cursor);
+            xcb_change_window_attributes(HostX.conn,
+                                         HostX.screens[index].win,
+                                         XCB_CW_CURSOR,
+                                         &empty_cursor);
         }
-        XFreePixmap(HostX.dpy, cursor_pxm);
+        xcb_free_pixmap(HostX.conn, cursor_pxm);
     }
 
     for (index = 0; index < HostX.n_screens; index++) {
         HostX.screens[index].ximg = NULL;
     }
-    /* Try to get share memory ximages for a little bit more speed */
 
-    if (!XShmQueryExtension(HostX.dpy) || getenv("XEPHYR_NO_SHM")) {
+    /* Try to get share memory ximages for a little bit more speed */
+    shm_rep = xcb_get_extension_data(HostX.conn, &xcb_shm_id);
+    if (!shm_rep || !shm_rep->present || getenv("XEPHYR_NO_SHM")) {
         fprintf(stderr, "\nXephyr unable to use SHM XImages\n");
         HostX.have_shm = False;
     }
     else {
-        /* Really really check we have shm - better way ? */
-        XShmSegmentInfo shminfo;
+        /* Really really check we have shm - better way ?*/
+        xcb_shm_segment_info_t shminfo;
+        xcb_generic_error_t *e;
+        xcb_void_cookie_t cookie;
+        xcb_shm_seg_t shmseg;
 
         HostX.have_shm = True;
 
-        shminfo.shmid = shmget(IPC_PRIVATE, 1, IPC_CREAT | 0777);
-        shminfo.shmaddr = shmat(shminfo.shmid, 0, 0);
-        shminfo.readOnly = True;
+        shminfo.shmid = shmget(IPC_PRIVATE, 1, IPC_CREAT|0777);
+        shminfo.shmaddr = shmat(shminfo.shmid,0,0);
 
-        hostx_errors_trap();
+        shmseg = xcb_generate_id(HostX.conn);
+        cookie = xcb_shm_attach_checked(HostX.conn, shmseg, shminfo.shmid,
+                                        True);
+        e = xcb_request_check(HostX.conn, cookie);
 
-        XShmAttach(HostX.dpy, &shminfo);
-        XSync(HostX.dpy, False);
-
-        if (hostx_errors_untrap()) {
+        if (e) {
             fprintf(stderr, "\nXephyr unable to use SHM XImages\n");
             HostX.have_shm = False;
+            free(e);
         }
 
         shmdt(shminfo.shmaddr);
         shmctl(shminfo.shmid, IPC_RMID, 0);
     }
 
-    XFlush(HostX.dpy);
+    xcb_flush(HostX.conn);
 
     /* Setup the pause time between paints when debugging updates */
 
@@ -622,9 +678,7 @@ hostx_screen_init(EphyrScreenInfo screen,
                   int width, int height, int buffer_height,
                   int *bytes_per_line, int *bits_per_pixel)
 {
-    int bitmap_pad;
     Bool shm_success = False;
-    XSizeHints *size_hints;
 
     struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen);
 
@@ -642,8 +696,8 @@ hostx_screen_init(EphyrScreenInfo screen,
          */
 
         if (HostX.have_shm) {
-            XShmDetach(HostX.dpy, &host_screen->shminfo);
-            XDestroyImage(host_screen->ximg);
+            xcb_shm_detach(HostX.conn, host_screen->shminfo.shmseg);
+            xcb_image_destroy (host_screen->ximg);
             shmdt(host_screen->shminfo.shmaddr);
             shmctl(host_screen->shminfo.shmid, IPC_RMID, 0);
         }
@@ -651,70 +705,78 @@ hostx_screen_init(EphyrScreenInfo screen,
             free(host_screen->ximg->data);
             host_screen->ximg->data = NULL;
 
-            XDestroyImage(host_screen->ximg);
+            xcb_image_destroy(host_screen->ximg);
         }
     }
 
     if (HostX.have_shm) {
-        host_screen->ximg =
-            XShmCreateImage(HostX.dpy, HostX.visual, HostX.depth, ZPixmap, NULL,
-                            &host_screen->shminfo, width, buffer_height);
+        host_screen->ximg = xcb_image_create_native(HostX.conn,
+                                                    width,
+                                                    buffer_height,
+                                                    XCB_IMAGE_FORMAT_Z_PIXMAP,
+                                                    HostX.depth,
+                                                    NULL,
+                                                    ~0,
+                                                    NULL);
 
         host_screen->shminfo.shmid =
             shmget(IPC_PRIVATE,
-                   host_screen->ximg->bytes_per_line * buffer_height,
+                   host_screen->ximg->stride * buffer_height,
                    IPC_CREAT | 0777);
         host_screen->ximg->data = shmat(host_screen->shminfo.shmid, 0, 0);
         host_screen->shminfo.shmaddr = host_screen->ximg->data;
 
-        if (host_screen->ximg->data == (char *) -1) {
+        if (host_screen->ximg->data == (uint8_t *) -1) {
             EPHYR_DBG
                 ("Can't attach SHM Segment, falling back to plain XImages");
             HostX.have_shm = False;
-            XDestroyImage(host_screen->ximg);
+            xcb_image_destroy (host_screen->ximg);
             shmctl(host_screen->shminfo.shmid, IPC_RMID, 0);
         }
         else {
             EPHYR_DBG("SHM segment attached %p", host_screen->shminfo.shmaddr);
-            host_screen->shminfo.readOnly = False;
-            XShmAttach(HostX.dpy, &host_screen->shminfo);
+            host_screen->shminfo.shmseg = xcb_generate_id(HostX.conn);
+            xcb_shm_attach(HostX.conn,
+                           host_screen->shminfo.shmseg,
+                           host_screen->shminfo.shmid,
+                           False);
             shm_success = True;
         }
     }
 
     if (!shm_success) {
-        bitmap_pad = (HostX.depth > 16) ? 32 : ((HostX.depth > 8) ? 16 : 8);
-
         EPHYR_DBG("Creating image %dx%d for screen host_screen=%p\n",
                   width, buffer_height, host_screen);
-        host_screen->ximg = XCreateImage(HostX.dpy,
-                                         HostX.visual,
-                                         HostX.depth,
-                                         ZPixmap, 0, 0,
-                                         width, buffer_height, bitmap_pad, 0);
+        host_screen->ximg = xcb_image_create_native(HostX.conn,
+                                                    width,
+                                                    buffer_height,
+                                                    XCB_IMAGE_FORMAT_Z_PIXMAP,
+                                                    HostX.depth,
+                                                    NULL,
+                                                    ~0,
+                                                    NULL);
 
         host_screen->ximg->data =
-            malloc(host_screen->ximg->bytes_per_line * buffer_height);
+            malloc(host_screen->ximg->stride * buffer_height);
     }
 
-    *bytes_per_line = host_screen->ximg->bytes_per_line;
-    *bits_per_pixel = host_screen->ximg->bits_per_pixel;
-
-    XResizeWindow(HostX.dpy, host_screen->win, width, height);
+    *bytes_per_line = host_screen->ximg->stride;
+    *bits_per_pixel = host_screen->ximg->bpp;
 
-    /* Ask the WM to keep our size static */
     if (host_screen->win_pre_existing == None && !EphyrWantResize) {
-        size_hints = XAllocSizeHints();
-        size_hints->max_width = size_hints->min_width = width;
-        size_hints->max_height = size_hints->min_height = height;
-        size_hints->flags = PMinSize | PMaxSize;
-        XSetWMNormalHints(HostX.dpy, host_screen->win, size_hints);
-        XFree(size_hints);
+        /* Ask the WM to keep our size static */
+        xcb_size_hints_t size_hints = {0};
+        size_hints.max_width = size_hints.min_width = width;
+        size_hints.max_height = size_hints.min_height = height;
+        size_hints.flags = (XCB_ICCCM_SIZE_HINT_P_MIN_SIZE |
+                            XCB_ICCCM_SIZE_HINT_P_MAX_SIZE);
+        xcb_icccm_set_wm_normal_hints(HostX.conn, host_screen->win,
+                                      &size_hints);
     }
 
-    XMapWindow(HostX.dpy, host_screen->win);
+    xcb_map_window(HostX.conn, host_screen->win);
 
-    XSync(HostX.dpy, False);
+    xcb_aux_sync(HostX.conn);
 
     host_screen->win_width = width;
     host_screen->win_height = height;
@@ -787,14 +849,15 @@ hostx_paint_rect(EphyrScreenInfo screen,
 
                     host_pixel = (r << 16) | (g << 8) | (b);
 
-                    XPutPixel(host_screen->ximg, x, y, host_pixel);
+                    xcb_image_put_pixel(host_screen->ximg, x, y, host_pixel);
                     break;
                 }
                 case 8:
                 {
                     unsigned char pixel =
                         *(unsigned char *) (host_screen->fb_data + idx);
-                    XPutPixel(host_screen->ximg, x, y, HostX.cmap[pixel]);
+                    xcb_image_put_pixel(host_screen->ximg, x, y,
+                                        HostX.cmap[pixel]);
                     break;
                 }
                 default:
@@ -804,16 +867,17 @@ hostx_paint_rect(EphyrScreenInfo screen,
     }
 
     if (HostX.have_shm) {
-        XShmPutImage(HostX.dpy, host_screen->win,
-                     HostX.gc, host_screen->ximg,
-                     sx, sy, dx, dy, width, height, False);
+        xcb_image_shm_put(HostX.conn, host_screen->win,
+                          HostX.gc, host_screen->ximg,
+                          host_screen->shminfo,
+                          sx, sy, dx, dy, width, height, False);
     }
     else {
-        XPutImage(HostX.dpy, host_screen->win, HostX.gc, host_screen->ximg,
-                  sx, sy, dx, dy, width, height);
+        xcb_image_put(HostX.conn, host_screen->win, HostX.gc, host_screen->ximg,
+                      dx, dy, 0);
     }
 
-    XSync(HostX.dpy, False);
+    xcb_aux_sync(HostX.conn);
 }
 
 static void
@@ -821,6 +885,9 @@ hostx_paint_debug_rect(struct EphyrHostScreen *host_screen,
                        int x, int y, int width, int height)
 {
     struct timespec tspec;
+    xcb_rectangle_t rect = { .x = x, .y = y, .width = width, .height = height };
+    xcb_void_cookie_t cookie;
+    xcb_generic_error_t *e;
 
     tspec.tv_sec = HostX.damage_debug_msec / (1000000);
     tspec.tv_nsec = (HostX.damage_debug_msec % 1000000) * 1000;
@@ -830,8 +897,10 @@ hostx_paint_debug_rect(struct EphyrHostScreen *host_screen,
 
     /* fprintf(stderr, "Xephyr updating: %i+%i %ix%i\n", x, y, width, height); */
 
-    XFillRectangle(HostX.dpy, host_screen->win, HostX.gc, x, y, width, height);
-    XSync(HostX.dpy, False);
+    cookie = xcb_poly_fill_rectangle_checked(HostX.conn, host_screen->win,
+                                             HostX.gc, 1, &rect);
+    e = xcb_request_check(HostX.conn, cookie);
+    free(e);
 
     /* nanosleep seems to work better than usleep for me... */
     nanosleep(&tspec, NULL);
@@ -1023,6 +1092,18 @@ hostx_get_display(void)
     return HostX.dpy;
 }
 
+xcb_connection_t *
+hostx_get_xcbconn(void)
+{
+    return HostX.conn;
+}
+
+int
+hostx_get_screen(void)
+{
+    return DefaultScreen(HostX.dpy);
+}
+
 int
 hostx_get_window(int a_screen_number)
 {
@@ -1036,19 +1117,24 @@ hostx_get_window(int a_screen_number)
 int
 hostx_get_window_attributes(int a_window, EphyrHostWindowAttributes * a_attrs)
 {
-    XWindowAttributes attrs;
-
-    memset(&attrs, 0, sizeof(attrs));
-
-    if (!XGetWindowAttributes(hostx_get_display(), a_window, &attrs)) {
-        return FALSE;
-    }
-    a_attrs->x = attrs.x;
-    a_attrs->y = attrs.y;
-    a_attrs->width = attrs.width;
-    a_attrs->height = attrs.height;
-    if (attrs.visual)
-        a_attrs->visualid = attrs.visual->visualid;
+    xcb_get_geometry_cookie_t geom_cookie;
+    xcb_get_window_attributes_cookie_t attr_cookie;
+    xcb_get_geometry_reply_t *geom_reply;
+    xcb_get_window_attributes_reply_t *attr_reply;
+
+    geom_cookie = xcb_get_geometry(HostX.conn, a_window);
+    attr_cookie = xcb_get_window_attributes(HostX.conn, a_window);
+    geom_reply = xcb_get_geometry_reply(HostX.conn, geom_cookie, NULL);
+    attr_reply = xcb_get_window_attributes_reply(HostX.conn, attr_cookie, NULL);
+
+    a_attrs->x = geom_reply->x;
+    a_attrs->y = geom_reply->y;
+    a_attrs->width = geom_reply->width;
+    a_attrs->height = geom_reply->height;
+    a_attrs->visualid = attr_reply->visual;
+
+    free(geom_reply);
+    free(attr_reply);
     return TRUE;
 }
 
@@ -1120,54 +1206,56 @@ hostx_create_window(int a_screen_number,
                     int a_visual_id, int *a_host_peer /*out parameter */ )
 {
     Bool is_ok = FALSE;
-    Display *dpy = hostx_get_display();
-    XVisualInfo *visual_info = NULL, visual_info_templ;
-    int visual_mask = VisualIDMask;
-    Window win = None;
-    int nb_visuals = 0, winmask = 0;
-    XSetWindowAttributes attrs;
-
-    EPHYR_RETURN_VAL_IF_FAIL(dpy && a_geometry, FALSE);
+    xcb_window_t win;
+    int winmask = 0;
+    uint32_t attrs[2];
+    xcb_screen_t *screen = xcb_aux_get_screen(HostX.conn, hostx_get_screen());
+    xcb_visualtype_t *visual;
+    int depth = 0;
+    EPHYR_RETURN_VAL_IF_FAIL(screen && a_geometry, FALSE);
 
     EPHYR_LOG("enter\n");
 
-    /*get visual */
-    memset(&visual_info, 0, sizeof(visual_info));
-    visual_info_templ.visualid = a_visual_id;
-    visual_info = XGetVisualInfo(dpy, visual_mask,
-                                 &visual_info_templ, &nb_visuals);
-    if (!visual_info) {
-        EPHYR_LOG_ERROR("argh, could not find a remote visual with id:%d\n",
-                        a_visual_id);
-        goto out;
-    }
-    memset(&attrs, 0, sizeof(attrs));
-    attrs.colormap = XCreateColormap(dpy,
-                                     RootWindow(dpy,
-                                                visual_info->screen),
-                                     visual_info->visual, AllocNone);
-    attrs.event_mask = ButtonPressMask
-        | ButtonReleaseMask
-        | PointerMotionMask | KeyPressMask | KeyReleaseMask | ExposureMask;
-    winmask = CWColormap | CWEventMask;
-
-    win = XCreateWindow(dpy, hostx_get_window(a_screen_number),
-                        a_geometry->x, a_geometry->y,
-                        a_geometry->width, a_geometry->height, 0,
-                        visual_info->depth, CopyFromParent,
-                        visual_info->visual, winmask, &attrs);
-    if (win == None) {
-        EPHYR_LOG_ERROR("failed to create peer window\n");
+    visual = xcb_aux_find_visual_by_id(screen, a_visual_id);
+    if (!visual) {
+        EPHYR_LOG_ERROR ("argh, could not find a remote visual with id:%d\n",
+                         a_visual_id);
         goto out;
     }
-    if (HostX.screens[a_screen_number].peer_win == None) {
+    depth = xcb_aux_get_depth_of_visual(screen, a_visual_id);
+
+    winmask = XCB_CW_EVENT_MASK | XCB_CW_COLORMAP;
+    attrs[0] = XCB_EVENT_MASK_BUTTON_PRESS
+              |XCB_EVENT_MASK_BUTTON_RELEASE
+              |XCB_EVENT_MASK_POINTER_MOTION
+              |XCB_EVENT_MASK_KEY_PRESS
+              |XCB_EVENT_MASK_KEY_RELEASE
+              |XCB_EVENT_MASK_EXPOSURE;
+    attrs[1] = xcb_generate_id(HostX.conn);
+    xcb_create_colormap(HostX.conn,
+                        XCB_COLORMAP_ALLOC_NONE,
+                        attrs[1],
+                        hostx_get_window(a_screen_number),
+                        a_visual_id);
+
+    win = xcb_generate_id(HostX.conn);
+    xcb_create_window(HostX.conn,
+                      depth,
+                      win,
+                      hostx_get_window (a_screen_number),
+                      a_geometry->x, a_geometry->y,
+                      a_geometry->width, a_geometry->height, 0,
+                      XCB_WINDOW_CLASS_COPY_FROM_PARENT,
+                      a_visual_id, winmask, attrs);
+
+    if (HostX.screens[a_screen_number].peer_win == XCB_NONE) {
         HostX.screens[a_screen_number].peer_win = win;
     }
     else {
         EPHYR_LOG_ERROR("multiple peer windows created for same screen\n");
     }
-    XFlush(dpy);
-    XMapWindow(dpy, win);
+    xcb_flush(HostX.conn);
+    xcb_map_window(HostX.conn, win);
     *a_host_peer = win;
     is_ok = TRUE;
  out:
@@ -1178,26 +1266,31 @@ hostx_create_window(int a_screen_number,
 int
 hostx_destroy_window(int a_win)
 {
-    Display *dpy = hostx_get_display();
-
-    EPHYR_RETURN_VAL_IF_FAIL(dpy, FALSE);
-    XDestroyWindow(dpy, a_win);
-    XFlush(dpy);
+    xcb_destroy_window(HostX.conn, a_win);
+    xcb_flush(HostX.conn);
     return TRUE;
 }
 
 int
 hostx_set_window_geometry(int a_win, EphyrBox * a_geo)
 {
-    Display *dpy = hostx_get_display();
+    uint32_t mask = XCB_CONFIG_WINDOW_X
+                  | XCB_CONFIG_WINDOW_Y
+                  | XCB_CONFIG_WINDOW_WIDTH
+                  | XCB_CONFIG_WINDOW_HEIGHT;
+    uint32_t values[4];
 
-    EPHYR_RETURN_VAL_IF_FAIL(dpy && a_geo, FALSE);
+    EPHYR_RETURN_VAL_IF_FAIL(a_geo, FALSE);
 
     EPHYR_LOG("enter. x,y,w,h:(%d,%d,%d,%d)\n",
               a_geo->x, a_geo->y, a_geo->width, a_geo->height);
 
-    XMoveWindow(dpy, a_win, a_geo->x, a_geo->y);
-    XResizeWindow(dpy, a_win, a_geo->width, a_geo->height);
+    values[0] = a_geo->x;
+    values[1] = a_geo->y;
+    values[2] = a_geo->width;
+    values[3] = a_geo->height;
+    xcb_configure_window(HostX.conn, a_win, mask, values);
+
     EPHYR_LOG("leave\n");
     return TRUE;
 }
@@ -1271,13 +1364,10 @@ hostx_set_window_clipping_rectangles(int a_window,
 int
 hostx_has_xshape(void)
 {
-    int event_base = 0, error_base = 0;
-    Display *dpy = hostx_get_display();
+    const xcb_query_extension_reply_t *rep;
 
-    if (!XShapeQueryExtension(dpy, &event_base, &error_base)) {
-        return FALSE;
-    }
-    return TRUE;
+    rep = xcb_get_extension_data(HostX.conn, &xcb_shape_id);
+    return rep && rep->present;
 }
 
 #ifdef XF86DRI
@@ -1296,7 +1386,6 @@ hostx_allocate_resource_id_peer(int a_local_resource_id,
 {
     int i = 0;
     ResourcePair *peer = NULL;
-    Display *dpy = hostx_get_display();
 
     /*
      * first make sure a resource peer
@@ -1321,7 +1410,7 @@ hostx_allocate_resource_id_peer(int a_local_resource_id,
             }
         }
         if (peer) {
-            peer->remote_id = XAllocID(dpy);
+            peer->remote_id = xcb_generate_id(HostX.conn);
             peer->local_id = a_local_resource_id;
             peer->is_valid = TRUE;
         }
@@ -1356,28 +1445,21 @@ hostx_get_resource_id_peer(int a_local_resource_id, int *a_remote_resource_id)
 int
 hostx_has_dri(void)
 {
-    int event_base = 0, error_base = 0;
-    Display *dpy = hostx_get_display();
+    const xcb_query_extension_reply_t *dri;
 
-    if (!dpy)
-        return FALSE;
+    dri = xcb_get_extension_data(HostX.conn, &xcb_xf86dri_id);
 
-    if (!XF86DRIQueryExtension(dpy, &event_base, &error_base)) {
-        return FALSE;
-    }
-    return TRUE;
+    return dri && dri->present;
 }
 
 int
 hostx_has_glx(void)
 {
-    Display *dpy = hostx_get_display();
-    int event_base = 0, error_base = 0;
+    const xcb_query_extension_reply_t *glx;
 
-    if (!glXQueryExtension(dpy, &event_base, &error_base)) {
-        return FALSE;
-    }
-    return TRUE;
+    glx = xcb_get_extension_data(HostX.conn, &xcb_glx_id);
+
+    return glx && glx->present;
 }
 
 #endif                          /* XF86DRI */
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index f165606..c065f2d 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -28,6 +28,7 @@
 
 #include <X11/X.h>
 #include <X11/Xmd.h>
+#include <xcb/xcb.h>
 
 #define EPHYR_WANT_DEBUG 0
 
@@ -206,6 +207,12 @@ int
 
 void *hostx_get_display(void);
 
+xcb_connection_t *
+hostx_get_xcbconn(void);
+
+int
+hostx_get_screen(void);
+
 int
  hostx_get_window(int a_screen_number);
 
commit 762606b4cdfb57c5202ae128ce4dbb8afe172d4e
Author: Julien Cristau <jcristau at debian.org>
Date:   Fri Jun 25 17:59:13 2010 +0100

    Xephyr: stop loading the host's keymap
    
    This isn't used anywhere.
    
    v2: Rebase to the top of the patch series (anholt)
    
    Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net> (v1)
    Signed-off-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index 02d4970..b34b5cc 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -1091,7 +1091,7 @@ EphyrKeyboardInit(KdKeyboardInfo * ki)
     ki->driverPrivate = (EphyrKbdPrivate *)
         calloc(sizeof(EphyrKbdPrivate), 1);
     hostx_load_keymap();
-    if (!ephyrKeySyms.map) {
+    if (!ephyrKeySyms.minKeyCode) {
         ErrorF("Couldn't load keymap from host\n");
         return BadAlloc;
     }
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 5071289..f46770f 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -840,45 +840,14 @@ hostx_paint_debug_rect(struct EphyrHostScreen *host_screen,
 void
 hostx_load_keymap(void)
 {
-    XID *keymap;
-    int host_width, min_keycode, max_keycode, width;
-    int i, j;
+    int min_keycode, max_keycode;
 
     XDisplayKeycodes(HostX.dpy, &min_keycode, &max_keycode);
 
     EPHYR_DBG("min: %d, max: %d", min_keycode, max_keycode);
 
-    keymap = XGetKeyboardMapping(HostX.dpy,
-                                 min_keycode,
-                                 max_keycode - min_keycode + 1, &host_width);
-
-    /* Try and copy the hosts keymap into our keymap to avoid loads
-     * of messing around.
-     *
-     * kdrive cannot can have more than 4 keysyms per keycode
-     * so we only copy at most the first 4 ( xorg has 6 per keycode, XVNC 2 )
-     */
-    width = (host_width > 4) ? 4 : host_width;
-
-    ephyrKeySyms.map = (CARD32 *) calloc(sizeof(CARD32),
-                                         (max_keycode - min_keycode + 1) *
-                                         width);
-    if (!ephyrKeySyms.map)
-        goto out;
-
-    for (i = 0; i < (max_keycode - min_keycode + 1); i++)
-        for (j = 0; j < width; j++)
-            ephyrKeySyms.map[(i * width) + j] =
-                (CARD32) keymap[(i * host_width) + j];
-
-    EPHYR_DBG("keymap width, host:%d kdrive:%d", host_width, width);
-
     ephyrKeySyms.minKeyCode = min_keycode;
     ephyrKeySyms.maxKeyCode = max_keycode;
-    ephyrKeySyms.mapWidth = width;
-
- out:
-    XFree(keymap);
 }
 
 static struct EphyrHostScreen *
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index f47297c..f165606 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -51,12 +51,9 @@ typedef enum EphyrHostXEventType {
     EPHYR_EV_CONFIGURE,
 } EphyrHostXEventType;
 
-/* I can't believe it's not a KeySymsRec. */
 typedef struct {
     int minKeyCode;
     int maxKeyCode;
-    int mapWidth;
-    CARD32 *map;
 } EphyrKeySyms;
 
 struct EphyrHostXEvent {
commit 3752a815800626ae93f64a856f5889aa6636344e
Author: Marc Haesen <marha at users.sourceforge.net>
Date:   Sat Aug 10 17:38:38 2013 +0100

    hw/xwin: Remove unnecessary and incorrect HWND casts
    
    Signed-off-by: Marc Haesen <marha at users.sourceforge.net>
    Reviewed-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>

diff --git a/hw/xwin/winmultiwindowwm.c b/hw/xwin/winmultiwindowwm.c
index 6851368..1dd8ba5 100644
--- a/hw/xwin/winmultiwindowwm.c
+++ b/hw/xwin/winmultiwindowwm.c
@@ -1061,15 +1061,13 @@ winMultiWindowXMsgProc(void *pArg)
                 (pProcArg->pDisplay, pProcArg->dwScreen, TRUE)) {
                 if (!g_fAnotherWMRunning) {
                     g_fAnotherWMRunning = TRUE;
-                    SendMessage(*(HWND *) pProcArg->hwndScreen, WM_UNMANAGE, 0,
-                                0);
+                    SendMessage(pProcArg->hwndScreen, WM_UNMANAGE, 0, 0);
                 }
             }
             else {
                 if (g_fAnotherWMRunning) {
                     g_fAnotherWMRunning = FALSE;
-                    SendMessage(*(HWND *) pProcArg->hwndScreen, WM_MANAGE, 0,
-                                0);
+                    SendMessage(pProcArg->hwndScreen, WM_MANAGE, 0, 0);
                 }
             }
             Sleep(500);
diff --git a/hw/xwin/winmultiwindowwndproc.c b/hw/xwin/winmultiwindowwndproc.c
index a888f08..abb87ee 100644
--- a/hw/xwin/winmultiwindowwndproc.c
+++ b/hw/xwin/winmultiwindowwndproc.c
@@ -825,7 +825,7 @@ winTopLevelWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
         }
         /* Prevent the mouse wheel from stalling when another window is minimized */
         if (HIWORD(wParam) == 0 && LOWORD(wParam) == WA_ACTIVE &&
-            (HWND) lParam != NULL && (HWND) lParam != (HWND) GetParent(hwnd))
+            (HWND) lParam != NULL && (HWND) lParam != GetParent(hwnd))
             SetFocus(hwnd);
         return 0;
 
commit 34932cef6cc800fbdf2f375506057ed8cd1e07f6
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Mon Apr 1 13:43:00 2013 +0100

    hw/xwin: Fix compilation of winauth.c with -Werror=implicit-function-declaration
    
    /jhbuild/checkout/xorg/xserver/hw/xwin/winauth.c: In function ‘MitGenerateCookie’:
    /jhbuild/checkout/xorg/xserver/hw/xwin/winauth.c:87:5: error: implicit declaration of function ‘MitAddCookie’ [-Werror=implicit-function-declaration]
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/hw/xwin/winauth.c b/hw/xwin/winauth.c
index 25d1fbd..a6a7366 100644
--- a/hw/xwin/winauth.c
+++ b/hw/xwin/winauth.c
@@ -36,6 +36,7 @@
 
 /* Includes for authorization */
 #include "securitysrv.h"
+#include "os/osdep.h"
 
 /*
  * Constants
@@ -56,8 +57,7 @@ static char *g_pAuthData = NULL;
  */
 
 #ifndef XCSECURITY
-static
-    void
+void
 GenerateRandomData(int len, char *buf)
 {
     int fd;
@@ -70,9 +70,8 @@ GenerateRandomData(int len, char *buf)
 static char cookie[16];         /* 128 bits */
 
 XID
-    static
 MitGenerateCookie(unsigned data_length,
-                  char *data,
+                  const char *data,
                   XID id, unsigned *data_length_return, char **data_return)
 {
     int i = 0;
commit 2a08554a0bf80b862c15676c31ecd463b616518c
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Mon Jun 17 23:54:01 2013 +0100

    hw/xwin: Remove unused extern g_fUseUnicode from winclipboardwndproc.c
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/hw/xwin/winclipboardwndproc.c b/hw/xwin/winclipboardwndproc.c
index 32712aa..90dc9e0 100644
--- a/hw/xwin/winclipboardwndproc.c
+++ b/hw/xwin/winclipboardwndproc.c
@@ -48,7 +48,6 @@
  * References to external symbols
  */
 
-extern Bool g_fUseUnicode;
 extern void *g_pClipboardDisplay;
 extern Window g_iClipboardWindow;
 extern Atom g_atomLastOwnedSelection;
commit 69401f38a697c941ea58351028f4cd4b810f9188
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Mon Jun 17 18:37:26 2013 +0100

    hw/xwin: Remove unneeded forward declaration of winProcessXEventsTimeout()
    
    Remove unneeded forward declaration of winProcessXEventsTimeout(), the actual
    definition immediately follows.
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/hw/xwin/winclipboardwndproc.c b/hw/xwin/winclipboardwndproc.c
index e19f678..32712aa 100644
--- a/hw/xwin/winclipboardwndproc.c
+++ b/hw/xwin/winclipboardwndproc.c
@@ -53,16 +53,6 @@ extern void *g_pClipboardDisplay;
 extern Window g_iClipboardWindow;
 extern Atom g_atomLastOwnedSelection;
 
-/* 
- * Local function prototypes
- */
-
-static int
-
-
-winProcessXEventsTimeout(HWND hwnd, int iWindow, Display * pDisplay,
-                         Bool fUseUnicode, int iTimeoutSec);
-
 /*
  * Process X events up to specified timeout
  */
commit 9c45a1ad44f12ac25e1c3b7a18a3bceb85a2cf38
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Mon Jun 17 16:58:47 2013 +0100

    hw/xwin: Remove prototype for non-existent winDeinitClipboard()
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/hw/xwin/winclipboard.h b/hw/xwin/winclipboard.h
index aa7fd44..cb77695 100644
--- a/hw/xwin/winclipboard.h
+++ b/hw/xwin/winclipboard.h
@@ -106,9 +106,6 @@ void
 
 void *winClipboardProc(void *);
 
-void
- winDeinitClipboard(void);
-
 /*
  * winclipboardwndproc.c
  */
commit acc46fc217352b94f77a6b5b14808ea89875a2a1
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Mon Jun 17 00:40:13 2013 +0100

    hw/xwin: Remove unused externs from winclipboardwrappers.c
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/hw/xwin/winclipboardwrappers.c b/hw/xwin/winclipboardwrappers.c
index 008088b..bfd6bff 100644
--- a/hw/xwin/winclipboardwrappers.c
+++ b/hw/xwin/winclipboardwrappers.c
@@ -56,8 +56,6 @@ DISPATCH_PROC(winProcSetSelectionOwner);
  * References to external symbols
  */
 
-extern unsigned int g_uiAuthDataLen;
-extern char *g_pAuthData;
 extern Bool g_fClipboardLaunched;
 extern Bool g_fClipboardStarted;
 extern Bool g_fClipboard;
commit fcc7767f8cd6c318861b1060ef6a3936750a0dd2
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Mon Jun 10 17:31:12 2013 +0100

    hw/xwin: Remove unused winProcQueryTreeOrig variable
    
    Unused since 47c7b6d3e626497747ae2780f259a15b8e6c846f "Remove no-longer needed
    tricks used to prevent the clipboard client from being killed"
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/hw/xwin/InitInput.c b/hw/xwin/InitInput.c
index 395b533..36346b7 100644
--- a/hw/xwin/InitInput.c
+++ b/hw/xwin/InitInput.c
@@ -39,7 +39,6 @@
 
 #ifdef XWIN_CLIPBOARD
 int winProcEstablishConnection(ClientPtr /* client */ );
-int winProcQueryTree(ClientPtr /* client */ );
 int winProcSetSelectionOwner(ClientPtr /* client */ );
 #endif
 
diff --git a/hw/xwin/winglobals.c b/hw/xwin/winglobals.c
index b3ca295..d281322 100644
--- a/hw/xwin/winglobals.c
+++ b/hw/xwin/winglobals.c
@@ -85,7 +85,6 @@ pthread_mutex_t g_pmTerminating = PTHREAD_MUTEX_INITIALIZER;
  * Wrapped DIX functions
  */
 winDispatchProcPtr winProcEstablishConnectionOrig = NULL;
-winDispatchProcPtr winProcQueryTreeOrig = NULL;
 winDispatchProcPtr winProcSetSelectionOwnerOrig = NULL;
 
 /*
diff --git a/hw/xwin/winglobals.h b/hw/xwin/winglobals.h
index 4faba9e..58a919c 100644
--- a/hw/xwin/winglobals.h
+++ b/hw/xwin/winglobals.h
@@ -71,7 +71,6 @@ typedef int (*winDispatchProcPtr) (ClientPtr);
  * Wrapped DIX functions
  */
 extern winDispatchProcPtr winProcEstablishConnectionOrig;
-extern winDispatchProcPtr winProcQueryTreeOrig;
 extern winDispatchProcPtr winProcSetSelectionOwnerOrig;
 #endif
 
commit 8fa882a980abea6f05b4b59447a187aea2c793a1
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Sat Aug 10 12:41:07 2013 +0100

    hw/xwin: Fix ARGB cursor conversion on x86_64
    
    Fix erroneous use of unsigned long * for lpBits in winXCursorToHCURSOR() which
    leads to ARGB cursors being vertically streched on x86_64 by interleaving blank
    rows of pixels.
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/hw/xwin/wincursor.c b/hw/xwin/wincursor.c
index 285e1bc..a35336a 100644
--- a/hw/xwin/wincursor.c
+++ b/hw/xwin/wincursor.c
@@ -162,7 +162,7 @@ winLoadCursor(ScreenPtr pScreen, CursorPtr pCursor, int screen)
     HDC hDC;
     BITMAPV4HEADER bi;
     BITMAPINFO *pbmi;
-    unsigned long *lpBits;
+    uint32_t *lpBits;
 
     WIN_DEBUG_MSG("winLoadCursor: Win32: %dx%d X11: %dx%d hotspot: %d,%d\n",
                   pScreenPriv->cursor.sm_cx, pScreenPriv->cursor.sm_cy,
@@ -256,15 +256,14 @@ winLoadCursor(ScreenPtr pScreen, CursorPtr pCursor, int screen)
         bi.bV4AlphaMask = 0xFF000000;
 
         lpBits =
-            (unsigned long *) calloc(pScreenPriv->cursor.sm_cx *
-                                     pScreenPriv->cursor.sm_cy,
-                                     sizeof(unsigned long));
+            (uint32_t *) calloc(pScreenPriv->cursor.sm_cx *
+                                pScreenPriv->cursor.sm_cy,
+                                sizeof(uint32_t));
 
         if (lpBits) {
             int y;
             for (y = 0; y < nCY; y++) {
-                unsigned long *src, *dst;
-
+                void *src, *dst;
                 src = &(pCursor->bits->argb[y * pCursor->bits->width]);
                 dst = &(lpBits[y * pScreenPriv->cursor.sm_cx]);
                 memcpy(dst, src, 4 * nCX);
@@ -304,8 +303,8 @@ winLoadCursor(ScreenPtr pScreen, CursorPtr pCursor, int screen)
         pbmiColors[2].rgbReserved = 0;
 
         lpBits =
-            (unsigned long *) calloc(pScreenPriv->cursor.sm_cx *
-                                     pScreenPriv->cursor.sm_cy, sizeof(char));
+            (uint32_t *) calloc(pScreenPriv->cursor.sm_cx *
+                                pScreenPriv->cursor.sm_cy, sizeof(char));
 
         pCur = (unsigned char *) lpBits;
         if (lpBits) {
commit 4bfb2dce5eea4923eaf86eca33b96087b28235f5
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Sun Apr 7 23:59:44 2013 +0100

    hw/xwin: Fix an issue in winSetSpansNativeGDI() identifed by -Warray-bounds
    
    The BITMAPINFO local only has room for a single RBGQUAD in bmiColors, but we
    access two (black and white for a mono-color DIB).  Fix by changing to a dynamic
    allocation big enough for a BITMAPINFO and a RGBQUAD.
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/hw/xwin/winsetsp.c b/hw/xwin/winsetsp.c
index f102f9f..11108cb 100644
--- a/hw/xwin/winsetsp.c
+++ b/hw/xwin/winsetsp.c
@@ -46,7 +46,7 @@ winSetSpansNativeGDI(DrawablePtr pDrawable,
     PixmapPtr pPixmap = NULL;
     winPrivPixmapPtr pPixmapPriv = NULL;
     HBITMAP hbmpOrig = NULL;
-    BITMAPINFO bmi;
+    BITMAPINFO *pbmi;
     HRGN hrgn = NULL, combined = NULL;
     int nbox;
     BoxPtr pbox;
@@ -57,6 +57,8 @@ winSetSpansNativeGDI(DrawablePtr pDrawable,
     if (!nbox)
         return;
 
+    pbmi = malloc(sizeof(BITMAPINFO) + sizeof(RGBQUAD));
+
     combined = CreateRectRgn(pbox->x1, pbox->y1, pbox->x2, pbox->y2);
     nbox--;
     pbox++;
@@ -86,19 +88,20 @@ winSetSpansNativeGDI(DrawablePtr pDrawable,
                        "failed on pPixmapPriv->hBitmap\n");
 
         while (iSpans--) {
-            ZeroMemory(&bmi, sizeof(BITMAPINFO));
-            bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
-            bmi.bmiHeader.biWidth = *piWidths;
-            bmi.bmiHeader.biHeight = 1;
-            bmi.bmiHeader.biPlanes = 1;
-            bmi.bmiHeader.biBitCount = pDrawable->depth;
-            bmi.bmiHeader.biCompression = BI_RGB;
+            ZeroMemory(pbmi, sizeof(BITMAPINFO));
+            pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+            pbmi->bmiHeader.biWidth = *piWidths;
+            pbmi->bmiHeader.biHeight = 1;
+            pbmi->bmiHeader.biPlanes = 1;
+            pbmi->bmiHeader.biBitCount = pDrawable->depth;
+            pbmi->bmiHeader.biCompression = BI_RGB;
 
             /* Setup color table for mono DIBs */
             if (pDrawable->depth == 1) {
-                bmi.bmiColors[1].rgbBlue = 255;
-                bmi.bmiColors[1].rgbGreen = 255;
-                bmi.bmiColors[1].rgbRed = 255;
+                RGBQUAD *bmiColors = &(pbmi->bmiColors[0]);
+                bmiColors[1].rgbBlue = 255;
+                bmiColors[1].rgbGreen = 255;
+                bmiColors[1].rgbRed = 255;
             }
 
             StretchDIBits(pGCPriv->hdcMem,
@@ -107,7 +110,7 @@ winSetSpansNativeGDI(DrawablePtr pDrawable,
                           0, 0,
                           *piWidths, 1,
                           pSrcs,
-                          (BITMAPINFO *) &bmi,
+                          (BITMAPINFO *) pbmi,
                           DIB_RGB_COLORS, g_copyROP[pGC->alu]);
 
             pSrcs += PixmapBytePad(*piWidths, pDrawable->depth);
@@ -129,19 +132,20 @@ winSetSpansNativeGDI(DrawablePtr pDrawable,
         combined = NULL;
 
         while (iSpans--) {
-            ZeroMemory(&bmi, sizeof(BITMAPINFO));
-            bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
-            bmi.bmiHeader.biWidth = *piWidths;
-            bmi.bmiHeader.biHeight = 1;
-            bmi.bmiHeader.biPlanes = 1;
-            bmi.bmiHeader.biBitCount = pDrawable->depth;
-            bmi.bmiHeader.biCompression = BI_RGB;
+            ZeroMemory(pbmi, sizeof(BITMAPINFO));
+            pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+            pbmi->bmiHeader.biWidth = *piWidths;
+            pbmi->bmiHeader.biHeight = 1;
+            pbmi->bmiHeader.biPlanes = 1;
+            pbmi->bmiHeader.biBitCount = pDrawable->depth;
+            pbmi->bmiHeader.biCompression = BI_RGB;
 
             /* Setup color table for mono DIBs */
             if (pDrawable->depth == 1) {
-                bmi.bmiColors[1].rgbBlue = 255;
-                bmi.bmiColors[1].rgbGreen = 255;
-                bmi.bmiColors[1].rgbRed = 255;
+                RGBQUAD *bmiColors = &(pbmi->bmiColors[0]);
+                bmiColors[1].rgbBlue = 255;
+                bmiColors[1].rgbGreen = 255;
+                bmiColors[1].rgbRed = 255;
             }
 
             StretchDIBits(pGCPriv->hdc,
@@ -150,7 +154,7 @@ winSetSpansNativeGDI(DrawablePtr pDrawable,
                           0, 0,
                           *piWidths, 1,
                           pSrcs,
-                          (BITMAPINFO *) &bmi,
+                          (BITMAPINFO *) pbmi,
                           DIB_RGB_COLORS, g_copyROP[pGC->alu]);
 
             pSrcs += PixmapBytePad(*piWidths, pDrawable->depth);
@@ -166,4 +170,6 @@ winSetSpansNativeGDI(DrawablePtr pDrawable,
         FatalError("\nwinSetSpansNativeGDI - Unknown drawable type\n\n");
         break;
     }
+
+    free(pbmi);
 }
commit 784c006adb22c6693ad30dd0b1b05369cfaa7b5e
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Sat Aug 10 11:55:23 2013 +0100

    hw/xwin: Fix -Warray-bounds warning in winXCursorToHCURSOR()
    
    Rewrite winXCursorToHCURSOR() so access to BITMAPINFO bmiColors member doesn't
    trigger an -Warray-bounds warning.
    
    Note that the underlying storage is allocated as a BITMAPV4HEADER, so has
    sufficent room for the extra RGBQUADs bmiColors after the BITMAPINFO bmiHeader.
    
    wincursor.c: In function 'winSetCursor':
    wincursor.c:293:24: error: array subscript is above array bounds [-Werror=array-bounds]
    wincursor.c:294:24: error: array subscript is above array bounds [-Werror=array-bounds]
    wincursor.c:295:24: error: array subscript is above array bounds [-Werror=array-bounds]
    wincursor.c:296:24: error: array subscript is above array bounds [-Werror=array-bounds]
    wincursor.c:297:24: error: array subscript is above array bounds [-Werror=array-bounds]
    wincursor.c:298:24: error: array subscript is above array bounds [-Werror=array-bounds]
    wincursor.c:299:24: error: array subscript is above array bounds [-Werror=array-bounds]
    wincursor.c:300:24: error: array subscript is above array bounds [-Werror=array-bounds]
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/hw/xwin/wincursor.c b/hw/xwin/wincursor.c
index 2962d06..285e1bc 100644
--- a/hw/xwin/wincursor.c
+++ b/hw/xwin/wincursor.c
@@ -273,9 +273,12 @@ winLoadCursor(ScreenPtr pScreen, CursorPtr pCursor, int screen)
     }                           /* End if-truecolor-icon */
 
     if (!lpBits) {
+        RGBQUAD *pbmiColors;
         /* Bicolor, use a palettized DIB */
         WIN_DEBUG_MSG("winLoadCursor: Trying two color cursor\n");
         pbmi = (BITMAPINFO *) &bi;
+        pbmiColors = &(pbmi->bmiColors[0]);
+
         memset(pbmi, 0, sizeof(BITMAPINFOHEADER));
         pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
         pbmi->bmiHeader.biWidth = pScreenPriv->cursor.sm_cx;
@@ -286,18 +289,19 @@ winLoadCursor(ScreenPtr pScreen, CursorPtr pCursor, int screen)
         pbmi->bmiHeader.biSizeImage = 0;
         pbmi->bmiHeader.biClrUsed = 3;
         pbmi->bmiHeader.biClrImportant = 3;
-        pbmi->bmiColors[0].rgbRed = 0;  /* Empty */
-        pbmi->bmiColors[0].rgbGreen = 0;
-        pbmi->bmiColors[0].rgbBlue = 0;
-        pbmi->bmiColors[0].rgbReserved = 0;
-        pbmi->bmiColors[1].rgbRed = pCursor->backRed >> 8;      /* Background */
-        pbmi->bmiColors[1].rgbGreen = pCursor->backGreen >> 8;
-        pbmi->bmiColors[1].rgbBlue = pCursor->backBlue >> 8;
-        pbmi->bmiColors[1].rgbReserved = 0;
-        pbmi->bmiColors[2].rgbRed = pCursor->foreRed >> 8;      /* Foreground */
-        pbmi->bmiColors[2].rgbGreen = pCursor->foreGreen >> 8;
-        pbmi->bmiColors[2].rgbBlue = pCursor->foreBlue >> 8;
-        pbmi->bmiColors[2].rgbReserved = 0;
+
+        pbmiColors[0].rgbRed = 0;  /* Empty */
+        pbmiColors[0].rgbGreen = 0;
+        pbmiColors[0].rgbBlue = 0;
+        pbmiColors[0].rgbReserved = 0;
+        pbmiColors[1].rgbRed = pCursor->backRed >> 8;      /* Background */
+        pbmiColors[1].rgbGreen = pCursor->backGreen >> 8;
+        pbmiColors[1].rgbBlue = pCursor->backBlue >> 8;
+        pbmiColors[1].rgbReserved = 0;
+        pbmiColors[2].rgbRed = pCursor->foreRed >> 8;      /* Foreground */
+        pbmiColors[2].rgbGreen = pCursor->foreGreen >> 8;
+        pbmiColors[2].rgbBlue = pCursor->foreBlue >> 8;
+        pbmiColors[2].rgbReserved = 0;
 
         lpBits =
             (unsigned long *) calloc(pScreenPriv->cursor.sm_cx *
commit 41d03c9ccce665b919b180bbb819b78c750aa325
Author: Marc Haesen <marha at users.sourceforge.net>
Date:   Fri Aug 2 18:19:22 2013 +0100

    hw/xwin: Correct size of _WINDOWSWM_NATIVE_HWND property on x86_64
    
    Use the correct size of a HWND on x86_64 in XChangeProperty() and
    XGetWindowProperty() calls for the _WINDOWSWM_NATIVE_HWND property.
    
    Signed-off-by: Marc Haesen <marha at users.sourceforge.net>
    Reviewed-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>

diff --git a/hw/xwin/winmultiwindowwm.c b/hw/xwin/winmultiwindowwm.c
index 3c44f05..6851368 100644
--- a/hw/xwin/winmultiwindowwm.c
+++ b/hw/xwin/winmultiwindowwm.c
@@ -488,7 +488,7 @@ getHwnd(WMInfoPtr pWMInfo, Window iWindow)
                            iWindow,
                            pWMInfo->atmPrivMap,
                            0,
-                           1,
+                           sizeof(HWND)/4,
                            False,
                            XA_INTEGER,
                            &atmType,
@@ -747,10 +747,10 @@ winMultiWindowWMProc(void *pArg)
             ErrorF("\tWM_WM_MAP\n");
 #endif
             /* Put a note as to the HWND associated with this Window */
-            XChangeProperty(pWMInfo->pDisplay, pNode->msg.iWindow, pWMInfo->atmPrivMap, XA_INTEGER,     //pWMInfo->atmPrivMap,
+            XChangeProperty(pWMInfo->pDisplay, pNode->msg.iWindow, pWMInfo->atmPrivMap, XA_INTEGER,
                             32,
                             PropModeReplace,
-                            (unsigned char *) &(pNode->msg.hwndWindow), 1);
+                            (unsigned char *) &(pNode->msg.hwndWindow), sizeof(HWND)/4);
             UpdateName(pWMInfo, pNode->msg.iWindow);
             UpdateIcon(pWMInfo, pNode->msg.iWindow);
             break;
@@ -759,10 +759,10 @@ winMultiWindowWMProc(void *pArg)
 #if CYGMULTIWINDOW_DEBUG
             ErrorF("\tWM_WM_MAP2\n");
 #endif
-            XChangeProperty(pWMInfo->pDisplay, pNode->msg.iWindow, pWMInfo->atmPrivMap, XA_INTEGER,     //pWMInfo->atmPrivMap,
+            XChangeProperty(pWMInfo->pDisplay, pNode->msg.iWindow, pWMInfo->atmPrivMap, XA_INTEGER,
                             32,
                             PropModeReplace,
-                            (unsigned char *) &(pNode->msg.hwndWindow), 1);
+                            (unsigned char *) &(pNode->msg.hwndWindow), sizeof(HWND)/4);
             break;
 
         case WM_WM_MAP3:
@@ -770,10 +770,10 @@ winMultiWindowWMProc(void *pArg)
             ErrorF("\tWM_WM_MAP3\n");
 #endif
             /* Put a note as to the HWND associated with this Window */
-            XChangeProperty(pWMInfo->pDisplay, pNode->msg.iWindow, pWMInfo->atmPrivMap, XA_INTEGER,     //pWMInfo->atmPrivMap,
+            XChangeProperty(pWMInfo->pDisplay, pNode->msg.iWindow, pWMInfo->atmPrivMap, XA_INTEGER,
                             32,
                             PropModeReplace,
-                            (unsigned char *) &(pNode->msg.hwndWindow), 1);
+                            (unsigned char *) &(pNode->msg.hwndWindow), sizeof(HWND)/4);
             UpdateName(pWMInfo, pNode->msg.iWindow);
             UpdateIcon(pWMInfo, pNode->msg.iWindow);
             UpdateStyle(pWMInfo, pNode->msg.iWindow);
commit 390cfec10ef7d52391f890c7593ac82a7d77d856
Author: Colin Harrison <colin.harrison at virgin.net>
Date:   Fri Aug 9 16:48:12 2013 +0100

    hw/xwin: Correct winprefs.c function signatures for x64.
    
    Correct SetupRootMenu(), SetupSysMenu(), HandleCustomWM_INITMENU() and
    HandleCustomWM_COMMAND() function signatures which use unsigned long parameters,
    where just a specific HWND or HMENU handle type should have been used.
    
    Signed-off-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/hw/xwin/winmultiwindowwndproc.c b/hw/xwin/winmultiwindowwndproc.c
index 9292e73..a888f08 100644
--- a/hw/xwin/winmultiwindowwndproc.c
+++ b/hw/xwin/winmultiwindowwndproc.c
@@ -420,14 +420,14 @@ winTopLevelWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
         /*
          * Add whatever the setup file wants to for this window
          */
-        SetupSysMenu((unsigned long) hwnd);
+        SetupSysMenu(hwnd);
         return 0;
 
     case WM_SYSCOMMAND:
         /*
          * Any window menu items go through here
          */
-        if (HandleCustomWM_COMMAND((unsigned long) hwnd, LOWORD(wParam))) {
+        if (HandleCustomWM_COMMAND(hwnd, LOWORD(wParam))) {
             /* Don't pass customized menus to DefWindowProc */
             return 0;
         }
@@ -443,7 +443,7 @@ winTopLevelWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 
     case WM_INITMENU:
         /* Checks/Unchecks any menu items before they are displayed */
-        HandleCustomWM_INITMENU((unsigned long) hwnd, wParam);
+        HandleCustomWM_INITMENU(hwnd, (HMENU)wParam);
         break;
 
     case WM_ERASEBKGND:
diff --git a/hw/xwin/winprefs.c b/hw/xwin/winprefs.c
index 8936aae..f386fac 100644
--- a/hw/xwin/winprefs.c
+++ b/hw/xwin/winprefs.c
@@ -188,7 +188,7 @@ ReloadEnumWindowsProc(HWND hwnd, LPARAM lParam)
         }
 
         /* Update the system menu for this window */
-        SetupSysMenu((unsigned long) hwnd);
+        SetupSysMenu(hwnd);
 
         /* That was easy... */
     }
@@ -275,15 +275,11 @@ ReloadPrefs(void)
  * Check/uncheck the ALWAYSONTOP items in this menu
  */
 void
-HandleCustomWM_INITMENU(unsigned long hwndIn, unsigned long hmenuIn)
+HandleCustomWM_INITMENU(HWND hwnd, HMENU hmenu)
 {
-    HWND hwnd;
-    HMENU hmenu;
     DWORD dwExStyle;
     int i, j;
 
-    hwnd = (HWND) hwndIn;
-    hmenu = (HMENU) hmenuIn;
     if (!hwnd || !hmenu)
         return;
 
@@ -305,15 +301,12 @@ HandleCustomWM_INITMENU(unsigned long hwndIn, unsigned long hmenuIn)
  * Return TRUE if command is proccessed, FALSE otherwise.
  */
 Bool
-HandleCustomWM_COMMAND(unsigned long hwndIn, int command)
+HandleCustomWM_COMMAND(HWND hwnd, int command)
 {
-    HWND hwnd;
     int i, j;
     MENUPARSED *m;
     DWORD dwExStyle;
 
-    hwnd = (HWND) hwndIn;
-
     if (!command)
         return FALSE;
 
@@ -412,15 +405,13 @@ HandleCustomWM_COMMAND(unsigned long hwndIn, int command)
  * Add the default or a custom menu depending on the class match
  */
 void
-SetupSysMenu(unsigned long hwndIn)
+SetupSysMenu(HWND hwnd)
 {
-    HWND hwnd;
     HMENU sys;
     int i;
     WindowPtr pWin;
     char *res_name, *res_class;
 
-    hwnd = (HWND) hwndIn;
     if (!hwnd)
         return;
 
@@ -465,11 +456,8 @@ SetupSysMenu(unsigned long hwndIn)
  * Possibly add a menu to the toolbar icon
  */
 void
-SetupRootMenu(unsigned long hmenuRoot)
+SetupRootMenu(HMENU root)
 {
-    HMENU root;
-
-    root = (HMENU) hmenuRoot;
     if (!root)
         return;
 
diff --git a/hw/xwin/winprefs.h b/hw/xwin/winprefs.h
index a4a6e7e..8f4eb08 100644
--- a/hw/xwin/winprefs.h
+++ b/hw/xwin/winprefs.h
@@ -150,16 +150,16 @@ void
  LoadPreferences(void);
 
 void
- SetupRootMenu(unsigned long hmenuRoot);
+ SetupRootMenu(HMENU root);
 
 void
- SetupSysMenu(unsigned long hwndIn);
+ SetupSysMenu(HWND hwnd);
 
 void
- HandleCustomWM_INITMENU(unsigned long hwndIn, unsigned long hmenuIn);
+ HandleCustomWM_INITMENU(HWND hwnd, HMENU hmenu);
 
 Bool
- HandleCustomWM_COMMAND(unsigned long hwndIn, int command);
+ HandleCustomWM_COMMAND(HWND hwnd, int command);
 
 int
  winIconIsOverride(HICON hicon);
diff --git a/hw/xwin/wintrayicon.c b/hw/xwin/wintrayicon.c
index f168b88..e0aa7e5 100644
--- a/hw/xwin/wintrayicon.c
+++ b/hw/xwin/wintrayicon.c
@@ -170,7 +170,7 @@ winHandleIconMessage(HWND hwnd, UINT message,
             RemoveMenu(hmenuTray, ID_APP_HIDE_ROOT, MF_BYCOMMAND);
         }
 
-        SetupRootMenu((unsigned long) hmenuTray);
+        SetupRootMenu(hmenuTray);
 
         /*
          * NOTE: This three-step procedure is required for
commit e716baedc4d8e52a60f43ef21aba771b340d8c8b
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Sat Mar 31 14:42:45 2012 +0100

    Move pseudoramiX code where it can be shared between Xwin and Xquartz
    
    Move pseudoramiX code to a separate top-level directory.  Link Xwin and Xquartz
    with libPseudoramiX
    
    I'm not sure moving this to a top-level directory is appropriate, but I'm not
    sure where else it fits.
    
    Future work: pseudoramiX can probably be consolidated with the rrxinerama code
    (which I think provides fake xinerama data when real XINERAMA is disabled and we
    only have one screen)
    
    v2: fix distcheck
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/Makefile.am b/Makefile.am
index 9a62853..7be4271 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -27,6 +27,7 @@ SUBDIRS = \
 	Xext \
 	miext \
 	os \
+	pseudoramiX \
 	randr \
 	render  \
 	Xi \
@@ -77,6 +78,7 @@ DIST_SUBDIRS = \
 	Xext \
 	miext \
 	os \
+	pseudoramiX \
 	randr \
 	render  \
 	Xi \
diff --git a/configure.ac b/configure.ac
index d27ca23..225b70f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2256,6 +2256,7 @@ miext/damage/Makefile
 miext/shadow/Makefile
 miext/rootless/Makefile
 os/Makefile
+pseudoramiX/Makefile
 randr/Makefile
 render/Makefile
 xkb/Makefile
diff --git a/hw/xquartz/Makefile.am b/hw/xquartz/Makefile.am
index a7cc012..2e894d7 100644
--- a/hw/xquartz/Makefile.am
+++ b/hw/xquartz/Makefile.am
@@ -28,7 +28,6 @@ libXquartz_la_SOURCES = \
 	darwinEvents.c \
 	darwinXinput.c \
 	keysym2ucs.c \
-	pseudoramiX.c \
 	quartz.c \
 	quartzCocoa.m \
 	quartzKeyboard.c \
@@ -36,6 +35,8 @@ libXquartz_la_SOURCES = \
 	quartzRandR.c \
 	console_redirect.c
 
+libXquartz_la_LIBADD = $(top_builddir)/pseudoramiX/libPseudoramiX.la
+
 EXTRA_DIST = \
 	X11Application.h \
 	X11Controller.h \
@@ -44,7 +45,6 @@ EXTRA_DIST = \
 	darwinfb.h \
 	darwinEvents.h \
 	keysym2ucs.h \
-	pseudoramiX.h \
 	quartz.h \
 	quartzCommon.h \
 	quartzKeyboard.h \
diff --git a/hw/xquartz/pseudoramiX.c b/hw/xquartz/pseudoramiX.c
deleted file mode 100644
index 23dbc73..0000000
--- a/hw/xquartz/pseudoramiX.c
+++ /dev/null
@@ -1,516 +0,0 @@
-/*
- * Minimal implementation of PanoramiX/Xinerama
- *
- * This is used in rootless mode where the underlying window server
- * already provides an abstracted view of multiple screens as one
- * large screen area.
- *
- * This code is largely based on panoramiX.c, which contains the
- * following copyright notice:
- */
-/*****************************************************************
-   Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
-   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.
-
-   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
-   DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
-   BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
-   shall not be used in advertising or otherwise to promote the sale, use or other
-   dealings in this Software without prior written authorization from Digital
-   Equipment Corporation.
- ******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "pseudoramiX.h"
-#include "extnsionst.h"
-#include "extinit.h"
-#include "dixstruct.h"
-#include "window.h"
-#include <X11/extensions/panoramiXproto.h>
-#include "globals.h"
-
-#define TRACE PseudoramiXTrace("TRACE " __FILE__ ":%s",__FUNCTION__)
-#define DEBUG_LOG PseudoramiXDebug
-
-Bool noPseudoramiXExtension = FALSE;
-
-extern int
-ProcPanoramiXQueryVersion(ClientPtr client);
-
-static void
-PseudoramiXResetProc(ExtensionEntry *extEntry);
-
-static int
-ProcPseudoramiXQueryVersion(ClientPtr client);
-static int
-ProcPseudoramiXGetState(ClientPtr client);
-static int
-ProcPseudoramiXGetScreenCount(ClientPtr client);
-static int
-ProcPseudoramiXGetScreenSize(ClientPtr client);
-static int
-ProcPseudoramiXIsActive(ClientPtr client);
-static int
-ProcPseudoramiXQueryScreens(ClientPtr client);
-static int
-ProcPseudoramiXDispatch(ClientPtr client);
-
-static int
-SProcPseudoramiXQueryVersion(ClientPtr client);
-static int
-SProcPseudoramiXGetState(ClientPtr client);
-static int
-SProcPseudoramiXGetScreenCount(ClientPtr client);
-static int
-SProcPseudoramiXGetScreenSize(ClientPtr client);
-static int
-SProcPseudoramiXIsActive(ClientPtr client);
-static int
-SProcPseudoramiXQueryScreens(ClientPtr client);
-static int
-SProcPseudoramiXDispatch(ClientPtr client);
-
-typedef struct {
-    int x;
-    int y;
-    int w;
-    int h;
-} PseudoramiXScreenRec;
-
-static PseudoramiXScreenRec *pseudoramiXScreens = NULL;
-static int pseudoramiXScreensAllocated = 0;
-static int pseudoramiXNumScreens = 0;
-static unsigned long pseudoramiXGeneration = 0;
-
-static void
-PseudoramiXTrace(const char *format, ...)
-{
-    va_list ap;
-
-    va_start(ap, format);
-    LogVMessageVerb(X_NONE, 10, format, ap);
-    va_end(ap);
-}
-
-static void
-PseudoramiXDebug(const char *format, ...)
-{
-    va_list ap;
-
-    va_start(ap, format);
-    LogVMessageVerb(X_NONE, 3, format, ap);
-    va_end(ap);
-}
-
-// Add a PseudoramiX screen.
-// The rest of the X server will know nothing about this screen.
-// Can be called before or after extension init.
-// Screens must be re-added once per generation.
-void
-PseudoramiXAddScreen(int x, int y, int w, int h)
-{
-    PseudoramiXScreenRec *s;
-
-    if (noPseudoramiXExtension) return;
-
-    if (pseudoramiXNumScreens == pseudoramiXScreensAllocated) {
-        pseudoramiXScreensAllocated += pseudoramiXScreensAllocated + 1;
-        pseudoramiXScreens = realloc(pseudoramiXScreens,
-                                     pseudoramiXScreensAllocated *
-                                     sizeof(PseudoramiXScreenRec));
-    }
-
-    DEBUG_LOG("x: %d, y: %d, w: %d, h: %d\n", x, y, w, h);
-
-    s = &pseudoramiXScreens[pseudoramiXNumScreens++];
-    s->x = x;
-    s->y = y;
-    s->w = w;
-    s->h = h;
-}
-
-// Initialize PseudoramiX.
-// Copied from PanoramiXExtensionInit
-void
-PseudoramiXExtensionInit(void)
-{
-    Bool success = FALSE;
-    ExtensionEntry      *extEntry;
-
-    if (noPseudoramiXExtension) return;
-
-    TRACE;
-
-    /* Even with only one screen we need to enable PseudoramiX to allow
-       dynamic screen configuration changes. */
-#if 0
-    if (pseudoramiXNumScreens == 1) {
-        // Only one screen - disable Xinerama extension.
-        noPseudoramiXExtension = TRUE;
-        return;
-    }
-#endif
-
-    if (pseudoramiXGeneration != serverGeneration) {
-        extEntry = AddExtension(PANORAMIX_PROTOCOL_NAME, 0, 0,
-                                ProcPseudoramiXDispatch,
-                                SProcPseudoramiXDispatch,
-                                PseudoramiXResetProc,
-                                StandardMinorOpcode);
-        if (!extEntry) {
-            ErrorF("PseudoramiXExtensionInit(): AddExtension failed\n");
-        }
-        else {
-            pseudoramiXGeneration = serverGeneration;
-            success = TRUE;
-        }
-    }
-
-    if (!success) {
-        ErrorF("%s Extension (PseudoramiX) failed to initialize\n",
-               PANORAMIX_PROTOCOL_NAME);
-        return;
-    }
-}
-
-void
-PseudoramiXResetScreens(void)
-{
-    TRACE;
-
-    pseudoramiXNumScreens = 0;
-}
-
-static void
-PseudoramiXResetProc(ExtensionEntry *extEntry)
-{
-    TRACE;
-
-    PseudoramiXResetScreens();
-}
-
-// was PanoramiX
-static int
-ProcPseudoramiXQueryVersion(ClientPtr client)
-{
-    TRACE;
-
-    return ProcPanoramiXQueryVersion(client);
-}
-
-// was PanoramiX
-static int
-ProcPseudoramiXGetState(ClientPtr client)
-{
-    REQUEST(xPanoramiXGetStateReq);
-    WindowPtr pWin;
-    xPanoramiXGetStateReply rep;
-    register int rc;
-
-    TRACE;
-
-    REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
-    rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
-    if (rc != Success)
-        return rc;
-
-    rep.type = X_Reply;
-    rep.length = 0;
-    rep.sequenceNumber = client->sequence;
-    rep.state = !noPseudoramiXExtension;
-    rep.window = stuff->window;
-    if (client->swapped) {
-        swaps(&rep.sequenceNumber);
-        swapl(&rep.length);
-        swapl(&rep.window);
-    }
-    WriteToClient(client, sizeof(xPanoramiXGetStateReply),&rep);
-    return Success;
-}
-
-// was PanoramiX
-static int
-ProcPseudoramiXGetScreenCount(ClientPtr client)
-{
-    REQUEST(xPanoramiXGetScreenCountReq);
-    WindowPtr pWin;
-    xPanoramiXGetScreenCountReply rep;
-    register int rc;
-
-    TRACE;
-
-    REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
-    rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
-    if (rc != Success)
-        return rc;
-
-    rep.type = X_Reply;
-    rep.length = 0;
-    rep.sequenceNumber = client->sequence;
-    rep.ScreenCount = pseudoramiXNumScreens;
-    rep.window = stuff->window;
-    if (client->swapped) {
-        swaps(&rep.sequenceNumber);
-        swapl(&rep.length);
-        swapl(&rep.window);
-    }
-    WriteToClient(client, sizeof(xPanoramiXGetScreenCountReply),&rep);
-    return Success;
-}
-
-// was PanoramiX
-static int
-ProcPseudoramiXGetScreenSize(ClientPtr client)
-{
-    REQUEST(xPanoramiXGetScreenSizeReq);
-    WindowPtr pWin;
-    xPanoramiXGetScreenSizeReply rep;
-    register int rc;
-
-    TRACE;
-
-    if (stuff->screen >= pseudoramiXNumScreens)
-      return BadMatch;
-
-    REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
-    rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
-    if (rc != Success)
-        return rc;
-
-    rep.type = X_Reply;
-    rep.length = 0;
-    rep.sequenceNumber = client->sequence;
-    /* screen dimensions */
-    rep.width = pseudoramiXScreens[stuff->screen].w;
-    // was screenInfo.screens[stuff->screen]->width;
-    rep.height = pseudoramiXScreens[stuff->screen].h;
-    // was screenInfo.screens[stuff->screen]->height;
-    rep.window = stuff->window;
-    rep.screen = stuff->screen;
-    if (client->swapped) {
-        swaps(&rep.sequenceNumber);
-        swapl(&rep.length);
-        swapl(&rep.width);
-        swapl(&rep.height);
-        swapl(&rep.window);
-        swapl(&rep.screen);
-    }
-    WriteToClient(client, sizeof(xPanoramiXGetScreenSizeReply),&rep);
-    return Success;
-}
-
-// was Xinerama
-static int
-ProcPseudoramiXIsActive(ClientPtr client)
-{
-    /* REQUEST(xXineramaIsActiveReq); */
-    xXineramaIsActiveReply rep;
-
-    TRACE;
-
-    REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
-
-    rep.type = X_Reply;
-    rep.length = 0;
-    rep.sequenceNumber = client->sequence;
-    rep.state = !noPseudoramiXExtension;
-    if (client->swapped) {
-        swaps(&rep.sequenceNumber);
-        swapl(&rep.length);
-        swapl(&rep.state);
-    }
-    WriteToClient(client, sizeof(xXineramaIsActiveReply),&rep);
-    return Success;
-}
-
-// was Xinerama
-static int
-ProcPseudoramiXQueryScreens(ClientPtr client)
-{
-    /* REQUEST(xXineramaQueryScreensReq); */
-    xXineramaQueryScreensReply rep;
-
-    DEBUG_LOG("noPseudoramiXExtension=%d, pseudoramiXNumScreens=%d\n",
-              noPseudoramiXExtension,
-              pseudoramiXNumScreens);
-
-    REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
-
-    rep.type = X_Reply;
-    rep.sequenceNumber = client->sequence;
-    rep.number = noPseudoramiXExtension ? 0 : pseudoramiXNumScreens;
-    rep.length = bytes_to_int32(rep.number * sz_XineramaScreenInfo);
-    if (client->swapped) {
-        swaps(&rep.sequenceNumber);
-        swapl(&rep.length);
-        swapl(&rep.number);
-    }
-    WriteToClient(client, sizeof(xXineramaQueryScreensReply),&rep);
-
-    if (!noPseudoramiXExtension) {
-        xXineramaScreenInfo scratch;
-        int i;
-
-        for (i = 0; i < pseudoramiXNumScreens; i++) {
-            scratch.x_org = pseudoramiXScreens[i].x;
-            scratch.y_org = pseudoramiXScreens[i].y;
-            scratch.width = pseudoramiXScreens[i].w;
-            scratch.height = pseudoramiXScreens[i].h;
-
-            if (client->swapped) {
-                swaps(&scratch.x_org);
-                swaps(&scratch.y_org);
-                swaps(&scratch.width);
-                swaps(&scratch.height);
-            }
-            WriteToClient(client, sz_XineramaScreenInfo,&scratch);
-        }
-    }
-
-    return Success;
-}
-
-// was PanoramiX
-static int
-ProcPseudoramiXDispatch(ClientPtr client)
-{
-    REQUEST(xReq);
-    TRACE;
-    switch (stuff->data) {
-    case X_PanoramiXQueryVersion:
-        return ProcPseudoramiXQueryVersion(client);
-
-    case X_PanoramiXGetState:
-        return ProcPseudoramiXGetState(client);
-
-    case X_PanoramiXGetScreenCount:
-        return ProcPseudoramiXGetScreenCount(client);
-
-    case X_PanoramiXGetScreenSize:
-        return ProcPseudoramiXGetScreenSize(client);
-
-    case X_XineramaIsActive:
-        return ProcPseudoramiXIsActive(client);
-
-    case X_XineramaQueryScreens:
-        return ProcPseudoramiXQueryScreens(client);
-    }
-    return BadRequest;
-}
-
-static int
-SProcPseudoramiXQueryVersion(ClientPtr client)
-{
-    REQUEST(xPanoramiXQueryVersionReq);
-
-    TRACE;
-
-    swaps(&stuff->length);
-    REQUEST_SIZE_MATCH(xPanoramiXQueryVersionReq);
-    return ProcPseudoramiXQueryVersion(client);
-}
-
-static int
-SProcPseudoramiXGetState(ClientPtr client)
-{
-    REQUEST(xPanoramiXGetStateReq);
-
-    TRACE;
-
-    swaps(&stuff->length);
-    REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
-    return ProcPseudoramiXGetState(client);
-}
-
-static int
-SProcPseudoramiXGetScreenCount(ClientPtr client)
-{
-    REQUEST(xPanoramiXGetScreenCountReq);
-
-    TRACE;
-
-    swaps(&stuff->length);
-    REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
-    return ProcPseudoramiXGetScreenCount(client);
-}
-
-static int
-SProcPseudoramiXGetScreenSize(ClientPtr client)
-{
-    REQUEST(xPanoramiXGetScreenSizeReq);
-
-    TRACE;
-
-    swaps(&stuff->length);
-    REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
-    return ProcPseudoramiXGetScreenSize(client);
-}
-
-static int
-SProcPseudoramiXIsActive(ClientPtr client)
-{
-    REQUEST(xXineramaIsActiveReq);
-
-    TRACE;
-
-    swaps(&stuff->length);
-    REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
-    return ProcPseudoramiXIsActive(client);
-}
-
-static int
-SProcPseudoramiXQueryScreens(ClientPtr client)
-{
-    REQUEST(xXineramaQueryScreensReq);
-
-    TRACE;
-
-    swaps(&stuff->length);
-    REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
-    return ProcPseudoramiXQueryScreens(client);
-}
-
-static int
-SProcPseudoramiXDispatch(ClientPtr client)
-{
-    REQUEST(xReq);
-
-    TRACE;
-
-    switch (stuff->data) {
-    case X_PanoramiXQueryVersion:
-        return SProcPseudoramiXQueryVersion(client);
-
-    case X_PanoramiXGetState:
-        return SProcPseudoramiXGetState(client);
-
-    case X_PanoramiXGetScreenCount:
-        return SProcPseudoramiXGetScreenCount(client);
-
-    case X_PanoramiXGetScreenSize:
-        return SProcPseudoramiXGetScreenSize(client);
-
-    case X_XineramaIsActive:
-        return SProcPseudoramiXIsActive(client);
-
-    case X_XineramaQueryScreens:
-        return SProcPseudoramiXQueryScreens(client);
-    }
-    return BadRequest;
-}
diff --git a/hw/xquartz/pseudoramiX.h b/hw/xquartz/pseudoramiX.h
deleted file mode 100644
index f063919..0000000
--- a/hw/xquartz/pseudoramiX.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
- * Minimal implementation of PanoramiX/Xinerama
- */
-
-extern int noPseudoramiXExtension;
-
-void
-PseudoramiXAddScreen(int x, int y, int w, int h);
-void
-PseudoramiXResetScreens(void);
diff --git a/hw/xwin/Makefile.am b/hw/xwin/Makefile.am
index 831e7dc..c700695 100644
--- a/hw/xwin/Makefile.am
+++ b/hw/xwin/Makefile.am
@@ -153,6 +153,7 @@ XWin_SOURCES = $(SRCS)
 AM_CPPFLAGS = -I$(top_srcdir)/miext/rootless
 
 XWIN_SYS_LIBS += -ldxguid
+XWIN_LIBS += 	$(top_builddir)/pseudoramiX/libPseudoramiX.la
 
 XWin_DEPENDENCIES = $(MULTIWINDOWEXTWM_LIBS) $(XWIN_GLX_LIBS) $(XWIN_LIBS) $(XSERVER_LIBS)
 XWin_LDADD = $(MULTIWINDOW_LIBS) $(MULTIWINDOWEXTWM_LIBS) $(XWIN_GLX_LIBS) $(XWIN_GLX_LINK_FLAGS) $(XWIN_LIBS) $(MAIN_LIB) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) $(XWIN_SYS_LIBS)
diff --git a/pseudoramiX/Makefile.am b/pseudoramiX/Makefile.am
new file mode 100644
index 0000000..17b664b
--- /dev/null
+++ b/pseudoramiX/Makefile.am
@@ -0,0 +1,7 @@
+# Fake Xinerama extension
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+noinst_LTLIBRARIES = libPseudoramiX.la
+
+libPseudoramiX_la_SOURCES = pseudoramiX.c pseudoramiX.h
diff --git a/pseudoramiX/pseudoramiX.c b/pseudoramiX/pseudoramiX.c
new file mode 100644
index 0000000..23dbc73
--- /dev/null
+++ b/pseudoramiX/pseudoramiX.c
@@ -0,0 +1,516 @@
+/*
+ * Minimal implementation of PanoramiX/Xinerama
+ *
+ * This is used in rootless mode where the underlying window server
+ * already provides an abstracted view of multiple screens as one
+ * large screen area.
+ *
+ * This code is largely based on panoramiX.c, which contains the
+ * following copyright notice:
+ */
+/*****************************************************************
+   Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
+   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.
+
+   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
+   DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
+   BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
+   shall not be used in advertising or otherwise to promote the sale, use or other
+   dealings in this Software without prior written authorization from Digital
+   Equipment Corporation.
+ ******************************************************************/
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "pseudoramiX.h"
+#include "extnsionst.h"
+#include "extinit.h"
+#include "dixstruct.h"
+#include "window.h"
+#include <X11/extensions/panoramiXproto.h>
+#include "globals.h"
+
+#define TRACE PseudoramiXTrace("TRACE " __FILE__ ":%s",__FUNCTION__)
+#define DEBUG_LOG PseudoramiXDebug
+
+Bool noPseudoramiXExtension = FALSE;
+
+extern int
+ProcPanoramiXQueryVersion(ClientPtr client);
+
+static void
+PseudoramiXResetProc(ExtensionEntry *extEntry);
+
+static int
+ProcPseudoramiXQueryVersion(ClientPtr client);
+static int
+ProcPseudoramiXGetState(ClientPtr client);
+static int
+ProcPseudoramiXGetScreenCount(ClientPtr client);
+static int
+ProcPseudoramiXGetScreenSize(ClientPtr client);
+static int
+ProcPseudoramiXIsActive(ClientPtr client);
+static int
+ProcPseudoramiXQueryScreens(ClientPtr client);
+static int
+ProcPseudoramiXDispatch(ClientPtr client);
+
+static int
+SProcPseudoramiXQueryVersion(ClientPtr client);
+static int
+SProcPseudoramiXGetState(ClientPtr client);
+static int
+SProcPseudoramiXGetScreenCount(ClientPtr client);
+static int
+SProcPseudoramiXGetScreenSize(ClientPtr client);
+static int
+SProcPseudoramiXIsActive(ClientPtr client);
+static int
+SProcPseudoramiXQueryScreens(ClientPtr client);
+static int
+SProcPseudoramiXDispatch(ClientPtr client);
+
+typedef struct {
+    int x;
+    int y;
+    int w;
+    int h;
+} PseudoramiXScreenRec;
+
+static PseudoramiXScreenRec *pseudoramiXScreens = NULL;
+static int pseudoramiXScreensAllocated = 0;
+static int pseudoramiXNumScreens = 0;
+static unsigned long pseudoramiXGeneration = 0;
+
+static void
+PseudoramiXTrace(const char *format, ...)
+{
+    va_list ap;
+
+    va_start(ap, format);
+    LogVMessageVerb(X_NONE, 10, format, ap);
+    va_end(ap);
+}
+
+static void
+PseudoramiXDebug(const char *format, ...)
+{
+    va_list ap;
+
+    va_start(ap, format);
+    LogVMessageVerb(X_NONE, 3, format, ap);
+    va_end(ap);
+}
+
+// Add a PseudoramiX screen.
+// The rest of the X server will know nothing about this screen.
+// Can be called before or after extension init.
+// Screens must be re-added once per generation.
+void
+PseudoramiXAddScreen(int x, int y, int w, int h)
+{
+    PseudoramiXScreenRec *s;
+
+    if (noPseudoramiXExtension) return;
+
+    if (pseudoramiXNumScreens == pseudoramiXScreensAllocated) {
+        pseudoramiXScreensAllocated += pseudoramiXScreensAllocated + 1;
+        pseudoramiXScreens = realloc(pseudoramiXScreens,
+                                     pseudoramiXScreensAllocated *
+                                     sizeof(PseudoramiXScreenRec));
+    }
+
+    DEBUG_LOG("x: %d, y: %d, w: %d, h: %d\n", x, y, w, h);
+
+    s = &pseudoramiXScreens[pseudoramiXNumScreens++];
+    s->x = x;
+    s->y = y;
+    s->w = w;
+    s->h = h;
+}
+
+// Initialize PseudoramiX.
+// Copied from PanoramiXExtensionInit
+void
+PseudoramiXExtensionInit(void)
+{
+    Bool success = FALSE;
+    ExtensionEntry      *extEntry;
+
+    if (noPseudoramiXExtension) return;
+
+    TRACE;
+
+    /* Even with only one screen we need to enable PseudoramiX to allow
+       dynamic screen configuration changes. */
+#if 0
+    if (pseudoramiXNumScreens == 1) {
+        // Only one screen - disable Xinerama extension.
+        noPseudoramiXExtension = TRUE;
+        return;
+    }
+#endif
+
+    if (pseudoramiXGeneration != serverGeneration) {
+        extEntry = AddExtension(PANORAMIX_PROTOCOL_NAME, 0, 0,
+                                ProcPseudoramiXDispatch,
+                                SProcPseudoramiXDispatch,
+                                PseudoramiXResetProc,
+                                StandardMinorOpcode);
+        if (!extEntry) {
+            ErrorF("PseudoramiXExtensionInit(): AddExtension failed\n");
+        }
+        else {
+            pseudoramiXGeneration = serverGeneration;
+            success = TRUE;
+        }
+    }
+
+    if (!success) {
+        ErrorF("%s Extension (PseudoramiX) failed to initialize\n",
+               PANORAMIX_PROTOCOL_NAME);
+        return;
+    }
+}
+
+void
+PseudoramiXResetScreens(void)
+{
+    TRACE;
+
+    pseudoramiXNumScreens = 0;
+}
+
+static void
+PseudoramiXResetProc(ExtensionEntry *extEntry)
+{
+    TRACE;
+
+    PseudoramiXResetScreens();
+}
+
+// was PanoramiX
+static int
+ProcPseudoramiXQueryVersion(ClientPtr client)
+{
+    TRACE;
+
+    return ProcPanoramiXQueryVersion(client);
+}
+
+// was PanoramiX
+static int
+ProcPseudoramiXGetState(ClientPtr client)
+{
+    REQUEST(xPanoramiXGetStateReq);
+    WindowPtr pWin;
+    xPanoramiXGetStateReply rep;
+    register int rc;
+
+    TRACE;
+
+    REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
+    rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
+    if (rc != Success)
+        return rc;
+
+    rep.type = X_Reply;
+    rep.length = 0;
+    rep.sequenceNumber = client->sequence;
+    rep.state = !noPseudoramiXExtension;
+    rep.window = stuff->window;
+    if (client->swapped) {
+        swaps(&rep.sequenceNumber);
+        swapl(&rep.length);
+        swapl(&rep.window);
+    }
+    WriteToClient(client, sizeof(xPanoramiXGetStateReply),&rep);
+    return Success;
+}
+
+// was PanoramiX
+static int
+ProcPseudoramiXGetScreenCount(ClientPtr client)
+{
+    REQUEST(xPanoramiXGetScreenCountReq);
+    WindowPtr pWin;
+    xPanoramiXGetScreenCountReply rep;
+    register int rc;
+
+    TRACE;
+
+    REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
+    rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
+    if (rc != Success)
+        return rc;
+
+    rep.type = X_Reply;
+    rep.length = 0;
+    rep.sequenceNumber = client->sequence;
+    rep.ScreenCount = pseudoramiXNumScreens;
+    rep.window = stuff->window;
+    if (client->swapped) {
+        swaps(&rep.sequenceNumber);
+        swapl(&rep.length);
+        swapl(&rep.window);
+    }
+    WriteToClient(client, sizeof(xPanoramiXGetScreenCountReply),&rep);
+    return Success;
+}
+
+// was PanoramiX
+static int
+ProcPseudoramiXGetScreenSize(ClientPtr client)
+{
+    REQUEST(xPanoramiXGetScreenSizeReq);
+    WindowPtr pWin;
+    xPanoramiXGetScreenSizeReply rep;
+    register int rc;
+
+    TRACE;
+
+    if (stuff->screen >= pseudoramiXNumScreens)
+      return BadMatch;
+
+    REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
+    rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
+    if (rc != Success)
+        return rc;
+
+    rep.type = X_Reply;
+    rep.length = 0;
+    rep.sequenceNumber = client->sequence;
+    /* screen dimensions */
+    rep.width = pseudoramiXScreens[stuff->screen].w;
+    // was screenInfo.screens[stuff->screen]->width;
+    rep.height = pseudoramiXScreens[stuff->screen].h;
+    // was screenInfo.screens[stuff->screen]->height;
+    rep.window = stuff->window;
+    rep.screen = stuff->screen;
+    if (client->swapped) {
+        swaps(&rep.sequenceNumber);
+        swapl(&rep.length);
+        swapl(&rep.width);
+        swapl(&rep.height);
+        swapl(&rep.window);
+        swapl(&rep.screen);
+    }
+    WriteToClient(client, sizeof(xPanoramiXGetScreenSizeReply),&rep);
+    return Success;
+}
+
+// was Xinerama
+static int
+ProcPseudoramiXIsActive(ClientPtr client)
+{
+    /* REQUEST(xXineramaIsActiveReq); */
+    xXineramaIsActiveReply rep;
+
+    TRACE;
+
+    REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
+
+    rep.type = X_Reply;
+    rep.length = 0;
+    rep.sequenceNumber = client->sequence;
+    rep.state = !noPseudoramiXExtension;
+    if (client->swapped) {
+        swaps(&rep.sequenceNumber);
+        swapl(&rep.length);
+        swapl(&rep.state);
+    }
+    WriteToClient(client, sizeof(xXineramaIsActiveReply),&rep);
+    return Success;
+}
+
+// was Xinerama
+static int
+ProcPseudoramiXQueryScreens(ClientPtr client)
+{
+    /* REQUEST(xXineramaQueryScreensReq); */
+    xXineramaQueryScreensReply rep;
+
+    DEBUG_LOG("noPseudoramiXExtension=%d, pseudoramiXNumScreens=%d\n",
+              noPseudoramiXExtension,
+              pseudoramiXNumScreens);
+
+    REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
+
+    rep.type = X_Reply;
+    rep.sequenceNumber = client->sequence;
+    rep.number = noPseudoramiXExtension ? 0 : pseudoramiXNumScreens;
+    rep.length = bytes_to_int32(rep.number * sz_XineramaScreenInfo);
+    if (client->swapped) {
+        swaps(&rep.sequenceNumber);
+        swapl(&rep.length);
+        swapl(&rep.number);
+    }
+    WriteToClient(client, sizeof(xXineramaQueryScreensReply),&rep);
+
+    if (!noPseudoramiXExtension) {
+        xXineramaScreenInfo scratch;
+        int i;
+
+        for (i = 0; i < pseudoramiXNumScreens; i++) {
+            scratch.x_org = pseudoramiXScreens[i].x;
+            scratch.y_org = pseudoramiXScreens[i].y;
+            scratch.width = pseudoramiXScreens[i].w;
+            scratch.height = pseudoramiXScreens[i].h;
+
+            if (client->swapped) {
+                swaps(&scratch.x_org);
+                swaps(&scratch.y_org);
+                swaps(&scratch.width);
+                swaps(&scratch.height);
+            }
+            WriteToClient(client, sz_XineramaScreenInfo,&scratch);
+        }
+    }
+
+    return Success;
+}
+
+// was PanoramiX
+static int
+ProcPseudoramiXDispatch(ClientPtr client)
+{
+    REQUEST(xReq);
+    TRACE;
+    switch (stuff->data) {
+    case X_PanoramiXQueryVersion:
+        return ProcPseudoramiXQueryVersion(client);
+
+    case X_PanoramiXGetState:
+        return ProcPseudoramiXGetState(client);
+
+    case X_PanoramiXGetScreenCount:
+        return ProcPseudoramiXGetScreenCount(client);
+
+    case X_PanoramiXGetScreenSize:
+        return ProcPseudoramiXGetScreenSize(client);
+
+    case X_XineramaIsActive:
+        return ProcPseudoramiXIsActive(client);
+
+    case X_XineramaQueryScreens:
+        return ProcPseudoramiXQueryScreens(client);
+    }
+    return BadRequest;
+}
+
+static int
+SProcPseudoramiXQueryVersion(ClientPtr client)
+{
+    REQUEST(xPanoramiXQueryVersionReq);
+
+    TRACE;
+
+    swaps(&stuff->length);
+    REQUEST_SIZE_MATCH(xPanoramiXQueryVersionReq);
+    return ProcPseudoramiXQueryVersion(client);
+}
+
+static int
+SProcPseudoramiXGetState(ClientPtr client)
+{
+    REQUEST(xPanoramiXGetStateReq);
+
+    TRACE;
+
+    swaps(&stuff->length);
+    REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
+    return ProcPseudoramiXGetState(client);
+}
+
+static int
+SProcPseudoramiXGetScreenCount(ClientPtr client)
+{
+    REQUEST(xPanoramiXGetScreenCountReq);
+
+    TRACE;
+
+    swaps(&stuff->length);
+    REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
+    return ProcPseudoramiXGetScreenCount(client);
+}
+
+static int
+SProcPseudoramiXGetScreenSize(ClientPtr client)
+{
+    REQUEST(xPanoramiXGetScreenSizeReq);
+
+    TRACE;
+
+    swaps(&stuff->length);
+    REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
+    return ProcPseudoramiXGetScreenSize(client);
+}
+
+static int
+SProcPseudoramiXIsActive(ClientPtr client)
+{
+    REQUEST(xXineramaIsActiveReq);
+
+    TRACE;
+
+    swaps(&stuff->length);
+    REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
+    return ProcPseudoramiXIsActive(client);
+}
+
+static int
+SProcPseudoramiXQueryScreens(ClientPtr client)
+{
+    REQUEST(xXineramaQueryScreensReq);
+
+    TRACE;
+
+    swaps(&stuff->length);
+    REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
+    return ProcPseudoramiXQueryScreens(client);
+}
+
+static int
+SProcPseudoramiXDispatch(ClientPtr client)
+{
+    REQUEST(xReq);
+
+    TRACE;
+
+    switch (stuff->data) {
+    case X_PanoramiXQueryVersion:
+        return SProcPseudoramiXQueryVersion(client);
+
+    case X_PanoramiXGetState:
+        return SProcPseudoramiXGetState(client);
+
+    case X_PanoramiXGetScreenCount:
+        return SProcPseudoramiXGetScreenCount(client);
+
+    case X_PanoramiXGetScreenSize:
+        return SProcPseudoramiXGetScreenSize(client);
+
+    case X_XineramaIsActive:
+        return SProcPseudoramiXIsActive(client);
+
+    case X_XineramaQueryScreens:
+        return SProcPseudoramiXQueryScreens(client);
+    }
+    return BadRequest;
+}
diff --git a/pseudoramiX/pseudoramiX.h b/pseudoramiX/pseudoramiX.h
new file mode 100644
index 0000000..f063919
--- /dev/null
+++ b/pseudoramiX/pseudoramiX.h
@@ -0,0 +1,10 @@
+/*
+ * Minimal implementation of PanoramiX/Xinerama
+ */
+
+extern int noPseudoramiXExtension;
+
+void
+PseudoramiXAddScreen(int x, int y, int w, int h);
+void
+PseudoramiXResetScreens(void);
commit ce0217b98261dcf8b20cfb743831965dda1950ec
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Sat Aug 10 12:35:55 2013 +0100

    hw/xwin: Fix winglobals.h for MinGW64 build
    
    Include pthread.h in winglobals.h to fix build with latest MinGW64 headers
    
    In file included from
    winmultiwindowicons.c:47:0:
    winglobals.h:92:1: error: unknown type name ‘pthread_mutex_t’
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/hw/xwin/winglobals.h b/hw/xwin/winglobals.h
index e7e2f7e..4faba9e 100644
--- a/hw/xwin/winglobals.h
+++ b/hw/xwin/winglobals.h
@@ -30,6 +30,8 @@
 #include <xwin-config.h>
 #endif
 
+#include <pthread.h>
+
 /*
  * References to external symbols
  */
commit b27756dbe6a1be4633ec47a8fe92a4c217f68f93
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Sun Aug 11 12:15:11 2013 +0100

    hw/xwin: Fix inclusion of shlobj.h in MinGW64 build
    
    Fix build with latest MinGW64 headers by wrapping Status type in shlobj.h as well
    
    In file included from InitOutput.c:51:0:
    /usr/i686-w64-mingw32/sys-root/mingw/include/shlobj.h:1231:44: error: expected identifier or ‘(’ before ‘int’
    /usr/i686-w64-mingw32/sys-root/mingw/include/shlobj.h:1248:44: error: expected identifier or ‘(’ before ‘int’
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
    Reviewed-by: Marc Haesen <marha at users.sourceforge.net>

diff --git a/hw/xwin/InitOutput.c b/hw/xwin/InitOutput.c
index d6b5e4f..b05ca27 100644
--- a/hw/xwin/InitOutput.c
+++ b/hw/xwin/InitOutput.c
@@ -48,7 +48,11 @@ from The Open Group.
 #include "xkbsrv.h"
 #endif
 #ifdef RELOCATE_PROJECTROOT
+#pragma push_macro("Status")
+#undef Status
+#define Status wStatus
 #include <shlobj.h>
+#pragma pop_macro("Status")
 typedef WINAPI HRESULT(*SHGETFOLDERPATHPROC) (HWND hwndOwner,
                                               int nFolder,
                                               HANDLE hToken,


More information about the xorg-commit mailing list