firefox/libwebrtc-screen-cast-sync.patch

33249 lines
2.0 MiB

From cad16fafc28e9d505367e7830a74b2e78ff432ed Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 23 Nov 2022 15:18:43 +0100
Subject: Sync screen sharing code in WebRTC with upstream
diff --git a/dom/media/webrtc/moz.build b/dom/media/webrtc/moz.build
index a8ca8e5519..e2ee67ba35 100644
--- a/dom/media/webrtc/moz.build
+++ b/dom/media/webrtc/moz.build
@@ -85,6 +85,8 @@ if CONFIG["MOZ_WEBRTC_SIGNALING"]:
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
DIRS += ["/third_party/pipewire/libpipewire"]
+ DIRS += ["/third_party/drm/libdrm"]
+ DIRS += ["/third_party/gbm/libgbm"]
# Avoid warnings from third-party code that we can not modify.
if CONFIG["CC_TYPE"] == "clang-cl":
diff --git a/third_party/drm/README b/third_party/drm/README
new file mode 100644
index 0000000000..f68ed100bb
--- /dev/null
+++ b/third_party/drm/README
@@ -0,0 +1,4 @@
+Libdrm is a drm library wrapper needed to build and run Firefox with
+Pipewire support on Linux (https://gitlab.freedesktop.org/mesa/drm).
+
+libdrm directory stores headers of libdrm needed for build only.
diff --git a/third_party/drm/drm/drm.h b/third_party/drm/drm/drm.h
new file mode 100644
index 0000000000..5e54c3aa4c
--- /dev/null
+++ b/third_party/drm/drm/drm.h
@@ -0,0 +1,1193 @@
+/*
+ * Header for the Direct Rendering Manager
+ *
+ * Author: Rickard E. (Rik) Faith <faith@valinux.com>
+ *
+ * Acknowledgments:
+ * Dec 1999, Richard Henderson <rth@twiddle.net>, move to generic cmpxchg.
+ */
+
+/*
+ * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
+ * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
+ * All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * VA LINUX SYSTEMS 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.
+ */
+
+#ifndef _DRM_H_
+#define _DRM_H_
+
+#if defined(__linux__)
+
+#include <linux/types.h>
+#include <asm/ioctl.h>
+typedef unsigned int drm_handle_t;
+
+#else /* One of the BSDs */
+
+#include <stdint.h>
+#include <sys/ioccom.h>
+#include <sys/types.h>
+typedef int8_t __s8;
+typedef uint8_t __u8;
+typedef int16_t __s16;
+typedef uint16_t __u16;
+typedef int32_t __s32;
+typedef uint32_t __u32;
+typedef int64_t __s64;
+typedef uint64_t __u64;
+typedef size_t __kernel_size_t;
+typedef unsigned long drm_handle_t;
+
+#endif
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#define DRM_NAME "drm" /**< Name in kernel, /dev, and /proc */
+#define DRM_MIN_ORDER 5 /**< At least 2^5 bytes = 32 bytes */
+#define DRM_MAX_ORDER 22 /**< Up to 2^22 bytes = 4MB */
+#define DRM_RAM_PERCENT 10 /**< How much system ram can we lock? */
+
+#define _DRM_LOCK_HELD 0x80000000U /**< Hardware lock is held */
+#define _DRM_LOCK_CONT 0x40000000U /**< Hardware lock is contended */
+#define _DRM_LOCK_IS_HELD(lock) ((lock) & _DRM_LOCK_HELD)
+#define _DRM_LOCK_IS_CONT(lock) ((lock) & _DRM_LOCK_CONT)
+#define _DRM_LOCKING_CONTEXT(lock) ((lock) & ~(_DRM_LOCK_HELD|_DRM_LOCK_CONT))
+
+typedef unsigned int drm_context_t;
+typedef unsigned int drm_drawable_t;
+typedef unsigned int drm_magic_t;
+
+/*
+ * Cliprect.
+ *
+ * \warning: If you change this structure, make sure you change
+ * XF86DRIClipRectRec in the server as well
+ *
+ * \note KW: Actually it's illegal to change either for
+ * backwards-compatibility reasons.
+ */
+struct drm_clip_rect {
+ unsigned short x1;
+ unsigned short y1;
+ unsigned short x2;
+ unsigned short y2;
+};
+
+/*
+ * Drawable information.
+ */
+struct drm_drawable_info {
+ unsigned int num_rects;
+ struct drm_clip_rect *rects;
+};
+
+/*
+ * Texture region,
+ */
+struct drm_tex_region {
+ unsigned char next;
+ unsigned char prev;
+ unsigned char in_use;
+ unsigned char padding;
+ unsigned int age;
+};
+
+/*
+ * Hardware lock.
+ *
+ * The lock structure is a simple cache-line aligned integer. To avoid
+ * processor bus contention on a multiprocessor system, there should not be any
+ * other data stored in the same cache line.
+ */
+struct drm_hw_lock {
+ __volatile__ unsigned int lock; /**< lock variable */
+ char padding[60]; /**< Pad to cache line */
+};
+
+/*
+ * DRM_IOCTL_VERSION ioctl argument type.
+ *
+ * \sa drmGetVersion().
+ */
+struct drm_version {
+ int version_major; /**< Major version */
+ int version_minor; /**< Minor version */
+ int version_patchlevel; /**< Patch level */
+ __kernel_size_t name_len; /**< Length of name buffer */
+ char *name; /**< Name of driver */
+ __kernel_size_t date_len; /**< Length of date buffer */
+ char *date; /**< User-space buffer to hold date */
+ __kernel_size_t desc_len; /**< Length of desc buffer */
+ char *desc; /**< User-space buffer to hold desc */
+};
+
+/*
+ * DRM_IOCTL_GET_UNIQUE ioctl argument type.
+ *
+ * \sa drmGetBusid() and drmSetBusId().
+ */
+struct drm_unique {
+ __kernel_size_t unique_len; /**< Length of unique */
+ char *unique; /**< Unique name for driver instantiation */
+};
+
+struct drm_list {
+ int count; /**< Length of user-space structures */
+ struct drm_version *version;
+};
+
+struct drm_block {
+ int unused;
+};
+
+/*
+ * DRM_IOCTL_CONTROL ioctl argument type.
+ *
+ * \sa drmCtlInstHandler() and drmCtlUninstHandler().
+ */
+struct drm_control {
+ enum {
+ DRM_ADD_COMMAND,
+ DRM_RM_COMMAND,
+ DRM_INST_HANDLER,
+ DRM_UNINST_HANDLER
+ } func;
+ int irq;
+};
+
+/*
+ * Type of memory to map.
+ */
+enum drm_map_type {
+ _DRM_FRAME_BUFFER = 0, /**< WC (no caching), no core dump */
+ _DRM_REGISTERS = 1, /**< no caching, no core dump */
+ _DRM_SHM = 2, /**< shared, cached */
+ _DRM_AGP = 3, /**< AGP/GART */
+ _DRM_SCATTER_GATHER = 4, /**< Scatter/gather memory for PCI DMA */
+ _DRM_CONSISTENT = 5 /**< Consistent memory for PCI DMA */
+};
+
+/*
+ * Memory mapping flags.
+ */
+enum drm_map_flags {
+ _DRM_RESTRICTED = 0x01, /**< Cannot be mapped to user-virtual */
+ _DRM_READ_ONLY = 0x02,
+ _DRM_LOCKED = 0x04, /**< shared, cached, locked */
+ _DRM_KERNEL = 0x08, /**< kernel requires access */
+ _DRM_WRITE_COMBINING = 0x10, /**< use write-combining if available */
+ _DRM_CONTAINS_LOCK = 0x20, /**< SHM page that contains lock */
+ _DRM_REMOVABLE = 0x40, /**< Removable mapping */
+ _DRM_DRIVER = 0x80 /**< Managed by driver */
+};
+
+struct drm_ctx_priv_map {
+ unsigned int ctx_id; /**< Context requesting private mapping */
+ void *handle; /**< Handle of map */
+};
+
+/*
+ * DRM_IOCTL_GET_MAP, DRM_IOCTL_ADD_MAP and DRM_IOCTL_RM_MAP ioctls
+ * argument type.
+ *
+ * \sa drmAddMap().
+ */
+struct drm_map {
+ unsigned long offset; /**< Requested physical address (0 for SAREA)*/
+ unsigned long size; /**< Requested physical size (bytes) */
+ enum drm_map_type type; /**< Type of memory to map */
+ enum drm_map_flags flags; /**< Flags */
+ void *handle; /**< User-space: "Handle" to pass to mmap() */
+ /**< Kernel-space: kernel-virtual address */
+ int mtrr; /**< MTRR slot used */
+ /* Private data */
+};
+
+/*
+ * DRM_IOCTL_GET_CLIENT ioctl argument type.
+ */
+struct drm_client {
+ int idx; /**< Which client desired? */
+ int auth; /**< Is client authenticated? */
+ unsigned long pid; /**< Process ID */
+ unsigned long uid; /**< User ID */
+ unsigned long magic; /**< Magic */
+ unsigned long iocs; /**< Ioctl count */
+};
+
+enum drm_stat_type {
+ _DRM_STAT_LOCK,
+ _DRM_STAT_OPENS,
+ _DRM_STAT_CLOSES,
+ _DRM_STAT_IOCTLS,
+ _DRM_STAT_LOCKS,
+ _DRM_STAT_UNLOCKS,
+ _DRM_STAT_VALUE, /**< Generic value */
+ _DRM_STAT_BYTE, /**< Generic byte counter (1024bytes/K) */
+ _DRM_STAT_COUNT, /**< Generic non-byte counter (1000/k) */
+
+ _DRM_STAT_IRQ, /**< IRQ */
+ _DRM_STAT_PRIMARY, /**< Primary DMA bytes */
+ _DRM_STAT_SECONDARY, /**< Secondary DMA bytes */
+ _DRM_STAT_DMA, /**< DMA */
+ _DRM_STAT_SPECIAL, /**< Special DMA (e.g., priority or polled) */
+ _DRM_STAT_MISSED /**< Missed DMA opportunity */
+ /* Add to the *END* of the list */
+};
+
+/*
+ * DRM_IOCTL_GET_STATS ioctl argument type.
+ */
+struct drm_stats {
+ unsigned long count;
+ struct {
+ unsigned long value;
+ enum drm_stat_type type;
+ } data[15];
+};
+
+/*
+ * Hardware locking flags.
+ */
+enum drm_lock_flags {
+ _DRM_LOCK_READY = 0x01, /**< Wait until hardware is ready for DMA */
+ _DRM_LOCK_QUIESCENT = 0x02, /**< Wait until hardware quiescent */
+ _DRM_LOCK_FLUSH = 0x04, /**< Flush this context's DMA queue first */
+ _DRM_LOCK_FLUSH_ALL = 0x08, /**< Flush all DMA queues first */
+ /* These *HALT* flags aren't supported yet
+ -- they will be used to support the
+ full-screen DGA-like mode. */
+ _DRM_HALT_ALL_QUEUES = 0x10, /**< Halt all current and future queues */
+ _DRM_HALT_CUR_QUEUES = 0x20 /**< Halt all current queues */
+};
+
+/*
+ * DRM_IOCTL_LOCK, DRM_IOCTL_UNLOCK and DRM_IOCTL_FINISH ioctl argument type.
+ *
+ * \sa drmGetLock() and drmUnlock().
+ */
+struct drm_lock {
+ int context;
+ enum drm_lock_flags flags;
+};
+
+/*
+ * DMA flags
+ *
+ * \warning
+ * These values \e must match xf86drm.h.
+ *
+ * \sa drm_dma.
+ */
+enum drm_dma_flags {
+ /* Flags for DMA buffer dispatch */
+ _DRM_DMA_BLOCK = 0x01, /**<
+ * Block until buffer dispatched.
+ *
+ * \note The buffer may not yet have
+ * been processed by the hardware --
+ * getting a hardware lock with the
+ * hardware quiescent will ensure
+ * that the buffer has been
+ * processed.
+ */
+ _DRM_DMA_WHILE_LOCKED = 0x02, /**< Dispatch while lock held */
+ _DRM_DMA_PRIORITY = 0x04, /**< High priority dispatch */
+
+ /* Flags for DMA buffer request */
+ _DRM_DMA_WAIT = 0x10, /**< Wait for free buffers */
+ _DRM_DMA_SMALLER_OK = 0x20, /**< Smaller-than-requested buffers OK */
+ _DRM_DMA_LARGER_OK = 0x40 /**< Larger-than-requested buffers OK */
+};
+
+/*
+ * DRM_IOCTL_ADD_BUFS and DRM_IOCTL_MARK_BUFS ioctl argument type.
+ *
+ * \sa drmAddBufs().
+ */
+struct drm_buf_desc {
+ int count; /**< Number of buffers of this size */
+ int size; /**< Size in bytes */
+ int low_mark; /**< Low water mark */
+ int high_mark; /**< High water mark */
+ enum {
+ _DRM_PAGE_ALIGN = 0x01, /**< Align on page boundaries for DMA */
+ _DRM_AGP_BUFFER = 0x02, /**< Buffer is in AGP space */
+ _DRM_SG_BUFFER = 0x04, /**< Scatter/gather memory buffer */
+ _DRM_FB_BUFFER = 0x08, /**< Buffer is in frame buffer */
+ _DRM_PCI_BUFFER_RO = 0x10 /**< Map PCI DMA buffer read-only */
+ } flags;
+ unsigned long agp_start; /**<
+ * Start address of where the AGP buffers are
+ * in the AGP aperture
+ */
+};
+
+/*
+ * DRM_IOCTL_INFO_BUFS ioctl argument type.
+ */
+struct drm_buf_info {
+ int count; /**< Entries in list */
+ struct drm_buf_desc *list;
+};
+
+/*
+ * DRM_IOCTL_FREE_BUFS ioctl argument type.
+ */
+struct drm_buf_free {
+ int count;
+ int *list;
+};
+
+/*
+ * Buffer information
+ *
+ * \sa drm_buf_map.
+ */
+struct drm_buf_pub {
+ int idx; /**< Index into the master buffer list */
+ int total; /**< Buffer size */
+ int used; /**< Amount of buffer in use (for DMA) */
+ void *address; /**< Address of buffer */
+};
+
+/*
+ * DRM_IOCTL_MAP_BUFS ioctl argument type.
+ */
+struct drm_buf_map {
+ int count; /**< Length of the buffer list */
+#ifdef __cplusplus
+ void *virt;
+#else
+ void *virtual; /**< Mmap'd area in user-virtual */
+#endif
+ struct drm_buf_pub *list; /**< Buffer information */
+};
+
+/*
+ * DRM_IOCTL_DMA ioctl argument type.
+ *
+ * Indices here refer to the offset into the buffer list in drm_buf_get.
+ *
+ * \sa drmDMA().
+ */
+struct drm_dma {
+ int context; /**< Context handle */
+ int send_count; /**< Number of buffers to send */
+ int *send_indices; /**< List of handles to buffers */
+ int *send_sizes; /**< Lengths of data to send */
+ enum drm_dma_flags flags; /**< Flags */
+ int request_count; /**< Number of buffers requested */
+ int request_size; /**< Desired size for buffers */
+ int *request_indices; /**< Buffer information */
+ int *request_sizes;
+ int granted_count; /**< Number of buffers granted */
+};
+
+enum drm_ctx_flags {
+ _DRM_CONTEXT_PRESERVED = 0x01,
+ _DRM_CONTEXT_2DONLY = 0x02
+};
+
+/*
+ * DRM_IOCTL_ADD_CTX ioctl argument type.
+ *
+ * \sa drmCreateContext() and drmDestroyContext().
+ */
+struct drm_ctx {
+ drm_context_t handle;
+ enum drm_ctx_flags flags;
+};
+
+/*
+ * DRM_IOCTL_RES_CTX ioctl argument type.
+ */
+struct drm_ctx_res {
+ int count;
+ struct drm_ctx *contexts;
+};
+
+/*
+ * DRM_IOCTL_ADD_DRAW and DRM_IOCTL_RM_DRAW ioctl argument type.
+ */
+struct drm_draw {
+ drm_drawable_t handle;
+};
+
+/*
+ * DRM_IOCTL_UPDATE_DRAW ioctl argument type.
+ */
+typedef enum {
+ DRM_DRAWABLE_CLIPRECTS
+} drm_drawable_info_type_t;
+
+struct drm_update_draw {
+ drm_drawable_t handle;
+ unsigned int type;
+ unsigned int num;
+ unsigned long long data;
+};
+
+/*
+ * DRM_IOCTL_GET_MAGIC and DRM_IOCTL_AUTH_MAGIC ioctl argument type.
+ */
+struct drm_auth {
+ drm_magic_t magic;
+};
+
+/*
+ * DRM_IOCTL_IRQ_BUSID ioctl argument type.
+ *
+ * \sa drmGetInterruptFromBusID().
+ */
+struct drm_irq_busid {
+ int irq; /**< IRQ number */
+ int busnum; /**< bus number */
+ int devnum; /**< device number */
+ int funcnum; /**< function number */
+};
+
+enum drm_vblank_seq_type {
+ _DRM_VBLANK_ABSOLUTE = 0x0, /**< Wait for specific vblank sequence number */
+ _DRM_VBLANK_RELATIVE = 0x1, /**< Wait for given number of vblanks */
+ /* bits 1-6 are reserved for high crtcs */
+ _DRM_VBLANK_HIGH_CRTC_MASK = 0x0000003e,
+ _DRM_VBLANK_EVENT = 0x4000000, /**< Send event instead of blocking */
+ _DRM_VBLANK_FLIP = 0x8000000, /**< Scheduled buffer swap should flip */
+ _DRM_VBLANK_NEXTONMISS = 0x10000000, /**< If missed, wait for next vblank */
+ _DRM_VBLANK_SECONDARY = 0x20000000, /**< Secondary display controller */
+ _DRM_VBLANK_SIGNAL = 0x40000000 /**< Send signal instead of blocking, unsupported */
+};
+#define _DRM_VBLANK_HIGH_CRTC_SHIFT 1
+
+#define _DRM_VBLANK_TYPES_MASK (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE)
+#define _DRM_VBLANK_FLAGS_MASK (_DRM_VBLANK_EVENT | _DRM_VBLANK_SIGNAL | \
+ _DRM_VBLANK_SECONDARY | _DRM_VBLANK_NEXTONMISS)
+
+struct drm_wait_vblank_request {
+ enum drm_vblank_seq_type type;
+ unsigned int sequence;
+ unsigned long signal;
+};
+
+struct drm_wait_vblank_reply {
+ enum drm_vblank_seq_type type;
+ unsigned int sequence;
+ long tval_sec;
+ long tval_usec;
+};
+
+/*
+ * DRM_IOCTL_WAIT_VBLANK ioctl argument type.
+ *
+ * \sa drmWaitVBlank().
+ */
+union drm_wait_vblank {
+ struct drm_wait_vblank_request request;
+ struct drm_wait_vblank_reply reply;
+};
+
+#define _DRM_PRE_MODESET 1
+#define _DRM_POST_MODESET 2
+
+/*
+ * DRM_IOCTL_MODESET_CTL ioctl argument type
+ *
+ * \sa drmModesetCtl().
+ */
+struct drm_modeset_ctl {
+ __u32 crtc;
+ __u32 cmd;
+};
+
+/*
+ * DRM_IOCTL_AGP_ENABLE ioctl argument type.
+ *
+ * \sa drmAgpEnable().
+ */
+struct drm_agp_mode {
+ unsigned long mode; /**< AGP mode */
+};
+
+/*
+ * DRM_IOCTL_AGP_ALLOC and DRM_IOCTL_AGP_FREE ioctls argument type.
+ *
+ * \sa drmAgpAlloc() and drmAgpFree().
+ */
+struct drm_agp_buffer {
+ unsigned long size; /**< In bytes -- will round to page boundary */
+ unsigned long handle; /**< Used for binding / unbinding */
+ unsigned long type; /**< Type of memory to allocate */
+ unsigned long physical; /**< Physical used by i810 */
+};
+
+/*
+ * DRM_IOCTL_AGP_BIND and DRM_IOCTL_AGP_UNBIND ioctls argument type.
+ *
+ * \sa drmAgpBind() and drmAgpUnbind().
+ */
+struct drm_agp_binding {
+ unsigned long handle; /**< From drm_agp_buffer */
+ unsigned long offset; /**< In bytes -- will round to page boundary */
+};
+
+/*
+ * DRM_IOCTL_AGP_INFO ioctl argument type.
+ *
+ * \sa drmAgpVersionMajor(), drmAgpVersionMinor(), drmAgpGetMode(),
+ * drmAgpBase(), drmAgpSize(), drmAgpMemoryUsed(), drmAgpMemoryAvail(),
+ * drmAgpVendorId() and drmAgpDeviceId().
+ */
+struct drm_agp_info {
+ int agp_version_major;
+ int agp_version_minor;
+ unsigned long mode;
+ unsigned long aperture_base; /* physical address */
+ unsigned long aperture_size; /* bytes */
+ unsigned long memory_allowed; /* bytes */
+ unsigned long memory_used;
+
+ /* PCI information */
+ unsigned short id_vendor;
+ unsigned short id_device;
+};
+
+/*
+ * DRM_IOCTL_SG_ALLOC ioctl argument type.
+ */
+struct drm_scatter_gather {
+ unsigned long size; /**< In bytes -- will round to page boundary */
+ unsigned long handle; /**< Used for mapping / unmapping */
+};
+
+/*
+ * DRM_IOCTL_SET_VERSION ioctl argument type.
+ */
+struct drm_set_version {
+ int drm_di_major;
+ int drm_di_minor;
+ int drm_dd_major;
+ int drm_dd_minor;
+};
+
+/* DRM_IOCTL_GEM_CLOSE ioctl argument type */
+struct drm_gem_close {
+ /** Handle of the object to be closed. */
+ __u32 handle;
+ __u32 pad;
+};
+
+/* DRM_IOCTL_GEM_FLINK ioctl argument type */
+struct drm_gem_flink {
+ /** Handle for the object being named */
+ __u32 handle;
+
+ /** Returned global name */
+ __u32 name;
+};
+
+/* DRM_IOCTL_GEM_OPEN ioctl argument type */
+struct drm_gem_open {
+ /** Name of object being opened */
+ __u32 name;
+
+ /** Returned handle for the object */
+ __u32 handle;
+
+ /** Returned size of the object */
+ __u64 size;
+};
+
+/**
+ * DRM_CAP_DUMB_BUFFER
+ *
+ * If set to 1, the driver supports creating dumb buffers via the
+ * &DRM_IOCTL_MODE_CREATE_DUMB ioctl.
+ */
+#define DRM_CAP_DUMB_BUFFER 0x1
+/**
+ * DRM_CAP_VBLANK_HIGH_CRTC
+ *
+ * If set to 1, the kernel supports specifying a :ref:`CRTC index<crtc_index>`
+ * in the high bits of &drm_wait_vblank_request.type.
+ *
+ * Starting kernel version 2.6.39, this capability is always set to 1.
+ */
+#define DRM_CAP_VBLANK_HIGH_CRTC 0x2
+/**
+ * DRM_CAP_DUMB_PREFERRED_DEPTH
+ *
+ * The preferred bit depth for dumb buffers.
+ *
+ * The bit depth is the number of bits used to indicate the color of a single
+ * pixel excluding any padding. This is different from the number of bits per
+ * pixel. For instance, XRGB8888 has a bit depth of 24 but has 32 bits per
+ * pixel.
+ *
+ * Note that this preference only applies to dumb buffers, it's irrelevant for
+ * other types of buffers.
+ */
+#define DRM_CAP_DUMB_PREFERRED_DEPTH 0x3
+/**
+ * DRM_CAP_DUMB_PREFER_SHADOW
+ *
+ * If set to 1, the driver prefers userspace to render to a shadow buffer
+ * instead of directly rendering to a dumb buffer. For best speed, userspace
+ * should do streaming ordered memory copies into the dumb buffer and never
+ * read from it.
+ *
+ * Note that this preference only applies to dumb buffers, it's irrelevant for
+ * other types of buffers.
+ */
+#define DRM_CAP_DUMB_PREFER_SHADOW 0x4
+/**
+ * DRM_CAP_PRIME
+ *
+ * Bitfield of supported PRIME sharing capabilities. See &DRM_PRIME_CAP_IMPORT
+ * and &DRM_PRIME_CAP_EXPORT.
+ *
+ * PRIME buffers are exposed as dma-buf file descriptors. See
+ * Documentation/gpu/drm-mm.rst, section "PRIME Buffer Sharing".
+ */
+#define DRM_CAP_PRIME 0x5
+/**
+ * DRM_PRIME_CAP_IMPORT
+ *
+ * If this bit is set in &DRM_CAP_PRIME, the driver supports importing PRIME
+ * buffers via the &DRM_IOCTL_PRIME_FD_TO_HANDLE ioctl.
+ */
+#define DRM_PRIME_CAP_IMPORT 0x1
+/**
+ * DRM_PRIME_CAP_EXPORT
+ *
+ * If this bit is set in &DRM_CAP_PRIME, the driver supports exporting PRIME
+ * buffers via the &DRM_IOCTL_PRIME_HANDLE_TO_FD ioctl.
+ */
+#define DRM_PRIME_CAP_EXPORT 0x2
+/**
+ * DRM_CAP_TIMESTAMP_MONOTONIC
+ *
+ * If set to 0, the kernel will report timestamps with ``CLOCK_REALTIME`` in
+ * struct drm_event_vblank. If set to 1, the kernel will report timestamps with
+ * ``CLOCK_MONOTONIC``. See ``clock_gettime(2)`` for the definition of these
+ * clocks.
+ *
+ * Starting from kernel version 2.6.39, the default value for this capability
+ * is 1. Starting kernel version 4.15, this capability is always set to 1.
+ */
+#define DRM_CAP_TIMESTAMP_MONOTONIC 0x6
+/**
+ * DRM_CAP_ASYNC_PAGE_FLIP
+ *
+ * If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC.
+ */
+#define DRM_CAP_ASYNC_PAGE_FLIP 0x7
+/**
+ * DRM_CAP_CURSOR_WIDTH
+ *
+ * The ``CURSOR_WIDTH`` and ``CURSOR_HEIGHT`` capabilities return a valid
+ * width x height combination for the hardware cursor. The intention is that a
+ * hardware agnostic userspace can query a cursor plane size to use.
+ *
+ * Note that the cross-driver contract is to merely return a valid size;
+ * drivers are free to attach another meaning on top, eg. i915 returns the
+ * maximum plane size.
+ */
+#define DRM_CAP_CURSOR_WIDTH 0x8
+/**
+ * DRM_CAP_CURSOR_HEIGHT
+ *
+ * See &DRM_CAP_CURSOR_WIDTH.
+ */
+#define DRM_CAP_CURSOR_HEIGHT 0x9
+/**
+ * DRM_CAP_ADDFB2_MODIFIERS
+ *
+ * If set to 1, the driver supports supplying modifiers in the
+ * &DRM_IOCTL_MODE_ADDFB2 ioctl.
+ */
+#define DRM_CAP_ADDFB2_MODIFIERS 0x10
+/**
+ * DRM_CAP_PAGE_FLIP_TARGET
+ *
+ * If set to 1, the driver supports the &DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE and
+ * &DRM_MODE_PAGE_FLIP_TARGET_RELATIVE flags in
+ * &drm_mode_crtc_page_flip_target.flags for the &DRM_IOCTL_MODE_PAGE_FLIP
+ * ioctl.
+ */
+#define DRM_CAP_PAGE_FLIP_TARGET 0x11
+/**
+ * DRM_CAP_CRTC_IN_VBLANK_EVENT
+ *
+ * If set to 1, the kernel supports reporting the CRTC ID in
+ * &drm_event_vblank.crtc_id for the &DRM_EVENT_VBLANK and
+ * &DRM_EVENT_FLIP_COMPLETE events.
+ *
+ * Starting kernel version 4.12, this capability is always set to 1.
+ */
+#define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12
+/**
+ * DRM_CAP_SYNCOBJ
+ *
+ * If set to 1, the driver supports sync objects. See
+ * Documentation/gpu/drm-mm.rst, section "DRM Sync Objects".
+ */
+#define DRM_CAP_SYNCOBJ 0x13
+/**
+ * DRM_CAP_SYNCOBJ_TIMELINE
+ *
+ * If set to 1, the driver supports timeline operations on sync objects. See
+ * Documentation/gpu/drm-mm.rst, section "DRM Sync Objects".
+ */
+#define DRM_CAP_SYNCOBJ_TIMELINE 0x14
+
+/* DRM_IOCTL_GET_CAP ioctl argument type */
+struct drm_get_cap {
+ __u64 capability;
+ __u64 value;
+};
+
+/**
+ * DRM_CLIENT_CAP_STEREO_3D
+ *
+ * If set to 1, the DRM core will expose the stereo 3D capabilities of the
+ * monitor by advertising the supported 3D layouts in the flags of struct
+ * drm_mode_modeinfo. See ``DRM_MODE_FLAG_3D_*``.
+ *
+ * This capability is always supported for all drivers starting from kernel
+ * version 3.13.
+ */
+#define DRM_CLIENT_CAP_STEREO_3D 1
+
+/**
+ * DRM_CLIENT_CAP_UNIVERSAL_PLANES
+ *
+ * If set to 1, the DRM core will expose all planes (overlay, primary, and
+ * cursor) to userspace.
+ *
+ * This capability has been introduced in kernel version 3.15. Starting from
+ * kernel version 3.17, this capability is always supported for all drivers.
+ */
+#define DRM_CLIENT_CAP_UNIVERSAL_PLANES 2
+
+/**
+ * DRM_CLIENT_CAP_ATOMIC
+ *
+ * If set to 1, the DRM core will expose atomic properties to userspace. This
+ * implicitly enables &DRM_CLIENT_CAP_UNIVERSAL_PLANES and
+ * &DRM_CLIENT_CAP_ASPECT_RATIO.
+ *
+ * If the driver doesn't support atomic mode-setting, enabling this capability
+ * will fail with -EOPNOTSUPP.
+ *
+ * This capability has been introduced in kernel version 4.0. Starting from
+ * kernel version 4.2, this capability is always supported for atomic-capable
+ * drivers.
+ */
+#define DRM_CLIENT_CAP_ATOMIC 3
+
+/**
+ * DRM_CLIENT_CAP_ASPECT_RATIO
+ *
+ * If set to 1, the DRM core will provide aspect ratio information in modes.
+ * See ``DRM_MODE_FLAG_PIC_AR_*``.
+ *
+ * This capability is always supported for all drivers starting from kernel
+ * version 4.18.
+ */
+#define DRM_CLIENT_CAP_ASPECT_RATIO 4
+
+/**
+ * DRM_CLIENT_CAP_WRITEBACK_CONNECTORS
+ *
+ * If set to 1, the DRM core will expose special connectors to be used for
+ * writing back to memory the scene setup in the commit. The client must enable
+ * &DRM_CLIENT_CAP_ATOMIC first.
+ *
+ * This capability is always supported for atomic-capable drivers starting from
+ * kernel version 4.19.
+ */
+#define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 5
+
+/* DRM_IOCTL_SET_CLIENT_CAP ioctl argument type */
+struct drm_set_client_cap {
+ __u64 capability;
+ __u64 value;
+};
+
+#define DRM_RDWR O_RDWR
+#define DRM_CLOEXEC O_CLOEXEC
+struct drm_prime_handle {
+ __u32 handle;
+
+ /** Flags.. only applicable for handle->fd */
+ __u32 flags;
+
+ /** Returned dmabuf file descriptor */
+ __s32 fd;
+};
+
+struct drm_syncobj_create {
+ __u32 handle;
+#define DRM_SYNCOBJ_CREATE_SIGNALED (1 << 0)
+ __u32 flags;
+};
+
+struct drm_syncobj_destroy {
+ __u32 handle;
+ __u32 pad;
+};
+
+#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE (1 << 0)
+#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE (1 << 0)
+struct drm_syncobj_handle {
+ __u32 handle;
+ __u32 flags;
+
+ __s32 fd;
+ __u32 pad;
+};
+
+struct drm_syncobj_transfer {
+ __u32 src_handle;
+ __u32 dst_handle;
+ __u64 src_point;
+ __u64 dst_point;
+ __u32 flags;
+ __u32 pad;
+};
+
+#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0)
+#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1)
+#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE (1 << 2) /* wait for time point to become available */
+struct drm_syncobj_wait {
+ __u64 handles;
+ /* absolute timeout */
+ __s64 timeout_nsec;
+ __u32 count_handles;
+ __u32 flags;
+ __u32 first_signaled; /* only valid when not waiting all */
+ __u32 pad;
+};
+
+struct drm_syncobj_timeline_wait {
+ __u64 handles;
+ /* wait on specific timeline point for every handles*/
+ __u64 points;
+ /* absolute timeout */
+ __s64 timeout_nsec;
+ __u32 count_handles;
+ __u32 flags;
+ __u32 first_signaled; /* only valid when not waiting all */
+ __u32 pad;
+};
+
+
+struct drm_syncobj_array {
+ __u64 handles;
+ __u32 count_handles;
+ __u32 pad;
+};
+
+#define DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED (1 << 0) /* last available point on timeline syncobj */
+struct drm_syncobj_timeline_array {
+ __u64 handles;
+ __u64 points;
+ __u32 count_handles;
+ __u32 flags;
+};
+
+
+/* Query current scanout sequence number */
+struct drm_crtc_get_sequence {
+ __u32 crtc_id; /* requested crtc_id */
+ __u32 active; /* return: crtc output is active */
+ __u64 sequence; /* return: most recent vblank sequence */
+ __s64 sequence_ns; /* return: most recent time of first pixel out */
+};
+
+/* Queue event to be delivered at specified sequence. Time stamp marks
+ * when the first pixel of the refresh cycle leaves the display engine
+ * for the display
+ */
+#define DRM_CRTC_SEQUENCE_RELATIVE 0x00000001 /* sequence is relative to current */
+#define DRM_CRTC_SEQUENCE_NEXT_ON_MISS 0x00000002 /* Use next sequence if we've missed */
+
+struct drm_crtc_queue_sequence {
+ __u32 crtc_id;
+ __u32 flags;
+ __u64 sequence; /* on input, target sequence. on output, actual sequence */
+ __u64 user_data; /* user data passed to event */
+};
+
+#if defined(__cplusplus)
+}
+#endif
+
+#include "drm_mode.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#define DRM_IOCTL_BASE 'd'
+#define DRM_IO(nr) _IO(DRM_IOCTL_BASE,nr)
+#define DRM_IOR(nr,type) _IOR(DRM_IOCTL_BASE,nr,type)
+#define DRM_IOW(nr,type) _IOW(DRM_IOCTL_BASE,nr,type)
+#define DRM_IOWR(nr,type) _IOWR(DRM_IOCTL_BASE,nr,type)
+
+#define DRM_IOCTL_VERSION DRM_IOWR(0x00, struct drm_version)
+#define DRM_IOCTL_GET_UNIQUE DRM_IOWR(0x01, struct drm_unique)
+#define DRM_IOCTL_GET_MAGIC DRM_IOR( 0x02, struct drm_auth)
+#define DRM_IOCTL_IRQ_BUSID DRM_IOWR(0x03, struct drm_irq_busid)
+#define DRM_IOCTL_GET_MAP DRM_IOWR(0x04, struct drm_map)
+#define DRM_IOCTL_GET_CLIENT DRM_IOWR(0x05, struct drm_client)
+#define DRM_IOCTL_GET_STATS DRM_IOR( 0x06, struct drm_stats)
+#define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version)
+#define DRM_IOCTL_MODESET_CTL DRM_IOW(0x08, struct drm_modeset_ctl)
+#define DRM_IOCTL_GEM_CLOSE DRM_IOW (0x09, struct drm_gem_close)
+#define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink)
+#define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open)
+#define DRM_IOCTL_GET_CAP DRM_IOWR(0x0c, struct drm_get_cap)
+#define DRM_IOCTL_SET_CLIENT_CAP DRM_IOW( 0x0d, struct drm_set_client_cap)
+
+#define DRM_IOCTL_SET_UNIQUE DRM_IOW( 0x10, struct drm_unique)
+#define DRM_IOCTL_AUTH_MAGIC DRM_IOW( 0x11, struct drm_auth)
+#define DRM_IOCTL_BLOCK DRM_IOWR(0x12, struct drm_block)
+#define DRM_IOCTL_UNBLOCK DRM_IOWR(0x13, struct drm_block)
+#define DRM_IOCTL_CONTROL DRM_IOW( 0x14, struct drm_control)
+#define DRM_IOCTL_ADD_MAP DRM_IOWR(0x15, struct drm_map)
+#define DRM_IOCTL_ADD_BUFS DRM_IOWR(0x16, struct drm_buf_desc)
+#define DRM_IOCTL_MARK_BUFS DRM_IOW( 0x17, struct drm_buf_desc)
+#define DRM_IOCTL_INFO_BUFS DRM_IOWR(0x18, struct drm_buf_info)
+#define DRM_IOCTL_MAP_BUFS DRM_IOWR(0x19, struct drm_buf_map)
+#define DRM_IOCTL_FREE_BUFS DRM_IOW( 0x1a, struct drm_buf_free)
+
+#define DRM_IOCTL_RM_MAP DRM_IOW( 0x1b, struct drm_map)
+
+#define DRM_IOCTL_SET_SAREA_CTX DRM_IOW( 0x1c, struct drm_ctx_priv_map)
+#define DRM_IOCTL_GET_SAREA_CTX DRM_IOWR(0x1d, struct drm_ctx_priv_map)
+
+#define DRM_IOCTL_SET_MASTER DRM_IO(0x1e)
+#define DRM_IOCTL_DROP_MASTER DRM_IO(0x1f)
+
+#define DRM_IOCTL_ADD_CTX DRM_IOWR(0x20, struct drm_ctx)
+#define DRM_IOCTL_RM_CTX DRM_IOWR(0x21, struct drm_ctx)
+#define DRM_IOCTL_MOD_CTX DRM_IOW( 0x22, struct drm_ctx)
+#define DRM_IOCTL_GET_CTX DRM_IOWR(0x23, struct drm_ctx)
+#define DRM_IOCTL_SWITCH_CTX DRM_IOW( 0x24, struct drm_ctx)
+#define DRM_IOCTL_NEW_CTX DRM_IOW( 0x25, struct drm_ctx)
+#define DRM_IOCTL_RES_CTX DRM_IOWR(0x26, struct drm_ctx_res)
+#define DRM_IOCTL_ADD_DRAW DRM_IOWR(0x27, struct drm_draw)
+#define DRM_IOCTL_RM_DRAW DRM_IOWR(0x28, struct drm_draw)
+#define DRM_IOCTL_DMA DRM_IOWR(0x29, struct drm_dma)
+#define DRM_IOCTL_LOCK DRM_IOW( 0x2a, struct drm_lock)
+#define DRM_IOCTL_UNLOCK DRM_IOW( 0x2b, struct drm_lock)
+#define DRM_IOCTL_FINISH DRM_IOW( 0x2c, struct drm_lock)
+
+#define DRM_IOCTL_PRIME_HANDLE_TO_FD DRM_IOWR(0x2d, struct drm_prime_handle)
+#define DRM_IOCTL_PRIME_FD_TO_HANDLE DRM_IOWR(0x2e, struct drm_prime_handle)
+
+#define DRM_IOCTL_AGP_ACQUIRE DRM_IO( 0x30)
+#define DRM_IOCTL_AGP_RELEASE DRM_IO( 0x31)
+#define DRM_IOCTL_AGP_ENABLE DRM_IOW( 0x32, struct drm_agp_mode)
+#define DRM_IOCTL_AGP_INFO DRM_IOR( 0x33, struct drm_agp_info)
+#define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, struct drm_agp_buffer)
+#define DRM_IOCTL_AGP_FREE DRM_IOW( 0x35, struct drm_agp_buffer)
+#define DRM_IOCTL_AGP_BIND DRM_IOW( 0x36, struct drm_agp_binding)
+#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, struct drm_agp_binding)
+
+#define DRM_IOCTL_SG_ALLOC DRM_IOWR(0x38, struct drm_scatter_gather)
+#define DRM_IOCTL_SG_FREE DRM_IOW( 0x39, struct drm_scatter_gather)
+
+#define DRM_IOCTL_WAIT_VBLANK DRM_IOWR(0x3a, union drm_wait_vblank)
+
+#define DRM_IOCTL_CRTC_GET_SEQUENCE DRM_IOWR(0x3b, struct drm_crtc_get_sequence)
+#define DRM_IOCTL_CRTC_QUEUE_SEQUENCE DRM_IOWR(0x3c, struct drm_crtc_queue_sequence)
+
+#define DRM_IOCTL_UPDATE_DRAW DRM_IOW(0x3f, struct drm_update_draw)
+
+#define DRM_IOCTL_MODE_GETRESOURCES DRM_IOWR(0xA0, struct drm_mode_card_res)
+#define DRM_IOCTL_MODE_GETCRTC DRM_IOWR(0xA1, struct drm_mode_crtc)
+#define DRM_IOCTL_MODE_SETCRTC DRM_IOWR(0xA2, struct drm_mode_crtc)
+#define DRM_IOCTL_MODE_CURSOR DRM_IOWR(0xA3, struct drm_mode_cursor)
+#define DRM_IOCTL_MODE_GETGAMMA DRM_IOWR(0xA4, struct drm_mode_crtc_lut)
+#define DRM_IOCTL_MODE_SETGAMMA DRM_IOWR(0xA5, struct drm_mode_crtc_lut)
+#define DRM_IOCTL_MODE_GETENCODER DRM_IOWR(0xA6, struct drm_mode_get_encoder)
+#define DRM_IOCTL_MODE_GETCONNECTOR DRM_IOWR(0xA7, struct drm_mode_get_connector)
+#define DRM_IOCTL_MODE_ATTACHMODE DRM_IOWR(0xA8, struct drm_mode_mode_cmd) /* deprecated (never worked) */
+#define DRM_IOCTL_MODE_DETACHMODE DRM_IOWR(0xA9, struct drm_mode_mode_cmd) /* deprecated (never worked) */
+
+#define DRM_IOCTL_MODE_GETPROPERTY DRM_IOWR(0xAA, struct drm_mode_get_property)
+#define DRM_IOCTL_MODE_SETPROPERTY DRM_IOWR(0xAB, struct drm_mode_connector_set_property)
+#define DRM_IOCTL_MODE_GETPROPBLOB DRM_IOWR(0xAC, struct drm_mode_get_blob)
+#define DRM_IOCTL_MODE_GETFB DRM_IOWR(0xAD, struct drm_mode_fb_cmd)
+#define DRM_IOCTL_MODE_ADDFB DRM_IOWR(0xAE, struct drm_mode_fb_cmd)
+/**
+ * DRM_IOCTL_MODE_RMFB - Remove a framebuffer.
+ *
+ * This removes a framebuffer previously added via ADDFB/ADDFB2. The IOCTL
+ * argument is a framebuffer object ID.
+ *
+ * Warning: removing a framebuffer currently in-use on an enabled plane will
+ * disable that plane. The CRTC the plane is linked to may also be disabled
+ * (depending on driver capabilities).
+ */
+#define DRM_IOCTL_MODE_RMFB DRM_IOWR(0xAF, unsigned int)
+#define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
+#define DRM_IOCTL_MODE_DIRTYFB DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
+
+#define DRM_IOCTL_MODE_CREATE_DUMB DRM_IOWR(0xB2, struct drm_mode_create_dumb)
+#define DRM_IOCTL_MODE_MAP_DUMB DRM_IOWR(0xB3, struct drm_mode_map_dumb)
+#define DRM_IOCTL_MODE_DESTROY_DUMB DRM_IOWR(0xB4, struct drm_mode_destroy_dumb)
+#define DRM_IOCTL_MODE_GETPLANERESOURCES DRM_IOWR(0xB5, struct drm_mode_get_plane_res)
+#define DRM_IOCTL_MODE_GETPLANE DRM_IOWR(0xB6, struct drm_mode_get_plane)
+#define DRM_IOCTL_MODE_SETPLANE DRM_IOWR(0xB7, struct drm_mode_set_plane)
+#define DRM_IOCTL_MODE_ADDFB2 DRM_IOWR(0xB8, struct drm_mode_fb_cmd2)
+#define DRM_IOCTL_MODE_OBJ_GETPROPERTIES DRM_IOWR(0xB9, struct drm_mode_obj_get_properties)
+#define DRM_IOCTL_MODE_OBJ_SETPROPERTY DRM_IOWR(0xBA, struct drm_mode_obj_set_property)
+#define DRM_IOCTL_MODE_CURSOR2 DRM_IOWR(0xBB, struct drm_mode_cursor2)
+#define DRM_IOCTL_MODE_ATOMIC DRM_IOWR(0xBC, struct drm_mode_atomic)
+#define DRM_IOCTL_MODE_CREATEPROPBLOB DRM_IOWR(0xBD, struct drm_mode_create_blob)
+#define DRM_IOCTL_MODE_DESTROYPROPBLOB DRM_IOWR(0xBE, struct drm_mode_destroy_blob)
+
+#define DRM_IOCTL_SYNCOBJ_CREATE DRM_IOWR(0xBF, struct drm_syncobj_create)
+#define DRM_IOCTL_SYNCOBJ_DESTROY DRM_IOWR(0xC0, struct drm_syncobj_destroy)
+#define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD DRM_IOWR(0xC1, struct drm_syncobj_handle)
+#define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE DRM_IOWR(0xC2, struct drm_syncobj_handle)
+#define DRM_IOCTL_SYNCOBJ_WAIT DRM_IOWR(0xC3, struct drm_syncobj_wait)
+#define DRM_IOCTL_SYNCOBJ_RESET DRM_IOWR(0xC4, struct drm_syncobj_array)
+#define DRM_IOCTL_SYNCOBJ_SIGNAL DRM_IOWR(0xC5, struct drm_syncobj_array)
+
+#define DRM_IOCTL_MODE_CREATE_LEASE DRM_IOWR(0xC6, struct drm_mode_create_lease)
+#define DRM_IOCTL_MODE_LIST_LESSEES DRM_IOWR(0xC7, struct drm_mode_list_lessees)
+#define DRM_IOCTL_MODE_GET_LEASE DRM_IOWR(0xC8, struct drm_mode_get_lease)
+#define DRM_IOCTL_MODE_REVOKE_LEASE DRM_IOWR(0xC9, struct drm_mode_revoke_lease)
+
+#define DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT DRM_IOWR(0xCA, struct drm_syncobj_timeline_wait)
+#define DRM_IOCTL_SYNCOBJ_QUERY DRM_IOWR(0xCB, struct drm_syncobj_timeline_array)
+#define DRM_IOCTL_SYNCOBJ_TRANSFER DRM_IOWR(0xCC, struct drm_syncobj_transfer)
+#define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL DRM_IOWR(0xCD, struct drm_syncobj_timeline_array)
+
+#define DRM_IOCTL_MODE_GETFB2 DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)
+
+/*
+ * Device specific ioctls should only be in their respective headers
+ * The device specific ioctl range is from 0x40 to 0x9f.
+ * Generic IOCTLS restart at 0xA0.
+ *
+ * \sa drmCommandNone(), drmCommandRead(), drmCommandWrite(), and
+ * drmCommandReadWrite().
+ */
+#define DRM_COMMAND_BASE 0x40
+#define DRM_COMMAND_END 0xA0
+
+/*
+ * Header for events written back to userspace on the drm fd. The
+ * type defines the type of event, the length specifies the total
+ * length of the event (including the header), and user_data is
+ * typically a 64 bit value passed with the ioctl that triggered the
+ * event. A read on the drm fd will always only return complete
+ * events, that is, if for example the read buffer is 100 bytes, and
+ * there are two 64 byte events pending, only one will be returned.
+ *
+ * Event types 0 - 0x7fffffff are generic drm events, 0x80000000 and
+ * up are chipset specific.
+ */
+struct drm_event {
+ __u32 type;
+ __u32 length;
+};
+
+#define DRM_EVENT_VBLANK 0x01
+#define DRM_EVENT_FLIP_COMPLETE 0x02
+#define DRM_EVENT_CRTC_SEQUENCE 0x03
+
+struct drm_event_vblank {
+ struct drm_event base;
+ __u64 user_data;
+ __u32 tv_sec;
+ __u32 tv_usec;
+ __u32 sequence;
+ __u32 crtc_id; /* 0 on older kernels that do not support this */
+};
+
+/* Event delivered at sequence. Time stamp marks when the first pixel
+ * of the refresh cycle leaves the display engine for the display
+ */
+struct drm_event_crtc_sequence {
+ struct drm_event base;
+ __u64 user_data;
+ __s64 time_ns;
+ __u64 sequence;
+};
+
+/* typedef area */
+typedef struct drm_clip_rect drm_clip_rect_t;
+typedef struct drm_drawable_info drm_drawable_info_t;
+typedef struct drm_tex_region drm_tex_region_t;
+typedef struct drm_hw_lock drm_hw_lock_t;
+typedef struct drm_version drm_version_t;
+typedef struct drm_unique drm_unique_t;
+typedef struct drm_list drm_list_t;
+typedef struct drm_block drm_block_t;
+typedef struct drm_control drm_control_t;
+typedef enum drm_map_type drm_map_type_t;
+typedef enum drm_map_flags drm_map_flags_t;
+typedef struct drm_ctx_priv_map drm_ctx_priv_map_t;
+typedef struct drm_map drm_map_t;
+typedef struct drm_client drm_client_t;
+typedef enum drm_stat_type drm_stat_type_t;
+typedef struct drm_stats drm_stats_t;
+typedef enum drm_lock_flags drm_lock_flags_t;
+typedef struct drm_lock drm_lock_t;
+typedef enum drm_dma_flags drm_dma_flags_t;
+typedef struct drm_buf_desc drm_buf_desc_t;
+typedef struct drm_buf_info drm_buf_info_t;
+typedef struct drm_buf_free drm_buf_free_t;
+typedef struct drm_buf_pub drm_buf_pub_t;
+typedef struct drm_buf_map drm_buf_map_t;
+typedef struct drm_dma drm_dma_t;
+typedef union drm_wait_vblank drm_wait_vblank_t;
+typedef struct drm_agp_mode drm_agp_mode_t;
+typedef enum drm_ctx_flags drm_ctx_flags_t;
+typedef struct drm_ctx drm_ctx_t;
+typedef struct drm_ctx_res drm_ctx_res_t;
+typedef struct drm_draw drm_draw_t;
+typedef struct drm_update_draw drm_update_draw_t;
+typedef struct drm_auth drm_auth_t;
+typedef struct drm_irq_busid drm_irq_busid_t;
+typedef enum drm_vblank_seq_type drm_vblank_seq_type_t;
+
+typedef struct drm_agp_buffer drm_agp_buffer_t;
+typedef struct drm_agp_binding drm_agp_binding_t;
+typedef struct drm_agp_info drm_agp_info_t;
+typedef struct drm_scatter_gather drm_scatter_gather_t;
+typedef struct drm_set_version drm_set_version_t;
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif
diff --git a/third_party/drm/drm/drm_fourcc.h b/third_party/drm/drm/drm_fourcc.h
new file mode 100644
index 0000000000..4ececa84ba
--- /dev/null
+++ b/third_party/drm/drm/drm_fourcc.h
@@ -0,0 +1,1377 @@
+/*
+ * Copyright 2011 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
+ * VA LINUX SYSTEMS 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.
+ */
+
+#ifndef DRM_FOURCC_H
+#define DRM_FOURCC_H
+
+#include "drm.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/**
+ * DOC: overview
+ *
+ * In the DRM subsystem, framebuffer pixel formats are described using the
+ * fourcc codes defined in `include/uapi/drm/drm_fourcc.h`. In addition to the
+ * fourcc code, a Format Modifier may optionally be provided, in order to
+ * further describe the buffer's format - for example tiling or compression.
+ *
+ * Format Modifiers
+ * ----------------
+ *
+ * Format modifiers are used in conjunction with a fourcc code, forming a
+ * unique fourcc:modifier pair. This format:modifier pair must fully define the
+ * format and data layout of the buffer, and should be the only way to describe
+ * that particular buffer.
+ *
+ * Having multiple fourcc:modifier pairs which describe the same layout should
+ * be avoided, as such aliases run the risk of different drivers exposing
+ * different names for the same data format, forcing userspace to understand
+ * that they are aliases.
+ *
+ * Format modifiers may change any property of the buffer, including the number
+ * of planes and/or the required allocation size. Format modifiers are
+ * vendor-namespaced, and as such the relationship between a fourcc code and a
+ * modifier is specific to the modifer being used. For example, some modifiers
+ * may preserve meaning - such as number of planes - from the fourcc code,
+ * whereas others may not.
+ *
+ * Modifiers must uniquely encode buffer layout. In other words, a buffer must
+ * match only a single modifier. A modifier must not be a subset of layouts of
+ * another modifier. For instance, it's incorrect to encode pitch alignment in
+ * a modifier: a buffer may match a 64-pixel aligned modifier and a 32-pixel
+ * aligned modifier. That said, modifiers can have implicit minimal
+ * requirements.
+ *
+ * For modifiers where the combination of fourcc code and modifier can alias,
+ * a canonical pair needs to be defined and used by all drivers. Preferred
+ * combinations are also encouraged where all combinations might lead to
+ * confusion and unnecessarily reduced interoperability. An example for the
+ * latter is AFBC, where the ABGR layouts are preferred over ARGB layouts.
+ *
+ * There are two kinds of modifier users:
+ *
+ * - Kernel and user-space drivers: for drivers it's important that modifiers
+ * don't alias, otherwise two drivers might support the same format but use
+ * different aliases, preventing them from sharing buffers in an efficient
+ * format.
+ * - Higher-level programs interfacing with KMS/GBM/EGL/Vulkan/etc: these users
+ * see modifiers as opaque tokens they can check for equality and intersect.
+ * These users musn't need to know to reason about the modifier value
+ * (i.e. they are not expected to extract information out of the modifier).
+ *
+ * Vendors should document their modifier usage in as much detail as
+ * possible, to ensure maximum compatibility across devices, drivers and
+ * applications.
+ *
+ * The authoritative list of format modifier codes is found in
+ * `include/uapi/drm/drm_fourcc.h`
+ */
+
+#define fourcc_code(a, b, c, d) ((__u32)(a) | ((__u32)(b) << 8) | \
+ ((__u32)(c) << 16) | ((__u32)(d) << 24))
+
+#define DRM_FORMAT_BIG_ENDIAN (1U<<31) /* format is big endian instead of little endian */
+
+/* Reserve 0 for the invalid format specifier */
+#define DRM_FORMAT_INVALID 0
+
+/* color index */
+#define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ') /* [7:0] C */
+
+/* 8 bpp Red */
+#define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ') /* [7:0] R */
+
+/* 10 bpp Red */
+#define DRM_FORMAT_R10 fourcc_code('R', '1', '0', ' ') /* [15:0] x:R 6:10 little endian */
+
+/* 12 bpp Red */
+#define DRM_FORMAT_R12 fourcc_code('R', '1', '2', ' ') /* [15:0] x:R 4:12 little endian */
+
+/* 16 bpp Red */
+#define DRM_FORMAT_R16 fourcc_code('R', '1', '6', ' ') /* [15:0] R little endian */
+
+/* 16 bpp RG */
+#define DRM_FORMAT_RG88 fourcc_code('R', 'G', '8', '8') /* [15:0] R:G 8:8 little endian */
+#define DRM_FORMAT_GR88 fourcc_code('G', 'R', '8', '8') /* [15:0] G:R 8:8 little endian */
+
+/* 32 bpp RG */
+#define DRM_FORMAT_RG1616 fourcc_code('R', 'G', '3', '2') /* [31:0] R:G 16:16 little endian */
+#define DRM_FORMAT_GR1616 fourcc_code('G', 'R', '3', '2') /* [31:0] G:R 16:16 little endian */
+
+/* 8 bpp RGB */
+#define DRM_FORMAT_RGB332 fourcc_code('R', 'G', 'B', '8') /* [7:0] R:G:B 3:3:2 */
+#define DRM_FORMAT_BGR233 fourcc_code('B', 'G', 'R', '8') /* [7:0] B:G:R 2:3:3 */
+
+/* 16 bpp RGB */
+#define DRM_FORMAT_XRGB4444 fourcc_code('X', 'R', '1', '2') /* [15:0] x:R:G:B 4:4:4:4 little endian */
+#define DRM_FORMAT_XBGR4444 fourcc_code('X', 'B', '1', '2') /* [15:0] x:B:G:R 4:4:4:4 little endian */
+#define DRM_FORMAT_RGBX4444 fourcc_code('R', 'X', '1', '2') /* [15:0] R:G:B:x 4:4:4:4 little endian */
+#define DRM_FORMAT_BGRX4444 fourcc_code('B', 'X', '1', '2') /* [15:0] B:G:R:x 4:4:4:4 little endian */
+
+#define DRM_FORMAT_ARGB4444 fourcc_code('A', 'R', '1', '2') /* [15:0] A:R:G:B 4:4:4:4 little endian */
+#define DRM_FORMAT_ABGR4444 fourcc_code('A', 'B', '1', '2') /* [15:0] A:B:G:R 4:4:4:4 little endian */
+#define DRM_FORMAT_RGBA4444 fourcc_code('R', 'A', '1', '2') /* [15:0] R:G:B:A 4:4:4:4 little endian */
+#define DRM_FORMAT_BGRA4444 fourcc_code('B', 'A', '1', '2') /* [15:0] B:G:R:A 4:4:4:4 little endian */
+
+#define DRM_FORMAT_XRGB1555 fourcc_code('X', 'R', '1', '5') /* [15:0] x:R:G:B 1:5:5:5 little endian */
+#define DRM_FORMAT_XBGR1555 fourcc_code('X', 'B', '1', '5') /* [15:0] x:B:G:R 1:5:5:5 little endian */
+#define DRM_FORMAT_RGBX5551 fourcc_code('R', 'X', '1', '5') /* [15:0] R:G:B:x 5:5:5:1 little endian */
+#define DRM_FORMAT_BGRX5551 fourcc_code('B', 'X', '1', '5') /* [15:0] B:G:R:x 5:5:5:1 little endian */
+
+#define DRM_FORMAT_ARGB1555 fourcc_code('A', 'R', '1', '5') /* [15:0] A:R:G:B 1:5:5:5 little endian */
+#define DRM_FORMAT_ABGR1555 fourcc_code('A', 'B', '1', '5') /* [15:0] A:B:G:R 1:5:5:5 little endian */
+#define DRM_FORMAT_RGBA5551 fourcc_code('R', 'A', '1', '5') /* [15:0] R:G:B:A 5:5:5:1 little endian */
+#define DRM_FORMAT_BGRA5551 fourcc_code('B', 'A', '1', '5') /* [15:0] B:G:R:A 5:5:5:1 little endian */
+
+#define DRM_FORMAT_RGB565 fourcc_code('R', 'G', '1', '6') /* [15:0] R:G:B 5:6:5 little endian */
+#define DRM_FORMAT_BGR565 fourcc_code('B', 'G', '1', '6') /* [15:0] B:G:R 5:6:5 little endian */
+
+/* 24 bpp RGB */
+#define DRM_FORMAT_RGB888 fourcc_code('R', 'G', '2', '4') /* [23:0] R:G:B little endian */
+#define DRM_FORMAT_BGR888 fourcc_code('B', 'G', '2', '4') /* [23:0] B:G:R little endian */
+
+/* 32 bpp RGB */
+#define DRM_FORMAT_XRGB8888 fourcc_code('X', 'R', '2', '4') /* [31:0] x:R:G:B 8:8:8:8 little endian */
+#define DRM_FORMAT_XBGR8888 fourcc_code('X', 'B', '2', '4') /* [31:0] x:B:G:R 8:8:8:8 little endian */
+#define DRM_FORMAT_RGBX8888 fourcc_code('R', 'X', '2', '4') /* [31:0] R:G:B:x 8:8:8:8 little endian */
+#define DRM_FORMAT_BGRX8888 fourcc_code('B', 'X', '2', '4') /* [31:0] B:G:R:x 8:8:8:8 little endian */
+
+#define DRM_FORMAT_ARGB8888 fourcc_code('A', 'R', '2', '4') /* [31:0] A:R:G:B 8:8:8:8 little endian */
+#define DRM_FORMAT_ABGR8888 fourcc_code('A', 'B', '2', '4') /* [31:0] A:B:G:R 8:8:8:8 little endian */
+#define DRM_FORMAT_RGBA8888 fourcc_code('R', 'A', '2', '4') /* [31:0] R:G:B:A 8:8:8:8 little endian */
+#define DRM_FORMAT_BGRA8888 fourcc_code('B', 'A', '2', '4') /* [31:0] B:G:R:A 8:8:8:8 little endian */
+
+#define DRM_FORMAT_XRGB2101010 fourcc_code('X', 'R', '3', '0') /* [31:0] x:R:G:B 2:10:10:10 little endian */
+#define DRM_FORMAT_XBGR2101010 fourcc_code('X', 'B', '3', '0') /* [31:0] x:B:G:R 2:10:10:10 little endian */
+#define DRM_FORMAT_RGBX1010102 fourcc_code('R', 'X', '3', '0') /* [31:0] R:G:B:x 10:10:10:2 little endian */
+#define DRM_FORMAT_BGRX1010102 fourcc_code('B', 'X', '3', '0') /* [31:0] B:G:R:x 10:10:10:2 little endian */
+
+#define DRM_FORMAT_ARGB2101010 fourcc_code('A', 'R', '3', '0') /* [31:0] A:R:G:B 2:10:10:10 little endian */
+#define DRM_FORMAT_ABGR2101010 fourcc_code('A', 'B', '3', '0') /* [31:0] A:B:G:R 2:10:10:10 little endian */
+#define DRM_FORMAT_RGBA1010102 fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */
+#define DRM_FORMAT_BGRA1010102 fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */
+
+/* 64 bpp RGB */
+#define DRM_FORMAT_XRGB16161616 fourcc_code('X', 'R', '4', '8') /* [63:0] x:R:G:B 16:16:16:16 little endian */
+#define DRM_FORMAT_XBGR16161616 fourcc_code('X', 'B', '4', '8') /* [63:0] x:B:G:R 16:16:16:16 little endian */
+
+#define DRM_FORMAT_ARGB16161616 fourcc_code('A', 'R', '4', '8') /* [63:0] A:R:G:B 16:16:16:16 little endian */
+#define DRM_FORMAT_ABGR16161616 fourcc_code('A', 'B', '4', '8') /* [63:0] A:B:G:R 16:16:16:16 little endian */
+
+/*
+ * Floating point 64bpp RGB
+ * IEEE 754-2008 binary16 half-precision float
+ * [15:0] sign:exponent:mantissa 1:5:10
+ */
+#define DRM_FORMAT_XRGB16161616F fourcc_code('X', 'R', '4', 'H') /* [63:0] x:R:G:B 16:16:16:16 little endian */
+#define DRM_FORMAT_XBGR16161616F fourcc_code('X', 'B', '4', 'H') /* [63:0] x:B:G:R 16:16:16:16 little endian */
+
+#define DRM_FORMAT_ARGB16161616F fourcc_code('A', 'R', '4', 'H') /* [63:0] A:R:G:B 16:16:16:16 little endian */
+#define DRM_FORMAT_ABGR16161616F fourcc_code('A', 'B', '4', 'H') /* [63:0] A:B:G:R 16:16:16:16 little endian */
+
+/*
+ * RGBA format with 10-bit components packed in 64-bit per pixel, with 6 bits
+ * of unused padding per component:
+ */
+#define DRM_FORMAT_AXBXGXRX106106106106 fourcc_code('A', 'B', '1', '0') /* [63:0] A:x:B:x:G:x:R:x 10:6:10:6:10:6:10:6 little endian */
+
+/* packed YCbCr */
+#define DRM_FORMAT_YUYV fourcc_code('Y', 'U', 'Y', 'V') /* [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian */
+#define DRM_FORMAT_YVYU fourcc_code('Y', 'V', 'Y', 'U') /* [31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian */
+#define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y') /* [31:0] Y1:Cr0:Y0:Cb0 8:8:8:8 little endian */
+#define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y') /* [31:0] Y1:Cb0:Y0:Cr0 8:8:8:8 little endian */
+
+#define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V') /* [31:0] A:Y:Cb:Cr 8:8:8:8 little endian */
+#define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V') /* [31:0] X:Y:Cb:Cr 8:8:8:8 little endian */
+#define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4') /* [23:0] Cr:Cb:Y 8:8:8 little endian */
+#define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0') /* Y followed by U then V, 10:10:10. Non-linear modifier only */
+
+/*
+ * packed Y2xx indicate for each component, xx valid data occupy msb
+ * 16-xx padding occupy lsb
+ */
+#define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0') /* [63:0] Cr0:0:Y1:0:Cb0:0:Y0:0 10:6:10:6:10:6:10:6 little endian per 2 Y pixels */
+#define DRM_FORMAT_Y212 fourcc_code('Y', '2', '1', '2') /* [63:0] Cr0:0:Y1:0:Cb0:0:Y0:0 12:4:12:4:12:4:12:4 little endian per 2 Y pixels */
+#define DRM_FORMAT_Y216 fourcc_code('Y', '2', '1', '6') /* [63:0] Cr0:Y1:Cb0:Y0 16:16:16:16 little endian per 2 Y pixels */
+
+/*
+ * packed Y4xx indicate for each component, xx valid data occupy msb
+ * 16-xx padding occupy lsb except Y410
+ */
+#define DRM_FORMAT_Y410 fourcc_code('Y', '4', '1', '0') /* [31:0] A:Cr:Y:Cb 2:10:10:10 little endian */
+#define DRM_FORMAT_Y412 fourcc_code('Y', '4', '1', '2') /* [63:0] A:0:Cr:0:Y:0:Cb:0 12:4:12:4:12:4:12:4 little endian */
+#define DRM_FORMAT_Y416 fourcc_code('Y', '4', '1', '6') /* [63:0] A:Cr:Y:Cb 16:16:16:16 little endian */
+
+#define DRM_FORMAT_XVYU2101010 fourcc_code('X', 'V', '3', '0') /* [31:0] X:Cr:Y:Cb 2:10:10:10 little endian */
+#define DRM_FORMAT_XVYU12_16161616 fourcc_code('X', 'V', '3', '6') /* [63:0] X:0:Cr:0:Y:0:Cb:0 12:4:12:4:12:4:12:4 little endian */
+#define DRM_FORMAT_XVYU16161616 fourcc_code('X', 'V', '4', '8') /* [63:0] X:Cr:Y:Cb 16:16:16:16 little endian */
+
+/*
+ * packed YCbCr420 2x2 tiled formats
+ * first 64 bits will contain Y,Cb,Cr components for a 2x2 tile
+ */
+/* [63:0] A3:A2:Y3:0:Cr0:0:Y2:0:A1:A0:Y1:0:Cb0:0:Y0:0 1:1:8:2:8:2:8:2:1:1:8:2:8:2:8:2 little endian */
+#define DRM_FORMAT_Y0L0 fourcc_code('Y', '0', 'L', '0')
+/* [63:0] X3:X2:Y3:0:Cr0:0:Y2:0:X1:X0:Y1:0:Cb0:0:Y0:0 1:1:8:2:8:2:8:2:1:1:8:2:8:2:8:2 little endian */
+#define DRM_FORMAT_X0L0 fourcc_code('X', '0', 'L', '0')
+
+/* [63:0] A3:A2:Y3:Cr0:Y2:A1:A0:Y1:Cb0:Y0 1:1:10:10:10:1:1:10:10:10 little endian */
+#define DRM_FORMAT_Y0L2 fourcc_code('Y', '0', 'L', '2')
+/* [63:0] X3:X2:Y3:Cr0:Y2:X1:X0:Y1:Cb0:Y0 1:1:10:10:10:1:1:10:10:10 little endian */
+#define DRM_FORMAT_X0L2 fourcc_code('X', '0', 'L', '2')
+
+/*
+ * 1-plane YUV 4:2:0
+ * In these formats, the component ordering is specified (Y, followed by U
+ * then V), but the exact Linear layout is undefined.
+ * These formats can only be used with a non-Linear modifier.
+ */
+#define DRM_FORMAT_YUV420_8BIT fourcc_code('Y', 'U', '0', '8')
+#define DRM_FORMAT_YUV420_10BIT fourcc_code('Y', 'U', '1', '0')
+
+/*
+ * 2 plane RGB + A
+ * index 0 = RGB plane, same format as the corresponding non _A8 format has
+ * index 1 = A plane, [7:0] A
+ */
+#define DRM_FORMAT_XRGB8888_A8 fourcc_code('X', 'R', 'A', '8')
+#define DRM_FORMAT_XBGR8888_A8 fourcc_code('X', 'B', 'A', '8')
+#define DRM_FORMAT_RGBX8888_A8 fourcc_code('R', 'X', 'A', '8')
+#define DRM_FORMAT_BGRX8888_A8 fourcc_code('B', 'X', 'A', '8')
+#define DRM_FORMAT_RGB888_A8 fourcc_code('R', '8', 'A', '8')
+#define DRM_FORMAT_BGR888_A8 fourcc_code('B', '8', 'A', '8')
+#define DRM_FORMAT_RGB565_A8 fourcc_code('R', '5', 'A', '8')
+#define DRM_FORMAT_BGR565_A8 fourcc_code('B', '5', 'A', '8')
+
+/*
+ * 2 plane YCbCr
+ * index 0 = Y plane, [7:0] Y
+ * index 1 = Cr:Cb plane, [15:0] Cr:Cb little endian
+ * or
+ * index 1 = Cb:Cr plane, [15:0] Cb:Cr little endian
+ */
+#define DRM_FORMAT_NV12 fourcc_code('N', 'V', '1', '2') /* 2x2 subsampled Cr:Cb plane */
+#define DRM_FORMAT_NV21 fourcc_code('N', 'V', '2', '1') /* 2x2 subsampled Cb:Cr plane */
+#define DRM_FORMAT_NV16 fourcc_code('N', 'V', '1', '6') /* 2x1 subsampled Cr:Cb plane */
+#define DRM_FORMAT_NV61 fourcc_code('N', 'V', '6', '1') /* 2x1 subsampled Cb:Cr plane */
+#define DRM_FORMAT_NV24 fourcc_code('N', 'V', '2', '4') /* non-subsampled Cr:Cb plane */
+#define DRM_FORMAT_NV42 fourcc_code('N', 'V', '4', '2') /* non-subsampled Cb:Cr plane */
+/*
+ * 2 plane YCbCr
+ * index 0 = Y plane, [39:0] Y3:Y2:Y1:Y0 little endian
+ * index 1 = Cr:Cb plane, [39:0] Cr1:Cb1:Cr0:Cb0 little endian
+ */
+#define DRM_FORMAT_NV15 fourcc_code('N', 'V', '1', '5') /* 2x2 subsampled Cr:Cb plane */
+
+/*
+ * 2 plane YCbCr MSB aligned
+ * index 0 = Y plane, [15:0] Y:x [10:6] little endian
+ * index 1 = Cr:Cb plane, [31:0] Cr:x:Cb:x [10:6:10:6] little endian
+ */
+#define DRM_FORMAT_P210 fourcc_code('P', '2', '1', '0') /* 2x1 subsampled Cr:Cb plane, 10 bit per channel */
+
+/*
+ * 2 plane YCbCr MSB aligned
+ * index 0 = Y plane, [15:0] Y:x [10:6] little endian
+ * index 1 = Cr:Cb plane, [31:0] Cr:x:Cb:x [10:6:10:6] little endian
+ */
+#define DRM_FORMAT_P010 fourcc_code('P', '0', '1', '0') /* 2x2 subsampled Cr:Cb plane 10 bits per channel */
+
+/*
+ * 2 plane YCbCr MSB aligned
+ * index 0 = Y plane, [15:0] Y:x [12:4] little endian
+ * index 1 = Cr:Cb plane, [31:0] Cr:x:Cb:x [12:4:12:4] little endian
+ */
+#define DRM_FORMAT_P012 fourcc_code('P', '0', '1', '2') /* 2x2 subsampled Cr:Cb plane 12 bits per channel */
+
+/*
+ * 2 plane YCbCr MSB aligned
+ * index 0 = Y plane, [15:0] Y little endian
+ * index 1 = Cr:Cb plane, [31:0] Cr:Cb [16:16] little endian
+ */
+#define DRM_FORMAT_P016 fourcc_code('P', '0', '1', '6') /* 2x2 subsampled Cr:Cb plane 16 bits per channel */
+
+/* 3 plane non-subsampled (444) YCbCr
+ * 16 bits per component, but only 10 bits are used and 6 bits are padded
+ * index 0: Y plane, [15:0] Y:x [10:6] little endian
+ * index 1: Cb plane, [15:0] Cb:x [10:6] little endian
+ * index 2: Cr plane, [15:0] Cr:x [10:6] little endian
+ */
+#define DRM_FORMAT_Q410 fourcc_code('Q', '4', '1', '0')
+
+/* 3 plane non-subsampled (444) YCrCb
+ * 16 bits per component, but only 10 bits are used and 6 bits are padded
+ * index 0: Y plane, [15:0] Y:x [10:6] little endian
+ * index 1: Cr plane, [15:0] Cr:x [10:6] little endian
+ * index 2: Cb plane, [15:0] Cb:x [10:6] little endian
+ */
+#define DRM_FORMAT_Q401 fourcc_code('Q', '4', '0', '1')
+
+/*
+ * 3 plane YCbCr
+ * index 0: Y plane, [7:0] Y
+ * index 1: Cb plane, [7:0] Cb
+ * index 2: Cr plane, [7:0] Cr
+ * or
+ * index 1: Cr plane, [7:0] Cr
+ * index 2: Cb plane, [7:0] Cb
+ */
+#define DRM_FORMAT_YUV410 fourcc_code('Y', 'U', 'V', '9') /* 4x4 subsampled Cb (1) and Cr (2) planes */
+#define DRM_FORMAT_YVU410 fourcc_code('Y', 'V', 'U', '9') /* 4x4 subsampled Cr (1) and Cb (2) planes */
+#define DRM_FORMAT_YUV411 fourcc_code('Y', 'U', '1', '1') /* 4x1 subsampled Cb (1) and Cr (2) planes */
+#define DRM_FORMAT_YVU411 fourcc_code('Y', 'V', '1', '1') /* 4x1 subsampled Cr (1) and Cb (2) planes */
+#define DRM_FORMAT_YUV420 fourcc_code('Y', 'U', '1', '2') /* 2x2 subsampled Cb (1) and Cr (2) planes */
+#define DRM_FORMAT_YVU420 fourcc_code('Y', 'V', '1', '2') /* 2x2 subsampled Cr (1) and Cb (2) planes */
+#define DRM_FORMAT_YUV422 fourcc_code('Y', 'U', '1', '6') /* 2x1 subsampled Cb (1) and Cr (2) planes */
+#define DRM_FORMAT_YVU422 fourcc_code('Y', 'V', '1', '6') /* 2x1 subsampled Cr (1) and Cb (2) planes */
+#define DRM_FORMAT_YUV444 fourcc_code('Y', 'U', '2', '4') /* non-subsampled Cb (1) and Cr (2) planes */
+#define DRM_FORMAT_YVU444 fourcc_code('Y', 'V', '2', '4') /* non-subsampled Cr (1) and Cb (2) planes */
+
+
+/*
+ * Format Modifiers:
+ *
+ * Format modifiers describe, typically, a re-ordering or modification
+ * of the data in a plane of an FB. This can be used to express tiled/
+ * swizzled formats, or compression, or a combination of the two.
+ *
+ * The upper 8 bits of the format modifier are a vendor-id as assigned
+ * below. The lower 56 bits are assigned as vendor sees fit.
+ */
+
+/* Vendor Ids: */
+#define DRM_FORMAT_MOD_VENDOR_NONE 0
+#define DRM_FORMAT_MOD_VENDOR_INTEL 0x01
+#define DRM_FORMAT_MOD_VENDOR_AMD 0x02
+#define DRM_FORMAT_MOD_VENDOR_NVIDIA 0x03
+#define DRM_FORMAT_MOD_VENDOR_SAMSUNG 0x04
+#define DRM_FORMAT_MOD_VENDOR_QCOM 0x05
+#define DRM_FORMAT_MOD_VENDOR_VIVANTE 0x06
+#define DRM_FORMAT_MOD_VENDOR_BROADCOM 0x07
+#define DRM_FORMAT_MOD_VENDOR_ARM 0x08
+#define DRM_FORMAT_MOD_VENDOR_ALLWINNER 0x09
+#define DRM_FORMAT_MOD_VENDOR_AMLOGIC 0x0a
+
+/* add more to the end as needed */
+
+#define DRM_FORMAT_RESERVED ((1ULL << 56) - 1)
+
+#define fourcc_mod_get_vendor(modifier) \
+ (((modifier) >> 56) & 0xff)
+
+#define fourcc_mod_is_vendor(modifier, vendor) \
+ (fourcc_mod_get_vendor(modifier) == DRM_FORMAT_MOD_VENDOR_## vendor)
+
+#define fourcc_mod_code(vendor, val) \
+ ((((__u64)DRM_FORMAT_MOD_VENDOR_## vendor) << 56) | ((val) & 0x00ffffffffffffffULL))
+
+/*
+ * Format Modifier tokens:
+ *
+ * When adding a new token please document the layout with a code comment,
+ * similar to the fourcc codes above. drm_fourcc.h is considered the
+ * authoritative source for all of these.
+ *
+ * Generic modifier names:
+ *
+ * DRM_FORMAT_MOD_GENERIC_* definitions are used to provide vendor-neutral names
+ * for layouts which are common across multiple vendors. To preserve
+ * compatibility, in cases where a vendor-specific definition already exists and
+ * a generic name for it is desired, the common name is a purely symbolic alias
+ * and must use the same numerical value as the original definition.
+ *
+ * Note that generic names should only be used for modifiers which describe
+ * generic layouts (such as pixel re-ordering), which may have
+ * independently-developed support across multiple vendors.
+ *
+ * In future cases where a generic layout is identified before merging with a
+ * vendor-specific modifier, a new 'GENERIC' vendor or modifier using vendor
+ * 'NONE' could be considered. This should only be for obvious, exceptional
+ * cases to avoid polluting the 'GENERIC' namespace with modifiers which only
+ * apply to a single vendor.
+ *
+ * Generic names should not be used for cases where multiple hardware vendors
+ * have implementations of the same standardised compression scheme (such as
+ * AFBC). In those cases, all implementations should use the same format
+ * modifier(s), reflecting the vendor of the standard.
+ */
+
+#define DRM_FORMAT_MOD_GENERIC_16_16_TILE DRM_FORMAT_MOD_SAMSUNG_16_16_TILE
+
+/*
+ * Invalid Modifier
+ *
+ * This modifier can be used as a sentinel to terminate the format modifiers
+ * list, or to initialize a variable with an invalid modifier. It might also be
+ * used to report an error back to userspace for certain APIs.
+ */
+#define DRM_FORMAT_MOD_INVALID fourcc_mod_code(NONE, DRM_FORMAT_RESERVED)
+
+/*
+ * Linear Layout
+ *
+ * Just plain linear layout. Note that this is different from no specifying any
+ * modifier (e.g. not setting DRM_MODE_FB_MODIFIERS in the DRM_ADDFB2 ioctl),
+ * which tells the driver to also take driver-internal information into account
+ * and so might actually result in a tiled framebuffer.
+ */
+#define DRM_FORMAT_MOD_LINEAR fourcc_mod_code(NONE, 0)
+
+/*
+ * Deprecated: use DRM_FORMAT_MOD_LINEAR instead
+ *
+ * The "none" format modifier doesn't actually mean that the modifier is
+ * implicit, instead it means that the layout is linear. Whether modifiers are
+ * used is out-of-band information carried in an API-specific way (e.g. in a
+ * flag for drm_mode_fb_cmd2).
+ */
+#define DRM_FORMAT_MOD_NONE 0
+
+/* Intel framebuffer modifiers */
+
+/*
+ * Intel X-tiling layout
+ *
+ * This is a tiled layout using 4Kb tiles (except on gen2 where the tiles 2Kb)
+ * in row-major layout. Within the tile bytes are laid out row-major, with
+ * a platform-dependent stride. On top of that the memory can apply
+ * platform-depending swizzling of some higher address bits into bit6.
+ *
+ * Note that this layout is only accurate on intel gen 8+ or valleyview chipsets.
+ * On earlier platforms the is highly platforms specific and not useful for
+ * cross-driver sharing. It exists since on a given platform it does uniquely
+ * identify the layout in a simple way for i915-specific userspace, which
+ * facilitated conversion of userspace to modifiers. Additionally the exact
+ * format on some really old platforms is not known.
+ */
+#define I915_FORMAT_MOD_X_TILED fourcc_mod_code(INTEL, 1)
+
+/*
+ * Intel Y-tiling layout
+ *
+ * This is a tiled layout using 4Kb tiles (except on gen2 where the tiles 2Kb)
+ * in row-major layout. Within the tile bytes are laid out in OWORD (16 bytes)
+ * chunks column-major, with a platform-dependent height. On top of that the
+ * memory can apply platform-depending swizzling of some higher address bits
+ * into bit6.
+ *
+ * Note that this layout is only accurate on intel gen 8+ or valleyview chipsets.
+ * On earlier platforms the is highly platforms specific and not useful for
+ * cross-driver sharing. It exists since on a given platform it does uniquely
+ * identify the layout in a simple way for i915-specific userspace, which
+ * facilitated conversion of userspace to modifiers. Additionally the exact
+ * format on some really old platforms is not known.
+ */
+#define I915_FORMAT_MOD_Y_TILED fourcc_mod_code(INTEL, 2)
+
+/*
+ * Intel Yf-tiling layout
+ *
+ * This is a tiled layout using 4Kb tiles in row-major layout.
+ * Within the tile pixels are laid out in 16 256 byte units / sub-tiles which
+ * are arranged in four groups (two wide, two high) with column-major layout.
+ * Each group therefore consits out of four 256 byte units, which are also laid
+ * out as 2x2 column-major.
+ * 256 byte units are made out of four 64 byte blocks of pixels, producing
+ * either a square block or a 2:1 unit.
+ * 64 byte blocks of pixels contain four pixel rows of 16 bytes, where the width
+ * in pixel depends on the pixel depth.
+ */
+#define I915_FORMAT_MOD_Yf_TILED fourcc_mod_code(INTEL, 3)
+
+/*
+ * Intel color control surface (CCS) for render compression
+ *
+ * The framebuffer format must be one of the 8:8:8:8 RGB formats.
+ * The main surface will be plane index 0 and must be Y/Yf-tiled,
+ * the CCS will be plane index 1.
+ *
+ * Each CCS tile matches a 1024x512 pixel area of the main surface.
+ * To match certain aspects of the 3D hardware the CCS is
+ * considered to be made up of normal 128Bx32 Y tiles, Thus
+ * the CCS pitch must be specified in multiples of 128 bytes.
+ *
+ * In reality the CCS tile appears to be a 64Bx64 Y tile, composed
+ * of QWORD (8 bytes) chunks instead of OWORD (16 bytes) chunks.
+ * But that fact is not relevant unless the memory is accessed
+ * directly.
+ */
+#define I915_FORMAT_MOD_Y_TILED_CCS fourcc_mod_code(INTEL, 4)
+#define I915_FORMAT_MOD_Yf_TILED_CCS fourcc_mod_code(INTEL, 5)
+
+/*
+ * Intel color control surfaces (CCS) for Gen-12 render compression.
+ *
+ * The main surface is Y-tiled and at plane index 0, the CCS is linear and
+ * at index 1. A 64B CCS cache line corresponds to an area of 4x1 tiles in
+ * main surface. In other words, 4 bits in CCS map to a main surface cache
+ * line pair. The main surface pitch is required to be a multiple of four
+ * Y-tile widths.
+ */
+#define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS fourcc_mod_code(INTEL, 6)
+
+/*
+ * Intel color control surfaces (CCS) for Gen-12 media compression
+ *
+ * The main surface is Y-tiled and at plane index 0, the CCS is linear and
+ * at index 1. A 64B CCS cache line corresponds to an area of 4x1 tiles in
+ * main surface. In other words, 4 bits in CCS map to a main surface cache
+ * line pair. The main surface pitch is required to be a multiple of four
+ * Y-tile widths. For semi-planar formats like NV12, CCS planes follow the
+ * Y and UV planes i.e., planes 0 and 1 are used for Y and UV surfaces,
+ * planes 2 and 3 for the respective CCS.
+ */
+#define I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS fourcc_mod_code(INTEL, 7)
+
+/*
+ * Intel Color Control Surface with Clear Color (CCS) for Gen-12 render
+ * compression.
+ *
+ * The main surface is Y-tiled and is at plane index 0 whereas CCS is linear
+ * and at index 1. The clear color is stored at index 2, and the pitch should
+ * be ignored. The clear color structure is 256 bits. The first 128 bits
+ * represents Raw Clear Color Red, Green, Blue and Alpha color each represented
+ * by 32 bits. The raw clear color is consumed by the 3d engine and generates
+ * the converted clear color of size 64 bits. The first 32 bits store the Lower
+ * Converted Clear Color value and the next 32 bits store the Higher Converted
+ * Clear Color value when applicable. The Converted Clear Color values are
+ * consumed by the DE. The last 64 bits are used to store Color Discard Enable
+ * and Depth Clear Value Valid which are ignored by the DE. A CCS cache line
+ * corresponds to an area of 4x1 tiles in the main surface. The main surface
+ * pitch is required to be a multiple of 4 tile widths.
+ */
+#define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC fourcc_mod_code(INTEL, 8)
+
+/*
+ * Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks
+ *
+ * Macroblocks are laid in a Z-shape, and each pixel data is following the
+ * standard NV12 style.
+ * As for NV12, an image is the result of two frame buffers: one for Y,
+ * one for the interleaved Cb/Cr components (1/2 the height of the Y buffer).
+ * Alignment requirements are (for each buffer):
+ * - multiple of 128 pixels for the width
+ * - multiple of 32 pixels for the height
+ *
+ * For more information: see https://linuxtv.org/downloads/v4l-dvb-apis/re32.html
+ */
+#define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE fourcc_mod_code(SAMSUNG, 1)
+
+/*
+ * Tiled, 16 (pixels) x 16 (lines) - sized macroblocks
+ *
+ * This is a simple tiled layout using tiles of 16x16 pixels in a row-major
+ * layout. For YCbCr formats Cb/Cr components are taken in such a way that
+ * they correspond to their 16x16 luma block.
+ */
+#define DRM_FORMAT_MOD_SAMSUNG_16_16_TILE fourcc_mod_code(SAMSUNG, 2)
+
+/*
+ * Qualcomm Compressed Format
+ *
+ * Refers to a compressed variant of the base format that is compressed.
+ * Implementation may be platform and base-format specific.
+ *
+ * Each macrotile consists of m x n (mostly 4 x 4) tiles.
+ * Pixel data pitch/stride is aligned with macrotile width.
+ * Pixel data height is aligned with macrotile height.
+ * Entire pixel data buffer is aligned with 4k(bytes).
+ */
+#define DRM_FORMAT_MOD_QCOM_COMPRESSED fourcc_mod_code(QCOM, 1)
+
+/* Vivante framebuffer modifiers */
+
+/*
+ * Vivante 4x4 tiling layout
+ *
+ * This is a simple tiled layout using tiles of 4x4 pixels in a row-major
+ * layout.
+ */
+#define DRM_FORMAT_MOD_VIVANTE_TILED fourcc_mod_code(VIVANTE, 1)
+
+/*
+ * Vivante 64x64 super-tiling layout
+ *
+ * This is a tiled layout using 64x64 pixel super-tiles, where each super-tile
+ * contains 8x4 groups of 2x4 tiles of 4x4 pixels (like above) each, all in row-
+ * major layout.
+ *
+ * For more information: see
+ * https://github.com/etnaviv/etna_viv/blob/master/doc/hardware.md#texture-tiling
+ */
+#define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED fourcc_mod_code(VIVANTE, 2)
+
+/*
+ * Vivante 4x4 tiling layout for dual-pipe
+ *
+ * Same as the 4x4 tiling layout, except every second 4x4 pixel tile starts at a
+ * different base address. Offsets from the base addresses are therefore halved
+ * compared to the non-split tiled layout.
+ */
+#define DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED fourcc_mod_code(VIVANTE, 3)
+
+/*
+ * Vivante 64x64 super-tiling layout for dual-pipe
+ *
+ * Same as the 64x64 super-tiling layout, except every second 4x4 pixel tile
+ * starts at a different base address. Offsets from the base addresses are
+ * therefore halved compared to the non-split super-tiled layout.
+ */
+#define DRM_FORMAT_MOD_VIVANTE_SPLIT_SUPER_TILED fourcc_mod_code(VIVANTE, 4)
+
+/* NVIDIA frame buffer modifiers */
+
+/*
+ * Tegra Tiled Layout, used by Tegra 2, 3 and 4.
+ *
+ * Pixels are arranged in simple tiles of 16 x 16 bytes.
+ */
+#define DRM_FORMAT_MOD_NVIDIA_TEGRA_TILED fourcc_mod_code(NVIDIA, 1)
+
+/*
+ * Generalized Block Linear layout, used by desktop GPUs starting with NV50/G80,
+ * and Tegra GPUs starting with Tegra K1.
+ *
+ * Pixels are arranged in Groups of Bytes (GOBs). GOB size and layout varies
+ * based on the architecture generation. GOBs themselves are then arranged in
+ * 3D blocks, with the block dimensions (in terms of GOBs) always being a power
+ * of two, and hence expressible as their log2 equivalent (E.g., "2" represents
+ * a block depth or height of "4").
+ *
+ * Chapter 20 "Pixel Memory Formats" of the Tegra X1 TRM describes this format
+ * in full detail.
+ *
+ * Macro
+ * Bits Param Description
+ * ---- ----- -----------------------------------------------------------------
+ *
+ * 3:0 h log2(height) of each block, in GOBs. Placed here for
+ * compatibility with the existing
+ * DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK()-based modifiers.
+ *
+ * 4:4 - Must be 1, to indicate block-linear layout. Necessary for
+ * compatibility with the existing
+ * DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK()-based modifiers.
+ *
+ * 8:5 - Reserved (To support 3D-surfaces with variable log2(depth) block
+ * size). Must be zero.
+ *
+ * Note there is no log2(width) parameter. Some portions of the
+ * hardware support a block width of two gobs, but it is impractical
+ * to use due to lack of support elsewhere, and has no known
+ * benefits.
+ *
+ * 11:9 - Reserved (To support 2D-array textures with variable array stride
+ * in blocks, specified via log2(tile width in blocks)). Must be
+ * zero.
+ *
+ * 19:12 k Page Kind. This value directly maps to a field in the page
+ * tables of all GPUs >= NV50. It affects the exact layout of bits
+ * in memory and can be derived from the tuple
+ *
+ * (format, GPU model, compression type, samples per pixel)
+ *
+ * Where compression type is defined below. If GPU model were
+ * implied by the format modifier, format, or memory buffer, page
+ * kind would not need to be included in the modifier itself, but
+ * since the modifier should define the layout of the associated
+ * memory buffer independent from any device or other context, it
+ * must be included here.
+ *
+ * 21:20 g GOB Height and Page Kind Generation. The height of a GOB changed
+ * starting with Fermi GPUs. Additionally, the mapping between page
+ * kind and bit layout has changed at various points.
+ *
+ * 0 = Gob Height 8, Fermi - Volta, Tegra K1+ Page Kind mapping
+ * 1 = Gob Height 4, G80 - GT2XX Page Kind mapping
+ * 2 = Gob Height 8, Turing+ Page Kind mapping
+ * 3 = Reserved for future use.
+ *
+ * 22:22 s Sector layout. On Tegra GPUs prior to Xavier, there is a further
+ * bit remapping step that occurs at an even lower level than the
+ * page kind and block linear swizzles. This causes the layout of
+ * surfaces mapped in those SOC's GPUs to be incompatible with the
+ * equivalent mapping on other GPUs in the same system.
+ *
+ * 0 = Tegra K1 - Tegra Parker/TX2 Layout.
+ * 1 = Desktop GPU and Tegra Xavier+ Layout
+ *
+ * 25:23 c Lossless Framebuffer Compression type.
+ *
+ * 0 = none
+ * 1 = ROP/3D, layout 1, exact compression format implied by Page
+ * Kind field
+ * 2 = ROP/3D, layout 2, exact compression format implied by Page
+ * Kind field
+ * 3 = CDE horizontal
+ * 4 = CDE vertical
+ * 5 = Reserved for future use
+ * 6 = Reserved for future use
+ * 7 = Reserved for future use
+ *
+ * 55:25 - Reserved for future use. Must be zero.
+ */
+#define DRM_FORMAT_MOD_NVIDIA_BLOCK_LINEAR_2D(c, s, g, k, h) \
+ fourcc_mod_code(NVIDIA, (0x10 | \
+ ((h) & 0xf) | \
+ (((k) & 0xff) << 12) | \
+ (((g) & 0x3) << 20) | \
+ (((s) & 0x1) << 22) | \
+ (((c) & 0x7) << 23)))
+
+/* To grandfather in prior block linear format modifiers to the above layout,
+ * the page kind "0", which corresponds to "pitch/linear" and hence is unusable
+ * with block-linear layouts, is remapped within drivers to the value 0xfe,
+ * which corresponds to the "generic" kind used for simple single-sample
+ * uncompressed color formats on Fermi - Volta GPUs.
+ */
+static __inline__ __u64
+drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
+{
+ if (!(modifier & 0x10) || (modifier & (0xff << 12)))
+ return modifier;
+ else
+ return modifier | (0xfe << 12);
+}
+
+/*
+ * 16Bx2 Block Linear layout, used by Tegra K1 and later
+ *
+ * Pixels are arranged in 64x8 Groups Of Bytes (GOBs). GOBs are then stacked
+ * vertically by a power of 2 (1 to 32 GOBs) to form a block.
+ *
+ * Within a GOB, data is ordered as 16B x 2 lines sectors laid in Z-shape.
+ *
+ * Parameter 'v' is the log2 encoding of the number of GOBs stacked vertically.
+ * Valid values are:
+ *
+ * 0 == ONE_GOB
+ * 1 == TWO_GOBS
+ * 2 == FOUR_GOBS
+ * 3 == EIGHT_GOBS
+ * 4 == SIXTEEN_GOBS
+ * 5 == THIRTYTWO_GOBS
+ *
+ * Chapter 20 "Pixel Memory Formats" of the Tegra X1 TRM describes this format
+ * in full detail.
+ */
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(v) \
+ DRM_FORMAT_MOD_NVIDIA_BLOCK_LINEAR_2D(0, 0, 0, 0, (v))
+
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_ONE_GOB \
+ DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(0)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_TWO_GOB \
+ DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(1)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_FOUR_GOB \
+ DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(2)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_EIGHT_GOB \
+ DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(3)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_SIXTEEN_GOB \
+ DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(4)
+#define DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_THIRTYTWO_GOB \
+ DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK(5)
+
+/*
+ * Some Broadcom modifiers take parameters, for example the number of
+ * vertical lines in the image. Reserve the lower 32 bits for modifier
+ * type, and the next 24 bits for parameters. Top 8 bits are the
+ * vendor code.
+ */
+#define __fourcc_mod_broadcom_param_shift 8
+#define __fourcc_mod_broadcom_param_bits 48
+#define fourcc_mod_broadcom_code(val, params) \
+ fourcc_mod_code(BROADCOM, ((((__u64)params) << __fourcc_mod_broadcom_param_shift) | val))
+#define fourcc_mod_broadcom_param(m) \
+ ((int)(((m) >> __fourcc_mod_broadcom_param_shift) & \
+ ((1ULL << __fourcc_mod_broadcom_param_bits) - 1)))
+#define fourcc_mod_broadcom_mod(m) \
+ ((m) & ~(((1ULL << __fourcc_mod_broadcom_param_bits) - 1) << \
+ __fourcc_mod_broadcom_param_shift))
+
+/*
+ * Broadcom VC4 "T" format
+ *
+ * This is the primary layout that the V3D GPU can texture from (it
+ * can't do linear). The T format has:
+ *
+ * - 64b utiles of pixels in a raster-order grid according to cpp. It's 4x4
+ * pixels at 32 bit depth.
+ *
+ * - 1k subtiles made of a 4x4 raster-order grid of 64b utiles (so usually
+ * 16x16 pixels).
+ *
+ * - 4k tiles made of a 2x2 grid of 1k subtiles (so usually 32x32 pixels). On
+ * even 4k tile rows, they're arranged as (BL, TL, TR, BR), and on odd rows
+ * they're (TR, BR, BL, TL), where bottom left is start of memory.
+ *
+ * - an image made of 4k tiles in rows either left-to-right (even rows of 4k
+ * tiles) or right-to-left (odd rows of 4k tiles).
+ */
+#define DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED fourcc_mod_code(BROADCOM, 1)
+
+/*
+ * Broadcom SAND format
+ *
+ * This is the native format that the H.264 codec block uses. For VC4
+ * HVS, it is only valid for H.264 (NV12/21) and RGBA modes.
+ *
+ * The image can be considered to be split into columns, and the
+ * columns are placed consecutively into memory. The width of those
+ * columns can be either 32, 64, 128, or 256 pixels, but in practice
+ * only 128 pixel columns are used.
+ *
+ * The pitch between the start of each column is set to optimally
+ * switch between SDRAM banks. This is passed as the number of lines
+ * of column width in the modifier (we can't use the stride value due
+ * to various core checks that look at it , so you should set the
+ * stride to width*cpp).
+ *
+ * Note that the column height for this format modifier is the same
+ * for all of the planes, assuming that each column contains both Y
+ * and UV. Some SAND-using hardware stores UV in a separate tiled
+ * image from Y to reduce the column height, which is not supported
+ * with these modifiers.
+ */
+
+#define DRM_FORMAT_MOD_BROADCOM_SAND32_COL_HEIGHT(v) \
+ fourcc_mod_broadcom_code(2, v)
+#define DRM_FORMAT_MOD_BROADCOM_SAND64_COL_HEIGHT(v) \
+ fourcc_mod_broadcom_code(3, v)
+#define DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(v) \
+ fourcc_mod_broadcom_code(4, v)
+#define DRM_FORMAT_MOD_BROADCOM_SAND256_COL_HEIGHT(v) \
+ fourcc_mod_broadcom_code(5, v)
+
+#define DRM_FORMAT_MOD_BROADCOM_SAND32 \
+ DRM_FORMAT_MOD_BROADCOM_SAND32_COL_HEIGHT(0)
+#define DRM_FORMAT_MOD_BROADCOM_SAND64 \
+ DRM_FORMAT_MOD_BROADCOM_SAND64_COL_HEIGHT(0)
+#define DRM_FORMAT_MOD_BROADCOM_SAND128 \
+ DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(0)
+#define DRM_FORMAT_MOD_BROADCOM_SAND256 \
+ DRM_FORMAT_MOD_BROADCOM_SAND256_COL_HEIGHT(0)
+
+/* Broadcom UIF format
+ *
+ * This is the common format for the current Broadcom multimedia
+ * blocks, including V3D 3.x and newer, newer video codecs, and
+ * displays.
+ *
+ * The image consists of utiles (64b blocks), UIF blocks (2x2 utiles),
+ * and macroblocks (4x4 UIF blocks). Those 4x4 UIF block groups are
+ * stored in columns, with padding between the columns to ensure that
+ * moving from one column to the next doesn't hit the same SDRAM page
+ * bank.
+ *
+ * To calculate the padding, it is assumed that each hardware block
+ * and the software driving it knows the platform's SDRAM page size,
+ * number of banks, and XOR address, and that it's identical between
+ * all blocks using the format. This tiling modifier will use XOR as
+ * necessary to reduce the padding. If a hardware block can't do XOR,
+ * the assumption is that a no-XOR tiling modifier will be created.
+ */
+#define DRM_FORMAT_MOD_BROADCOM_UIF fourcc_mod_code(BROADCOM, 6)
+
+/*
+ * Arm Framebuffer Compression (AFBC) modifiers
+ *
+ * AFBC is a proprietary lossless image compression protocol and format.
+ * It provides fine-grained random access and minimizes the amount of data
+ * transferred between IP blocks.
+ *
+ * AFBC has several features which may be supported and/or used, which are
+ * represented using bits in the modifier. Not all combinations are valid,
+ * and different devices or use-cases may support different combinations.
+ *
+ * Further information on the use of AFBC modifiers can be found in
+ * Documentation/gpu/afbc.rst
+ */
+
+/*
+ * The top 4 bits (out of the 56 bits alloted for specifying vendor specific
+ * modifiers) denote the category for modifiers. Currently we have three
+ * categories of modifiers ie AFBC, MISC and AFRC. We can have a maximum of
+ * sixteen different categories.
+ */
+#define DRM_FORMAT_MOD_ARM_CODE(__type, __val) \
+ fourcc_mod_code(ARM, ((__u64)(__type) << 52) | ((__val) & 0x000fffffffffffffULL))
+
+#define DRM_FORMAT_MOD_ARM_TYPE_AFBC 0x00
+#define DRM_FORMAT_MOD_ARM_TYPE_MISC 0x01
+
+#define DRM_FORMAT_MOD_ARM_AFBC(__afbc_mode) \
+ DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_AFBC, __afbc_mode)
+
+/*
+ * AFBC superblock size
+ *
+ * Indicates the superblock size(s) used for the AFBC buffer. The buffer
+ * size (in pixels) must be aligned to a multiple of the superblock size.
+ * Four lowest significant bits(LSBs) are reserved for block size.
+ *
+ * Where one superblock size is specified, it applies to all planes of the
+ * buffer (e.g. 16x16, 32x8). When multiple superblock sizes are specified,
+ * the first applies to the Luma plane and the second applies to the Chroma
+ * plane(s). e.g. (32x8_64x4 means 32x8 Luma, with 64x4 Chroma).
+ * Multiple superblock sizes are only valid for multi-plane YCbCr formats.
+ */
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_MASK 0xf
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_16x16 (1ULL)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 (2ULL)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_64x4 (3ULL)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_32x8_64x4 (4ULL)
+
+/*
+ * AFBC lossless colorspace transform
+ *
+ * Indicates that the buffer makes use of the AFBC lossless colorspace
+ * transform.
+ */
+#define AFBC_FORMAT_MOD_YTR (1ULL << 4)
+
+/*
+ * AFBC block-split
+ *
+ * Indicates that the payload of each superblock is split. The second
+ * half of the payload is positioned at a predefined offset from the start
+ * of the superblock payload.
+ */
+#define AFBC_FORMAT_MOD_SPLIT (1ULL << 5)
+
+/*
+ * AFBC sparse layout
+ *
+ * This flag indicates that the payload of each superblock must be stored at a
+ * predefined position relative to the other superblocks in the same AFBC
+ * buffer. This order is the same order used by the header buffer. In this mode
+ * each superblock is given the same amount of space as an uncompressed
+ * superblock of the particular format would require, rounding up to the next
+ * multiple of 128 bytes in size.
+ */
+#define AFBC_FORMAT_MOD_SPARSE (1ULL << 6)
+
+/*
+ * AFBC copy-block restrict
+ *
+ * Buffers with this flag must obey the copy-block restriction. The restriction
+ * is such that there are no copy-blocks referring across the border of 8x8
+ * blocks. For the subsampled data the 8x8 limitation is also subsampled.
+ */
+#define AFBC_FORMAT_MOD_CBR (1ULL << 7)
+
+/*
+ * AFBC tiled layout
+ *
+ * The tiled layout groups superblocks in 8x8 or 4x4 tiles, where all
+ * superblocks inside a tile are stored together in memory. 8x8 tiles are used
+ * for pixel formats up to and including 32 bpp while 4x4 tiles are used for
+ * larger bpp formats. The order between the tiles is scan line.
+ * When the tiled layout is used, the buffer size (in pixels) must be aligned
+ * to the tile size.
+ */
+#define AFBC_FORMAT_MOD_TILED (1ULL << 8)
+
+/*
+ * AFBC solid color blocks
+ *
+ * Indicates that the buffer makes use of solid-color blocks, whereby bandwidth
+ * can be reduced if a whole superblock is a single color.
+ */
+#define AFBC_FORMAT_MOD_SC (1ULL << 9)
+
+/*
+ * AFBC double-buffer
+ *
+ * Indicates that the buffer is allocated in a layout safe for front-buffer
+ * rendering.
+ */
+#define AFBC_FORMAT_MOD_DB (1ULL << 10)
+
+/*
+ * AFBC buffer content hints
+ *
+ * Indicates that the buffer includes per-superblock content hints.
+ */
+#define AFBC_FORMAT_MOD_BCH (1ULL << 11)
+
+/* AFBC uncompressed storage mode
+ *
+ * Indicates that the buffer is using AFBC uncompressed storage mode.
+ * In this mode all superblock payloads in the buffer use the uncompressed
+ * storage mode, which is usually only used for data which cannot be compressed.
+ * The buffer layout is the same as for AFBC buffers without USM set, this only
+ * affects the storage mode of the individual superblocks. Note that even a
+ * buffer without USM set may use uncompressed storage mode for some or all
+ * superblocks, USM just guarantees it for all.
+ */
+#define AFBC_FORMAT_MOD_USM (1ULL << 12)
+
+/*
+ * Arm Fixed-Rate Compression (AFRC) modifiers
+ *
+ * AFRC is a proprietary fixed rate image compression protocol and format,
+ * designed to provide guaranteed bandwidth and memory footprint
+ * reductions in graphics and media use-cases.
+ *
+ * AFRC buffers consist of one or more planes, with the same components
+ * and meaning as an uncompressed buffer using the same pixel format.
+ *
+ * Within each plane, the pixel/luma/chroma values are grouped into
+ * "coding unit" blocks which are individually compressed to a
+ * fixed size (in bytes). All coding units within a given plane of a buffer
+ * store the same number of values, and have the same compressed size.
+ *
+ * The coding unit size is configurable, allowing different rates of compression.
+ *
+ * The start of each AFRC buffer plane must be aligned to an alignment granule which
+ * depends on the coding unit size.
+ *
+ * Coding Unit Size Plane Alignment
+ * ---------------- ---------------
+ * 16 bytes 1024 bytes
+ * 24 bytes 512 bytes
+ * 32 bytes 2048 bytes
+ *
+ * Coding units are grouped into paging tiles. AFRC buffer dimensions must be aligned
+ * to a multiple of the paging tile dimensions.
+ * The dimensions of each paging tile depend on whether the buffer is optimised for
+ * scanline (SCAN layout) or rotated (ROT layout) access.
+ *
+ * Layout Paging Tile Width Paging Tile Height
+ * ------ ----------------- ------------------
+ * SCAN 16 coding units 4 coding units
+ * ROT 8 coding units 8 coding units
+ *
+ * The dimensions of each coding unit depend on the number of components
+ * in the compressed plane and whether the buffer is optimised for
+ * scanline (SCAN layout) or rotated (ROT layout) access.
+ *
+ * Number of Components in Plane Layout Coding Unit Width Coding Unit Height
+ * ----------------------------- --------- ----------------- ------------------
+ * 1 SCAN 16 samples 4 samples
+ * Example: 16x4 luma samples in a 'Y' plane
+ * 16x4 chroma 'V' values, in the 'V' plane of a fully-planar YUV buffer
+ * ----------------------------- --------- ----------------- ------------------
+ * 1 ROT 8 samples 8 samples
+ * Example: 8x8 luma samples in a 'Y' plane
+ * 8x8 chroma 'V' values, in the 'V' plane of a fully-planar YUV buffer
+ * ----------------------------- --------- ----------------- ------------------
+ * 2 DONT CARE 8 samples 4 samples
+ * Example: 8x4 chroma pairs in the 'UV' plane of a semi-planar YUV buffer
+ * ----------------------------- --------- ----------------- ------------------
+ * 3 DONT CARE 4 samples 4 samples
+ * Example: 4x4 pixels in an RGB buffer without alpha
+ * ----------------------------- --------- ----------------- ------------------
+ * 4 DONT CARE 4 samples 4 samples
+ * Example: 4x4 pixels in an RGB buffer with alpha
+ */
+
+#define DRM_FORMAT_MOD_ARM_TYPE_AFRC 0x02
+
+#define DRM_FORMAT_MOD_ARM_AFRC(__afrc_mode) \
+ DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_AFRC, __afrc_mode)
+
+/*
+ * AFRC coding unit size modifier.
+ *
+ * Indicates the number of bytes used to store each compressed coding unit for
+ * one or more planes in an AFRC encoded buffer. The coding unit size for chrominance
+ * is the same for both Cb and Cr, which may be stored in separate planes.
+ *
+ * AFRC_FORMAT_MOD_CU_SIZE_P0 indicates the number of bytes used to store
+ * each compressed coding unit in the first plane of the buffer. For RGBA buffers
+ * this is the only plane, while for semi-planar and fully-planar YUV buffers,
+ * this corresponds to the luma plane.
+ *
+ * AFRC_FORMAT_MOD_CU_SIZE_P12 indicates the number of bytes used to store
+ * each compressed coding unit in the second and third planes in the buffer.
+ * For semi-planar and fully-planar YUV buffers, this corresponds to the chroma plane(s).
+ *
+ * For single-plane buffers, AFRC_FORMAT_MOD_CU_SIZE_P0 must be specified
+ * and AFRC_FORMAT_MOD_CU_SIZE_P12 must be zero.
+ * For semi-planar and fully-planar buffers, both AFRC_FORMAT_MOD_CU_SIZE_P0 and
+ * AFRC_FORMAT_MOD_CU_SIZE_P12 must be specified.
+ */
+#define AFRC_FORMAT_MOD_CU_SIZE_MASK 0xf
+#define AFRC_FORMAT_MOD_CU_SIZE_16 (1ULL)
+#define AFRC_FORMAT_MOD_CU_SIZE_24 (2ULL)
+#define AFRC_FORMAT_MOD_CU_SIZE_32 (3ULL)
+
+#define AFRC_FORMAT_MOD_CU_SIZE_P0(__afrc_cu_size) (__afrc_cu_size)
+#define AFRC_FORMAT_MOD_CU_SIZE_P12(__afrc_cu_size) ((__afrc_cu_size) << 4)
+
+/*
+ * AFRC scanline memory layout.
+ *
+ * Indicates if the buffer uses the scanline-optimised layout
+ * for an AFRC encoded buffer, otherwise, it uses the rotation-optimised layout.
+ * The memory layout is the same for all planes.
+ */
+#define AFRC_FORMAT_MOD_LAYOUT_SCAN (1ULL << 8)
+
+/*
+ * Arm 16x16 Block U-Interleaved modifier
+ *
+ * This is used by Arm Mali Utgard and Midgard GPUs. It divides the image
+ * into 16x16 pixel blocks. Blocks are stored linearly in order, but pixels
+ * in the block are reordered.
+ */
+#define DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED \
+ DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_MISC, 1ULL)
+
+/*
+ * Allwinner tiled modifier
+ *
+ * This tiling mode is implemented by the VPU found on all Allwinner platforms,
+ * codenamed sunxi. It is associated with a YUV format that uses either 2 or 3
+ * planes.
+ *
+ * With this tiling, the luminance samples are disposed in tiles representing
+ * 32x32 pixels and the chrominance samples in tiles representing 32x64 pixels.
+ * The pixel order in each tile is linear and the tiles are disposed linearly,
+ * both in row-major order.
+ */
+#define DRM_FORMAT_MOD_ALLWINNER_TILED fourcc_mod_code(ALLWINNER, 1)
+
+/*
+ * Amlogic Video Framebuffer Compression modifiers
+ *
+ * Amlogic uses a proprietary lossless image compression protocol and format
+ * for their hardware video codec accelerators, either video decoders or
+ * video input encoders.
+ *
+ * It considerably reduces memory bandwidth while writing and reading
+ * frames in memory.
+ *
+ * The underlying storage is considered to be 3 components, 8bit or 10-bit
+ * per component YCbCr 420, single plane :
+ * - DRM_FORMAT_YUV420_8BIT
+ * - DRM_FORMAT_YUV420_10BIT
+ *
+ * The first 8 bits of the mode defines the layout, then the following 8 bits
+ * defines the options changing the layout.
+ *
+ * Not all combinations are valid, and different SoCs may support different
+ * combinations of layout and options.
+ */
+#define __fourcc_mod_amlogic_layout_mask 0xff
+#define __fourcc_mod_amlogic_options_shift 8
+#define __fourcc_mod_amlogic_options_mask 0xff
+
+#define DRM_FORMAT_MOD_AMLOGIC_FBC(__layout, __options) \
+ fourcc_mod_code(AMLOGIC, \
+ ((__layout) & __fourcc_mod_amlogic_layout_mask) | \
+ (((__options) & __fourcc_mod_amlogic_options_mask) \
+ << __fourcc_mod_amlogic_options_shift))
+
+/* Amlogic FBC Layouts */
+
+/*
+ * Amlogic FBC Basic Layout
+ *
+ * The basic layout is composed of:
+ * - a body content organized in 64x32 superblocks with 4096 bytes per
+ * superblock in default mode.
+ * - a 32 bytes per 128x64 header block
+ *
+ * This layout is transferrable between Amlogic SoCs supporting this modifier.
+ */
+#define AMLOGIC_FBC_LAYOUT_BASIC (1ULL)
+
+/*
+ * Amlogic FBC Scatter Memory layout
+ *
+ * Indicates the header contains IOMMU references to the compressed
+ * frames content to optimize memory access and layout.
+ *
+ * In this mode, only the header memory address is needed, thus the
+ * content memory organization is tied to the current producer
+ * execution and cannot be saved/dumped neither transferrable between
+ * Amlogic SoCs supporting this modifier.
+ *
+ * Due to the nature of the layout, these buffers are not expected to
+ * be accessible by the user-space clients, but only accessible by the
+ * hardware producers and consumers.
+ *
+ * The user-space clients should expect a failure while trying to mmap
+ * the DMA-BUF handle returned by the producer.
+ */
+#define AMLOGIC_FBC_LAYOUT_SCATTER (2ULL)
+
+/* Amlogic FBC Layout Options Bit Mask */
+
+/*
+ * Amlogic FBC Memory Saving mode
+ *
+ * Indicates the storage is packed when pixel size is multiple of word
+ * boudaries, i.e. 8bit should be stored in this mode to save allocation
+ * memory.
+ *
+ * This mode reduces body layout to 3072 bytes per 64x32 superblock with
+ * the basic layout and 3200 bytes per 64x32 superblock combined with
+ * the scatter layout.
+ */
+#define AMLOGIC_FBC_OPTION_MEM_SAVING (1ULL << 0)
+
+/*
+ * AMD modifiers
+ *
+ * Memory layout:
+ *
+ * without DCC:
+ * - main surface
+ *
+ * with DCC & without DCC_RETILE:
+ * - main surface in plane 0
+ * - DCC surface in plane 1 (RB-aligned, pipe-aligned if DCC_PIPE_ALIGN is set)
+ *
+ * with DCC & DCC_RETILE:
+ * - main surface in plane 0
+ * - displayable DCC surface in plane 1 (not RB-aligned & not pipe-aligned)
+ * - pipe-aligned DCC surface in plane 2 (RB-aligned & pipe-aligned)
+ *
+ * For multi-plane formats the above surfaces get merged into one plane for
+ * each format plane, based on the required alignment only.
+ *
+ * Bits Parameter Notes
+ * ----- ------------------------ ---------------------------------------------
+ *
+ * 7:0 TILE_VERSION Values are AMD_FMT_MOD_TILE_VER_*
+ * 12:8 TILE Values are AMD_FMT_MOD_TILE_<version>_*
+ * 13 DCC
+ * 14 DCC_RETILE
+ * 15 DCC_PIPE_ALIGN
+ * 16 DCC_INDEPENDENT_64B
+ * 17 DCC_INDEPENDENT_128B
+ * 19:18 DCC_MAX_COMPRESSED_BLOCK Values are AMD_FMT_MOD_DCC_BLOCK_*
+ * 20 DCC_CONSTANT_ENCODE
+ * 23:21 PIPE_XOR_BITS Only for some chips
+ * 26:24 BANK_XOR_BITS Only for some chips
+ * 29:27 PACKERS Only for some chips
+ * 32:30 RB Only for some chips
+ * 35:33 PIPE Only for some chips
+ * 55:36 - Reserved for future use, must be zero
+ */
+#define AMD_FMT_MOD fourcc_mod_code(AMD, 0)
+
+#define IS_AMD_FMT_MOD(val) (((val) >> 56) == DRM_FORMAT_MOD_VENDOR_AMD)
+
+/* Reserve 0 for GFX8 and older */
+#define AMD_FMT_MOD_TILE_VER_GFX9 1
+#define AMD_FMT_MOD_TILE_VER_GFX10 2
+#define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+
+/*
+ * 64K_S is the same for GFX9/GFX10/GFX10_RBPLUS and hence has GFX9 as canonical
+ * version.
+ */
+#define AMD_FMT_MOD_TILE_GFX9_64K_S 9
+
+/*
+ * 64K_D for non-32 bpp is the same for GFX9/GFX10/GFX10_RBPLUS and hence has
+ * GFX9 as canonical version.
+ */
+#define AMD_FMT_MOD_TILE_GFX9_64K_D 10
+#define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
+#define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
+#define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+
+#define AMD_FMT_MOD_DCC_BLOCK_64B 0
+#define AMD_FMT_MOD_DCC_BLOCK_128B 1
+#define AMD_FMT_MOD_DCC_BLOCK_256B 2
+
+#define AMD_FMT_MOD_TILE_VERSION_SHIFT 0
+#define AMD_FMT_MOD_TILE_VERSION_MASK 0xFF
+#define AMD_FMT_MOD_TILE_SHIFT 8
+#define AMD_FMT_MOD_TILE_MASK 0x1F
+
+/* Whether DCC compression is enabled. */
+#define AMD_FMT_MOD_DCC_SHIFT 13
+#define AMD_FMT_MOD_DCC_MASK 0x1
+
+/*
+ * Whether to include two DCC surfaces, one which is rb & pipe aligned, and
+ * one which is not-aligned.
+ */
+#define AMD_FMT_MOD_DCC_RETILE_SHIFT 14
+#define AMD_FMT_MOD_DCC_RETILE_MASK 0x1
+
+/* Only set if DCC_RETILE = false */
+#define AMD_FMT_MOD_DCC_PIPE_ALIGN_SHIFT 15
+#define AMD_FMT_MOD_DCC_PIPE_ALIGN_MASK 0x1
+
+#define AMD_FMT_MOD_DCC_INDEPENDENT_64B_SHIFT 16
+#define AMD_FMT_MOD_DCC_INDEPENDENT_64B_MASK 0x1
+#define AMD_FMT_MOD_DCC_INDEPENDENT_128B_SHIFT 17
+#define AMD_FMT_MOD_DCC_INDEPENDENT_128B_MASK 0x1
+#define AMD_FMT_MOD_DCC_MAX_COMPRESSED_BLOCK_SHIFT 18
+#define AMD_FMT_MOD_DCC_MAX_COMPRESSED_BLOCK_MASK 0x3
+
+/*
+ * DCC supports embedding some clear colors directly in the DCC surface.
+ * However, on older GPUs the rendering HW ignores the embedded clear color
+ * and prefers the driver provided color. This necessitates doing a fastclear
+ * eliminate operation before a process transfers control.
+ *
+ * If this bit is set that means the fastclear eliminate is not needed for these
+ * embeddable colors.
+ */
+#define AMD_FMT_MOD_DCC_CONSTANT_ENCODE_SHIFT 20
+#define AMD_FMT_MOD_DCC_CONSTANT_ENCODE_MASK 0x1
+
+/*
+ * The below fields are for accounting for per GPU differences. These are only
+ * relevant for GFX9 and later and if the tile field is *_X/_T.
+ *
+ * PIPE_XOR_BITS = always needed
+ * BANK_XOR_BITS = only for TILE_VER_GFX9
+ * PACKERS = only for TILE_VER_GFX10_RBPLUS
+ * RB = only for TILE_VER_GFX9 & DCC
+ * PIPE = only for TILE_VER_GFX9 & DCC & (DCC_RETILE | DCC_PIPE_ALIGN)
+ */
+#define AMD_FMT_MOD_PIPE_XOR_BITS_SHIFT 21
+#define AMD_FMT_MOD_PIPE_XOR_BITS_MASK 0x7
+#define AMD_FMT_MOD_BANK_XOR_BITS_SHIFT 24
+#define AMD_FMT_MOD_BANK_XOR_BITS_MASK 0x7
+#define AMD_FMT_MOD_PACKERS_SHIFT 27
+#define AMD_FMT_MOD_PACKERS_MASK 0x7
+#define AMD_FMT_MOD_RB_SHIFT 30
+#define AMD_FMT_MOD_RB_MASK 0x7
+#define AMD_FMT_MOD_PIPE_SHIFT 33
+#define AMD_FMT_MOD_PIPE_MASK 0x7
+
+#define AMD_FMT_MOD_SET(field, value) \
+ ((uint64_t)(value) << AMD_FMT_MOD_##field##_SHIFT)
+#define AMD_FMT_MOD_GET(field, value) \
+ (((value) >> AMD_FMT_MOD_##field##_SHIFT) & AMD_FMT_MOD_##field##_MASK)
+#define AMD_FMT_MOD_CLEAR(field) \
+ (~((uint64_t)AMD_FMT_MOD_##field##_MASK << AMD_FMT_MOD_##field##_SHIFT))
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* DRM_FOURCC_H */
diff --git a/third_party/drm/drm/drm_mode.h b/third_party/drm/drm/drm_mode.h
new file mode 100644
index 0000000000..e1e3516828
--- /dev/null
+++ b/third_party/drm/drm/drm_mode.h
@@ -0,0 +1,1217 @@
+/*
+ * Copyright (c) 2007 Dave Airlie <airlied@linux.ie>
+ * Copyright (c) 2007 Jakob Bornecrantz <wallbraker@gmail.com>
+ * Copyright (c) 2008 Red Hat Inc.
+ * Copyright (c) 2007-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA
+ * Copyright (c) 2007-2008 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 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.
+ */
+
+#ifndef _DRM_MODE_H
+#define _DRM_MODE_H
+
+#include "drm.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/**
+ * DOC: overview
+ *
+ * DRM exposes many UAPI and structure definition to have a consistent
+ * and standardized interface with user.
+ * Userspace can refer to these structure definitions and UAPI formats
+ * to communicate to driver
+ */
+
+#define DRM_CONNECTOR_NAME_LEN 32
+#define DRM_DISPLAY_MODE_LEN 32
+#define DRM_PROP_NAME_LEN 32
+
+#define DRM_MODE_TYPE_BUILTIN (1<<0) /* deprecated */
+#define DRM_MODE_TYPE_CLOCK_C ((1<<1) | DRM_MODE_TYPE_BUILTIN) /* deprecated */
+#define DRM_MODE_TYPE_CRTC_C ((1<<2) | DRM_MODE_TYPE_BUILTIN) /* deprecated */
+#define DRM_MODE_TYPE_PREFERRED (1<<3)
+#define DRM_MODE_TYPE_DEFAULT (1<<4) /* deprecated */
+#define DRM_MODE_TYPE_USERDEF (1<<5)
+#define DRM_MODE_TYPE_DRIVER (1<<6)
+
+#define DRM_MODE_TYPE_ALL (DRM_MODE_TYPE_PREFERRED | \
+ DRM_MODE_TYPE_USERDEF | \
+ DRM_MODE_TYPE_DRIVER)
+
+/* Video mode flags */
+/* bit compatible with the xrandr RR_ definitions (bits 0-13)
+ *
+ * ABI warning: Existing userspace really expects
+ * the mode flags to match the xrandr definitions. Any
+ * changes that don't match the xrandr definitions will
+ * likely need a new client cap or some other mechanism
+ * to avoid breaking existing userspace. This includes
+ * allocating new flags in the previously unused bits!
+ */
+#define DRM_MODE_FLAG_PHSYNC (1<<0)
+#define DRM_MODE_FLAG_NHSYNC (1<<1)
+#define DRM_MODE_FLAG_PVSYNC (1<<2)
+#define DRM_MODE_FLAG_NVSYNC (1<<3)
+#define DRM_MODE_FLAG_INTERLACE (1<<4)
+#define DRM_MODE_FLAG_DBLSCAN (1<<5)
+#define DRM_MODE_FLAG_CSYNC (1<<6)
+#define DRM_MODE_FLAG_PCSYNC (1<<7)
+#define DRM_MODE_FLAG_NCSYNC (1<<8)
+#define DRM_MODE_FLAG_HSKEW (1<<9) /* hskew provided */
+#define DRM_MODE_FLAG_BCAST (1<<10) /* deprecated */
+#define DRM_MODE_FLAG_PIXMUX (1<<11) /* deprecated */
+#define DRM_MODE_FLAG_DBLCLK (1<<12)
+#define DRM_MODE_FLAG_CLKDIV2 (1<<13)
+ /*
+ * When adding a new stereo mode don't forget to adjust DRM_MODE_FLAGS_3D_MAX
+ * (define not exposed to user space).
+ */
+#define DRM_MODE_FLAG_3D_MASK (0x1f<<14)
+#define DRM_MODE_FLAG_3D_NONE (0<<14)
+#define DRM_MODE_FLAG_3D_FRAME_PACKING (1<<14)
+#define DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE (2<<14)
+#define DRM_MODE_FLAG_3D_LINE_ALTERNATIVE (3<<14)
+#define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL (4<<14)
+#define DRM_MODE_FLAG_3D_L_DEPTH (5<<14)
+#define DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH (6<<14)
+#define DRM_MODE_FLAG_3D_TOP_AND_BOTTOM (7<<14)
+#define DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF (8<<14)
+
+/* Picture aspect ratio options */
+#define DRM_MODE_PICTURE_ASPECT_NONE 0
+#define DRM_MODE_PICTURE_ASPECT_4_3 1
+#define DRM_MODE_PICTURE_ASPECT_16_9 2
+#define DRM_MODE_PICTURE_ASPECT_64_27 3
+#define DRM_MODE_PICTURE_ASPECT_256_135 4
+
+/* Content type options */
+#define DRM_MODE_CONTENT_TYPE_NO_DATA 0
+#define DRM_MODE_CONTENT_TYPE_GRAPHICS 1
+#define DRM_MODE_CONTENT_TYPE_PHOTO 2
+#define DRM_MODE_CONTENT_TYPE_CINEMA 3
+#define DRM_MODE_CONTENT_TYPE_GAME 4
+
+/* Aspect ratio flag bitmask (4 bits 22:19) */
+#define DRM_MODE_FLAG_PIC_AR_MASK (0x0F<<19)
+#define DRM_MODE_FLAG_PIC_AR_NONE \
+ (DRM_MODE_PICTURE_ASPECT_NONE<<19)
+#define DRM_MODE_FLAG_PIC_AR_4_3 \
+ (DRM_MODE_PICTURE_ASPECT_4_3<<19)
+#define DRM_MODE_FLAG_PIC_AR_16_9 \
+ (DRM_MODE_PICTURE_ASPECT_16_9<<19)
+#define DRM_MODE_FLAG_PIC_AR_64_27 \
+ (DRM_MODE_PICTURE_ASPECT_64_27<<19)
+#define DRM_MODE_FLAG_PIC_AR_256_135 \
+ (DRM_MODE_PICTURE_ASPECT_256_135<<19)
+
+#define DRM_MODE_FLAG_ALL (DRM_MODE_FLAG_PHSYNC | \
+ DRM_MODE_FLAG_NHSYNC | \
+ DRM_MODE_FLAG_PVSYNC | \
+ DRM_MODE_FLAG_NVSYNC | \
+ DRM_MODE_FLAG_INTERLACE | \
+ DRM_MODE_FLAG_DBLSCAN | \
+ DRM_MODE_FLAG_CSYNC | \
+ DRM_MODE_FLAG_PCSYNC | \
+ DRM_MODE_FLAG_NCSYNC | \
+ DRM_MODE_FLAG_HSKEW | \
+ DRM_MODE_FLAG_DBLCLK | \
+ DRM_MODE_FLAG_CLKDIV2 | \
+ DRM_MODE_FLAG_3D_MASK)
+
+/* DPMS flags */
+/* bit compatible with the xorg definitions. */
+#define DRM_MODE_DPMS_ON 0
+#define DRM_MODE_DPMS_STANDBY 1
+#define DRM_MODE_DPMS_SUSPEND 2
+#define DRM_MODE_DPMS_OFF 3
+
+/* Scaling mode options */
+#define DRM_MODE_SCALE_NONE 0 /* Unmodified timing (display or
+ software can still scale) */
+#define DRM_MODE_SCALE_FULLSCREEN 1 /* Full screen, ignore aspect */
+#define DRM_MODE_SCALE_CENTER 2 /* Centered, no scaling */
+#define DRM_MODE_SCALE_ASPECT 3 /* Full screen, preserve aspect */
+
+/* Dithering mode options */
+#define DRM_MODE_DITHERING_OFF 0
+#define DRM_MODE_DITHERING_ON 1
+#define DRM_MODE_DITHERING_AUTO 2
+
+/* Dirty info options */
+#define DRM_MODE_DIRTY_OFF 0
+#define DRM_MODE_DIRTY_ON 1
+#define DRM_MODE_DIRTY_ANNOTATE 2
+
+/* Link Status options */
+#define DRM_MODE_LINK_STATUS_GOOD 0
+#define DRM_MODE_LINK_STATUS_BAD 1
+
+/*
+ * DRM_MODE_ROTATE_<degrees>
+ *
+ * Signals that a drm plane is been rotated <degrees> degrees in counter
+ * clockwise direction.
+ *
+ * This define is provided as a convenience, looking up the property id
+ * using the name->prop id lookup is the preferred method.
+ */
+#define DRM_MODE_ROTATE_0 (1<<0)
+#define DRM_MODE_ROTATE_90 (1<<1)
+#define DRM_MODE_ROTATE_180 (1<<2)
+#define DRM_MODE_ROTATE_270 (1<<3)
+
+/*
+ * DRM_MODE_ROTATE_MASK
+ *
+ * Bitmask used to look for drm plane rotations.
+ */
+#define DRM_MODE_ROTATE_MASK (\
+ DRM_MODE_ROTATE_0 | \
+ DRM_MODE_ROTATE_90 | \
+ DRM_MODE_ROTATE_180 | \
+ DRM_MODE_ROTATE_270)
+
+/*
+ * DRM_MODE_REFLECT_<axis>
+ *
+ * Signals that the contents of a drm plane is reflected along the <axis> axis,
+ * in the same way as mirroring.
+ * See kerneldoc chapter "Plane Composition Properties" for more details.
+ *
+ * This define is provided as a convenience, looking up the property id
+ * using the name->prop id lookup is the preferred method.
+ */
+#define DRM_MODE_REFLECT_X (1<<4)
+#define DRM_MODE_REFLECT_Y (1<<5)
+
+/*
+ * DRM_MODE_REFLECT_MASK
+ *
+ * Bitmask used to look for drm plane reflections.
+ */
+#define DRM_MODE_REFLECT_MASK (\
+ DRM_MODE_REFLECT_X | \
+ DRM_MODE_REFLECT_Y)
+
+/* Content Protection Flags */
+#define DRM_MODE_CONTENT_PROTECTION_UNDESIRED 0
+#define DRM_MODE_CONTENT_PROTECTION_DESIRED 1
+#define DRM_MODE_CONTENT_PROTECTION_ENABLED 2
+
+/**
+ * struct drm_mode_modeinfo - Display mode information.
+ * @clock: pixel clock in kHz
+ * @hdisplay: horizontal display size
+ * @hsync_start: horizontal sync start
+ * @hsync_end: horizontal sync end
+ * @htotal: horizontal total size
+ * @hskew: horizontal skew
+ * @vdisplay: vertical display size
+ * @vsync_start: vertical sync start
+ * @vsync_end: vertical sync end
+ * @vtotal: vertical total size
+ * @vscan: vertical scan
+ * @vrefresh: approximate vertical refresh rate in Hz
+ * @flags: bitmask of misc. flags, see DRM_MODE_FLAG_* defines
+ * @type: bitmask of type flags, see DRM_MODE_TYPE_* defines
+ * @name: string describing the mode resolution
+ *
+ * This is the user-space API display mode information structure. For the
+ * kernel version see struct drm_display_mode.
+ */
+struct drm_mode_modeinfo {
+ __u32 clock;
+ __u16 hdisplay;
+ __u16 hsync_start;
+ __u16 hsync_end;
+ __u16 htotal;
+ __u16 hskew;
+ __u16 vdisplay;
+ __u16 vsync_start;
+ __u16 vsync_end;
+ __u16 vtotal;
+ __u16 vscan;
+
+ __u32 vrefresh;
+
+ __u32 flags;
+ __u32 type;
+ char name[DRM_DISPLAY_MODE_LEN];
+};
+
+struct drm_mode_card_res {
+ __u64 fb_id_ptr;
+ __u64 crtc_id_ptr;
+ __u64 connector_id_ptr;
+ __u64 encoder_id_ptr;
+ __u32 count_fbs;
+ __u32 count_crtcs;
+ __u32 count_connectors;
+ __u32 count_encoders;
+ __u32 min_width;
+ __u32 max_width;
+ __u32 min_height;
+ __u32 max_height;
+};
+
+struct drm_mode_crtc {
+ __u64 set_connectors_ptr;
+ __u32 count_connectors;
+
+ __u32 crtc_id; /**< Id */
+ __u32 fb_id; /**< Id of framebuffer */
+
+ __u32 x; /**< x Position on the framebuffer */
+ __u32 y; /**< y Position on the framebuffer */
+
+ __u32 gamma_size;
+ __u32 mode_valid;
+ struct drm_mode_modeinfo mode;
+};
+
+#define DRM_MODE_PRESENT_TOP_FIELD (1<<0)
+#define DRM_MODE_PRESENT_BOTTOM_FIELD (1<<1)
+
+/* Planes blend with or override other bits on the CRTC */
+struct drm_mode_set_plane {
+ __u32 plane_id;
+ __u32 crtc_id;
+ __u32 fb_id; /* fb object contains surface format type */
+ __u32 flags; /* see above flags */
+
+ /* Signed dest location allows it to be partially off screen */
+ __s32 crtc_x;
+ __s32 crtc_y;
+ __u32 crtc_w;
+ __u32 crtc_h;
+
+ /* Source values are 16.16 fixed point */
+ __u32 src_x;
+ __u32 src_y;
+ __u32 src_h;
+ __u32 src_w;
+};
+
+/**
+ * struct drm_mode_get_plane - Get plane metadata.
+ *
+ * Userspace can perform a GETPLANE ioctl to retrieve information about a
+ * plane.
+ *
+ * To retrieve the number of formats supported, set @count_format_types to zero
+ * and call the ioctl. @count_format_types will be updated with the value.
+ *
+ * To retrieve these formats, allocate an array with the memory needed to store
+ * @count_format_types formats. Point @format_type_ptr to this array and call
+ * the ioctl again (with @count_format_types still set to the value returned in
+ * the first ioctl call).
+ */
+struct drm_mode_get_plane {
+ /**
+ * @plane_id: Object ID of the plane whose information should be
+ * retrieved. Set by caller.
+ */
+ __u32 plane_id;
+
+ /** @crtc_id: Object ID of the current CRTC. */
+ __u32 crtc_id;
+ /** @fb_id: Object ID of the current fb. */
+ __u32 fb_id;
+
+ /**
+ * @possible_crtcs: Bitmask of CRTC's compatible with the plane. CRTC's
+ * are created and they receive an index, which corresponds to their
+ * position in the bitmask. Bit N corresponds to
+ * :ref:`CRTC index<crtc_index>` N.
+ */
+ __u32 possible_crtcs;
+ /** @gamma_size: Never used. */
+ __u32 gamma_size;
+
+ /** @count_format_types: Number of formats. */
+ __u32 count_format_types;
+ /**
+ * @format_type_ptr: Pointer to ``__u32`` array of formats that are
+ * supported by the plane. These formats do not require modifiers.
+ */
+ __u64 format_type_ptr;
+};
+
+struct drm_mode_get_plane_res {
+ __u64 plane_id_ptr;
+ __u32 count_planes;
+};
+
+#define DRM_MODE_ENCODER_NONE 0
+#define DRM_MODE_ENCODER_DAC 1
+#define DRM_MODE_ENCODER_TMDS 2
+#define DRM_MODE_ENCODER_LVDS 3
+#define DRM_MODE_ENCODER_TVDAC 4
+#define DRM_MODE_ENCODER_VIRTUAL 5
+#define DRM_MODE_ENCODER_DSI 6
+#define DRM_MODE_ENCODER_DPMST 7
+#define DRM_MODE_ENCODER_DPI 8
+
+struct drm_mode_get_encoder {
+ __u32 encoder_id;
+ __u32 encoder_type;
+
+ __u32 crtc_id; /**< Id of crtc */
+
+ __u32 possible_crtcs;
+ __u32 possible_clones;
+};
+
+/* This is for connectors with multiple signal types. */
+/* Try to match DRM_MODE_CONNECTOR_X as closely as possible. */
+enum drm_mode_subconnector {
+ DRM_MODE_SUBCONNECTOR_Automatic = 0, /* DVI-I, TV */
+ DRM_MODE_SUBCONNECTOR_Unknown = 0, /* DVI-I, TV, DP */
+ DRM_MODE_SUBCONNECTOR_VGA = 1, /* DP */
+ DRM_MODE_SUBCONNECTOR_DVID = 3, /* DVI-I DP */
+ DRM_MODE_SUBCONNECTOR_DVIA = 4, /* DVI-I */
+ DRM_MODE_SUBCONNECTOR_Composite = 5, /* TV */
+ DRM_MODE_SUBCONNECTOR_SVIDEO = 6, /* TV */
+ DRM_MODE_SUBCONNECTOR_Component = 8, /* TV */
+ DRM_MODE_SUBCONNECTOR_SCART = 9, /* TV */
+ DRM_MODE_SUBCONNECTOR_DisplayPort = 10, /* DP */
+ DRM_MODE_SUBCONNECTOR_HDMIA = 11, /* DP */
+ DRM_MODE_SUBCONNECTOR_Native = 15, /* DP */
+ DRM_MODE_SUBCONNECTOR_Wireless = 18, /* DP */
+};
+
+#define DRM_MODE_CONNECTOR_Unknown 0
+#define DRM_MODE_CONNECTOR_VGA 1
+#define DRM_MODE_CONNECTOR_DVII 2
+#define DRM_MODE_CONNECTOR_DVID 3
+#define DRM_MODE_CONNECTOR_DVIA 4
+#define DRM_MODE_CONNECTOR_Composite 5
+#define DRM_MODE_CONNECTOR_SVIDEO 6
+#define DRM_MODE_CONNECTOR_LVDS 7
+#define DRM_MODE_CONNECTOR_Component 8
+#define DRM_MODE_CONNECTOR_9PinDIN 9
+#define DRM_MODE_CONNECTOR_DisplayPort 10
+#define DRM_MODE_CONNECTOR_HDMIA 11
+#define DRM_MODE_CONNECTOR_HDMIB 12
+#define DRM_MODE_CONNECTOR_TV 13
+#define DRM_MODE_CONNECTOR_eDP 14
+#define DRM_MODE_CONNECTOR_VIRTUAL 15
+#define DRM_MODE_CONNECTOR_DSI 16
+#define DRM_MODE_CONNECTOR_DPI 17
+#define DRM_MODE_CONNECTOR_WRITEBACK 18
+#define DRM_MODE_CONNECTOR_SPI 19
+#define DRM_MODE_CONNECTOR_USB 20
+
+/**
+ * struct drm_mode_get_connector - Get connector metadata.
+ *
+ * User-space can perform a GETCONNECTOR ioctl to retrieve information about a
+ * connector. User-space is expected to retrieve encoders, modes and properties
+ * by performing this ioctl at least twice: the first time to retrieve the
+ * number of elements, the second time to retrieve the elements themselves.
+ *
+ * To retrieve the number of elements, set @count_props and @count_encoders to
+ * zero, set @count_modes to 1, and set @modes_ptr to a temporary struct
+ * drm_mode_modeinfo element.
+ *
+ * To retrieve the elements, allocate arrays for @encoders_ptr, @modes_ptr,
+ * @props_ptr and @prop_values_ptr, then set @count_modes, @count_props and
+ * @count_encoders to their capacity.
+ *
+ * Performing the ioctl only twice may be racy: the number of elements may have
+ * changed with a hotplug event in-between the two ioctls. User-space is
+ * expected to retry the last ioctl until the number of elements stabilizes.
+ * The kernel won't fill any array which doesn't have the expected length.
+ *
+ * **Force-probing a connector**
+ *
+ * If the @count_modes field is set to zero and the DRM client is the current
+ * DRM master, the kernel will perform a forced probe on the connector to
+ * refresh the connector status, modes and EDID. A forced-probe can be slow,
+ * might cause flickering and the ioctl will block.
+ *
+ * User-space needs to force-probe connectors to ensure their metadata is
+ * up-to-date at startup and after receiving a hot-plug event. User-space
+ * may perform a forced-probe when the user explicitly requests it. User-space
+ * shouldn't perform a forced-probe in other situations.
+ */
+struct drm_mode_get_connector {
+ /** @encoders_ptr: Pointer to ``__u32`` array of object IDs. */
+ __u64 encoders_ptr;
+ /** @modes_ptr: Pointer to struct drm_mode_modeinfo array. */
+ __u64 modes_ptr;
+ /** @props_ptr: Pointer to ``__u32`` array of property IDs. */
+ __u64 props_ptr;
+ /** @prop_values_ptr: Pointer to ``__u64`` array of property values. */
+ __u64 prop_values_ptr;
+
+ /** @count_modes: Number of modes. */
+ __u32 count_modes;
+ /** @count_props: Number of properties. */
+ __u32 count_props;
+ /** @count_encoders: Number of encoders. */
+ __u32 count_encoders;
+
+ /** @encoder_id: Object ID of the current encoder. */
+ __u32 encoder_id;
+ /** @connector_id: Object ID of the connector. */
+ __u32 connector_id;
+ /**
+ * @connector_type: Type of the connector.
+ *
+ * See DRM_MODE_CONNECTOR_* defines.
+ */
+ __u32 connector_type;
+ /**
+ * @connector_type_id: Type-specific connector number.
+ *
+ * This is not an object ID. This is a per-type connector number. Each
+ * (type, type_id) combination is unique across all connectors of a DRM
+ * device.
+ */
+ __u32 connector_type_id;
+
+ /**
+ * @connection: Status of the connector.
+ *
+ * See enum drm_connector_status.
+ */
+ __u32 connection;
+ /** @mm_width: Width of the connected sink in millimeters. */
+ __u32 mm_width;
+ /** @mm_height: Height of the connected sink in millimeters. */
+ __u32 mm_height;
+ /**
+ * @subpixel: Subpixel order of the connected sink.
+ *
+ * See enum subpixel_order.
+ */
+ __u32 subpixel;
+
+ /** @pad: Padding, must be zero. */
+ __u32 pad;
+};
+
+#define DRM_MODE_PROP_PENDING (1<<0) /* deprecated, do not use */
+#define DRM_MODE_PROP_RANGE (1<<1)
+#define DRM_MODE_PROP_IMMUTABLE (1<<2)
+#define DRM_MODE_PROP_ENUM (1<<3) /* enumerated type with text strings */
+#define DRM_MODE_PROP_BLOB (1<<4)
+#define DRM_MODE_PROP_BITMASK (1<<5) /* bitmask of enumerated types */
+
+/* non-extended types: legacy bitmask, one bit per type: */
+#define DRM_MODE_PROP_LEGACY_TYPE ( \
+ DRM_MODE_PROP_RANGE | \
+ DRM_MODE_PROP_ENUM | \
+ DRM_MODE_PROP_BLOB | \
+ DRM_MODE_PROP_BITMASK)
+
+/* extended-types: rather than continue to consume a bit per type,
+ * grab a chunk of the bits to use as integer type id.
+ */
+#define DRM_MODE_PROP_EXTENDED_TYPE 0x0000ffc0
+#define DRM_MODE_PROP_TYPE(n) ((n) << 6)
+#define DRM_MODE_PROP_OBJECT DRM_MODE_PROP_TYPE(1)
+#define DRM_MODE_PROP_SIGNED_RANGE DRM_MODE_PROP_TYPE(2)
+
+/* the PROP_ATOMIC flag is used to hide properties from userspace that
+ * is not aware of atomic properties. This is mostly to work around
+ * older userspace (DDX drivers) that read/write each prop they find,
+ * witout being aware that this could be triggering a lengthy modeset.
+ */
+#define DRM_MODE_PROP_ATOMIC 0x80000000
+
+/**
+ * struct drm_mode_property_enum - Description for an enum/bitfield entry.
+ * @value: numeric value for this enum entry.
+ * @name: symbolic name for this enum entry.
+ *
+ * See struct drm_property_enum for details.
+ */
+struct drm_mode_property_enum {
+ __u64 value;
+ char name[DRM_PROP_NAME_LEN];
+};
+
+/**
+ * struct drm_mode_get_property - Get property metadata.
+ *
+ * User-space can perform a GETPROPERTY ioctl to retrieve information about a
+ * property. The same property may be attached to multiple objects, see
+ * "Modeset Base Object Abstraction".
+ *
+ * The meaning of the @values_ptr field changes depending on the property type.
+ * See &drm_property.flags for more details.
+ *
+ * The @enum_blob_ptr and @count_enum_blobs fields are only meaningful when the
+ * property has the type &DRM_MODE_PROP_ENUM or &DRM_MODE_PROP_BITMASK. For
+ * backwards compatibility, the kernel will always set @count_enum_blobs to
+ * zero when the property has the type &DRM_MODE_PROP_BLOB. User-space must
+ * ignore these two fields if the property has a different type.
+ *
+ * User-space is expected to retrieve values and enums by performing this ioctl
+ * at least twice: the first time to retrieve the number of elements, the
+ * second time to retrieve the elements themselves.
+ *
+ * To retrieve the number of elements, set @count_values and @count_enum_blobs
+ * to zero, then call the ioctl. @count_values will be updated with the number
+ * of elements. If the property has the type &DRM_MODE_PROP_ENUM or
+ * &DRM_MODE_PROP_BITMASK, @count_enum_blobs will be updated as well.
+ *
+ * To retrieve the elements themselves, allocate an array for @values_ptr and
+ * set @count_values to its capacity. If the property has the type
+ * &DRM_MODE_PROP_ENUM or &DRM_MODE_PROP_BITMASK, allocate an array for
+ * @enum_blob_ptr and set @count_enum_blobs to its capacity. Calling the ioctl
+ * again will fill the arrays.
+ */
+struct drm_mode_get_property {
+ /** @values_ptr: Pointer to a ``__u64`` array. */
+ __u64 values_ptr;
+ /** @enum_blob_ptr: Pointer to a struct drm_mode_property_enum array. */
+ __u64 enum_blob_ptr;
+
+ /**
+ * @prop_id: Object ID of the property which should be retrieved. Set
+ * by the caller.
+ */
+ __u32 prop_id;
+ /**
+ * @flags: ``DRM_MODE_PROP_*`` bitfield. See &drm_property.flags for
+ * a definition of the flags.
+ */
+ __u32 flags;
+ /**
+ * @name: Symbolic property name. User-space should use this field to
+ * recognize properties.
+ */
+ char name[DRM_PROP_NAME_LEN];
+
+ /** @count_values: Number of elements in @values_ptr. */
+ __u32 count_values;
+ /** @count_enum_blobs: Number of elements in @enum_blob_ptr. */
+ __u32 count_enum_blobs;
+};
+
+struct drm_mode_connector_set_property {
+ __u64 value;
+ __u32 prop_id;
+ __u32 connector_id;
+};
+
+#define DRM_MODE_OBJECT_CRTC 0xcccccccc
+#define DRM_MODE_OBJECT_CONNECTOR 0xc0c0c0c0
+#define DRM_MODE_OBJECT_ENCODER 0xe0e0e0e0
+#define DRM_MODE_OBJECT_MODE 0xdededede
+#define DRM_MODE_OBJECT_PROPERTY 0xb0b0b0b0
+#define DRM_MODE_OBJECT_FB 0xfbfbfbfb
+#define DRM_MODE_OBJECT_BLOB 0xbbbbbbbb
+#define DRM_MODE_OBJECT_PLANE 0xeeeeeeee
+#define DRM_MODE_OBJECT_ANY 0
+
+struct drm_mode_obj_get_properties {
+ __u64 props_ptr;
+ __u64 prop_values_ptr;
+ __u32 count_props;
+ __u32 obj_id;
+ __u32 obj_type;
+};
+
+struct drm_mode_obj_set_property {
+ __u64 value;
+ __u32 prop_id;
+ __u32 obj_id;
+ __u32 obj_type;
+};
+
+struct drm_mode_get_blob {
+ __u32 blob_id;
+ __u32 length;
+ __u64 data;
+};
+
+struct drm_mode_fb_cmd {
+ __u32 fb_id;
+ __u32 width;
+ __u32 height;
+ __u32 pitch;
+ __u32 bpp;
+ __u32 depth;
+ /* driver specific handle */
+ __u32 handle;
+};
+
+#define DRM_MODE_FB_INTERLACED (1<<0) /* for interlaced framebuffers */
+#define DRM_MODE_FB_MODIFIERS (1<<1) /* enables ->modifer[] */
+
+struct drm_mode_fb_cmd2 {
+ __u32 fb_id;
+ __u32 width;
+ __u32 height;
+ __u32 pixel_format; /* fourcc code from drm_fourcc.h */
+ __u32 flags; /* see above flags */
+
+ /*
+ * In case of planar formats, this ioctl allows up to 4
+ * buffer objects with offsets and pitches per plane.
+ * The pitch and offset order is dictated by the fourcc,
+ * e.g. NV12 (https://fourcc.org/yuv.php#NV12) is described as:
+ *
+ * YUV 4:2:0 image with a plane of 8 bit Y samples
+ * followed by an interleaved U/V plane containing
+ * 8 bit 2x2 subsampled colour difference samples.
+ *
+ * So it would consist of Y as offsets[0] and UV as
+ * offsets[1]. Note that offsets[0] will generally
+ * be 0 (but this is not required).
+ *
+ * To accommodate tiled, compressed, etc formats, a
+ * modifier can be specified. The default value of zero
+ * indicates "native" format as specified by the fourcc.
+ * Vendor specific modifier token. Note that even though
+ * it looks like we have a modifier per-plane, we in fact
+ * do not. The modifier for each plane must be identical.
+ * Thus all combinations of different data layouts for
+ * multi plane formats must be enumerated as separate
+ * modifiers.
+ */
+ __u32 handles[4];
+ __u32 pitches[4]; /* pitch for each plane */
+ __u32 offsets[4]; /* offset of each plane */
+ __u64 modifier[4]; /* ie, tiling, compress */
+};
+
+#define DRM_MODE_FB_DIRTY_ANNOTATE_COPY 0x01
+#define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02
+#define DRM_MODE_FB_DIRTY_FLAGS 0x03
+
+#define DRM_MODE_FB_DIRTY_MAX_CLIPS 256
+
+/*
+ * Mark a region of a framebuffer as dirty.
+ *
+ * Some hardware does not automatically update display contents
+ * as a hardware or software draw to a framebuffer. This ioctl
+ * allows userspace to tell the kernel and the hardware what
+ * regions of the framebuffer have changed.
+ *
+ * The kernel or hardware is free to update more then just the
+ * region specified by the clip rects. The kernel or hardware
+ * may also delay and/or coalesce several calls to dirty into a
+ * single update.
+ *
+ * Userspace may annotate the updates, the annotates are a
+ * promise made by the caller that the change is either a copy
+ * of pixels or a fill of a single color in the region specified.
+ *
+ * If the DRM_MODE_FB_DIRTY_ANNOTATE_COPY flag is given then
+ * the number of updated regions are half of num_clips given,
+ * where the clip rects are paired in src and dst. The width and
+ * height of each one of the pairs must match.
+ *
+ * If the DRM_MODE_FB_DIRTY_ANNOTATE_FILL flag is given the caller
+ * promises that the region specified of the clip rects is filled
+ * completely with a single color as given in the color argument.
+ */
+
+struct drm_mode_fb_dirty_cmd {
+ __u32 fb_id;
+ __u32 flags;
+ __u32 color;
+ __u32 num_clips;
+ __u64 clips_ptr;
+};
+
+struct drm_mode_mode_cmd {
+ __u32 connector_id;
+ struct drm_mode_modeinfo mode;
+};
+
+#define DRM_MODE_CURSOR_BO 0x01
+#define DRM_MODE_CURSOR_MOVE 0x02
+#define DRM_MODE_CURSOR_FLAGS 0x03
+
+/*
+ * depending on the value in flags different members are used.
+ *
+ * CURSOR_BO uses
+ * crtc_id
+ * width
+ * height
+ * handle - if 0 turns the cursor off
+ *
+ * CURSOR_MOVE uses
+ * crtc_id
+ * x
+ * y
+ */
+struct drm_mode_cursor {
+ __u32 flags;
+ __u32 crtc_id;
+ __s32 x;
+ __s32 y;
+ __u32 width;
+ __u32 height;
+ /* driver specific handle */
+ __u32 handle;
+};
+
+struct drm_mode_cursor2 {
+ __u32 flags;
+ __u32 crtc_id;
+ __s32 x;
+ __s32 y;
+ __u32 width;
+ __u32 height;
+ /* driver specific handle */
+ __u32 handle;
+ __s32 hot_x;
+ __s32 hot_y;
+};
+
+struct drm_mode_crtc_lut {
+ __u32 crtc_id;
+ __u32 gamma_size;
+
+ /* pointers to arrays */
+ __u64 red;
+ __u64 green;
+ __u64 blue;
+};
+
+struct drm_color_ctm {
+ /*
+ * Conversion matrix in S31.32 sign-magnitude
+ * (not two's complement!) format.
+ */
+ __u64 matrix[9];
+};
+
+struct drm_color_lut {
+ /*
+ * Values are mapped linearly to 0.0 - 1.0 range, with 0x0 == 0.0 and
+ * 0xffff == 1.0.
+ */
+ __u16 red;
+ __u16 green;
+ __u16 blue;
+ __u16 reserved;
+};
+
+/**
+ * struct hdr_metadata_infoframe - HDR Metadata Infoframe Data.
+ *
+ * HDR Metadata Infoframe as per CTA 861.G spec. This is expected
+ * to match exactly with the spec.
+ *
+ * Userspace is expected to pass the metadata information as per
+ * the format described in this structure.
+ */
+struct hdr_metadata_infoframe {
+ /**
+ * @eotf: Electro-Optical Transfer Function (EOTF)
+ * used in the stream.
+ */
+ __u8 eotf;
+ /**
+ * @metadata_type: Static_Metadata_Descriptor_ID.
+ */
+ __u8 metadata_type;
+ /**
+ * @display_primaries: Color Primaries of the Data.
+ * These are coded as unsigned 16-bit values in units of
+ * 0.00002, where 0x0000 represents zero and 0xC350
+ * represents 1.0000.
+ * @display_primaries.x: X cordinate of color primary.
+ * @display_primaries.y: Y cordinate of color primary.
+ */
+ struct {
+ __u16 x, y;
+ } display_primaries[3];
+ /**
+ * @white_point: White Point of Colorspace Data.
+ * These are coded as unsigned 16-bit values in units of
+ * 0.00002, where 0x0000 represents zero and 0xC350
+ * represents 1.0000.
+ * @white_point.x: X cordinate of whitepoint of color primary.
+ * @white_point.y: Y cordinate of whitepoint of color primary.
+ */
+ struct {
+ __u16 x, y;
+ } white_point;
+ /**
+ * @max_display_mastering_luminance: Max Mastering Display Luminance.
+ * This value is coded as an unsigned 16-bit value in units of 1 cd/m2,
+ * where 0x0001 represents 1 cd/m2 and 0xFFFF represents 65535 cd/m2.
+ */
+ __u16 max_display_mastering_luminance;
+ /**
+ * @min_display_mastering_luminance: Min Mastering Display Luminance.
+ * This value is coded as an unsigned 16-bit value in units of
+ * 0.0001 cd/m2, where 0x0001 represents 0.0001 cd/m2 and 0xFFFF
+ * represents 6.5535 cd/m2.
+ */
+ __u16 min_display_mastering_luminance;
+ /**
+ * @max_cll: Max Content Light Level.
+ * This value is coded as an unsigned 16-bit value in units of 1 cd/m2,
+ * where 0x0001 represents 1 cd/m2 and 0xFFFF represents 65535 cd/m2.
+ */
+ __u16 max_cll;
+ /**
+ * @max_fall: Max Frame Average Light Level.
+ * This value is coded as an unsigned 16-bit value in units of 1 cd/m2,
+ * where 0x0001 represents 1 cd/m2 and 0xFFFF represents 65535 cd/m2.
+ */
+ __u16 max_fall;
+};
+
+/**
+ * struct hdr_output_metadata - HDR output metadata
+ *
+ * Metadata Information to be passed from userspace
+ */
+struct hdr_output_metadata {
+ /**
+ * @metadata_type: Static_Metadata_Descriptor_ID.
+ */
+ __u32 metadata_type;
+ /**
+ * @hdmi_metadata_type1: HDR Metadata Infoframe.
+ */
+ union {
+ struct hdr_metadata_infoframe hdmi_metadata_type1;
+ };
+};
+
+#define DRM_MODE_PAGE_FLIP_EVENT 0x01
+#define DRM_MODE_PAGE_FLIP_ASYNC 0x02
+#define DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE 0x4
+#define DRM_MODE_PAGE_FLIP_TARGET_RELATIVE 0x8
+#define DRM_MODE_PAGE_FLIP_TARGET (DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE | \
+ DRM_MODE_PAGE_FLIP_TARGET_RELATIVE)
+#define DRM_MODE_PAGE_FLIP_FLAGS (DRM_MODE_PAGE_FLIP_EVENT | \
+ DRM_MODE_PAGE_FLIP_ASYNC | \
+ DRM_MODE_PAGE_FLIP_TARGET)
+
+/*
+ * Request a page flip on the specified crtc.
+ *
+ * This ioctl will ask KMS to schedule a page flip for the specified
+ * crtc. Once any pending rendering targeting the specified fb (as of
+ * ioctl time) has completed, the crtc will be reprogrammed to display
+ * that fb after the next vertical refresh. The ioctl returns
+ * immediately, but subsequent rendering to the current fb will block
+ * in the execbuffer ioctl until the page flip happens. If a page
+ * flip is already pending as the ioctl is called, EBUSY will be
+ * returned.
+ *
+ * Flag DRM_MODE_PAGE_FLIP_EVENT requests that drm sends back a vblank
+ * event (see drm.h: struct drm_event_vblank) when the page flip is
+ * done. The user_data field passed in with this ioctl will be
+ * returned as the user_data field in the vblank event struct.
+ *
+ * Flag DRM_MODE_PAGE_FLIP_ASYNC requests that the flip happen
+ * 'as soon as possible', meaning that it not delay waiting for vblank.
+ * This may cause tearing on the screen.
+ *
+ * The reserved field must be zero.
+ */
+
+struct drm_mode_crtc_page_flip {
+ __u32 crtc_id;
+ __u32 fb_id;
+ __u32 flags;
+ __u32 reserved;
+ __u64 user_data;
+};
+
+/*
+ * Request a page flip on the specified crtc.
+ *
+ * Same as struct drm_mode_crtc_page_flip, but supports new flags and
+ * re-purposes the reserved field:
+ *
+ * The sequence field must be zero unless either of the
+ * DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags is specified. When
+ * the ABSOLUTE flag is specified, the sequence field denotes the absolute
+ * vblank sequence when the flip should take effect. When the RELATIVE
+ * flag is specified, the sequence field denotes the relative (to the
+ * current one when the ioctl is called) vblank sequence when the flip
+ * should take effect. NOTE: DRM_IOCTL_WAIT_VBLANK must still be used to
+ * make sure the vblank sequence before the target one has passed before
+ * calling this ioctl. The purpose of the
+ * DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags is merely to clarify
+ * the target for when code dealing with a page flip runs during a
+ * vertical blank period.
+ */
+
+struct drm_mode_crtc_page_flip_target {
+ __u32 crtc_id;
+ __u32 fb_id;
+ __u32 flags;
+ __u32 sequence;
+ __u64 user_data;
+};
+
+/* create a dumb scanout buffer */
+struct drm_mode_create_dumb {
+ __u32 height;
+ __u32 width;
+ __u32 bpp;
+ __u32 flags;
+ /* handle, pitch, size will be returned */
+ __u32 handle;
+ __u32 pitch;
+ __u64 size;
+};
+
+/* set up for mmap of a dumb scanout buffer */
+struct drm_mode_map_dumb {
+ /** Handle for the object being mapped. */
+ __u32 handle;
+ __u32 pad;
+ /**
+ * Fake offset to use for subsequent mmap call
+ *
+ * This is a fixed-size type for 32/64 compatibility.
+ */
+ __u64 offset;
+};
+
+struct drm_mode_destroy_dumb {
+ __u32 handle;
+};
+
+/* page-flip flags are valid, plus: */
+#define DRM_MODE_ATOMIC_TEST_ONLY 0x0100
+#define DRM_MODE_ATOMIC_NONBLOCK 0x0200
+#define DRM_MODE_ATOMIC_ALLOW_MODESET 0x0400
+
+#define DRM_MODE_ATOMIC_FLAGS (\
+ DRM_MODE_PAGE_FLIP_EVENT |\
+ DRM_MODE_PAGE_FLIP_ASYNC |\
+ DRM_MODE_ATOMIC_TEST_ONLY |\
+ DRM_MODE_ATOMIC_NONBLOCK |\
+ DRM_MODE_ATOMIC_ALLOW_MODESET)
+
+struct drm_mode_atomic {
+ __u32 flags;
+ __u32 count_objs;
+ __u64 objs_ptr;
+ __u64 count_props_ptr;
+ __u64 props_ptr;
+ __u64 prop_values_ptr;
+ __u64 reserved;
+ __u64 user_data;
+};
+
+struct drm_format_modifier_blob {
+#define FORMAT_BLOB_CURRENT 1
+ /* Version of this blob format */
+ __u32 version;
+
+ /* Flags */
+ __u32 flags;
+
+ /* Number of fourcc formats supported */
+ __u32 count_formats;
+
+ /* Where in this blob the formats exist (in bytes) */
+ __u32 formats_offset;
+
+ /* Number of drm_format_modifiers */
+ __u32 count_modifiers;
+
+ /* Where in this blob the modifiers exist (in bytes) */
+ __u32 modifiers_offset;
+
+ /* __u32 formats[] */
+ /* struct drm_format_modifier modifiers[] */
+};
+
+struct drm_format_modifier {
+ /* Bitmask of formats in get_plane format list this info applies to. The
+ * offset allows a sliding window of which 64 formats (bits).
+ *
+ * Some examples:
+ * In today's world with < 65 formats, and formats 0, and 2 are
+ * supported
+ * 0x0000000000000005
+ * ^-offset = 0, formats = 5
+ *
+ * If the number formats grew to 128, and formats 98-102 are
+ * supported with the modifier:
+ *
+ * 0x0000007c00000000 0000000000000000
+ * ^
+ * |__offset = 64, formats = 0x7c00000000
+ *
+ */
+ __u64 formats;
+ __u32 offset;
+ __u32 pad;
+
+ /* The modifier that applies to the >get_plane format list bitmask. */
+ __u64 modifier;
+};
+
+/**
+ * struct drm_mode_create_blob - Create New blob property
+ *
+ * Create a new 'blob' data property, copying length bytes from data pointer,
+ * and returning new blob ID.
+ */
+struct drm_mode_create_blob {
+ /** @data: Pointer to data to copy. */
+ __u64 data;
+ /** @length: Length of data to copy. */
+ __u32 length;
+ /** @blob_id: Return: new property ID. */
+ __u32 blob_id;
+};
+
+/**
+ * struct drm_mode_destroy_blob - Destroy user blob
+ * @blob_id: blob_id to destroy
+ *
+ * Destroy a user-created blob property.
+ *
+ * User-space can release blobs as soon as they do not need to refer to them by
+ * their blob object ID. For instance, if you are using a MODE_ID blob in an
+ * atomic commit and you will not make another commit re-using the same ID, you
+ * can destroy the blob as soon as the commit has been issued, without waiting
+ * for it to complete.
+ */
+struct drm_mode_destroy_blob {
+ __u32 blob_id;
+};
+
+/**
+ * struct drm_mode_create_lease - Create lease
+ *
+ * Lease mode resources, creating another drm_master.
+ *
+ * The @object_ids array must reference at least one CRTC, one connector and
+ * one plane if &DRM_CLIENT_CAP_UNIVERSAL_PLANES is enabled. Alternatively,
+ * the lease can be completely empty.
+ */
+struct drm_mode_create_lease {
+ /** @object_ids: Pointer to array of object ids (__u32) */
+ __u64 object_ids;
+ /** @object_count: Number of object ids */
+ __u32 object_count;
+ /** @flags: flags for new FD (O_CLOEXEC, etc) */
+ __u32 flags;
+
+ /** @lessee_id: Return: unique identifier for lessee. */
+ __u32 lessee_id;
+ /** @fd: Return: file descriptor to new drm_master file */
+ __u32 fd;
+};
+
+/**
+ * struct drm_mode_list_lessees - List lessees
+ *
+ * List lesses from a drm_master.
+ */
+struct drm_mode_list_lessees {
+ /**
+ * @count_lessees: Number of lessees.
+ *
+ * On input, provides length of the array.
+ * On output, provides total number. No
+ * more than the input number will be written
+ * back, so two calls can be used to get
+ * the size and then the data.
+ */
+ __u32 count_lessees;
+ /** @pad: Padding. */
+ __u32 pad;
+
+ /**
+ * @lessees_ptr: Pointer to lessees.
+ *
+ * Pointer to __u64 array of lessee ids
+ */
+ __u64 lessees_ptr;
+};
+
+/**
+ * struct drm_mode_get_lease - Get Lease
+ *
+ * Get leased objects.
+ */
+struct drm_mode_get_lease {
+ /**
+ * @count_objects: Number of leased objects.
+ *
+ * On input, provides length of the array.
+ * On output, provides total number. No
+ * more than the input number will be written
+ * back, so two calls can be used to get
+ * the size and then the data.
+ */
+ __u32 count_objects;
+ /** @pad: Padding. */
+ __u32 pad;
+
+ /**
+ * @objects_ptr: Pointer to objects.
+ *
+ * Pointer to __u32 array of object ids.
+ */
+ __u64 objects_ptr;
+};
+
+/**
+ * struct drm_mode_revoke_lease - Revoke lease
+ */
+struct drm_mode_revoke_lease {
+ /** @lessee_id: Unique ID of lessee */
+ __u32 lessee_id;
+};
+
+/**
+ * struct drm_mode_rect - Two dimensional rectangle.
+ * @x1: Horizontal starting coordinate (inclusive).
+ * @y1: Vertical starting coordinate (inclusive).
+ * @x2: Horizontal ending coordinate (exclusive).
+ * @y2: Vertical ending coordinate (exclusive).
+ *
+ * With drm subsystem using struct drm_rect to manage rectangular area this
+ * export it to user-space.
+ *
+ * Currently used by drm_mode_atomic blob property FB_DAMAGE_CLIPS.
+ */
+struct drm_mode_rect {
+ __s32 x1;
+ __s32 y1;
+ __s32 x2;
+ __s32 y2;
+};
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif
diff --git a/third_party/drm/drm/xf86drm.h b/third_party/drm/drm/xf86drm.h
new file mode 100644
index 0000000000..a105b9e131
--- /dev/null
+++ b/third_party/drm/drm/xf86drm.h
@@ -0,0 +1,966 @@
+/**
+ * \file xf86drm.h
+ * OS-independent header for DRM user-level library interface.
+ *
+ * \author Rickard E. (Rik) Faith <faith@valinux.com>
+ */
+
+/*
+ * Copyright 1999, 2000 Precision Insight, Inc., Cedar Park, Texas.
+ * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifndef _XF86DRM_H_
+#define _XF86DRM_H_
+
+#include <stdarg.h>
+#include <sys/types.h>
+#include <stdint.h>
+#include <drm/drm.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef DRM_MAX_MINOR
+#define DRM_MAX_MINOR 16
+#endif
+
+#if defined(__linux__)
+
+#define DRM_IOCTL_NR(n) _IOC_NR(n)
+#define DRM_IOC_VOID _IOC_NONE
+#define DRM_IOC_READ _IOC_READ
+#define DRM_IOC_WRITE _IOC_WRITE
+#define DRM_IOC_READWRITE _IOC_READ|_IOC_WRITE
+#define DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size)
+
+#else /* One of the *BSDs */
+
+#include <sys/ioccom.h>
+#define DRM_IOCTL_NR(n) ((n) & 0xff)
+#define DRM_IOC_VOID IOC_VOID
+#define DRM_IOC_READ IOC_OUT
+#define DRM_IOC_WRITE IOC_IN
+#define DRM_IOC_READWRITE IOC_INOUT
+#define DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size)
+
+#endif
+
+ /* Defaults, if nothing set in xf86config */
+#define DRM_DEV_UID 0
+#define DRM_DEV_GID 0
+/* Default /dev/dri directory permissions 0755 */
+#define DRM_DEV_DIRMODE \
+ (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
+#define DRM_DEV_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
+
+#ifdef __OpenBSD__
+#define DRM_DIR_NAME "/dev"
+#define DRM_PRIMARY_MINOR_NAME "drm"
+#define DRM_CONTROL_MINOR_NAME "drmC"
+#define DRM_RENDER_MINOR_NAME "drmR"
+#else
+#define DRM_DIR_NAME "/dev/dri"
+#define DRM_PRIMARY_MINOR_NAME "card"
+#define DRM_CONTROL_MINOR_NAME "controlD"
+#define DRM_RENDER_MINOR_NAME "renderD"
+#define DRM_PROC_NAME "/proc/dri/" /* For backward Linux compatibility */
+#endif
+
+#define DRM_DEV_NAME "%s/" DRM_PRIMARY_MINOR_NAME "%d"
+#define DRM_CONTROL_DEV_NAME "%s/" DRM_CONTROL_MINOR_NAME "%d"
+#define DRM_RENDER_DEV_NAME "%s/" DRM_RENDER_MINOR_NAME "%d"
+
+#define DRM_NODE_NAME_MAX \
+ (sizeof(DRM_DIR_NAME) + 1 /* slash */ \
+ + MAX3(sizeof(DRM_PRIMARY_MINOR_NAME), \
+ sizeof(DRM_CONTROL_MINOR_NAME), \
+ sizeof(DRM_RENDER_MINOR_NAME)) \
+ + sizeof("144") /* highest possible node number */ \
+ + 1) /* NULL-terminator */
+
+#define DRM_ERR_NO_DEVICE (-1001)
+#define DRM_ERR_NO_ACCESS (-1002)
+#define DRM_ERR_NOT_ROOT (-1003)
+#define DRM_ERR_INVALID (-1004)
+#define DRM_ERR_NO_FD (-1005)
+
+#define DRM_AGP_NO_HANDLE 0
+
+typedef unsigned int drmSize, *drmSizePtr; /**< For mapped regions */
+typedef void *drmAddress, **drmAddressPtr; /**< For mapped regions */
+
+#if (__GNUC__ >= 3)
+#define DRM_PRINTFLIKE(f, a) __attribute__ ((format(__printf__, f, a)))
+#else
+#define DRM_PRINTFLIKE(f, a)
+#endif
+
+typedef struct _drmServerInfo {
+ int (*debug_print)(const char *format, va_list ap) DRM_PRINTFLIKE(1,0);
+ int (*load_module)(const char *name);
+ void (*get_perms)(gid_t *, mode_t *);
+} drmServerInfo, *drmServerInfoPtr;
+
+typedef struct drmHashEntry {
+ int fd;
+ void (*f)(int, void *, void *);
+ void *tagTable;
+} drmHashEntry;
+
+extern int drmIoctl(int fd, unsigned long request, void *arg);
+extern void *drmGetHashTable(void);
+extern drmHashEntry *drmGetEntry(int fd);
+
+/**
+ * Driver version information.
+ *
+ * \sa drmGetVersion() and drmSetVersion().
+ */
+typedef struct _drmVersion {
+ int version_major; /**< Major version */
+ int version_minor; /**< Minor version */
+ int version_patchlevel; /**< Patch level */
+ int name_len; /**< Length of name buffer */
+ char *name; /**< Name of driver */
+ int date_len; /**< Length of date buffer */
+ char *date; /**< User-space buffer to hold date */
+ int desc_len; /**< Length of desc buffer */
+ char *desc; /**< User-space buffer to hold desc */
+} drmVersion, *drmVersionPtr;
+
+typedef struct _drmStats {
+ unsigned long count; /**< Number of data */
+ struct {
+ unsigned long value; /**< Value from kernel */
+ const char *long_format; /**< Suggested format for long_name */
+ const char *long_name; /**< Long name for value */
+ const char *rate_format; /**< Suggested format for rate_name */
+ const char *rate_name; /**< Short name for value per second */
+ int isvalue; /**< True if value (vs. counter) */
+ const char *mult_names; /**< Multiplier names (e.g., "KGM") */
+ int mult; /**< Multiplier value (e.g., 1024) */
+ int verbose; /**< Suggest only in verbose output */
+ } data[15];
+} drmStatsT;
+
+
+ /* All of these enums *MUST* match with the
+ kernel implementation -- so do *NOT*
+ change them! (The drmlib implementation
+ will just copy the flags instead of
+ translating them.) */
+typedef enum {
+ DRM_FRAME_BUFFER = 0, /**< WC, no caching, no core dump */
+ DRM_REGISTERS = 1, /**< no caching, no core dump */
+ DRM_SHM = 2, /**< shared, cached */
+ DRM_AGP = 3, /**< AGP/GART */
+ DRM_SCATTER_GATHER = 4, /**< PCI scatter/gather */
+ DRM_CONSISTENT = 5 /**< PCI consistent */
+} drmMapType;
+
+typedef enum {
+ DRM_RESTRICTED = 0x0001, /**< Cannot be mapped to client-virtual */
+ DRM_READ_ONLY = 0x0002, /**< Read-only in client-virtual */
+ DRM_LOCKED = 0x0004, /**< Physical pages locked */
+ DRM_KERNEL = 0x0008, /**< Kernel requires access */
+ DRM_WRITE_COMBINING = 0x0010, /**< Use write-combining, if available */
+ DRM_CONTAINS_LOCK = 0x0020, /**< SHM page that contains lock */
+ DRM_REMOVABLE = 0x0040 /**< Removable mapping */
+} drmMapFlags;
+
+/**
+ * \warning These values *MUST* match drm.h
+ */
+typedef enum {
+ /** \name Flags for DMA buffer dispatch */
+ /*@{*/
+ DRM_DMA_BLOCK = 0x01, /**<
+ * Block until buffer dispatched.
+ *
+ * \note the buffer may not yet have been
+ * processed by the hardware -- getting a
+ * hardware lock with the hardware quiescent
+ * will ensure that the buffer has been
+ * processed.
+ */
+ DRM_DMA_WHILE_LOCKED = 0x02, /**< Dispatch while lock held */
+ DRM_DMA_PRIORITY = 0x04, /**< High priority dispatch */
+ /*@}*/
+
+ /** \name Flags for DMA buffer request */
+ /*@{*/
+ DRM_DMA_WAIT = 0x10, /**< Wait for free buffers */
+ DRM_DMA_SMALLER_OK = 0x20, /**< Smaller-than-requested buffers OK */
+ DRM_DMA_LARGER_OK = 0x40 /**< Larger-than-requested buffers OK */
+ /*@}*/
+} drmDMAFlags;
+
+typedef enum {
+ DRM_PAGE_ALIGN = 0x01,
+ DRM_AGP_BUFFER = 0x02,
+ DRM_SG_BUFFER = 0x04,
+ DRM_FB_BUFFER = 0x08,
+ DRM_PCI_BUFFER_RO = 0x10
+} drmBufDescFlags;
+
+typedef enum {
+ DRM_LOCK_READY = 0x01, /**< Wait until hardware is ready for DMA */
+ DRM_LOCK_QUIESCENT = 0x02, /**< Wait until hardware quiescent */
+ DRM_LOCK_FLUSH = 0x04, /**< Flush this context's DMA queue first */
+ DRM_LOCK_FLUSH_ALL = 0x08, /**< Flush all DMA queues first */
+ /* These *HALT* flags aren't supported yet
+ -- they will be used to support the
+ full-screen DGA-like mode. */
+ DRM_HALT_ALL_QUEUES = 0x10, /**< Halt all current and future queues */
+ DRM_HALT_CUR_QUEUES = 0x20 /**< Halt all current queues */
+} drmLockFlags;
+
+typedef enum {
+ DRM_CONTEXT_PRESERVED = 0x01, /**< This context is preserved and
+ never swapped. */
+ DRM_CONTEXT_2DONLY = 0x02 /**< This context is for 2D rendering only. */
+} drm_context_tFlags, *drm_context_tFlagsPtr;
+
+typedef struct _drmBufDesc {
+ int count; /**< Number of buffers of this size */
+ int size; /**< Size in bytes */
+ int low_mark; /**< Low water mark */
+ int high_mark; /**< High water mark */
+} drmBufDesc, *drmBufDescPtr;
+
+typedef struct _drmBufInfo {
+ int count; /**< Number of buffers described in list */
+ drmBufDescPtr list; /**< List of buffer descriptions */
+} drmBufInfo, *drmBufInfoPtr;
+
+typedef struct _drmBuf {
+ int idx; /**< Index into the master buffer list */
+ int total; /**< Buffer size */
+ int used; /**< Amount of buffer in use (for DMA) */
+ drmAddress address; /**< Address */
+} drmBuf, *drmBufPtr;
+
+/**
+ * Buffer mapping information.
+ *
+ * Used by drmMapBufs() and drmUnmapBufs() to store information about the
+ * mapped buffers.
+ */
+typedef struct _drmBufMap {
+ int count; /**< Number of buffers mapped */
+ drmBufPtr list; /**< Buffers */
+} drmBufMap, *drmBufMapPtr;
+
+typedef struct _drmLock {
+ volatile unsigned int lock;
+ char padding[60];
+ /* This is big enough for most current (and future?) architectures:
+ DEC Alpha: 32 bytes
+ Intel Merced: ?
+ Intel P5/PPro/PII/PIII: 32 bytes
+ Intel StrongARM: 32 bytes
+ Intel i386/i486: 16 bytes
+ MIPS: 32 bytes (?)
+ Motorola 68k: 16 bytes
+ Motorola PowerPC: 32 bytes
+ Sun SPARC: 32 bytes
+ */
+} drmLock, *drmLockPtr;
+
+/**
+ * Indices here refer to the offset into
+ * list in drmBufInfo
+ */
+typedef struct _drmDMAReq {
+ drm_context_t context; /**< Context handle */
+ int send_count; /**< Number of buffers to send */
+ int *send_list; /**< List of handles to buffers */
+ int *send_sizes; /**< Lengths of data to send, in bytes */
+ drmDMAFlags flags; /**< Flags */
+ int request_count; /**< Number of buffers requested */
+ int request_size; /**< Desired size of buffers requested */
+ int *request_list; /**< Buffer information */
+ int *request_sizes; /**< Minimum acceptable sizes */
+ int granted_count; /**< Number of buffers granted at this size */
+} drmDMAReq, *drmDMAReqPtr;
+
+typedef struct _drmRegion {
+ drm_handle_t handle;
+ unsigned int offset;
+ drmSize size;
+ drmAddress map;
+} drmRegion, *drmRegionPtr;
+
+typedef struct _drmTextureRegion {
+ unsigned char next;
+ unsigned char prev;
+ unsigned char in_use;
+ unsigned char padding; /**< Explicitly pad this out */
+ unsigned int age;
+} drmTextureRegion, *drmTextureRegionPtr;
+
+
+typedef enum {
+ DRM_VBLANK_ABSOLUTE = 0x0, /**< Wait for specific vblank sequence number */
+ DRM_VBLANK_RELATIVE = 0x1, /**< Wait for given number of vblanks */
+ /* bits 1-6 are reserved for high crtcs */
+ DRM_VBLANK_HIGH_CRTC_MASK = 0x0000003e,
+ DRM_VBLANK_EVENT = 0x4000000, /**< Send event instead of blocking */
+ DRM_VBLANK_FLIP = 0x8000000, /**< Scheduled buffer swap should flip */
+ DRM_VBLANK_NEXTONMISS = 0x10000000, /**< If missed, wait for next vblank */
+ DRM_VBLANK_SECONDARY = 0x20000000, /**< Secondary display controller */
+ DRM_VBLANK_SIGNAL = 0x40000000 /* Send signal instead of blocking */
+} drmVBlankSeqType;
+#define DRM_VBLANK_HIGH_CRTC_SHIFT 1
+
+typedef struct _drmVBlankReq {
+ drmVBlankSeqType type;
+ unsigned int sequence;
+ unsigned long signal;
+} drmVBlankReq, *drmVBlankReqPtr;
+
+typedef struct _drmVBlankReply {
+ drmVBlankSeqType type;
+ unsigned int sequence;
+ long tval_sec;
+ long tval_usec;
+} drmVBlankReply, *drmVBlankReplyPtr;
+
+typedef union _drmVBlank {
+ drmVBlankReq request;
+ drmVBlankReply reply;
+} drmVBlank, *drmVBlankPtr;
+
+typedef struct _drmSetVersion {
+ int drm_di_major;
+ int drm_di_minor;
+ int drm_dd_major;
+ int drm_dd_minor;
+} drmSetVersion, *drmSetVersionPtr;
+
+#define __drm_dummy_lock(lock) (*(__volatile__ unsigned int *)lock)
+
+#define DRM_LOCK_HELD 0x80000000U /**< Hardware lock is held */
+#define DRM_LOCK_CONT 0x40000000U /**< Hardware lock is contended */
+
+#if defined(__GNUC__) && (__GNUC__ >= 2)
+# if defined(__i386) || defined(__AMD64__) || defined(__x86_64__) || defined(__amd64__)
+ /* Reflect changes here to drmP.h */
+#define DRM_CAS(lock,old,new,__ret) \
+ do { \
+ int __dummy; /* Can't mark eax as clobbered */ \
+ __asm__ __volatile__( \
+ "lock ; cmpxchg %4,%1\n\t" \
+ "setnz %0" \
+ : "=d" (__ret), \
+ "=m" (__drm_dummy_lock(lock)), \
+ "=a" (__dummy) \
+ : "2" (old), \
+ "r" (new)); \
+ } while (0)
+
+#elif defined(__alpha__)
+
+#define DRM_CAS(lock, old, new, ret) \
+ do { \
+ int tmp, old32; \
+ __asm__ __volatile__( \
+ " addl $31, %5, %3\n" \
+ "1: ldl_l %0, %2\n" \
+ " cmpeq %0, %3, %1\n" \
+ " beq %1, 2f\n" \
+ " mov %4, %0\n" \
+ " stl_c %0, %2\n" \
+ " beq %0, 3f\n" \
+ " mb\n" \
+ "2: cmpeq %1, 0, %1\n" \
+ ".subsection 2\n" \
+ "3: br 1b\n" \
+ ".previous" \
+ : "=&r"(tmp), "=&r"(ret), \
+ "=m"(__drm_dummy_lock(lock)), \
+ "=&r"(old32) \
+ : "r"(new), "r"(old) \
+ : "memory"); \
+ } while (0)
+
+#elif defined(__sparc__)
+
+#define DRM_CAS(lock,old,new,__ret) \
+do { register unsigned int __old __asm("o0"); \
+ register unsigned int __new __asm("o1"); \
+ register volatile unsigned int *__lock __asm("o2"); \
+ __old = old; \
+ __new = new; \
+ __lock = (volatile unsigned int *)lock; \
+ __asm__ __volatile__( \
+ /*"cas [%2], %3, %0"*/ \
+ ".word 0xd3e29008\n\t" \
+ /*"membar #StoreStore | #StoreLoad"*/ \
+ ".word 0x8143e00a" \
+ : "=&r" (__new) \
+ : "0" (__new), \
+ "r" (__lock), \
+ "r" (__old) \
+ : "memory"); \
+ __ret = (__new != __old); \
+} while(0)
+
+#elif defined(__ia64__)
+
+#ifdef __INTEL_COMPILER
+/* this currently generates bad code (missing stop bits)... */
+#include <ia64intrin.h>
+
+#define DRM_CAS(lock,old,new,__ret) \
+ do { \
+ unsigned long __result, __old = (old) & 0xffffffff; \
+ __mf(); \
+ __result = _InterlockedCompareExchange_acq(&__drm_dummy_lock(lock), (new), __old);\
+ __ret = (__result) != (__old); \
+/* __ret = (__sync_val_compare_and_swap(&__drm_dummy_lock(lock), \
+ (old), (new)) \
+ != (old)); */\
+ } while (0)
+
+#else
+#define DRM_CAS(lock,old,new,__ret) \
+ do { \
+ unsigned int __result, __old = (old); \
+ __asm__ __volatile__( \
+ "mf\n" \
+ "mov ar.ccv=%2\n" \
+ ";;\n" \
+ "cmpxchg4.acq %0=%1,%3,ar.ccv" \
+ : "=r" (__result), "=m" (__drm_dummy_lock(lock)) \
+ : "r" ((unsigned long)__old), "r" (new) \
+ : "memory"); \
+ __ret = (__result) != (__old); \
+ } while (0)
+
+#endif
+
+#elif defined(__powerpc__)
+
+#define DRM_CAS(lock,old,new,__ret) \
+ do { \
+ __asm__ __volatile__( \
+ "sync;" \
+ "0: lwarx %0,0,%1;" \
+ " xor. %0,%3,%0;" \
+ " bne 1f;" \
+ " stwcx. %2,0,%1;" \
+ " bne- 0b;" \
+ "1: " \
+ "sync;" \
+ : "=&r"(__ret) \
+ : "r"(lock), "r"(new), "r"(old) \
+ : "cr0", "memory"); \
+ } while (0)
+
+# elif defined (__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \
+ || defined (__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) \
+ || defined (__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) \
+ || defined (__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
+ || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \
+ || defined(__ARM_ARCH_7EM__)
+ /* excluding ARMv4/ARMv5 and lower (lacking ldrex/strex support) */
+ #undef DRM_DEV_MODE
+ #define DRM_DEV_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
+
+ #define DRM_CAS(lock,old,new,__ret) \
+ do { \
+ __asm__ __volatile__ ( \
+ "1: ldrex %0, [%1]\n" \
+ " teq %0, %2\n" \
+ " ite eq\n" \
+ " strexeq %0, %3, [%1]\n" \
+ " movne %0, #1\n" \
+ : "=&r" (__ret) \
+ : "r" (lock), "r" (old), "r" (new) \
+ : "cc","memory"); \
+ } while (0)
+
+#endif /* architecture */
+#endif /* __GNUC__ >= 2 */
+
+#ifndef DRM_CAS
+#define DRM_CAS(lock,old,new,ret) do { ret=1; } while (0) /* FAST LOCK FAILS */
+#endif
+
+#if defined(__alpha__)
+#define DRM_CAS_RESULT(_result) long _result
+#elif defined(__powerpc__)
+#define DRM_CAS_RESULT(_result) int _result
+#else
+#define DRM_CAS_RESULT(_result) char _result
+#endif
+
+#define DRM_LIGHT_LOCK(fd,lock,context) \
+ do { \
+ DRM_CAS_RESULT(__ret); \
+ DRM_CAS(lock,context,DRM_LOCK_HELD|context,__ret); \
+ if (__ret) drmGetLock(fd,context,0); \
+ } while(0)
+
+ /* This one counts fast locks -- for
+ benchmarking only. */
+#define DRM_LIGHT_LOCK_COUNT(fd,lock,context,count) \
+ do { \
+ DRM_CAS_RESULT(__ret); \
+ DRM_CAS(lock,context,DRM_LOCK_HELD|context,__ret); \
+ if (__ret) drmGetLock(fd,context,0); \
+ else ++count; \
+ } while(0)
+
+#define DRM_LOCK(fd,lock,context,flags) \
+ do { \
+ if (flags) drmGetLock(fd,context,flags); \
+ else DRM_LIGHT_LOCK(fd,lock,context); \
+ } while(0)
+
+#define DRM_UNLOCK(fd,lock,context) \
+ do { \
+ DRM_CAS_RESULT(__ret); \
+ DRM_CAS(lock,DRM_LOCK_HELD|context,context,__ret); \
+ if (__ret) drmUnlock(fd,context); \
+ } while(0)
+
+ /* Simple spin locks */
+#define DRM_SPINLOCK(spin,val) \
+ do { \
+ DRM_CAS_RESULT(__ret); \
+ do { \
+ DRM_CAS(spin,0,val,__ret); \
+ if (__ret) while ((spin)->lock); \
+ } while (__ret); \
+ } while(0)
+
+#define DRM_SPINLOCK_TAKE(spin,val) \
+ do { \
+ DRM_CAS_RESULT(__ret); \
+ int cur; \
+ do { \
+ cur = (*spin).lock; \
+ DRM_CAS(spin,cur,val,__ret); \
+ } while (__ret); \
+ } while(0)
+
+#define DRM_SPINLOCK_COUNT(spin,val,count,__ret) \
+ do { \
+ int __i; \
+ __ret = 1; \
+ for (__i = 0; __ret && __i < count; __i++) { \
+ DRM_CAS(spin,0,val,__ret); \
+ if (__ret) for (;__i < count && (spin)->lock; __i++); \
+ } \
+ } while(0)
+
+#define DRM_SPINUNLOCK(spin,val) \
+ do { \
+ DRM_CAS_RESULT(__ret); \
+ if ((*spin).lock == val) { /* else server stole lock */ \
+ do { \
+ DRM_CAS(spin,val,0,__ret); \
+ } while (__ret); \
+ } \
+ } while(0)
+
+
+
+/* General user-level programmer's API: unprivileged */
+extern int drmAvailable(void);
+extern int drmOpen(const char *name, const char *busid);
+
+#define DRM_NODE_PRIMARY 0
+#define DRM_NODE_CONTROL 1
+#define DRM_NODE_RENDER 2
+#define DRM_NODE_MAX 3
+
+extern int drmOpenWithType(const char *name, const char *busid,
+ int type);
+
+extern int drmOpenControl(int minor);
+extern int drmOpenRender(int minor);
+extern int drmClose(int fd);
+extern drmVersionPtr drmGetVersion(int fd);
+extern drmVersionPtr drmGetLibVersion(int fd);
+extern int drmGetCap(int fd, uint64_t capability, uint64_t *value);
+extern void drmFreeVersion(drmVersionPtr);
+extern int drmGetMagic(int fd, drm_magic_t * magic);
+extern char *drmGetBusid(int fd);
+extern int drmGetInterruptFromBusID(int fd, int busnum, int devnum,
+ int funcnum);
+extern int drmGetMap(int fd, int idx, drm_handle_t *offset,
+ drmSize *size, drmMapType *type,
+ drmMapFlags *flags, drm_handle_t *handle,
+ int *mtrr);
+extern int drmGetClient(int fd, int idx, int *auth, int *pid,
+ int *uid, unsigned long *magic,
+ unsigned long *iocs);
+extern int drmGetStats(int fd, drmStatsT *stats);
+extern int drmSetInterfaceVersion(int fd, drmSetVersion *version);
+extern int drmCommandNone(int fd, unsigned long drmCommandIndex);
+extern int drmCommandRead(int fd, unsigned long drmCommandIndex,
+ void *data, unsigned long size);
+extern int drmCommandWrite(int fd, unsigned long drmCommandIndex,
+ void *data, unsigned long size);
+extern int drmCommandWriteRead(int fd, unsigned long drmCommandIndex,
+ void *data, unsigned long size);
+
+/* General user-level programmer's API: X server (root) only */
+extern void drmFreeBusid(const char *busid);
+extern int drmSetBusid(int fd, const char *busid);
+extern int drmAuthMagic(int fd, drm_magic_t magic);
+extern int drmAddMap(int fd,
+ drm_handle_t offset,
+ drmSize size,
+ drmMapType type,
+ drmMapFlags flags,
+ drm_handle_t * handle);
+extern int drmRmMap(int fd, drm_handle_t handle);
+extern int drmAddContextPrivateMapping(int fd, drm_context_t ctx_id,
+ drm_handle_t handle);
+
+extern int drmAddBufs(int fd, int count, int size,
+ drmBufDescFlags flags,
+ int agp_offset);
+extern int drmMarkBufs(int fd, double low, double high);
+extern int drmCreateContext(int fd, drm_context_t * handle);
+extern int drmSetContextFlags(int fd, drm_context_t context,
+ drm_context_tFlags flags);
+extern int drmGetContextFlags(int fd, drm_context_t context,
+ drm_context_tFlagsPtr flags);
+extern int drmAddContextTag(int fd, drm_context_t context, void *tag);
+extern int drmDelContextTag(int fd, drm_context_t context);
+extern void *drmGetContextTag(int fd, drm_context_t context);
+extern drm_context_t * drmGetReservedContextList(int fd, int *count);
+extern void drmFreeReservedContextList(drm_context_t *);
+extern int drmSwitchToContext(int fd, drm_context_t context);
+extern int drmDestroyContext(int fd, drm_context_t handle);
+extern int drmCreateDrawable(int fd, drm_drawable_t * handle);
+extern int drmDestroyDrawable(int fd, drm_drawable_t handle);
+extern int drmUpdateDrawableInfo(int fd, drm_drawable_t handle,
+ drm_drawable_info_type_t type,
+ unsigned int num, void *data);
+extern int drmCtlInstHandler(int fd, int irq);
+extern int drmCtlUninstHandler(int fd);
+extern int drmSetClientCap(int fd, uint64_t capability,
+ uint64_t value);
+
+extern int drmCrtcGetSequence(int fd, uint32_t crtcId,
+ uint64_t *sequence, uint64_t *ns);
+extern int drmCrtcQueueSequence(int fd, uint32_t crtcId,
+ uint32_t flags, uint64_t sequence,
+ uint64_t *sequence_queued,
+ uint64_t user_data);
+/* General user-level programmer's API: authenticated client and/or X */
+extern int drmMap(int fd,
+ drm_handle_t handle,
+ drmSize size,
+ drmAddressPtr address);
+extern int drmUnmap(drmAddress address, drmSize size);
+extern drmBufInfoPtr drmGetBufInfo(int fd);
+extern drmBufMapPtr drmMapBufs(int fd);
+extern int drmUnmapBufs(drmBufMapPtr bufs);
+extern int drmDMA(int fd, drmDMAReqPtr request);
+extern int drmFreeBufs(int fd, int count, int *list);
+extern int drmGetLock(int fd,
+ drm_context_t context,
+ drmLockFlags flags);
+extern int drmUnlock(int fd, drm_context_t context);
+extern int drmFinish(int fd, int context, drmLockFlags flags);
+extern int drmGetContextPrivateMapping(int fd, drm_context_t ctx_id,
+ drm_handle_t * handle);
+
+/* AGP/GART support: X server (root) only */
+extern int drmAgpAcquire(int fd);
+extern int drmAgpRelease(int fd);
+extern int drmAgpEnable(int fd, unsigned long mode);
+extern int drmAgpAlloc(int fd, unsigned long size,
+ unsigned long type, unsigned long *address,
+ drm_handle_t *handle);
+extern int drmAgpFree(int fd, drm_handle_t handle);
+extern int drmAgpBind(int fd, drm_handle_t handle,
+ unsigned long offset);
+extern int drmAgpUnbind(int fd, drm_handle_t handle);
+
+/* AGP/GART info: authenticated client and/or X */
+extern int drmAgpVersionMajor(int fd);
+extern int drmAgpVersionMinor(int fd);
+extern unsigned long drmAgpGetMode(int fd);
+extern unsigned long drmAgpBase(int fd); /* Physical location */
+extern unsigned long drmAgpSize(int fd); /* Bytes */
+extern unsigned long drmAgpMemoryUsed(int fd);
+extern unsigned long drmAgpMemoryAvail(int fd);
+extern unsigned int drmAgpVendorId(int fd);
+extern unsigned int drmAgpDeviceId(int fd);
+
+/* PCI scatter/gather support: X server (root) only */
+extern int drmScatterGatherAlloc(int fd, unsigned long size,
+ drm_handle_t *handle);
+extern int drmScatterGatherFree(int fd, drm_handle_t handle);
+
+extern int drmWaitVBlank(int fd, drmVBlankPtr vbl);
+
+/* Support routines */
+extern void drmSetServerInfo(drmServerInfoPtr info);
+extern int drmError(int err, const char *label);
+extern void *drmMalloc(int size);
+extern void drmFree(void *pt);
+
+/* Hash table routines */
+extern void *drmHashCreate(void);
+extern int drmHashDestroy(void *t);
+extern int drmHashLookup(void *t, unsigned long key, void **value);
+extern int drmHashInsert(void *t, unsigned long key, void *value);
+extern int drmHashDelete(void *t, unsigned long key);
+extern int drmHashFirst(void *t, unsigned long *key, void **value);
+extern int drmHashNext(void *t, unsigned long *key, void **value);
+
+/* PRNG routines */
+extern void *drmRandomCreate(unsigned long seed);
+extern int drmRandomDestroy(void *state);
+extern unsigned long drmRandom(void *state);
+extern double drmRandomDouble(void *state);
+
+/* Skip list routines */
+
+extern void *drmSLCreate(void);
+extern int drmSLDestroy(void *l);
+extern int drmSLLookup(void *l, unsigned long key, void **value);
+extern int drmSLInsert(void *l, unsigned long key, void *value);
+extern int drmSLDelete(void *l, unsigned long key);
+extern int drmSLNext(void *l, unsigned long *key, void **value);
+extern int drmSLFirst(void *l, unsigned long *key, void **value);
+extern void drmSLDump(void *l);
+extern int drmSLLookupNeighbors(void *l, unsigned long key,
+ unsigned long *prev_key, void **prev_value,
+ unsigned long *next_key, void **next_value);
+
+extern int drmOpenOnce(void *unused, const char *BusID, int *newlyopened);
+extern int drmOpenOnceWithType(const char *BusID, int *newlyopened, int type);
+extern void drmCloseOnce(int fd);
+extern void drmMsg(const char *format, ...) DRM_PRINTFLIKE(1, 2);
+
+extern int drmSetMaster(int fd);
+extern int drmDropMaster(int fd);
+extern int drmIsMaster(int fd);
+
+#define DRM_EVENT_CONTEXT_VERSION 4
+
+typedef struct _drmEventContext {
+
+ /* This struct is versioned so we can add more pointers if we
+ * add more events. */
+ int version;
+
+ void (*vblank_handler)(int fd,
+ unsigned int sequence,
+ unsigned int tv_sec,
+ unsigned int tv_usec,
+ void *user_data);
+
+ void (*page_flip_handler)(int fd,
+ unsigned int sequence,
+ unsigned int tv_sec,
+ unsigned int tv_usec,
+ void *user_data);
+
+ void (*page_flip_handler2)(int fd,
+ unsigned int sequence,
+ unsigned int tv_sec,
+ unsigned int tv_usec,
+ unsigned int crtc_id,
+ void *user_data);
+
+ void (*sequence_handler)(int fd,
+ uint64_t sequence,
+ uint64_t ns,
+ uint64_t user_data);
+} drmEventContext, *drmEventContextPtr;
+
+extern int drmHandleEvent(int fd, drmEventContextPtr evctx);
+
+extern char *drmGetDeviceNameFromFd(int fd);
+
+/* Improved version of drmGetDeviceNameFromFd which attributes for any type of
+ * device/node - card, control or renderD.
+ */
+extern char *drmGetDeviceNameFromFd2(int fd);
+extern int drmGetNodeTypeFromFd(int fd);
+
+/* Convert between GEM handles and DMA-BUF file descriptors.
+ *
+ * Warning: since GEM handles are not reference-counted and are unique per
+ * DRM file description, the caller is expected to perform its own reference
+ * counting. drmPrimeFDToHandle is guaranteed to return the same handle for
+ * different FDs if they reference the same underlying buffer object. This
+ * could even be a buffer object originally created on the same DRM FD.
+ *
+ * When sharing a DRM FD with an API such as EGL or GBM, the caller must not
+ * use drmPrimeHandleToFD nor drmPrimeFDToHandle. A single user-space
+ * reference-counting implementation is necessary to avoid double-closing GEM
+ * handles.
+ *
+ * Two processes can't share the same DRM FD and both use it to create or
+ * import GEM handles, even when using a single user-space reference-counting
+ * implementation like GBM, because GBM doesn't share its state between
+ * processes.
+ */
+extern int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags, int *prime_fd);
+extern int drmPrimeFDToHandle(int fd, int prime_fd, uint32_t *handle);
+
+extern int drmCloseBufferHandle(int fd, uint32_t handle);
+
+extern char *drmGetPrimaryDeviceNameFromFd(int fd);
+extern char *drmGetRenderDeviceNameFromFd(int fd);
+
+#define DRM_BUS_PCI 0
+#define DRM_BUS_USB 1
+#define DRM_BUS_PLATFORM 2
+#define DRM_BUS_HOST1X 3
+
+typedef struct _drmPciBusInfo {
+ uint16_t domain;
+ uint8_t bus;
+ uint8_t dev;
+ uint8_t func;
+} drmPciBusInfo, *drmPciBusInfoPtr;
+
+typedef struct _drmPciDeviceInfo {
+ uint16_t vendor_id;
+ uint16_t device_id;
+ uint16_t subvendor_id;
+ uint16_t subdevice_id;
+ uint8_t revision_id;
+} drmPciDeviceInfo, *drmPciDeviceInfoPtr;
+
+typedef struct _drmUsbBusInfo {
+ uint8_t bus;
+ uint8_t dev;
+} drmUsbBusInfo, *drmUsbBusInfoPtr;
+
+typedef struct _drmUsbDeviceInfo {
+ uint16_t vendor;
+ uint16_t product;
+} drmUsbDeviceInfo, *drmUsbDeviceInfoPtr;
+
+#define DRM_PLATFORM_DEVICE_NAME_LEN 512
+
+typedef struct _drmPlatformBusInfo {
+ char fullname[DRM_PLATFORM_DEVICE_NAME_LEN];
+} drmPlatformBusInfo, *drmPlatformBusInfoPtr;
+
+typedef struct _drmPlatformDeviceInfo {
+ char **compatible; /* NULL terminated list of compatible strings */
+} drmPlatformDeviceInfo, *drmPlatformDeviceInfoPtr;
+
+#define DRM_HOST1X_DEVICE_NAME_LEN 512
+
+typedef struct _drmHost1xBusInfo {
+ char fullname[DRM_HOST1X_DEVICE_NAME_LEN];
+} drmHost1xBusInfo, *drmHost1xBusInfoPtr;
+
+typedef struct _drmHost1xDeviceInfo {
+ char **compatible; /* NULL terminated list of compatible strings */
+} drmHost1xDeviceInfo, *drmHost1xDeviceInfoPtr;
+
+typedef struct _drmDevice {
+ char **nodes; /* DRM_NODE_MAX sized array */
+ int available_nodes; /* DRM_NODE_* bitmask */
+ int bustype;
+ union {
+ drmPciBusInfoPtr pci;
+ drmUsbBusInfoPtr usb;
+ drmPlatformBusInfoPtr platform;
+ drmHost1xBusInfoPtr host1x;
+ } businfo;
+ union {
+ drmPciDeviceInfoPtr pci;
+ drmUsbDeviceInfoPtr usb;
+ drmPlatformDeviceInfoPtr platform;
+ drmHost1xDeviceInfoPtr host1x;
+ } deviceinfo;
+} drmDevice, *drmDevicePtr;
+
+extern int drmGetDevice(int fd, drmDevicePtr *device);
+extern void drmFreeDevice(drmDevicePtr *device);
+
+extern int drmGetDevices(drmDevicePtr devices[], int max_devices);
+extern void drmFreeDevices(drmDevicePtr devices[], int count);
+
+#define DRM_DEVICE_GET_PCI_REVISION (1 << 0)
+extern int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device);
+extern int drmGetDevices2(uint32_t flags, drmDevicePtr devices[], int max_devices);
+
+extern int drmGetDeviceFromDevId(dev_t dev_id, uint32_t flags, drmDevicePtr *device);
+
+extern int drmDevicesEqual(drmDevicePtr a, drmDevicePtr b);
+
+extern int drmSyncobjCreate(int fd, uint32_t flags, uint32_t *handle);
+extern int drmSyncobjDestroy(int fd, uint32_t handle);
+extern int drmSyncobjHandleToFD(int fd, uint32_t handle, int *obj_fd);
+extern int drmSyncobjFDToHandle(int fd, int obj_fd, uint32_t *handle);
+
+extern int drmSyncobjImportSyncFile(int fd, uint32_t handle, int sync_file_fd);
+extern int drmSyncobjExportSyncFile(int fd, uint32_t handle, int *sync_file_fd);
+extern int drmSyncobjWait(int fd, uint32_t *handles, unsigned num_handles,
+ int64_t timeout_nsec, unsigned flags,
+ uint32_t *first_signaled);
+extern int drmSyncobjReset(int fd, const uint32_t *handles, uint32_t handle_count);
+extern int drmSyncobjSignal(int fd, const uint32_t *handles, uint32_t handle_count);
+extern int drmSyncobjTimelineSignal(int fd, const uint32_t *handles,
+ uint64_t *points, uint32_t handle_count);
+extern int drmSyncobjTimelineWait(int fd, uint32_t *handles, uint64_t *points,
+ unsigned num_handles,
+ int64_t timeout_nsec, unsigned flags,
+ uint32_t *first_signaled);
+extern int drmSyncobjQuery(int fd, uint32_t *handles, uint64_t *points,
+ uint32_t handle_count);
+extern int drmSyncobjQuery2(int fd, uint32_t *handles, uint64_t *points,
+ uint32_t handle_count, uint32_t flags);
+extern int drmSyncobjTransfer(int fd,
+ uint32_t dst_handle, uint64_t dst_point,
+ uint32_t src_handle, uint64_t src_point,
+ uint32_t flags);
+
+extern char *
+drmGetFormatModifierVendor(uint64_t modifier);
+
+extern char *
+drmGetFormatModifierName(uint64_t modifier);
+
+#ifndef fourcc_mod_get_vendor
+#define fourcc_mod_get_vendor(modifier) \
+ (((modifier) >> 56) & 0xff)
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif
diff --git a/third_party/drm/libdrm/moz.build b/third_party/drm/libdrm/moz.build
new file mode 100644
index 0000000000..3b37b913e8
--- /dev/null
+++ b/third_party/drm/libdrm/moz.build
@@ -0,0 +1,16 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+SOURCES += [
+ 'mozdrm.cpp',
+]
+
+if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
+ CXXFLAGS += CONFIG['MOZ_GTK3_CFLAGS']
+
+LOCAL_INCLUDES += ['/third_party/drm']
+
+FINAL_LIBRARY = 'xul'
diff --git a/third_party/drm/libdrm/mozdrm.cpp b/third_party/drm/libdrm/mozdrm.cpp
new file mode 100644
index 0000000000..b2fb59be64
--- /dev/null
+++ b/third_party/drm/libdrm/mozdrm.cpp
@@ -0,0 +1,66 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "mozilla/Types.h"
+#include "prlink.h"
+
+#include <drm/xf86drm.h>
+
+#define GET_FUNC(func, lib) \
+ func##_fn = \
+ (decltype(func##_fn))PR_FindFunctionSymbol(lib, #func) \
+
+#define IS_FUNC_LOADED(func) \
+ (func != nullptr) \
+
+static int (*drmGetDevices2_fn)(uint32_t flags, drmDevicePtr devices[], int max_devices);
+static void (*drmFreeDevices_fn)(drmDevicePtr devices[], int count);
+
+bool IsDRMLibraryLoaded() {
+ static bool isLoaded =
+ (IS_FUNC_LOADED(drmGetDevices2_fn) &&
+ IS_FUNC_LOADED(drmFreeDevices_fn));
+
+ return isLoaded;
+}
+
+bool LoadDRMLibrary() {
+ static PRLibrary* drmLib = nullptr;
+ static bool drmInitialized = false;
+
+ //TODO Thread safe
+ if (!drmInitialized) {
+ drmInitialized = true;
+ drmLib = PR_LoadLibrary("libdrm.so.2");
+ if (!drmLib) {
+ return false;
+ }
+
+ GET_FUNC(drmGetDevices2, drmLib);
+ GET_FUNC(drmFreeDevices, drmLib);
+ }
+
+ return IsDRMLibraryLoaded();
+}
+
+int
+drmGetDevices2(uint32_t flags, drmDevicePtr devices[], int max_devices)
+{
+ if (!LoadDRMLibrary()) {
+ return 0;
+ }
+ return drmGetDevices2_fn(flags, devices, max_devices);
+}
+
+void
+drmFreeDevices(drmDevicePtr devices[], int count)
+{
+ if (!LoadDRMLibrary()) {
+ return;
+ }
+ return drmFreeDevices_fn(devices, count);
+}
diff --git a/third_party/epoxy/README b/third_party/epoxy/README
new file mode 100644
index 0000000000..f34b335fa4
--- /dev/null
+++ b/third_party/epoxy/README
@@ -0,0 +1,4 @@
+Libepoxy is a epoxy library wrapper needed to build and run Firefox with
+Pipewire support on Linux (https://github.com/anholt/libepoxy).
+
+libepoxy directory stores headers of libepoxy needed for build only.
diff --git a/third_party/epoxy/epoxy/common.h b/third_party/epoxy/epoxy/common.h
new file mode 100644
index 0000000000..41fc5eef9e
--- /dev/null
+++ b/third_party/epoxy/epoxy/common.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2017 Emmanuele Bassi
+ *
+ * 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.
+ */
+
+/** @file common.h
+ *
+ * A common header file, used to define macros and shared symbols.
+ */
+
+#ifndef EPOXY_COMMON_H
+#define EPOXY_COMMON_H
+
+#ifdef __cplusplus
+# define EPOXY_BEGIN_DECLS extern "C" {
+# define EPOXY_END_DECLS }
+#else
+# define EPOXY_BEGIN_DECLS
+# define EPOXY_END_DECLS
+#endif
+
+#ifndef EPOXY_PUBLIC
+# if defined(_MSC_VER)
+# define EPOXY_PUBLIC __declspec(dllimport) extern
+# else
+# define EPOXY_PUBLIC extern
+# endif
+#endif
+
+#if defined(_MSC_VER) && !defined(__bool_true_false_are_defined) && (_MSC_VER < 1800)
+typedef unsigned char bool;
+# define false 0
+# define true 1
+#else
+# include <stdbool.h>
+#endif
+
+EPOXY_BEGIN_DECLS
+
+EPOXY_PUBLIC bool epoxy_extension_in_string(const char *extension_list,
+ const char *ext);
+
+EPOXY_END_DECLS
+
+#endif /* EPOXY_COMMON_H */
diff --git a/third_party/epoxy/epoxy/egl.h b/third_party/epoxy/epoxy/egl.h
new file mode 100644
index 0000000000..b5f8ee014f
--- /dev/null
+++ b/third_party/epoxy/epoxy/egl.h
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+/** @file egl.h
+ *
+ * Provides an implementation of an EGL dispatch layer using global
+ * function pointers
+ *
+ * You should include `<epoxy/egl.h>` instead of `<EGL/egl.h>`.
+ */
+
+#ifndef EPOXY_EGL_H
+#define EPOXY_EGL_H
+
+#include "epoxy/common.h"
+
+#if defined(__egl_h_) || defined(__eglext_h_)
+#error epoxy/egl.h must be included before (or in place of) GL/egl.h
+#else
+#define __egl_h_
+#define __eglext_h_
+#endif
+
+EPOXY_BEGIN_DECLS
+
+#include "epoxy/egl_generated.h"
+
+EPOXY_PUBLIC bool epoxy_has_egl_extension(EGLDisplay dpy, const char *extension);
+EPOXY_PUBLIC int epoxy_egl_version(EGLDisplay dpy);
+EPOXY_PUBLIC bool epoxy_has_egl(void);
+
+EPOXY_END_DECLS
+
+#endif /* EPOXY_EGL_H */
diff --git a/third_party/epoxy/epoxy/egl_generated.h b/third_party/epoxy/epoxy/egl_generated.h
new file mode 100644
index 0000000000..2541ec291e
--- /dev/null
+++ b/third_party/epoxy/epoxy/egl_generated.h
@@ -0,0 +1,1439 @@
+/* GL dispatch header.
+ * This is code-generated from the GL API XML files from Khronos.
+ */
+
+#pragma once
+#include <inttypes.h>
+#include <stddef.h>
+
+#include "epoxy/common.h"
+#include "epoxy/gl.h"
+#include "eglplatform.h"
+#ifndef EGL_CAST
+#if defined(__cplusplus)
+#define EGL_CAST(type, value) (static_cast<type>(value))
+#else
+#define EGL_CAST(type, value) ((type) (value))
+#endif
+#endif
+struct AHardwareBuffer;
+typedef unsigned int EGLBoolean;
+typedef unsigned int EGLenum;
+typedef intptr_t EGLAttribKHR;
+typedef intptr_t EGLAttrib;
+typedef void *EGLClientBuffer;
+typedef void *EGLConfig;
+typedef void *EGLContext;
+typedef void *EGLDeviceEXT;
+typedef void *EGLDisplay;
+typedef void *EGLImage;
+typedef void *EGLImageKHR;
+typedef void *EGLLabelKHR;
+typedef void *EGLObjectKHR;
+typedef void *EGLOutputLayerEXT;
+typedef void *EGLOutputPortEXT;
+typedef void *EGLStreamKHR;
+typedef void *EGLSurface;
+typedef void *EGLSync;
+typedef void *EGLSyncKHR;
+typedef void *EGLSyncNV;
+typedef void (*__eglMustCastToProperFunctionPointerType)(void);
+typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+typedef khronos_utime_nanoseconds_t EGLTime;
+typedef khronos_utime_nanoseconds_t EGLTimeNV;
+typedef khronos_utime_nanoseconds_t EGLuint64NV;
+typedef khronos_uint64_t EGLuint64KHR;
+typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
+typedef int EGLNativeFileDescriptorKHR;
+typedef khronos_ssize_t EGLsizeiANDROID;
+typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
+typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
+struct EGLClientPixmapHI {
+ void *pData;
+ EGLint iWidth;
+ EGLint iHeight;
+ EGLint iStride;
+};
+typedef void (APIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);
+
+#define EGL_VERSION_1_0 1
+#define EGL_VERSION_1_1 1
+#define EGL_VERSION_1_2 1
+#define EGL_VERSION_1_3 1
+#define EGL_VERSION_1_4 1
+#define EGL_VERSION_1_5 1
+
+#define EGL_ANDROID_GLES_layers 1
+#define EGL_ANDROID_blob_cache 1
+#define EGL_ANDROID_create_native_client_buffer 1
+#define EGL_ANDROID_framebuffer_target 1
+#define EGL_ANDROID_front_buffer_auto_refresh 1
+#define EGL_ANDROID_get_frame_timestamps 1
+#define EGL_ANDROID_get_native_client_buffer 1
+#define EGL_ANDROID_image_native_buffer 1
+#define EGL_ANDROID_native_fence_sync 1
+#define EGL_ANDROID_presentation_time 1
+#define EGL_ANDROID_recordable 1
+#define EGL_ANGLE_d3d_share_handle_client_buffer 1
+#define EGL_ANGLE_device_d3d 1
+#define EGL_ANGLE_query_surface_pointer 1
+#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
+#define EGL_ANGLE_window_fixed_size 1
+#define EGL_ARM_implicit_external_sync 1
+#define EGL_ARM_pixmap_multisample_discard 1
+#define EGL_EXT_bind_to_front 1
+#define EGL_EXT_buffer_age 1
+#define EGL_EXT_client_extensions 1
+#define EGL_EXT_client_sync 1
+#define EGL_EXT_compositor 1
+#define EGL_EXT_create_context_robustness 1
+#define EGL_EXT_device_base 1
+#define EGL_EXT_device_drm 1
+#define EGL_EXT_device_enumeration 1
+#define EGL_EXT_device_openwf 1
+#define EGL_EXT_device_query 1
+#define EGL_EXT_gl_colorspace_bt2020_linear 1
+#define EGL_EXT_gl_colorspace_bt2020_pq 1
+#define EGL_EXT_gl_colorspace_display_p3 1
+#define EGL_EXT_gl_colorspace_display_p3_linear 1
+#define EGL_EXT_gl_colorspace_display_p3_passthrough 1
+#define EGL_EXT_gl_colorspace_scrgb 1
+#define EGL_EXT_gl_colorspace_scrgb_linear 1
+#define EGL_EXT_image_dma_buf_import 1
+#define EGL_EXT_image_dma_buf_import_modifiers 1
+#define EGL_EXT_image_gl_colorspace 1
+#define EGL_EXT_image_implicit_sync_control 1
+#define EGL_EXT_multiview_window 1
+#define EGL_EXT_output_base 1
+#define EGL_EXT_output_drm 1
+#define EGL_EXT_output_openwf 1
+#define EGL_EXT_pixel_format_float 1
+#define EGL_EXT_platform_base 1
+#define EGL_EXT_platform_device 1
+#define EGL_EXT_platform_wayland 1
+#define EGL_EXT_platform_x11 1
+#define EGL_EXT_protected_content 1
+#define EGL_EXT_protected_surface 1
+#define EGL_EXT_stream_consumer_egloutput 1
+#define EGL_EXT_surface_CTA861_3_metadata 1
+#define EGL_EXT_surface_SMPTE2086_metadata 1
+#define EGL_EXT_swap_buffers_with_damage 1
+#define EGL_EXT_sync_reuse 1
+#define EGL_EXT_yuv_surface 1
+#define EGL_HI_clientpixmap 1
+#define EGL_HI_colorformats 1
+#define EGL_IMG_context_priority 1
+#define EGL_IMG_image_plane_attribs 1
+#define EGL_KHR_cl_event 1
+#define EGL_KHR_cl_event2 1
+#define EGL_KHR_client_get_all_proc_addresses 1
+#define EGL_KHR_config_attribs 1
+#define EGL_KHR_context_flush_control 1
+#define EGL_KHR_create_context 1
+#define EGL_KHR_create_context_no_error 1
+#define EGL_KHR_debug 1
+#define EGL_KHR_display_reference 1
+#define EGL_KHR_fence_sync 1
+#define EGL_KHR_get_all_proc_addresses 1
+#define EGL_KHR_gl_colorspace 1
+#define EGL_KHR_gl_renderbuffer_image 1
+#define EGL_KHR_gl_texture_2D_image 1
+#define EGL_KHR_gl_texture_3D_image 1
+#define EGL_KHR_gl_texture_cubemap_image 1
+#define EGL_KHR_image 1
+#define EGL_KHR_image_base 1
+#define EGL_KHR_image_pixmap 1
+#define EGL_KHR_lock_surface 1
+#define EGL_KHR_lock_surface2 1
+#define EGL_KHR_lock_surface3 1
+#define EGL_KHR_mutable_render_buffer 1
+#define EGL_KHR_no_config_context 1
+#define EGL_KHR_partial_update 1
+#define EGL_KHR_platform_android 1
+#define EGL_KHR_platform_gbm 1
+#define EGL_KHR_platform_wayland 1
+#define EGL_KHR_platform_x11 1
+#define EGL_KHR_reusable_sync 1
+#define EGL_KHR_stream 1
+#define EGL_KHR_stream_attrib 1
+#define EGL_KHR_stream_consumer_gltexture 1
+#define EGL_KHR_stream_cross_process_fd 1
+#define EGL_KHR_stream_fifo 1
+#define EGL_KHR_stream_producer_aldatalocator 1
+#define EGL_KHR_stream_producer_eglsurface 1
+#define EGL_KHR_surfaceless_context 1
+#define EGL_KHR_swap_buffers_with_damage 1
+#define EGL_KHR_vg_parent_image 1
+#define EGL_KHR_wait_sync 1
+#define EGL_MESA_drm_image 1
+#define EGL_MESA_image_dma_buf_export 1
+#define EGL_MESA_platform_gbm 1
+#define EGL_MESA_platform_surfaceless 1
+#define EGL_MESA_query_driver 1
+#define EGL_NOK_swap_region 1
+#define EGL_NOK_swap_region2 1
+#define EGL_NOK_texture_from_pixmap 1
+#define EGL_NV_3dvision_surface 1
+#define EGL_NV_context_priority_realtime 1
+#define EGL_NV_coverage_sample 1
+#define EGL_NV_coverage_sample_resolve 1
+#define EGL_NV_cuda_event 1
+#define EGL_NV_depth_nonlinear 1
+#define EGL_NV_device_cuda 1
+#define EGL_NV_native_query 1
+#define EGL_NV_post_convert_rounding 1
+#define EGL_NV_post_sub_buffer 1
+#define EGL_NV_quadruple_buffer 1
+#define EGL_NV_robustness_video_memory_purge 1
+#define EGL_NV_stream_consumer_gltexture_yuv 1
+#define EGL_NV_stream_cross_display 1
+#define EGL_NV_stream_cross_object 1
+#define EGL_NV_stream_cross_partition 1
+#define EGL_NV_stream_cross_process 1
+#define EGL_NV_stream_cross_system 1
+#define EGL_NV_stream_dma 1
+#define EGL_NV_stream_fifo_next 1
+#define EGL_NV_stream_fifo_synchronous 1
+#define EGL_NV_stream_flush 1
+#define EGL_NV_stream_frame_limits 1
+#define EGL_NV_stream_metadata 1
+#define EGL_NV_stream_origin 1
+#define EGL_NV_stream_remote 1
+#define EGL_NV_stream_reset 1
+#define EGL_NV_stream_socket 1
+#define EGL_NV_stream_socket_inet 1
+#define EGL_NV_stream_socket_unix 1
+#define EGL_NV_stream_sync 1
+#define EGL_NV_sync 1
+#define EGL_NV_system_time 1
+#define EGL_NV_triple_buffer 1
+#define EGL_TIZEN_image_native_buffer 1
+#define EGL_TIZEN_image_native_surface 1
+
+#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0
+#define EGL_DEPTH_ENCODING_NONE_NV 0
+#define EGL_FALSE 0
+#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001
+#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
+#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
+#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001
+#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
+#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
+#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002
+#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
+#define EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004
+#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
+#define EGL_OPENGL_ES3_BIT 0x00000040
+#define EGL_OPENGL_ES3_BIT_KHR 0x00000040
+#define EGL_OPENGL_ES_BIT 0x0001
+#define EGL_PBUFFER_BIT 0x0001
+#define EGL_READ_SURFACE_BIT_KHR 0x0001
+#define EGL_SYNC_FLUSH_COMMANDS_BIT 0x0001
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
+#define EGL_OPENVG_BIT 0x0002
+#define EGL_PIXMAP_BIT 0x0002
+#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
+#define EGL_OPENGL_ES2_BIT 0x0004
+#define EGL_WINDOW_BIT 0x0004
+#define EGL_OPENGL_BIT 0x0008
+#define EGL_PBUFFER_IMAGE_BIT_TAO 0x0008
+#define EGL_INTEROP_BIT_KHR 0x0010
+#define EGL_PBUFFER_PALETTE_IMAGE_BIT_TAO 0x0010
+#define EGL_OPENMAX_IL_BIT_KHR 0x0020
+#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020
+#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
+#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040
+#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
+#define EGL_LOCK_SURFACE_BIT_KHR 0x0080
+#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
+#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200
+#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400
+#define EGL_STREAM_BIT_KHR 0x0800
+#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097
+#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
+#define EGL_SUCCESS 0x3000
+#define EGL_NOT_INITIALIZED 0x3001
+#define EGL_BAD_ACCESS 0x3002
+#define EGL_BAD_ALLOC 0x3003
+#define EGL_BAD_ATTRIBUTE 0x3004
+#define EGL_BAD_CONFIG 0x3005
+#define EGL_BAD_CONTEXT 0x3006
+#define EGL_BAD_CURRENT_SURFACE 0x3007
+#define EGL_BAD_DISPLAY 0x3008
+#define EGL_BAD_MATCH 0x3009
+#define EGL_BAD_NATIVE_PIXMAP 0x300A
+#define EGL_BAD_NATIVE_WINDOW 0x300B
+#define EGL_BAD_PARAMETER 0x300C
+#define EGL_BAD_SURFACE 0x300D
+#define EGL_CONTEXT_LOST 0x300E
+#define EGL_BUFFER_SIZE 0x3020
+#define EGL_ALPHA_SIZE 0x3021
+#define EGL_BLUE_SIZE 0x3022
+#define EGL_GREEN_SIZE 0x3023
+#define EGL_RED_SIZE 0x3024
+#define EGL_DEPTH_SIZE 0x3025
+#define EGL_STENCIL_SIZE 0x3026
+#define EGL_CONFIG_CAVEAT 0x3027
+#define EGL_CONFIG_ID 0x3028
+#define EGL_LEVEL 0x3029
+#define EGL_MAX_PBUFFER_HEIGHT 0x302A
+#define EGL_MAX_PBUFFER_PIXELS 0x302B
+#define EGL_MAX_PBUFFER_WIDTH 0x302C
+#define EGL_NATIVE_RENDERABLE 0x302D
+#define EGL_NATIVE_VISUAL_ID 0x302E
+#define EGL_NATIVE_VISUAL_TYPE 0x302F
+#define EGL_SAMPLES 0x3031
+#define EGL_SAMPLE_BUFFERS 0x3032
+#define EGL_SURFACE_TYPE 0x3033
+#define EGL_TRANSPARENT_TYPE 0x3034
+#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
+#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
+#define EGL_TRANSPARENT_RED_VALUE 0x3037
+#define EGL_NONE 0x3038
+#define EGL_BIND_TO_TEXTURE_RGB 0x3039
+#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
+#define EGL_MIN_SWAP_INTERVAL 0x303B
+#define EGL_MAX_SWAP_INTERVAL 0x303C
+#define EGL_LUMINANCE_SIZE 0x303D
+#define EGL_ALPHA_MASK_SIZE 0x303E
+#define EGL_COLOR_BUFFER_TYPE 0x303F
+#define EGL_RENDERABLE_TYPE 0x3040
+#define EGL_MATCH_NATIVE_PIXMAP 0x3041
+#define EGL_CONFORMANT 0x3042
+#define EGL_CONFORMANT_KHR 0x3042
+#define EGL_MATCH_FORMAT_KHR 0x3043
+#define EGL_SLOW_CONFIG 0x3050
+#define EGL_NON_CONFORMANT_CONFIG 0x3051
+#define EGL_TRANSPARENT_RGB 0x3052
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_EXTENSIONS 0x3055
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_2D 0x305F
+#define EGL_Y_INVERTED_NOK 0x307F
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_TARGET 0x3081
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_BACK_BUFFER 0x3084
+#define EGL_SINGLE_BUFFER 0x3085
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_COLORSPACE 0x3087
+#define EGL_VG_COLORSPACE 0x3087
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_VG_ALPHA_FORMAT 0x3088
+#define EGL_COLORSPACE_sRGB 0x3089
+#define EGL_GL_COLORSPACE_SRGB 0x3089
+#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089
+#define EGL_VG_COLORSPACE_sRGB 0x3089
+#define EGL_COLORSPACE_LINEAR 0x308A
+#define EGL_GL_COLORSPACE_LINEAR 0x308A
+#define EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
+#define EGL_VG_COLORSPACE_LINEAR 0x308A
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B
+#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B
+#define EGL_ALPHA_FORMAT_PRE 0x308C
+#define EGL_VG_ALPHA_FORMAT_PRE 0x308C
+#define EGL_CLIENT_APIS 0x308D
+#define EGL_RGB_BUFFER 0x308E
+#define EGL_LUMINANCE_BUFFER 0x308F
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_VERTICAL_RESOLUTION 0x3091
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_SWAP_BEHAVIOR 0x3093
+#define EGL_BUFFER_PRESERVED 0x3094
+#define EGL_BUFFER_DESTROYED 0x3095
+#define EGL_OPENVG_IMAGE 0x3096
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+#define EGL_CONTEXT_CLIENT_VERSION 0x3098
+#define EGL_CONTEXT_MAJOR_VERSION 0x3098
+#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
+#define EGL_MULTISAMPLE_RESOLVE 0x3099
+#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A
+#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B
+#define EGL_CL_EVENT_HANDLE 0x309C
+#define EGL_CL_EVENT_HANDLE_KHR 0x309C
+#define EGL_GL_COLORSPACE 0x309D
+#define EGL_GL_COLORSPACE_KHR 0x309D
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+#define EGL_OPENGL_API 0x30A2
+#define EGL_NATIVE_PIXMAP_KHR 0x30B0
+#define EGL_GL_TEXTURE_2D 0x30B1
+#define EGL_GL_TEXTURE_2D_KHR 0x30B1
+#define EGL_GL_TEXTURE_3D 0x30B2
+#define EGL_GL_TEXTURE_3D_KHR 0x30B2
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
+#define EGL_GL_RENDERBUFFER 0x30B9
+#define EGL_GL_RENDERBUFFER_KHR 0x30B9
+#define EGL_VG_PARENT_IMAGE_KHR 0x30BA
+#define EGL_GL_TEXTURE_LEVEL 0x30BC
+#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
+#define EGL_GL_TEXTURE_ZOFFSET 0x30BD
+#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
+#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
+#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
+#define EGL_FORMAT_RGB_565_KHR 0x30C1
+#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
+#define EGL_FORMAT_RGBA_8888_KHR 0x30C3
+#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
+#define EGL_LOCK_USAGE_HINT_KHR 0x30C5
+#define EGL_BITMAP_POINTER_KHR 0x30C6
+#define EGL_BITMAP_PITCH_KHR 0x30C7
+#define EGL_BITMAP_ORIGIN_KHR 0x30C8
+#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
+#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
+#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
+#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
+#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
+#define EGL_LOWER_LEFT_KHR 0x30CE
+#define EGL_UPPER_LEFT_KHR 0x30CF
+#define EGL_IMAGE_PRESERVED 0x30D2
+#define EGL_IMAGE_PRESERVED_KHR 0x30D2
+#define EGL_SHARED_IMAGE_NOK 0x30DA
+#define EGL_COVERAGE_BUFFERS_NV 0x30E0
+#define EGL_COVERAGE_SAMPLES_NV 0x30E1
+#define EGL_DEPTH_ENCODING_NV 0x30E2
+#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
+#define EGL_SYNC_STATUS_NV 0x30E7
+#define EGL_SIGNALED_NV 0x30E8
+#define EGL_UNSIGNALED_NV 0x30E9
+#define EGL_ALREADY_SIGNALED_NV 0x30EA
+#define EGL_TIMEOUT_EXPIRED_NV 0x30EB
+#define EGL_CONDITION_SATISFIED_NV 0x30EC
+#define EGL_SYNC_TYPE_NV 0x30ED
+#define EGL_SYNC_CONDITION_NV 0x30EE
+#define EGL_SYNC_FENCE_NV 0x30EF
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE 0x30F0
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
+#define EGL_SYNC_STATUS 0x30F1
+#define EGL_SYNC_STATUS_KHR 0x30F1
+#define EGL_SIGNALED 0x30F2
+#define EGL_SIGNALED_KHR 0x30F2
+#define EGL_UNSIGNALED 0x30F3
+#define EGL_UNSIGNALED_KHR 0x30F3
+#define EGL_TIMEOUT_EXPIRED 0x30F5
+#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+#define EGL_CONDITION_SATISFIED 0x30F6
+#define EGL_CONDITION_SATISFIED_KHR 0x30F6
+#define EGL_SYNC_TYPE 0x30F7
+#define EGL_SYNC_TYPE_KHR 0x30F7
+#define EGL_SYNC_CONDITION 0x30F8
+#define EGL_SYNC_CONDITION_KHR 0x30F8
+#define EGL_SYNC_FENCE 0x30F9
+#define EGL_SYNC_FENCE_KHR 0x30F9
+#define EGL_SYNC_REUSABLE_KHR 0x30FA
+#define EGL_CONTEXT_MINOR_VERSION 0x30FB
+#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
+#define EGL_CONTEXT_FLAGS_KHR 0x30FC
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK 0x30FD
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
+#define EGL_SYNC_CL_EVENT 0x30FE
+#define EGL_SYNC_CL_EVENT_KHR 0x30FE
+#define EGL_SYNC_CL_EVENT_COMPLETE 0x30FF
+#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
+#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
+#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
+#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
+#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
+#define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
+#define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
+#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
+#define EGL_NEW_IMAGE_QCOM 0x3120
+#define EGL_IMAGE_FORMAT_QCOM 0x3121
+#define EGL_FORMAT_RGBA_8888_QCOM 0x3122
+#define EGL_FORMAT_RGB_565_QCOM 0x3123
+#define EGL_FORMAT_YUYV_QCOM 0x3124
+#define EGL_FORMAT_UYVY_QCOM 0x3125
+#define EGL_FORMAT_YV12_QCOM 0x3126
+#define EGL_FORMAT_NV21_QCOM 0x3127
+#define EGL_FORMAT_NV12_TILED_QCOM 0x3128
+#define EGL_FORMAT_BGRA_8888_QCOM 0x3129
+#define EGL_FORMAT_BGRX_8888_QCOM 0x312A
+#define EGL_FORMAT_RGBX_8888_QCOM 0x312F
+#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
+#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
+#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
+#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
+#define EGL_AUTO_STEREO_NV 0x3136
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
+#define EGL_BUFFER_AGE_EXT 0x313D
+#define EGL_BUFFER_AGE_KHR 0x313D
+#define EGL_PLATFORM_DEVICE_EXT 0x313F
+#define EGL_NATIVE_BUFFER_ANDROID 0x3140
+#define EGL_PLATFORM_ANDROID_KHR 0x3141
+#define EGL_RECORDABLE_ANDROID 0x3142
+#define EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
+#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
+#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
+#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
+#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
+#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
+#define EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
+#define EGL_CONTEXT_OPENGL_DEBUG 0x31B0
+#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS 0x31B2
+#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
+#define EGL_NO_RESET_NOTIFICATION 0x31BE
+#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
+#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET 0x31BF
+#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
+#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
+#define EGL_FORMAT_R8_QCOM 0x31C0
+#define EGL_FORMAT_RG88_QCOM 0x31C1
+#define EGL_FORMAT_NV12_QCOM 0x31C2
+#define EGL_FORMAT_SRGBX_8888_QCOM 0x31C3
+#define EGL_FORMAT_SRGBA_8888_QCOM 0x31C4
+#define EGL_FORMAT_YVYU_QCOM 0x31C5
+#define EGL_FORMAT_VYUY_QCOM 0x31C6
+#define EGL_FORMAT_IYUV_QCOM 0x31C7
+#define EGL_FORMAT_RGB_888_QCOM 0x31C8
+#define EGL_FORMAT_RGBA_5551_QCOM 0x31C9
+#define EGL_FORMAT_RGBA_4444_QCOM 0x31CA
+#define EGL_FORMAT_R_16_FLOAT_QCOM 0x31CB
+#define EGL_FORMAT_RG_1616_FLOAT_QCOM 0x31CC
+#define EGL_FORMAT_RGBA_16_FLOAT_QCOM 0x31CD
+#define EGL_FORMAT_RGBA_1010102_QCOM 0x31CE
+#define EGL_FORMAT_FLAG_QCOM 0x31CF
+#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
+#define EGL_DRM_BUFFER_USE_MESA 0x31D1
+#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
+#define EGL_DRM_BUFFER_MESA 0x31D3
+#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
+#define EGL_PLATFORM_X11_EXT 0x31D5
+#define EGL_PLATFORM_X11_KHR 0x31D5
+#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
+#define EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
+#define EGL_PLATFORM_GBM_KHR 0x31D7
+#define EGL_PLATFORM_GBM_MESA 0x31D7
+#define EGL_PLATFORM_WAYLAND_EXT 0x31D8
+#define EGL_PLATFORM_WAYLAND_KHR 0x31D8
+#define EGL_PLATFORM_SURFACELESS_MESA 0x31DD
+#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
+#define EGL_STREAM_TIME_NOW_KHR 0x31FD
+#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
+#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
+#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
+#define EGL_FIXED_SIZE_ANGLE 0x3201
+#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
+#define EGL_PRODUCER_FRAME_KHR 0x3212
+#define EGL_CONSUMER_FRAME_KHR 0x3213
+#define EGL_STREAM_STATE_KHR 0x3214
+#define EGL_STREAM_STATE_CREATED_KHR 0x3215
+#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216
+#define EGL_STREAM_STATE_EMPTY_KHR 0x3217
+#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
+#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
+#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
+#define EGL_BAD_STREAM_KHR 0x321B
+#define EGL_BAD_STATE_KHR 0x321C
+#define EGL_BUFFER_COUNT_NV 0x321D
+#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
+#define EGL_SYNC_NEW_FRAME_NV 0x321F
+#define EGL_BAD_DEVICE_EXT 0x322B
+#define EGL_DEVICE_EXT 0x322C
+#define EGL_BAD_OUTPUT_LAYER_EXT 0x322D
+#define EGL_BAD_OUTPUT_PORT_EXT 0x322E
+#define EGL_SWAP_INTERVAL_EXT 0x322F
+#define EGL_TRIPLE_BUFFER_NV 0x3230
+#define EGL_QUADRUPLE_BUFFER_NV 0x3231
+#define EGL_DRM_DEVICE_FILE_EXT 0x3233
+#define EGL_DRM_CRTC_EXT 0x3234
+#define EGL_DRM_PLANE_EXT 0x3235
+#define EGL_DRM_CONNECTOR_EXT 0x3236
+#define EGL_OPENWF_DEVICE_ID_EXT 0x3237
+#define EGL_OPENWF_PIPELINE_ID_EXT 0x3238
+#define EGL_OPENWF_PORT_ID_EXT 0x3239
+#define EGL_CUDA_DEVICE_NV 0x323A
+#define EGL_CUDA_EVENT_HANDLE_NV 0x323B
+#define EGL_SYNC_CUDA_EVENT_NV 0x323C
+#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
+#define EGL_STREAM_CROSS_PARTITION_NV 0x323F
+#define EGL_STREAM_STATE_INITIALIZING_NV 0x3240
+#define EGL_STREAM_TYPE_NV 0x3241
+#define EGL_STREAM_PROTOCOL_NV 0x3242
+#define EGL_STREAM_ENDPOINT_NV 0x3243
+#define EGL_STREAM_LOCAL_NV 0x3244
+#define EGL_STREAM_CROSS_PROCESS_NV 0x3245
+#define EGL_STREAM_PROTOCOL_FD_NV 0x3246
+#define EGL_STREAM_PRODUCER_NV 0x3247
+#define EGL_STREAM_CONSUMER_NV 0x3248
+#define EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
+#define EGL_SOCKET_HANDLE_NV 0x324C
+#define EGL_SOCKET_TYPE_NV 0x324D
+#define EGL_SOCKET_TYPE_UNIX_NV 0x324E
+#define EGL_SOCKET_TYPE_INET_NV 0x324F
+#define EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
+#define EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
+#define EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
+#define EGL_PRODUCER_METADATA_NV 0x3253
+#define EGL_CONSUMER_METADATA_NV 0x3254
+#define EGL_METADATA0_SIZE_NV 0x3255
+#define EGL_METADATA1_SIZE_NV 0x3256
+#define EGL_METADATA2_SIZE_NV 0x3257
+#define EGL_METADATA3_SIZE_NV 0x3258
+#define EGL_METADATA0_TYPE_NV 0x3259
+#define EGL_METADATA1_TYPE_NV 0x325A
+#define EGL_METADATA2_TYPE_NV 0x325B
+#define EGL_METADATA3_TYPE_NV 0x325C
+#define EGL_LINUX_DMA_BUF_EXT 0x3270
+#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
+#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
+#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
+#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
+#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
+#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
+#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
+#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
+#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
+#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
+#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
+#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C
+#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
+#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
+#define EGL_ITU_REC601_EXT 0x327F
+#define EGL_ITU_REC709_EXT 0x3280
+#define EGL_ITU_REC2020_EXT 0x3281
+#define EGL_YUV_FULL_RANGE_EXT 0x3282
+#define EGL_YUV_NARROW_RANGE_EXT 0x3283
+#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284
+#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
+#define EGL_DISCARD_SAMPLES_ARM 0x3286
+#define EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
+#define EGL_NATIVE_BUFFER_TIZEN 0x32A0
+#define EGL_NATIVE_SURFACE_TIZEN 0x32A1
+#define EGL_IMAGE_NUM_PLANES_QCOM 0x32B0
+#define EGL_IMAGE_PLANE_PITCH_0_QCOM 0x32B1
+#define EGL_IMAGE_PLANE_PITCH_1_QCOM 0x32B2
+#define EGL_IMAGE_PLANE_PITCH_2_QCOM 0x32B3
+#define EGL_IMAGE_PLANE_DEPTH_0_QCOM 0x32B4
+#define EGL_IMAGE_PLANE_DEPTH_1_QCOM 0x32B5
+#define EGL_IMAGE_PLANE_DEPTH_2_QCOM 0x32B6
+#define EGL_IMAGE_PLANE_WIDTH_0_QCOM 0x32B7
+#define EGL_IMAGE_PLANE_WIDTH_1_QCOM 0x32B8
+#define EGL_IMAGE_PLANE_WIDTH_2_QCOM 0x32B9
+#define EGL_IMAGE_PLANE_HEIGHT_0_QCOM 0x32BA
+#define EGL_IMAGE_PLANE_HEIGHT_1_QCOM 0x32BB
+#define EGL_IMAGE_PLANE_HEIGHT_2_QCOM 0x32BC
+#define EGL_IMAGE_PLANE_POINTER_0_QCOM 0x32BD
+#define EGL_IMAGE_PLANE_POINTER_1_QCOM 0x32BE
+#define EGL_IMAGE_PLANE_POINTER_2_QCOM 0x32BF
+#define EGL_PROTECTED_CONTENT_EXT 0x32C0
+#define EGL_GPU_PERF_HINT_QCOM 0x32D0
+#define EGL_HINT_PERSISTENT_QCOM 0x32D1
+#define EGL_YUV_BUFFER_EXT 0x3300
+#define EGL_YUV_ORDER_EXT 0x3301
+#define EGL_YUV_ORDER_YUV_EXT 0x3302
+#define EGL_YUV_ORDER_YVU_EXT 0x3303
+#define EGL_YUV_ORDER_YUYV_EXT 0x3304
+#define EGL_YUV_ORDER_UYVY_EXT 0x3305
+#define EGL_YUV_ORDER_YVYU_EXT 0x3306
+#define EGL_YUV_ORDER_VYUY_EXT 0x3307
+#define EGL_YUV_ORDER_AYUV_EXT 0x3308
+#define EGL_YUV_CSC_STANDARD_EXT 0x330A
+#define EGL_YUV_CSC_STANDARD_601_EXT 0x330B
+#define EGL_YUV_CSC_STANDARD_709_EXT 0x330C
+#define EGL_YUV_CSC_STANDARD_2020_EXT 0x330D
+#define EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
+#define EGL_YUV_SUBSAMPLE_EXT 0x3312
+#define EGL_YUV_SUBSAMPLE_4_2_0_EXT 0x3313
+#define EGL_YUV_SUBSAMPLE_4_2_2_EXT 0x3314
+#define EGL_YUV_SUBSAMPLE_4_4_4_EXT 0x3315
+#define EGL_YUV_DEPTH_RANGE_EXT 0x3317
+#define EGL_YUV_DEPTH_RANGE_LIMITED_EXT 0x3318
+#define EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319
+#define EGL_YUV_PLANE_BPP_EXT 0x331A
+#define EGL_YUV_PLANE_BPP_0_EXT 0x331B
+#define EGL_YUV_PLANE_BPP_8_EXT 0x331C
+#define EGL_YUV_PLANE_BPP_10_EXT 0x331D
+#define EGL_PENDING_METADATA_NV 0x3328
+#define EGL_PENDING_FRAME_NV 0x3329
+#define EGL_STREAM_TIME_PENDING_NV 0x332A
+#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
+#define EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
+#define EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
+#define EGL_SUPPORT_RESET_NV 0x3334
+#define EGL_SUPPORT_REUSE_NV 0x3335
+#define EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
+#define EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
+#define EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
+#define EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
+#define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
+#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
+#define EGL_DRM_MASTER_FD_EXT 0x333C
+#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
+#define EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
+#define EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
+#define EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
+#define EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
+#define EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
+#define EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
+#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
+#define EGL_STREAM_CROSS_OBJECT_NV 0x334D
+#define EGL_STREAM_CROSS_DISPLAY_NV 0x334E
+#define EGL_STREAM_CROSS_SYSTEM_NV 0x334F
+#define EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
+#define EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
+#define EGL_TRACK_REFERENCES_KHR 0x3352
+#define EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
+#define EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
+#define EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
+#define EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
+#define EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
+#define EGL_SYNC_CLIENT_EXT 0x3364
+#define EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
+#define EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
+#define EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
+#define EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
+#define EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
+#define EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
+#define EGL_LEFT_NV 0x336B
+#define EGL_RIGHT_NV 0x336C
+#define EGL_TOP_NV 0x336D
+#define EGL_BOTTOM_NV 0x336E
+#define EGL_X_AXIS_NV 0x336F
+#define EGL_Y_AXIS_NV 0x3370
+#define EGL_STREAM_DMA_NV 0x3371
+#define EGL_STREAM_DMA_SERVER_NV 0x3372
+#define EGL_D3D9_DEVICE_ANGLE 0x33A0
+#define EGL_D3D11_DEVICE_ANGLE 0x33A1
+#define EGL_OBJECT_THREAD_KHR 0x33B0
+#define EGL_OBJECT_DISPLAY_KHR 0x33B1
+#define EGL_OBJECT_CONTEXT_KHR 0x33B2
+#define EGL_OBJECT_SURFACE_KHR 0x33B3
+#define EGL_OBJECT_IMAGE_KHR 0x33B4
+#define EGL_OBJECT_SYNC_KHR 0x33B5
+#define EGL_OBJECT_STREAM_KHR 0x33B6
+#define EGL_DEBUG_CALLBACK_KHR 0x33B8
+#define EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
+#define EGL_DEBUG_MSG_ERROR_KHR 0x33BA
+#define EGL_DEBUG_MSG_WARN_KHR 0x33BB
+#define EGL_DEBUG_MSG_INFO_KHR 0x33BC
+#define EGL_FORMAT_FLAG_UBWC_QCOM 0x33E0
+#define EGL_FORMAT_FLAG_MACROTILE_QCOM 0x33E1
+#define EGL_FORMAT_ASTC_4X4_QCOM 0x33E2
+#define EGL_FORMAT_ASTC_5X4_QCOM 0x33E3
+#define EGL_FORMAT_ASTC_5X5_QCOM 0x33E4
+#define EGL_FORMAT_ASTC_6X5_QCOM 0x33E5
+#define EGL_FORMAT_ASTC_6X6_QCOM 0x33E6
+#define EGL_FORMAT_ASTC_8X5_QCOM 0x33E7
+#define EGL_FORMAT_ASTC_8X6_QCOM 0x33E8
+#define EGL_FORMAT_ASTC_8X8_QCOM 0x33E9
+#define EGL_FORMAT_ASTC_10X5_QCOM 0x33EA
+#define EGL_FORMAT_ASTC_10X6_QCOM 0x33EB
+#define EGL_FORMAT_ASTC_10X8_QCOM 0x33EC
+#define EGL_FORMAT_ASTC_10X10_QCOM 0x33ED
+#define EGL_FORMAT_ASTC_12X10_QCOM 0x33EE
+#define EGL_FORMAT_ASTC_12X12_QCOM 0x33EF
+#define EGL_FORMAT_ASTC_4X4_SRGB_QCOM 0x3400
+#define EGL_FORMAT_ASTC_5X4_SRGB_QCOM 0x3401
+#define EGL_FORMAT_ASTC_5X5_SRGB_QCOM 0x3402
+#define EGL_FORMAT_ASTC_6X5_SRGB_QCOM 0x3403
+#define EGL_FORMAT_ASTC_6X6_SRGB_QCOM 0x3404
+#define EGL_FORMAT_ASTC_8X5_SRGB_QCOM 0x3405
+#define EGL_FORMAT_ASTC_8X6_SRGB_QCOM 0x3406
+#define EGL_FORMAT_ASTC_8X8_SRGB_QCOM 0x3407
+#define EGL_FORMAT_ASTC_10X5_SRGB_QCOM 0x3408
+#define EGL_FORMAT_ASTC_10X6_SRGB_QCOM 0x3409
+#define EGL_FORMAT_ASTC_10X8_SRGB_QCOM 0x340A
+#define EGL_FORMAT_ASTC_10X10_SRGB_QCOM 0x340B
+#define EGL_FORMAT_ASTC_12X10_SRGB_QCOM 0x340C
+#define EGL_FORMAT_ASTC_12X12_SRGB_QCOM 0x340D
+#define EGL_FORMAT_TP10_QCOM 0x340E
+#define EGL_FORMAT_NV12_Y_QCOM 0x340F
+#define EGL_FORMAT_NV12_UV_QCOM 0x3410
+#define EGL_FORMAT_NV21_VU_QCOM 0x3411
+#define EGL_FORMAT_NV12_4R_QCOM 0x3412
+#define EGL_FORMAT_NV12_4R_Y_QCOM 0x3413
+#define EGL_FORMAT_NV12_4R_UV_QCOM 0x3414
+#define EGL_FORMAT_P010_QCOM 0x3415
+#define EGL_FORMAT_P010_Y_QCOM 0x3416
+#define EGL_FORMAT_P010_UV_QCOM 0x3417
+#define EGL_FORMAT_TP10_Y_QCOM 0x3418
+#define EGL_FORMAT_TP10_UV_QCOM 0x3419
+#define EGL_GENERIC_TOKEN_1_QCOM 0x3420
+#define EGL_GENERIC_TOKEN_2_QCOM 0x3421
+#define EGL_GENERIC_TOKEN_3_QCOM 0x3422
+#define EGL_TIMESTAMPS_ANDROID 0x3430
+#define EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
+#define EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
+#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
+#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
+#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
+#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
+#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
+#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
+#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
+#define EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
+#define EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
+#define EGL_READS_DONE_TIME_ANDROID 0x343C
+#define EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
+#define EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
+#define EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
+#define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
+#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
+#define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
+#define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
+#define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
+#define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
+#define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
+#define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
+#define EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
+#define EGL_EXTERNAL_REF_ID_EXT 0x3461
+#define EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
+#define EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
+#define EGL_FRONT_BUFFER_EXT 0x3464
+#define EGL_IMPORT_SYNC_TYPE_EXT 0x3470
+#define EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
+#define EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
+#define EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
+#define EGL_COLOR_FORMAT_HI 0x8F70
+#define EGL_COLOR_RGB_HI 0x8F71
+#define EGL_COLOR_RGBA_HI 0x8F72
+#define EGL_COLOR_ARGB_HI 0x8F73
+#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
+#define EGL_FOREVER 0xFFFFFFFFFFFFFFFF
+#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFF
+#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFF
+#define EGL_TRUE 1
+#define EGL_DISPLAY_SCALING 10000
+#define EGL_METADATA_SCALING_EXT 50000
+#define EGL_NO_CONFIG_KHR EGL_CAST(EGLConfig,0)
+#define EGL_NO_CONTEXT EGL_CAST(EGLContext,0)
+#define EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT,0)
+#define EGL_NO_DISPLAY EGL_CAST(EGLDisplay,0)
+#define EGL_NO_IMAGE EGL_CAST(EGLImage,0)
+#define EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR,0)
+#define EGL_DEFAULT_DISPLAY EGL_CAST(EGLNativeDisplayType,0)
+#define EGL_NO_FILE_DESCRIPTOR_KHR EGL_CAST(EGLNativeFileDescriptorKHR,-1)
+#define EGL_NO_OUTPUT_LAYER_EXT EGL_CAST(EGLOutputLayerEXT,0)
+#define EGL_NO_OUTPUT_PORT_EXT EGL_CAST(EGLOutputPortEXT,0)
+#define EGL_NO_STREAM_KHR EGL_CAST(EGLStreamKHR,0)
+#define EGL_NO_SURFACE EGL_CAST(EGLSurface,0)
+#define EGL_NO_SYNC EGL_CAST(EGLSync,0)
+#define EGL_NO_SYNC_KHR EGL_CAST(EGLSyncKHR,0)
+#define EGL_NO_SYNC_NV EGL_CAST(EGLSyncNV,0)
+#define EGL_DONT_CARE EGL_CAST(EGLint,-1)
+#define EGL_UNKNOWN EGL_CAST(EGLint,-1)
+#define EGL_TIMESTAMP_INVALID_ANDROID EGL_CAST(EGLnsecsANDROID,-1)
+#define EGL_TIMESTAMP_PENDING_ANDROID EGL_CAST(EGLnsecsANDROID,-2)
+
+typedef EGLBoolean (GLAPIENTRY *PFNEGLBINDAPIPROC)(EGLenum api);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLBINDTEXIMAGEPROC)(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLCHOOSECONFIGPROC)(EGLDisplay dpy, const EGLint * attrib_list, EGLConfig * configs, EGLint config_size, EGLint * num_config);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLCLIENTSIGNALSYNCEXTPROC)(EGLDisplay dpy, EGLSync sync, const EGLAttrib * attrib_list);
+typedef EGLint (GLAPIENTRY *PFNEGLCLIENTWAITSYNCPROC)(EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
+typedef EGLint (GLAPIENTRY *PFNEGLCLIENTWAITSYNCKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
+typedef EGLint (GLAPIENTRY *PFNEGLCLIENTWAITSYNCNVPROC)(EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC)(EGLint external_win_id);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC)(EGLint external_ref_id, const EGLint * context_attributes, EGLint num_entries);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC)(const EGLint * external_ref_ids, EGLint num_entries);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLCOMPOSITORSETSIZEEXTPROC)(EGLint external_win_id, EGLint width, EGLint height);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC)(EGLint external_win_id, const EGLint * window_attributes, EGLint num_entries);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC)(EGLint external_ref_id, const EGLint * external_win_ids, EGLint num_entries);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLCOMPOSITORSWAPPOLICYEXTPROC)(EGLint external_win_id, EGLint policy);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLCOPYBUFFERSPROC)(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
+typedef EGLContext (GLAPIENTRY *PFNEGLCREATECONTEXTPROC)(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint * attrib_list);
+typedef EGLImageKHR (GLAPIENTRY *PFNEGLCREATEDRMIMAGEMESAPROC)(EGLDisplay dpy, const EGLint * attrib_list);
+typedef EGLSyncNV (GLAPIENTRY *PFNEGLCREATEFENCESYNCNVPROC)(EGLDisplay dpy, EGLenum condition, const EGLint * attrib_list);
+typedef EGLImage (GLAPIENTRY *PFNEGLCREATEIMAGEPROC)(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib * attrib_list);
+typedef EGLImageKHR (GLAPIENTRY *PFNEGLCREATEIMAGEKHRPROC)(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint * attrib_list);
+typedef EGLClientBuffer (GLAPIENTRY *PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC)(const EGLint * attrib_list);
+typedef EGLSurface (GLAPIENTRY *PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC)(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint * attrib_list);
+typedef EGLSurface (GLAPIENTRY *PFNEGLCREATEPBUFFERSURFACEPROC)(EGLDisplay dpy, EGLConfig config, const EGLint * attrib_list);
+typedef EGLSurface (GLAPIENTRY *PFNEGLCREATEPIXMAPSURFACEPROC)(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint * attrib_list);
+typedef EGLSurface (GLAPIENTRY *PFNEGLCREATEPIXMAPSURFACEHIPROC)(EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI * pixmap);
+typedef EGLSurface (GLAPIENTRY *PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC)(EGLDisplay dpy, EGLConfig config, void * native_pixmap, const EGLAttrib * attrib_list);
+typedef EGLSurface (GLAPIENTRY *PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC)(EGLDisplay dpy, EGLConfig config, void * native_pixmap, const EGLint * attrib_list);
+typedef EGLSurface (GLAPIENTRY *PFNEGLCREATEPLATFORMWINDOWSURFACEPROC)(EGLDisplay dpy, EGLConfig config, void * native_window, const EGLAttrib * attrib_list);
+typedef EGLSurface (GLAPIENTRY *PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC)(EGLDisplay dpy, EGLConfig config, void * native_window, const EGLint * attrib_list);
+typedef EGLStreamKHR (GLAPIENTRY *PFNEGLCREATESTREAMATTRIBKHRPROC)(EGLDisplay dpy, const EGLAttrib * attrib_list);
+typedef EGLStreamKHR (GLAPIENTRY *PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC)(EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
+typedef EGLStreamKHR (GLAPIENTRY *PFNEGLCREATESTREAMKHRPROC)(EGLDisplay dpy, const EGLint * attrib_list);
+typedef EGLSurface (GLAPIENTRY *PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)(EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint * attrib_list);
+typedef EGLSyncKHR (GLAPIENTRY *PFNEGLCREATESTREAMSYNCNVPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint * attrib_list);
+typedef EGLSync (GLAPIENTRY *PFNEGLCREATESYNCPROC)(EGLDisplay dpy, EGLenum type, const EGLAttrib * attrib_list);
+typedef EGLSyncKHR (GLAPIENTRY *PFNEGLCREATESYNC64KHRPROC)(EGLDisplay dpy, EGLenum type, const EGLAttribKHR * attrib_list);
+typedef EGLSyncKHR (GLAPIENTRY *PFNEGLCREATESYNCKHRPROC)(EGLDisplay dpy, EGLenum type, const EGLint * attrib_list);
+typedef EGLSurface (GLAPIENTRY *PFNEGLCREATEWINDOWSURFACEPROC)(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint * attrib_list);
+typedef EGLint (GLAPIENTRY *PFNEGLDEBUGMESSAGECONTROLKHRPROC)(EGLDEBUGPROCKHR callback, const EGLAttrib * attrib_list);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLDESTROYCONTEXTPROC)(EGLDisplay dpy, EGLContext ctx);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLDESTROYIMAGEPROC)(EGLDisplay dpy, EGLImage image);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLDESTROYIMAGEKHRPROC)(EGLDisplay dpy, EGLImageKHR image);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLDESTROYSTREAMKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLDESTROYSURFACEPROC)(EGLDisplay dpy, EGLSurface surface);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLDESTROYSYNCPROC)(EGLDisplay dpy, EGLSync sync);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLDESTROYSYNCKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLDESTROYSYNCNVPROC)(EGLSyncNV sync);
+typedef EGLint (GLAPIENTRY *PFNEGLDUPNATIVEFENCEFDANDROIDPROC)(EGLDisplay dpy, EGLSyncKHR sync);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLEXPORTDMABUFIMAGEMESAPROC)(EGLDisplay dpy, EGLImageKHR image, int * fds, EGLint * strides, EGLint * offsets);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC)(EGLDisplay dpy, EGLImageKHR image, int * fourcc, int * num_planes, EGLuint64KHR * modifiers);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLEXPORTDRMIMAGEMESAPROC)(EGLDisplay dpy, EGLImageKHR image, EGLint * name, EGLint * handle, EGLint * stride);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLFENCENVPROC)(EGLSyncNV sync);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLGETCOMPOSITORTIMINGANDROIDPROC)(EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint * names, EGLnsecsANDROID * values);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC)(EGLDisplay dpy, EGLSurface surface, EGLint name);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLGETCONFIGATTRIBPROC)(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLGETCONFIGSPROC)(EGLDisplay dpy, EGLConfig * configs, EGLint config_size, EGLint * num_config);
+typedef EGLContext (GLAPIENTRY *PFNEGLGETCURRENTCONTEXTPROC)(void);
+typedef EGLDisplay (GLAPIENTRY *PFNEGLGETCURRENTDISPLAYPROC)(void);
+typedef EGLSurface (GLAPIENTRY *PFNEGLGETCURRENTSURFACEPROC)(EGLint readdraw);
+typedef EGLDisplay (GLAPIENTRY *PFNEGLGETDISPLAYPROC)(EGLNativeDisplayType display_id);
+typedef char * (GLAPIENTRY *PFNEGLGETDISPLAYDRIVERCONFIGPROC)(EGLDisplay dpy);
+typedef const char * (GLAPIENTRY *PFNEGLGETDISPLAYDRIVERNAMEPROC)(EGLDisplay dpy);
+typedef EGLint (GLAPIENTRY *PFNEGLGETERRORPROC)(void);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC)(EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLGETFRAMETIMESTAMPSANDROIDPROC)(EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint * timestamps, EGLnsecsANDROID * values);
+typedef EGLClientBuffer (GLAPIENTRY *PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC)(const struct AHardwareBuffer * buffer);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLGETNEXTFRAMEIDANDROIDPROC)(EGLDisplay dpy, EGLSurface surface, EGLuint64KHR * frameId);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLGETOUTPUTLAYERSEXTPROC)(EGLDisplay dpy, const EGLAttrib * attrib_list, EGLOutputLayerEXT * layers, EGLint max_layers, EGLint * num_layers);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLGETOUTPUTPORTSEXTPROC)(EGLDisplay dpy, const EGLAttrib * attrib_list, EGLOutputPortEXT * ports, EGLint max_ports, EGLint * num_ports);
+typedef EGLDisplay (GLAPIENTRY *PFNEGLGETPLATFORMDISPLAYPROC)(EGLenum platform, void * native_display, const EGLAttrib * attrib_list);
+typedef EGLDisplay (GLAPIENTRY *PFNEGLGETPLATFORMDISPLAYEXTPROC)(EGLenum platform, void * native_display, const EGLint * attrib_list);
+typedef __eglMustCastToProperFunctionPointerType (GLAPIENTRY *PFNEGLGETPROCADDRESSPROC)(const char * procname);
+typedef EGLNativeFileDescriptorKHR (GLAPIENTRY *PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLGETSYNCATTRIBPROC)(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLGETSYNCATTRIBKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLGETSYNCATTRIBNVPROC)(EGLSyncNV sync, EGLint attribute, EGLint * value);
+typedef EGLuint64NV (GLAPIENTRY *PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC)(void);
+typedef EGLuint64NV (GLAPIENTRY *PFNEGLGETSYSTEMTIMENVPROC)(void);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLINITIALIZEPROC)(EGLDisplay dpy, EGLint * major, EGLint * minor);
+typedef EGLint (GLAPIENTRY *PFNEGLLABELOBJECTKHRPROC)(EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLLOCKSURFACEKHRPROC)(EGLDisplay dpy, EGLSurface surface, const EGLint * attrib_list);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLMAKECURRENTPROC)(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLOUTPUTLAYERATTRIBEXTPROC)(EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLOUTPUTPORTATTRIBEXTPROC)(EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLPOSTSUBBUFFERNVPROC)(EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLPRESENTATIONTIMEANDROIDPROC)(EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
+typedef EGLenum (GLAPIENTRY *PFNEGLQUERYAPIPROC)(void);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYCONTEXTPROC)(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYDEBUGKHRPROC)(EGLint attribute, EGLAttrib * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYDEVICEATTRIBEXTPROC)(EGLDeviceEXT device, EGLint attribute, EGLAttrib * value);
+typedef const char * (GLAPIENTRY *PFNEGLQUERYDEVICESTRINGEXTPROC)(EGLDeviceEXT device, EGLint name);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYDEVICESEXTPROC)(EGLint max_devices, EGLDeviceEXT * devices, EGLint * num_devices);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYDISPLAYATTRIBEXTPROC)(EGLDisplay dpy, EGLint attribute, EGLAttrib * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYDISPLAYATTRIBKHRPROC)(EGLDisplay dpy, EGLint name, EGLAttrib * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYDISPLAYATTRIBNVPROC)(EGLDisplay dpy, EGLint attribute, EGLAttrib * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYDMABUFFORMATSEXTPROC)(EGLDisplay dpy, EGLint max_formats, EGLint * formats, EGLint * num_formats);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYDMABUFMODIFIERSEXTPROC)(EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR * modifiers, EGLBoolean * external_only, EGLint * num_modifiers);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYNATIVEDISPLAYNVPROC)(EGLDisplay dpy, EGLNativeDisplayType * display_id);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYNATIVEPIXMAPNVPROC)(EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType * pixmap);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYNATIVEWINDOWNVPROC)(EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType * window);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC)(EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib * value);
+typedef const char * (GLAPIENTRY *PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC)(EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC)(EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib * value);
+typedef const char * (GLAPIENTRY *PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC)(EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYSTREAMATTRIBKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYSTREAMKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYSTREAMMETADATANVPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void * data);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYSTREAMTIMEKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYSTREAMU64KHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR * value);
+typedef const char * (GLAPIENTRY *PFNEGLQUERYSTRINGPROC)(EGLDisplay dpy, EGLint name);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYSURFACEPROC)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYSURFACE64KHRPROC)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR * value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLQUERYSURFACEPOINTERANGLEPROC)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, void ** value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLRELEASETEXIMAGEPROC)(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLRELEASETHREADPROC)(void);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLRESETSTREAMNVPROC)(EGLDisplay dpy, EGLStreamKHR stream);
+typedef void (GLAPIENTRY *PFNEGLSETBLOBCACHEFUNCSANDROIDPROC)(EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSETDAMAGEREGIONKHRPROC)(EGLDisplay dpy, EGLSurface surface, EGLint * rects, EGLint n_rects);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSETSTREAMATTRIBKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSETSTREAMMETADATANVPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void * data);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSIGNALSYNCKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSIGNALSYNCNVPROC)(EGLSyncNV sync, EGLenum mode);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSTREAMATTRIBKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib * attrib_list);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSTREAMCONSUMERACQUIREKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC)(EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib * attrib_list);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSTREAMCONSUMEROUTPUTEXTPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib * attrib_list);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSTREAMCONSUMERRELEASEKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSTREAMFLUSHNVPROC)(EGLDisplay dpy, EGLStreamKHR stream);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSURFACEATTRIBPROC)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSWAPBUFFERSPROC)(EGLDisplay dpy, EGLSurface surface);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSWAPBUFFERSREGION2NOKPROC)(EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint * rects);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSWAPBUFFERSREGIONNOKPROC)(EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint * rects);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC)(EGLDisplay dpy, EGLSurface surface, EGLint * rects, EGLint n_rects);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC)(EGLDisplay dpy, EGLSurface surface, EGLint * rects, EGLint n_rects);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLSWAPINTERVALPROC)(EGLDisplay dpy, EGLint interval);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLTERMINATEPROC)(EGLDisplay dpy);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLUNLOCKSURFACEKHRPROC)(EGLDisplay dpy, EGLSurface surface);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLUNSIGNALSYNCEXTPROC)(EGLDisplay dpy, EGLSync sync, const EGLAttrib * attrib_list);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLWAITCLIENTPROC)(void);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLWAITGLPROC)(void);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLWAITNATIVEPROC)(EGLint engine);
+typedef EGLBoolean (GLAPIENTRY *PFNEGLWAITSYNCPROC)(EGLDisplay dpy, EGLSync sync, EGLint flags);
+typedef EGLint (GLAPIENTRY *PFNEGLWAITSYNCKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglBindAPI)(EGLenum api);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglBindTexImage)(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglChooseConfig)(EGLDisplay dpy, const EGLint * attrib_list, EGLConfig * configs, EGLint config_size, EGLint * num_config);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglClientSignalSyncEXT)(EGLDisplay dpy, EGLSync sync, const EGLAttrib * attrib_list);
+
+EPOXY_PUBLIC EGLint (EPOXY_CALLSPEC *epoxy_eglClientWaitSync)(EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
+
+EPOXY_PUBLIC EGLint (EPOXY_CALLSPEC *epoxy_eglClientWaitSyncKHR)(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
+
+EPOXY_PUBLIC EGLint (EPOXY_CALLSPEC *epoxy_eglClientWaitSyncNV)(EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglCompositorBindTexWindowEXT)(EGLint external_win_id);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglCompositorSetContextAttributesEXT)(EGLint external_ref_id, const EGLint * context_attributes, EGLint num_entries);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglCompositorSetContextListEXT)(const EGLint * external_ref_ids, EGLint num_entries);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglCompositorSetSizeEXT)(EGLint external_win_id, EGLint width, EGLint height);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglCompositorSetWindowAttributesEXT)(EGLint external_win_id, const EGLint * window_attributes, EGLint num_entries);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglCompositorSetWindowListEXT)(EGLint external_ref_id, const EGLint * external_win_ids, EGLint num_entries);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglCompositorSwapPolicyEXT)(EGLint external_win_id, EGLint policy);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglCopyBuffers)(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
+
+EPOXY_PUBLIC EGLContext (EPOXY_CALLSPEC *epoxy_eglCreateContext)(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLImageKHR (EPOXY_CALLSPEC *epoxy_eglCreateDRMImageMESA)(EGLDisplay dpy, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLSyncNV (EPOXY_CALLSPEC *epoxy_eglCreateFenceSyncNV)(EGLDisplay dpy, EGLenum condition, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLImage (EPOXY_CALLSPEC *epoxy_eglCreateImage)(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib * attrib_list);
+
+EPOXY_PUBLIC EGLImageKHR (EPOXY_CALLSPEC *epoxy_eglCreateImageKHR)(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLClientBuffer (EPOXY_CALLSPEC *epoxy_eglCreateNativeClientBufferANDROID)(const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLSurface (EPOXY_CALLSPEC *epoxy_eglCreatePbufferFromClientBuffer)(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLSurface (EPOXY_CALLSPEC *epoxy_eglCreatePbufferSurface)(EGLDisplay dpy, EGLConfig config, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLSurface (EPOXY_CALLSPEC *epoxy_eglCreatePixmapSurface)(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLSurface (EPOXY_CALLSPEC *epoxy_eglCreatePixmapSurfaceHI)(EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI * pixmap);
+
+EPOXY_PUBLIC EGLSurface (EPOXY_CALLSPEC *epoxy_eglCreatePlatformPixmapSurface)(EGLDisplay dpy, EGLConfig config, void * native_pixmap, const EGLAttrib * attrib_list);
+
+EPOXY_PUBLIC EGLSurface (EPOXY_CALLSPEC *epoxy_eglCreatePlatformPixmapSurfaceEXT)(EGLDisplay dpy, EGLConfig config, void * native_pixmap, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLSurface (EPOXY_CALLSPEC *epoxy_eglCreatePlatformWindowSurface)(EGLDisplay dpy, EGLConfig config, void * native_window, const EGLAttrib * attrib_list);
+
+EPOXY_PUBLIC EGLSurface (EPOXY_CALLSPEC *epoxy_eglCreatePlatformWindowSurfaceEXT)(EGLDisplay dpy, EGLConfig config, void * native_window, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLStreamKHR (EPOXY_CALLSPEC *epoxy_eglCreateStreamAttribKHR)(EGLDisplay dpy, const EGLAttrib * attrib_list);
+
+EPOXY_PUBLIC EGLStreamKHR (EPOXY_CALLSPEC *epoxy_eglCreateStreamFromFileDescriptorKHR)(EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
+
+EPOXY_PUBLIC EGLStreamKHR (EPOXY_CALLSPEC *epoxy_eglCreateStreamKHR)(EGLDisplay dpy, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLSurface (EPOXY_CALLSPEC *epoxy_eglCreateStreamProducerSurfaceKHR)(EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLSyncKHR (EPOXY_CALLSPEC *epoxy_eglCreateStreamSyncNV)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLSync (EPOXY_CALLSPEC *epoxy_eglCreateSync)(EGLDisplay dpy, EGLenum type, const EGLAttrib * attrib_list);
+
+EPOXY_PUBLIC EGLSyncKHR (EPOXY_CALLSPEC *epoxy_eglCreateSync64KHR)(EGLDisplay dpy, EGLenum type, const EGLAttribKHR * attrib_list);
+
+EPOXY_PUBLIC EGLSyncKHR (EPOXY_CALLSPEC *epoxy_eglCreateSyncKHR)(EGLDisplay dpy, EGLenum type, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLSurface (EPOXY_CALLSPEC *epoxy_eglCreateWindowSurface)(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLint (EPOXY_CALLSPEC *epoxy_eglDebugMessageControlKHR)(EGLDEBUGPROCKHR callback, const EGLAttrib * attrib_list);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglDestroyContext)(EGLDisplay dpy, EGLContext ctx);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglDestroyImage)(EGLDisplay dpy, EGLImage image);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglDestroyImageKHR)(EGLDisplay dpy, EGLImageKHR image);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglDestroyStreamKHR)(EGLDisplay dpy, EGLStreamKHR stream);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglDestroySurface)(EGLDisplay dpy, EGLSurface surface);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglDestroySync)(EGLDisplay dpy, EGLSync sync);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglDestroySyncKHR)(EGLDisplay dpy, EGLSyncKHR sync);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglDestroySyncNV)(EGLSyncNV sync);
+
+EPOXY_PUBLIC EGLint (EPOXY_CALLSPEC *epoxy_eglDupNativeFenceFDANDROID)(EGLDisplay dpy, EGLSyncKHR sync);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglExportDMABUFImageMESA)(EGLDisplay dpy, EGLImageKHR image, int * fds, EGLint * strides, EGLint * offsets);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglExportDMABUFImageQueryMESA)(EGLDisplay dpy, EGLImageKHR image, int * fourcc, int * num_planes, EGLuint64KHR * modifiers);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglExportDRMImageMESA)(EGLDisplay dpy, EGLImageKHR image, EGLint * name, EGLint * handle, EGLint * stride);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglFenceNV)(EGLSyncNV sync);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglGetCompositorTimingANDROID)(EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint * names, EGLnsecsANDROID * values);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglGetCompositorTimingSupportedANDROID)(EGLDisplay dpy, EGLSurface surface, EGLint name);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglGetConfigAttrib)(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglGetConfigs)(EGLDisplay dpy, EGLConfig * configs, EGLint config_size, EGLint * num_config);
+
+EPOXY_PUBLIC EGLContext (EPOXY_CALLSPEC *epoxy_eglGetCurrentContext)(void);
+
+EPOXY_PUBLIC EGLDisplay (EPOXY_CALLSPEC *epoxy_eglGetCurrentDisplay)(void);
+
+EPOXY_PUBLIC EGLSurface (EPOXY_CALLSPEC *epoxy_eglGetCurrentSurface)(EGLint readdraw);
+
+EPOXY_PUBLIC EGLDisplay (EPOXY_CALLSPEC *epoxy_eglGetDisplay)(EGLNativeDisplayType display_id);
+
+EPOXY_PUBLIC char * (EPOXY_CALLSPEC *epoxy_eglGetDisplayDriverConfig)(EGLDisplay dpy);
+
+EPOXY_PUBLIC const char * (EPOXY_CALLSPEC *epoxy_eglGetDisplayDriverName)(EGLDisplay dpy);
+
+EPOXY_PUBLIC EGLint (EPOXY_CALLSPEC *epoxy_eglGetError)(void);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglGetFrameTimestampSupportedANDROID)(EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglGetFrameTimestampsANDROID)(EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint * timestamps, EGLnsecsANDROID * values);
+
+EPOXY_PUBLIC EGLClientBuffer (EPOXY_CALLSPEC *epoxy_eglGetNativeClientBufferANDROID)(const struct AHardwareBuffer * buffer);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglGetNextFrameIdANDROID)(EGLDisplay dpy, EGLSurface surface, EGLuint64KHR * frameId);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglGetOutputLayersEXT)(EGLDisplay dpy, const EGLAttrib * attrib_list, EGLOutputLayerEXT * layers, EGLint max_layers, EGLint * num_layers);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglGetOutputPortsEXT)(EGLDisplay dpy, const EGLAttrib * attrib_list, EGLOutputPortEXT * ports, EGLint max_ports, EGLint * num_ports);
+
+EPOXY_PUBLIC EGLDisplay (EPOXY_CALLSPEC *epoxy_eglGetPlatformDisplay)(EGLenum platform, void * native_display, const EGLAttrib * attrib_list);
+
+EPOXY_PUBLIC EGLDisplay (EPOXY_CALLSPEC *epoxy_eglGetPlatformDisplayEXT)(EGLenum platform, void * native_display, const EGLint * attrib_list);
+
+EPOXY_PUBLIC __eglMustCastToProperFunctionPointerType (EPOXY_CALLSPEC *epoxy_eglGetProcAddress)(const char * procname);
+
+EPOXY_PUBLIC EGLNativeFileDescriptorKHR (EPOXY_CALLSPEC *epoxy_eglGetStreamFileDescriptorKHR)(EGLDisplay dpy, EGLStreamKHR stream);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglGetSyncAttrib)(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglGetSyncAttribKHR)(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglGetSyncAttribNV)(EGLSyncNV sync, EGLint attribute, EGLint * value);
+
+EPOXY_PUBLIC EGLuint64NV (EPOXY_CALLSPEC *epoxy_eglGetSystemTimeFrequencyNV)(void);
+
+EPOXY_PUBLIC EGLuint64NV (EPOXY_CALLSPEC *epoxy_eglGetSystemTimeNV)(void);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglInitialize)(EGLDisplay dpy, EGLint * major, EGLint * minor);
+
+EPOXY_PUBLIC EGLint (EPOXY_CALLSPEC *epoxy_eglLabelObjectKHR)(EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglLockSurfaceKHR)(EGLDisplay dpy, EGLSurface surface, const EGLint * attrib_list);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglMakeCurrent)(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglOutputLayerAttribEXT)(EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglOutputPortAttribEXT)(EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglPostSubBufferNV)(EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglPresentationTimeANDROID)(EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
+
+EPOXY_PUBLIC EGLenum (EPOXY_CALLSPEC *epoxy_eglQueryAPI)(void);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryContext)(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryDebugKHR)(EGLint attribute, EGLAttrib * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryDeviceAttribEXT)(EGLDeviceEXT device, EGLint attribute, EGLAttrib * value);
+
+EPOXY_PUBLIC const char * (EPOXY_CALLSPEC *epoxy_eglQueryDeviceStringEXT)(EGLDeviceEXT device, EGLint name);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryDevicesEXT)(EGLint max_devices, EGLDeviceEXT * devices, EGLint * num_devices);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryDisplayAttribEXT)(EGLDisplay dpy, EGLint attribute, EGLAttrib * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryDisplayAttribKHR)(EGLDisplay dpy, EGLint name, EGLAttrib * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryDisplayAttribNV)(EGLDisplay dpy, EGLint attribute, EGLAttrib * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryDmaBufFormatsEXT)(EGLDisplay dpy, EGLint max_formats, EGLint * formats, EGLint * num_formats);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryDmaBufModifiersEXT)(EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR * modifiers, EGLBoolean * external_only, EGLint * num_modifiers);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryNativeDisplayNV)(EGLDisplay dpy, EGLNativeDisplayType * display_id);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryNativePixmapNV)(EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType * pixmap);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryNativeWindowNV)(EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType * window);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryOutputLayerAttribEXT)(EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib * value);
+
+EPOXY_PUBLIC const char * (EPOXY_CALLSPEC *epoxy_eglQueryOutputLayerStringEXT)(EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryOutputPortAttribEXT)(EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib * value);
+
+EPOXY_PUBLIC const char * (EPOXY_CALLSPEC *epoxy_eglQueryOutputPortStringEXT)(EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryStreamAttribKHR)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryStreamKHR)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryStreamMetadataNV)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void * data);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryStreamTimeKHR)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQueryStreamu64KHR)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR * value);
+
+EPOXY_PUBLIC const char * (EPOXY_CALLSPEC *epoxy_eglQueryString)(EGLDisplay dpy, EGLint name);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQuerySurface)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQuerySurface64KHR)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR * value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglQuerySurfacePointerANGLE)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, void ** value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglReleaseTexImage)(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglReleaseThread)(void);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglResetStreamNV)(EGLDisplay dpy, EGLStreamKHR stream);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_eglSetBlobCacheFuncsANDROID)(EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglSetDamageRegionKHR)(EGLDisplay dpy, EGLSurface surface, EGLint * rects, EGLint n_rects);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglSetStreamAttribKHR)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglSetStreamMetadataNV)(EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void * data);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglSignalSyncKHR)(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglSignalSyncNV)(EGLSyncNV sync, EGLenum mode);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglStreamAttribKHR)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglStreamConsumerAcquireAttribKHR)(EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib * attrib_list);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglStreamConsumerAcquireKHR)(EGLDisplay dpy, EGLStreamKHR stream);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglStreamConsumerGLTextureExternalAttribsNV)(EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib * attrib_list);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglStreamConsumerGLTextureExternalKHR)(EGLDisplay dpy, EGLStreamKHR stream);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglStreamConsumerOutputEXT)(EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglStreamConsumerReleaseAttribKHR)(EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib * attrib_list);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglStreamConsumerReleaseKHR)(EGLDisplay dpy, EGLStreamKHR stream);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglStreamFlushNV)(EGLDisplay dpy, EGLStreamKHR stream);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglSurfaceAttrib)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglSwapBuffers)(EGLDisplay dpy, EGLSurface surface);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglSwapBuffersRegion2NOK)(EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint * rects);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglSwapBuffersRegionNOK)(EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint * rects);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglSwapBuffersWithDamageEXT)(EGLDisplay dpy, EGLSurface surface, EGLint * rects, EGLint n_rects);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglSwapBuffersWithDamageKHR)(EGLDisplay dpy, EGLSurface surface, EGLint * rects, EGLint n_rects);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglSwapInterval)(EGLDisplay dpy, EGLint interval);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglTerminate)(EGLDisplay dpy);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglUnlockSurfaceKHR)(EGLDisplay dpy, EGLSurface surface);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglUnsignalSyncEXT)(EGLDisplay dpy, EGLSync sync, const EGLAttrib * attrib_list);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglWaitClient)(void);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglWaitGL)(void);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglWaitNative)(EGLint engine);
+
+EPOXY_PUBLIC EGLBoolean (EPOXY_CALLSPEC *epoxy_eglWaitSync)(EGLDisplay dpy, EGLSync sync, EGLint flags);
+
+EPOXY_PUBLIC EGLint (EPOXY_CALLSPEC *epoxy_eglWaitSyncKHR)(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
+
+#define eglBindAPI epoxy_eglBindAPI
+#define eglBindTexImage epoxy_eglBindTexImage
+#define eglChooseConfig epoxy_eglChooseConfig
+#define eglClientSignalSyncEXT epoxy_eglClientSignalSyncEXT
+#define eglClientWaitSync epoxy_eglClientWaitSync
+#define eglClientWaitSyncKHR epoxy_eglClientWaitSyncKHR
+#define eglClientWaitSyncNV epoxy_eglClientWaitSyncNV
+#define eglCompositorBindTexWindowEXT epoxy_eglCompositorBindTexWindowEXT
+#define eglCompositorSetContextAttributesEXT epoxy_eglCompositorSetContextAttributesEXT
+#define eglCompositorSetContextListEXT epoxy_eglCompositorSetContextListEXT
+#define eglCompositorSetSizeEXT epoxy_eglCompositorSetSizeEXT
+#define eglCompositorSetWindowAttributesEXT epoxy_eglCompositorSetWindowAttributesEXT
+#define eglCompositorSetWindowListEXT epoxy_eglCompositorSetWindowListEXT
+#define eglCompositorSwapPolicyEXT epoxy_eglCompositorSwapPolicyEXT
+#define eglCopyBuffers epoxy_eglCopyBuffers
+#define eglCreateContext epoxy_eglCreateContext
+#define eglCreateDRMImageMESA epoxy_eglCreateDRMImageMESA
+#define eglCreateFenceSyncNV epoxy_eglCreateFenceSyncNV
+#define eglCreateImage epoxy_eglCreateImage
+#define eglCreateImageKHR epoxy_eglCreateImageKHR
+#define eglCreateNativeClientBufferANDROID epoxy_eglCreateNativeClientBufferANDROID
+#define eglCreatePbufferFromClientBuffer epoxy_eglCreatePbufferFromClientBuffer
+#define eglCreatePbufferSurface epoxy_eglCreatePbufferSurface
+#define eglCreatePixmapSurface epoxy_eglCreatePixmapSurface
+#define eglCreatePixmapSurfaceHI epoxy_eglCreatePixmapSurfaceHI
+#define eglCreatePlatformPixmapSurface epoxy_eglCreatePlatformPixmapSurface
+#define eglCreatePlatformPixmapSurfaceEXT epoxy_eglCreatePlatformPixmapSurfaceEXT
+#define eglCreatePlatformWindowSurface epoxy_eglCreatePlatformWindowSurface
+#define eglCreatePlatformWindowSurfaceEXT epoxy_eglCreatePlatformWindowSurfaceEXT
+#define eglCreateStreamAttribKHR epoxy_eglCreateStreamAttribKHR
+#define eglCreateStreamFromFileDescriptorKHR epoxy_eglCreateStreamFromFileDescriptorKHR
+#define eglCreateStreamKHR epoxy_eglCreateStreamKHR
+#define eglCreateStreamProducerSurfaceKHR epoxy_eglCreateStreamProducerSurfaceKHR
+#define eglCreateStreamSyncNV epoxy_eglCreateStreamSyncNV
+#define eglCreateSync epoxy_eglCreateSync
+#define eglCreateSync64KHR epoxy_eglCreateSync64KHR
+#define eglCreateSyncKHR epoxy_eglCreateSyncKHR
+#define eglCreateWindowSurface epoxy_eglCreateWindowSurface
+#define eglDebugMessageControlKHR epoxy_eglDebugMessageControlKHR
+#define eglDestroyContext epoxy_eglDestroyContext
+#define eglDestroyImage epoxy_eglDestroyImage
+#define eglDestroyImageKHR epoxy_eglDestroyImageKHR
+#define eglDestroyStreamKHR epoxy_eglDestroyStreamKHR
+#define eglDestroySurface epoxy_eglDestroySurface
+#define eglDestroySync epoxy_eglDestroySync
+#define eglDestroySyncKHR epoxy_eglDestroySyncKHR
+#define eglDestroySyncNV epoxy_eglDestroySyncNV
+#define eglDupNativeFenceFDANDROID epoxy_eglDupNativeFenceFDANDROID
+#define eglExportDMABUFImageMESA epoxy_eglExportDMABUFImageMESA
+#define eglExportDMABUFImageQueryMESA epoxy_eglExportDMABUFImageQueryMESA
+#define eglExportDRMImageMESA epoxy_eglExportDRMImageMESA
+#define eglFenceNV epoxy_eglFenceNV
+#define eglGetCompositorTimingANDROID epoxy_eglGetCompositorTimingANDROID
+#define eglGetCompositorTimingSupportedANDROID epoxy_eglGetCompositorTimingSupportedANDROID
+#define eglGetConfigAttrib epoxy_eglGetConfigAttrib
+#define eglGetConfigs epoxy_eglGetConfigs
+#define eglGetCurrentContext epoxy_eglGetCurrentContext
+#define eglGetCurrentDisplay epoxy_eglGetCurrentDisplay
+#define eglGetCurrentSurface epoxy_eglGetCurrentSurface
+#define eglGetDisplay epoxy_eglGetDisplay
+#define eglGetDisplayDriverConfig epoxy_eglGetDisplayDriverConfig
+#define eglGetDisplayDriverName epoxy_eglGetDisplayDriverName
+#define eglGetError epoxy_eglGetError
+#define eglGetFrameTimestampSupportedANDROID epoxy_eglGetFrameTimestampSupportedANDROID
+#define eglGetFrameTimestampsANDROID epoxy_eglGetFrameTimestampsANDROID
+#define eglGetNativeClientBufferANDROID epoxy_eglGetNativeClientBufferANDROID
+#define eglGetNextFrameIdANDROID epoxy_eglGetNextFrameIdANDROID
+#define eglGetOutputLayersEXT epoxy_eglGetOutputLayersEXT
+#define eglGetOutputPortsEXT epoxy_eglGetOutputPortsEXT
+#define eglGetPlatformDisplay epoxy_eglGetPlatformDisplay
+#define eglGetPlatformDisplayEXT epoxy_eglGetPlatformDisplayEXT
+#define eglGetProcAddress epoxy_eglGetProcAddress
+#define eglGetStreamFileDescriptorKHR epoxy_eglGetStreamFileDescriptorKHR
+#define eglGetSyncAttrib epoxy_eglGetSyncAttrib
+#define eglGetSyncAttribKHR epoxy_eglGetSyncAttribKHR
+#define eglGetSyncAttribNV epoxy_eglGetSyncAttribNV
+#define eglGetSystemTimeFrequencyNV epoxy_eglGetSystemTimeFrequencyNV
+#define eglGetSystemTimeNV epoxy_eglGetSystemTimeNV
+#define eglInitialize epoxy_eglInitialize
+#define eglLabelObjectKHR epoxy_eglLabelObjectKHR
+#define eglLockSurfaceKHR epoxy_eglLockSurfaceKHR
+#define eglMakeCurrent epoxy_eglMakeCurrent
+#define eglOutputLayerAttribEXT epoxy_eglOutputLayerAttribEXT
+#define eglOutputPortAttribEXT epoxy_eglOutputPortAttribEXT
+#define eglPostSubBufferNV epoxy_eglPostSubBufferNV
+#define eglPresentationTimeANDROID epoxy_eglPresentationTimeANDROID
+#define eglQueryAPI epoxy_eglQueryAPI
+#define eglQueryContext epoxy_eglQueryContext
+#define eglQueryDebugKHR epoxy_eglQueryDebugKHR
+#define eglQueryDeviceAttribEXT epoxy_eglQueryDeviceAttribEXT
+#define eglQueryDeviceStringEXT epoxy_eglQueryDeviceStringEXT
+#define eglQueryDevicesEXT epoxy_eglQueryDevicesEXT
+#define eglQueryDisplayAttribEXT epoxy_eglQueryDisplayAttribEXT
+#define eglQueryDisplayAttribKHR epoxy_eglQueryDisplayAttribKHR
+#define eglQueryDisplayAttribNV epoxy_eglQueryDisplayAttribNV
+#define eglQueryDmaBufFormatsEXT epoxy_eglQueryDmaBufFormatsEXT
+#define eglQueryDmaBufModifiersEXT epoxy_eglQueryDmaBufModifiersEXT
+#define eglQueryNativeDisplayNV epoxy_eglQueryNativeDisplayNV
+#define eglQueryNativePixmapNV epoxy_eglQueryNativePixmapNV
+#define eglQueryNativeWindowNV epoxy_eglQueryNativeWindowNV
+#define eglQueryOutputLayerAttribEXT epoxy_eglQueryOutputLayerAttribEXT
+#define eglQueryOutputLayerStringEXT epoxy_eglQueryOutputLayerStringEXT
+#define eglQueryOutputPortAttribEXT epoxy_eglQueryOutputPortAttribEXT
+#define eglQueryOutputPortStringEXT epoxy_eglQueryOutputPortStringEXT
+#define eglQueryStreamAttribKHR epoxy_eglQueryStreamAttribKHR
+#define eglQueryStreamKHR epoxy_eglQueryStreamKHR
+#define eglQueryStreamMetadataNV epoxy_eglQueryStreamMetadataNV
+#define eglQueryStreamTimeKHR epoxy_eglQueryStreamTimeKHR
+#define eglQueryStreamu64KHR epoxy_eglQueryStreamu64KHR
+#define eglQueryString epoxy_eglQueryString
+#define eglQuerySurface epoxy_eglQuerySurface
+#define eglQuerySurface64KHR epoxy_eglQuerySurface64KHR
+#define eglQuerySurfacePointerANGLE epoxy_eglQuerySurfacePointerANGLE
+#define eglReleaseTexImage epoxy_eglReleaseTexImage
+#define eglReleaseThread epoxy_eglReleaseThread
+#define eglResetStreamNV epoxy_eglResetStreamNV
+#define eglSetBlobCacheFuncsANDROID epoxy_eglSetBlobCacheFuncsANDROID
+#define eglSetDamageRegionKHR epoxy_eglSetDamageRegionKHR
+#define eglSetStreamAttribKHR epoxy_eglSetStreamAttribKHR
+#define eglSetStreamMetadataNV epoxy_eglSetStreamMetadataNV
+#define eglSignalSyncKHR epoxy_eglSignalSyncKHR
+#define eglSignalSyncNV epoxy_eglSignalSyncNV
+#define eglStreamAttribKHR epoxy_eglStreamAttribKHR
+#define eglStreamConsumerAcquireAttribKHR epoxy_eglStreamConsumerAcquireAttribKHR
+#define eglStreamConsumerAcquireKHR epoxy_eglStreamConsumerAcquireKHR
+#define eglStreamConsumerGLTextureExternalAttribsNV epoxy_eglStreamConsumerGLTextureExternalAttribsNV
+#define eglStreamConsumerGLTextureExternalKHR epoxy_eglStreamConsumerGLTextureExternalKHR
+#define eglStreamConsumerOutputEXT epoxy_eglStreamConsumerOutputEXT
+#define eglStreamConsumerReleaseAttribKHR epoxy_eglStreamConsumerReleaseAttribKHR
+#define eglStreamConsumerReleaseKHR epoxy_eglStreamConsumerReleaseKHR
+#define eglStreamFlushNV epoxy_eglStreamFlushNV
+#define eglSurfaceAttrib epoxy_eglSurfaceAttrib
+#define eglSwapBuffers epoxy_eglSwapBuffers
+#define eglSwapBuffersRegion2NOK epoxy_eglSwapBuffersRegion2NOK
+#define eglSwapBuffersRegionNOK epoxy_eglSwapBuffersRegionNOK
+#define eglSwapBuffersWithDamageEXT epoxy_eglSwapBuffersWithDamageEXT
+#define eglSwapBuffersWithDamageKHR epoxy_eglSwapBuffersWithDamageKHR
+#define eglSwapInterval epoxy_eglSwapInterval
+#define eglTerminate epoxy_eglTerminate
+#define eglUnlockSurfaceKHR epoxy_eglUnlockSurfaceKHR
+#define eglUnsignalSyncEXT epoxy_eglUnsignalSyncEXT
+#define eglWaitClient epoxy_eglWaitClient
+#define eglWaitGL epoxy_eglWaitGL
+#define eglWaitNative epoxy_eglWaitNative
+#define eglWaitSync epoxy_eglWaitSync
+#define eglWaitSyncKHR epoxy_eglWaitSyncKHR
diff --git a/third_party/epoxy/epoxy/eglplatform.h b/third_party/epoxy/epoxy/eglplatform.h
new file mode 100644
index 0000000000..fb4803a310
--- /dev/null
+++ b/third_party/epoxy/epoxy/eglplatform.h
@@ -0,0 +1,169 @@
+#ifndef __eglplatform_h_
+#define __eglplatform_h_
+
+/*
+** Copyright 2007-2020 The Khronos Group Inc.
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+/* Platform-specific types and definitions for egl.h
+ *
+ * Adopters may modify khrplatform.h and this file to suit their platform.
+ * You are encouraged to submit all modifications to the Khronos group so that
+ * they can be included in future versions of this file. Please submit changes
+ * by filing an issue or pull request on the public Khronos EGL Registry, at
+ * https://www.github.com/KhronosGroup/EGL-Registry/
+ */
+
+#include "khrplatform.h"
+
+/* Macros used in EGL function prototype declarations.
+ *
+ * EGL functions should be prototyped as:
+ *
+ * EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
+ * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
+ *
+ * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h
+ */
+
+#ifndef EGLAPI
+#define EGLAPI KHRONOS_APICALL
+#endif
+
+#ifndef EGLAPIENTRY
+#define EGLAPIENTRY KHRONOS_APIENTRY
+#endif
+#define EGLAPIENTRYP EGLAPIENTRY*
+
+/* The types NativeDisplayType, NativeWindowType, and NativePixmapType
+ * are aliases of window-system-dependent types, such as X Display * or
+ * Windows Device Context. They must be defined in platform-specific
+ * code below. The EGL-prefixed versions of Native*Type are the same
+ * types, renamed in EGL 1.3 so all types in the API start with "EGL".
+ *
+ * Khronos STRONGLY RECOMMENDS that you use the default definitions
+ * provided below, since these changes affect both binary and source
+ * portability of applications using EGL running on different EGL
+ * implementations.
+ */
+
+#if defined(EGL_NO_PLATFORM_SPECIFIC_TYPES)
+
+typedef void *EGLNativeDisplayType;
+typedef void *EGLNativePixmapType;
+typedef void *EGLNativeWindowType;
+
+#elif defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN 1
+#endif
+#include <windows.h>
+
+typedef HDC EGLNativeDisplayType;
+typedef HBITMAP EGLNativePixmapType;
+typedef HWND EGLNativeWindowType;
+
+#elif defined(__EMSCRIPTEN__)
+
+typedef int EGLNativeDisplayType;
+typedef int EGLNativePixmapType;
+typedef int EGLNativeWindowType;
+
+#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */
+
+typedef int EGLNativeDisplayType;
+typedef void *EGLNativePixmapType;
+typedef void *EGLNativeWindowType;
+
+#elif defined(WL_EGL_PLATFORM)
+
+typedef struct wl_display *EGLNativeDisplayType;
+typedef struct wl_egl_pixmap *EGLNativePixmapType;
+typedef struct wl_egl_window *EGLNativeWindowType;
+
+#elif defined(__GBM__)
+
+typedef struct gbm_device *EGLNativeDisplayType;
+typedef struct gbm_bo *EGLNativePixmapType;
+typedef void *EGLNativeWindowType;
+
+#elif defined(__ANDROID__) || defined(ANDROID)
+
+struct ANativeWindow;
+struct egl_native_pixmap_t;
+
+typedef void* EGLNativeDisplayType;
+typedef struct egl_native_pixmap_t* EGLNativePixmapType;
+typedef struct ANativeWindow* EGLNativeWindowType;
+
+#elif defined(USE_OZONE)
+
+typedef intptr_t EGLNativeDisplayType;
+typedef intptr_t EGLNativePixmapType;
+typedef intptr_t EGLNativeWindowType;
+
+#elif defined(USE_X11)
+
+/* X11 (tentative) */
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+typedef Display *EGLNativeDisplayType;
+typedef Pixmap EGLNativePixmapType;
+typedef Window EGLNativeWindowType;
+
+#elif defined(__unix__)
+
+typedef void *EGLNativeDisplayType;
+typedef khronos_uintptr_t EGLNativePixmapType;
+typedef khronos_uintptr_t EGLNativeWindowType;
+
+#elif defined(__APPLE__)
+
+typedef int EGLNativeDisplayType;
+typedef void *EGLNativePixmapType;
+typedef void *EGLNativeWindowType;
+
+#elif defined(__HAIKU__)
+
+#include <kernel/image.h>
+
+typedef void *EGLNativeDisplayType;
+typedef khronos_uintptr_t EGLNativePixmapType;
+typedef khronos_uintptr_t EGLNativeWindowType;
+
+#elif defined(__Fuchsia__)
+
+typedef void *EGLNativeDisplayType;
+typedef khronos_uintptr_t EGLNativePixmapType;
+typedef khronos_uintptr_t EGLNativeWindowType;
+
+#else
+#error "Platform not recognized"
+#endif
+
+/* EGL 1.2 types, renamed for consistency in EGL 1.3 */
+typedef EGLNativeDisplayType NativeDisplayType;
+typedef EGLNativePixmapType NativePixmapType;
+typedef EGLNativeWindowType NativeWindowType;
+
+
+/* Define EGLint. This must be a signed integral type large enough to contain
+ * all legal attribute names and values passed into and out of EGL, whether
+ * their type is boolean, bitmask, enumerant (symbolic constant), integer,
+ * handle, or other. While in general a 32-bit integer will suffice, if
+ * handles are 64 bit types, then EGLint should be defined as a signed 64-bit
+ * integer type.
+ */
+typedef khronos_int32_t EGLint;
+
+
+/* C++ / C typecast macros for special EGL handle values */
+#if defined(__cplusplus)
+#define EGL_CAST(type, value) (static_cast<type>(value))
+#else
+#define EGL_CAST(type, value) ((type) (value))
+#endif
+
+#endif /* __eglplatform_h */
diff --git a/third_party/epoxy/epoxy/gl.h b/third_party/epoxy/epoxy/gl.h
new file mode 100644
index 0000000000..1fef4ba889
--- /dev/null
+++ b/third_party/epoxy/epoxy/gl.h
@@ -0,0 +1,112 @@
+/*
+ * 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.
+ */
+
+/** @file gl.h
+ *
+ * Provides an implementation of a GL dispatch layer using either
+ * global function pointers or a hidden vtable.
+ *
+ * You should include `<epoxy/gl.h>` instead of `<GL/gl.h>` and `<GL/glext.h>`.
+ */
+
+#ifndef EPOXY_GL_H
+#define EPOXY_GL_H
+
+#include "epoxy/common.h"
+
+#if defined(__gl_h_) || defined(__glext_h_)
+#error epoxy/gl.h must be included before (or in place of) GL/gl.h
+#else
+#define __gl_h_
+#define __glext_h_
+#endif
+
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+#define KHRONOS_APIATTRIBUTES
+
+#ifndef _WIN32
+/* APIENTRY and GLAPIENTRY are not used on Linux or Mac. */
+#define APIENTRY
+#define GLAPIENTRY
+#define EPOXY_CALLSPEC
+#define GLAPI
+#define KHRONOS_APIENTRY
+#define KHRONOS_APICALL
+
+#else
+#ifndef APIENTRY
+#define APIENTRY __stdcall
+#endif
+
+#ifndef GLAPIENTRY
+#define GLAPIENTRY APIENTRY
+#endif
+
+#ifndef EPOXY_CALLSPEC
+#define EPOXY_CALLSPEC __stdcall
+#endif
+
+#ifndef GLAPI
+#define GLAPI extern
+#endif
+
+#define KHRONOS_APIENTRY __stdcall
+#define KHRONOS_APICALL __declspec(dllimport) __stdcall
+
+#endif /* _WIN32 */
+
+#ifndef APIENTRYP
+#define APIENTRYP APIENTRY *
+#endif
+
+#ifndef GLAPIENTRYP
+#define GLAPIENTRYP GLAPIENTRY *
+#endif
+
+EPOXY_BEGIN_DECLS
+
+#include "epoxy/gl_generated.h"
+
+EPOXY_PUBLIC bool epoxy_has_gl_extension(const char *extension);
+EPOXY_PUBLIC bool epoxy_is_desktop_gl(void);
+EPOXY_PUBLIC int epoxy_gl_version(void);
+EPOXY_PUBLIC int epoxy_glsl_version(void);
+
+/*
+ * the type of the stub function that the failure handler must return;
+ * this function will be called on subsequent calls to the same bogus
+ * function name
+ */
+typedef void (*epoxy_resolver_stub_t)(void);
+
+/* the type of the failure handler itself */
+typedef epoxy_resolver_stub_t
+(*epoxy_resolver_failure_handler_t)(const char *name);
+
+EPOXY_PUBLIC epoxy_resolver_failure_handler_t
+epoxy_set_resolver_failure_handler(epoxy_resolver_failure_handler_t handler);
+
+EPOXY_END_DECLS
+
+#endif /* EPOXY_GL_H */
diff --git a/third_party/epoxy/epoxy/gl_generated.h b/third_party/epoxy/epoxy/gl_generated.h
new file mode 100644
index 0000000000..f0775c32e6
--- /dev/null
+++ b/third_party/epoxy/epoxy/gl_generated.h
@@ -0,0 +1,19945 @@
+/* GL dispatch header.
+ * This is code-generated from the GL API XML files from Khronos.
+ *
+ * Copyright (c) 2013-2018 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#pragma once
+#include <inttypes.h>
+#include <stddef.h>
+
+#include "epoxy/common.h"
+#define __khrplatform_h_ 1
+typedef int8_t khronos_int8_t;
+typedef int16_t khronos_int16_t;
+typedef int32_t khronos_int32_t;
+typedef int64_t khronos_int64_t;
+typedef uint8_t khronos_uint8_t;
+typedef uint16_t khronos_uint16_t;
+typedef uint32_t khronos_uint32_t;
+typedef uint64_t khronos_uint64_t;
+typedef float khronos_float_t;
+#ifdef _WIN64
+typedef signed long long int khronos_intptr_t;
+typedef unsigned long long int khronos_uintptr_t;
+typedef signed long long int khronos_ssize_t;
+typedef unsigned long long int khronos_usize_t;
+#else
+typedef signed long int khronos_intptr_t;
+typedef unsigned long int khronos_uintptr_t;
+typedef signed long int khronos_ssize_t;
+typedef unsigned long int khronos_usize_t;
+#endif
+typedef uint64_t khronos_utime_nanoseconds_t;
+typedef int64_t khronos_stime_nanoseconds_t;
+#define KHRONOS_MAX_ENUM 0x7FFFFFFF
+typedef enum {
+ KHRONOS_FALSE = 0,
+ KHRONOS_TRUE = 1,
+ KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
+} khronos_boolean_enum_t;
+typedef unsigned int GLenum;
+typedef unsigned char GLboolean;
+typedef unsigned int GLbitfield;
+typedef void GLvoid;
+typedef khronos_int8_t GLbyte;
+typedef khronos_uint8_t GLubyte;
+typedef khronos_int16_t GLshort;
+typedef khronos_uint16_t GLushort;
+typedef int GLint;
+typedef unsigned int GLuint;
+typedef khronos_int32_t GLclampx;
+typedef int GLsizei;
+typedef khronos_float_t GLfloat;
+typedef khronos_float_t GLclampf;
+typedef double GLdouble;
+typedef double GLclampd;
+typedef void *GLeglClientBufferEXT;
+typedef void *GLeglImageOES;
+typedef char GLchar;
+typedef char GLcharARB;
+#ifdef __APPLE__
+typedef void *GLhandleARB;
+#else
+typedef unsigned int GLhandleARB;
+#endif
+typedef khronos_uint16_t GLhalf;
+typedef khronos_uint16_t GLhalfARB;
+typedef khronos_int32_t GLfixed;
+typedef khronos_intptr_t GLintptr;
+typedef khronos_intptr_t GLintptrARB;
+typedef khronos_ssize_t GLsizeiptr;
+typedef khronos_ssize_t GLsizeiptrARB;
+typedef khronos_int64_t GLint64;
+typedef khronos_int64_t GLint64EXT;
+typedef khronos_uint64_t GLuint64;
+typedef khronos_uint64_t GLuint64EXT;
+typedef struct __GLsync *GLsync;
+struct _cl_context;
+struct _cl_event;
+typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
+typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
+typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
+typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);
+typedef unsigned short GLhalfNV;
+typedef GLintptr GLvdpauSurfaceNV;
+typedef void (APIENTRY *GLVULKANPROCNV)(void);
+
+#define GL_ES_VERSION_2_0 1
+#define GL_ES_VERSION_3_0 1
+#define GL_ES_VERSION_3_1 1
+#define GL_ES_VERSION_3_2 1
+#define GL_SC_VERSION_2_0 1
+#define GL_VERSION_1_0 1
+#define GL_VERSION_1_1 1
+#define GL_VERSION_1_2 1
+#define GL_VERSION_1_3 1
+#define GL_VERSION_1_4 1
+#define GL_VERSION_1_5 1
+#define GL_VERSION_2_0 1
+#define GL_VERSION_2_1 1
+#define GL_VERSION_3_0 1
+#define GL_VERSION_3_1 1
+#define GL_VERSION_3_2 1
+#define GL_VERSION_3_3 1
+#define GL_VERSION_4_0 1
+#define GL_VERSION_4_1 1
+#define GL_VERSION_4_2 1
+#define GL_VERSION_4_3 1
+#define GL_VERSION_4_4 1
+#define GL_VERSION_4_5 1
+#define GL_VERSION_4_6 1
+#define GL_VERSION_ES_CM_1_0 1
+
+#define GL_3DFX_multisample 1
+#define GL_3DFX_tbuffer 1
+#define GL_3DFX_texture_compression_FXT1 1
+#define GL_AMD_blend_minmax_factor 1
+#define GL_AMD_compressed_3DC_texture 1
+#define GL_AMD_compressed_ATC_texture 1
+#define GL_AMD_conservative_depth 1
+#define GL_AMD_debug_output 1
+#define GL_AMD_depth_clamp_separate 1
+#define GL_AMD_draw_buffers_blend 1
+#define GL_AMD_framebuffer_multisample_advanced 1
+#define GL_AMD_framebuffer_sample_positions 1
+#define GL_AMD_gcn_shader 1
+#define GL_AMD_gpu_shader_half_float 1
+#define GL_AMD_gpu_shader_int16 1
+#define GL_AMD_gpu_shader_int64 1
+#define GL_AMD_interleaved_elements 1
+#define GL_AMD_multi_draw_indirect 1
+#define GL_AMD_name_gen_delete 1
+#define GL_AMD_occlusion_query_event 1
+#define GL_AMD_performance_monitor 1
+#define GL_AMD_pinned_memory 1
+#define GL_AMD_program_binary_Z400 1
+#define GL_AMD_query_buffer_object 1
+#define GL_AMD_sample_positions 1
+#define GL_AMD_seamless_cubemap_per_texture 1
+#define GL_AMD_shader_atomic_counter_ops 1
+#define GL_AMD_shader_ballot 1
+#define GL_AMD_shader_explicit_vertex_parameter 1
+#define GL_AMD_shader_gpu_shader_half_float_fetch 1
+#define GL_AMD_shader_image_load_store_lod 1
+#define GL_AMD_shader_stencil_export 1
+#define GL_AMD_shader_trinary_minmax 1
+#define GL_AMD_sparse_texture 1
+#define GL_AMD_stencil_operation_extended 1
+#define GL_AMD_texture_gather_bias_lod 1
+#define GL_AMD_texture_texture4 1
+#define GL_AMD_transform_feedback3_lines_triangles 1
+#define GL_AMD_transform_feedback4 1
+#define GL_AMD_vertex_shader_layer 1
+#define GL_AMD_vertex_shader_tessellator 1
+#define GL_AMD_vertex_shader_viewport_index 1
+#define GL_ANDROID_extension_pack_es31a 1
+#define GL_ANGLE_depth_texture 1
+#define GL_ANGLE_framebuffer_blit 1
+#define GL_ANGLE_framebuffer_multisample 1
+#define GL_ANGLE_instanced_arrays 1
+#define GL_ANGLE_pack_reverse_row_order 1
+#define GL_ANGLE_program_binary 1
+#define GL_ANGLE_texture_compression_dxt3 1
+#define GL_ANGLE_texture_compression_dxt5 1
+#define GL_ANGLE_texture_usage 1
+#define GL_ANGLE_translated_shader_source 1
+#define GL_APPLE_aux_depth_stencil 1
+#define GL_APPLE_client_storage 1
+#define GL_APPLE_clip_distance 1
+#define GL_APPLE_color_buffer_packed_float 1
+#define GL_APPLE_copy_texture_levels 1
+#define GL_APPLE_element_array 1
+#define GL_APPLE_fence 1
+#define GL_APPLE_float_pixels 1
+#define GL_APPLE_flush_buffer_range 1
+#define GL_APPLE_framebuffer_multisample 1
+#define GL_APPLE_object_purgeable 1
+#define GL_APPLE_rgb_422 1
+#define GL_APPLE_row_bytes 1
+#define GL_APPLE_specular_vector 1
+#define GL_APPLE_sync 1
+#define GL_APPLE_texture_2D_limited_npot 1
+#define GL_APPLE_texture_format_BGRA8888 1
+#define GL_APPLE_texture_max_level 1
+#define GL_APPLE_texture_packed_float 1
+#define GL_APPLE_texture_range 1
+#define GL_APPLE_transform_hint 1
+#define GL_APPLE_vertex_array_object 1
+#define GL_APPLE_vertex_array_range 1
+#define GL_APPLE_vertex_program_evaluators 1
+#define GL_APPLE_ycbcr_422 1
+#define GL_ARB_ES2_compatibility 1
+#define GL_ARB_ES3_1_compatibility 1
+#define GL_ARB_ES3_2_compatibility 1
+#define GL_ARB_ES3_compatibility 1
+#define GL_ARB_arrays_of_arrays 1
+#define GL_ARB_base_instance 1
+#define GL_ARB_bindless_texture 1
+#define GL_ARB_blend_func_extended 1
+#define GL_ARB_buffer_storage 1
+#define GL_ARB_cl_event 1
+#define GL_ARB_clear_buffer_object 1
+#define GL_ARB_clear_texture 1
+#define GL_ARB_clip_control 1
+#define GL_ARB_color_buffer_float 1
+#define GL_ARB_compatibility 1
+#define GL_ARB_compressed_texture_pixel_storage 1
+#define GL_ARB_compute_shader 1
+#define GL_ARB_compute_variable_group_size 1
+#define GL_ARB_conditional_render_inverted 1
+#define GL_ARB_conservative_depth 1
+#define GL_ARB_copy_buffer 1
+#define GL_ARB_copy_image 1
+#define GL_ARB_cull_distance 1
+#define GL_ARB_debug_output 1
+#define GL_ARB_depth_buffer_float 1
+#define GL_ARB_depth_clamp 1
+#define GL_ARB_depth_texture 1
+#define GL_ARB_derivative_control 1
+#define GL_ARB_direct_state_access 1
+#define GL_ARB_draw_buffers 1
+#define GL_ARB_draw_buffers_blend 1
+#define GL_ARB_draw_elements_base_vertex 1
+#define GL_ARB_draw_indirect 1
+#define GL_ARB_draw_instanced 1
+#define GL_ARB_enhanced_layouts 1
+#define GL_ARB_explicit_attrib_location 1
+#define GL_ARB_explicit_uniform_location 1
+#define GL_ARB_fragment_coord_conventions 1
+#define GL_ARB_fragment_layer_viewport 1
+#define GL_ARB_fragment_program 1
+#define GL_ARB_fragment_program_shadow 1
+#define GL_ARB_fragment_shader 1
+#define GL_ARB_fragment_shader_interlock 1
+#define GL_ARB_framebuffer_no_attachments 1
+#define GL_ARB_framebuffer_object 1
+#define GL_ARB_framebuffer_sRGB 1
+#define GL_ARB_geometry_shader4 1
+#define GL_ARB_get_program_binary 1
+#define GL_ARB_get_texture_sub_image 1
+#define GL_ARB_gl_spirv 1
+#define GL_ARB_gpu_shader5 1
+#define GL_ARB_gpu_shader_fp64 1
+#define GL_ARB_gpu_shader_int64 1
+#define GL_ARB_half_float_pixel 1
+#define GL_ARB_half_float_vertex 1
+#define GL_ARB_imaging 1
+#define GL_ARB_indirect_parameters 1
+#define GL_ARB_instanced_arrays 1
+#define GL_ARB_internalformat_query 1
+#define GL_ARB_internalformat_query2 1
+#define GL_ARB_invalidate_subdata 1
+#define GL_ARB_map_buffer_alignment 1
+#define GL_ARB_map_buffer_range 1
+#define GL_ARB_matrix_palette 1
+#define GL_ARB_multi_bind 1
+#define GL_ARB_multi_draw_indirect 1
+#define GL_ARB_multisample 1
+#define GL_ARB_multitexture 1
+#define GL_ARB_occlusion_query 1
+#define GL_ARB_occlusion_query2 1
+#define GL_ARB_parallel_shader_compile 1
+#define GL_ARB_pipeline_statistics_query 1
+#define GL_ARB_pixel_buffer_object 1
+#define GL_ARB_point_parameters 1
+#define GL_ARB_point_sprite 1
+#define GL_ARB_polygon_offset_clamp 1
+#define GL_ARB_post_depth_coverage 1
+#define GL_ARB_program_interface_query 1
+#define GL_ARB_provoking_vertex 1
+#define GL_ARB_query_buffer_object 1
+#define GL_ARB_robust_buffer_access_behavior 1
+#define GL_ARB_robustness 1
+#define GL_ARB_robustness_isolation 1
+#define GL_ARB_sample_locations 1
+#define GL_ARB_sample_shading 1
+#define GL_ARB_sampler_objects 1
+#define GL_ARB_seamless_cube_map 1
+#define GL_ARB_seamless_cubemap_per_texture 1
+#define GL_ARB_separate_shader_objects 1
+#define GL_ARB_shader_atomic_counter_ops 1
+#define GL_ARB_shader_atomic_counters 1
+#define GL_ARB_shader_ballot 1
+#define GL_ARB_shader_bit_encoding 1
+#define GL_ARB_shader_clock 1
+#define GL_ARB_shader_draw_parameters 1
+#define GL_ARB_shader_group_vote 1
+#define GL_ARB_shader_image_load_store 1
+#define GL_ARB_shader_image_size 1
+#define GL_ARB_shader_objects 1
+#define GL_ARB_shader_precision 1
+#define GL_ARB_shader_stencil_export 1
+#define GL_ARB_shader_storage_buffer_object 1
+#define GL_ARB_shader_subroutine 1
+#define GL_ARB_shader_texture_image_samples 1
+#define GL_ARB_shader_texture_lod 1
+#define GL_ARB_shader_viewport_layer_array 1
+#define GL_ARB_shading_language_100 1
+#define GL_ARB_shading_language_420pack 1
+#define GL_ARB_shading_language_include 1
+#define GL_ARB_shading_language_packing 1
+#define GL_ARB_shadow 1
+#define GL_ARB_shadow_ambient 1
+#define GL_ARB_sparse_buffer 1
+#define GL_ARB_sparse_texture 1
+#define GL_ARB_sparse_texture2 1
+#define GL_ARB_sparse_texture_clamp 1
+#define GL_ARB_spirv_extensions 1
+#define GL_ARB_stencil_texturing 1
+#define GL_ARB_sync 1
+#define GL_ARB_tessellation_shader 1
+#define GL_ARB_texture_barrier 1
+#define GL_ARB_texture_border_clamp 1
+#define GL_ARB_texture_buffer_object 1
+#define GL_ARB_texture_buffer_object_rgb32 1
+#define GL_ARB_texture_buffer_range 1
+#define GL_ARB_texture_compression 1
+#define GL_ARB_texture_compression_bptc 1
+#define GL_ARB_texture_compression_rgtc 1
+#define GL_ARB_texture_cube_map 1
+#define GL_ARB_texture_cube_map_array 1
+#define GL_ARB_texture_env_add 1
+#define GL_ARB_texture_env_combine 1
+#define GL_ARB_texture_env_crossbar 1
+#define GL_ARB_texture_env_dot3 1
+#define GL_ARB_texture_filter_anisotropic 1
+#define GL_ARB_texture_filter_minmax 1
+#define GL_ARB_texture_float 1
+#define GL_ARB_texture_gather 1
+#define GL_ARB_texture_mirror_clamp_to_edge 1
+#define GL_ARB_texture_mirrored_repeat 1
+#define GL_ARB_texture_multisample 1
+#define GL_ARB_texture_non_power_of_two 1
+#define GL_ARB_texture_query_levels 1
+#define GL_ARB_texture_query_lod 1
+#define GL_ARB_texture_rectangle 1
+#define GL_ARB_texture_rg 1
+#define GL_ARB_texture_rgb10_a2ui 1
+#define GL_ARB_texture_stencil8 1
+#define GL_ARB_texture_storage 1
+#define GL_ARB_texture_storage_multisample 1
+#define GL_ARB_texture_swizzle 1
+#define GL_ARB_texture_view 1
+#define GL_ARB_timer_query 1
+#define GL_ARB_transform_feedback2 1
+#define GL_ARB_transform_feedback3 1
+#define GL_ARB_transform_feedback_instanced 1
+#define GL_ARB_transform_feedback_overflow_query 1
+#define GL_ARB_transpose_matrix 1
+#define GL_ARB_uniform_buffer_object 1
+#define GL_ARB_vertex_array_bgra 1
+#define GL_ARB_vertex_array_object 1
+#define GL_ARB_vertex_attrib_64bit 1
+#define GL_ARB_vertex_attrib_binding 1
+#define GL_ARB_vertex_blend 1
+#define GL_ARB_vertex_buffer_object 1
+#define GL_ARB_vertex_program 1
+#define GL_ARB_vertex_shader 1
+#define GL_ARB_vertex_type_10f_11f_11f_rev 1
+#define GL_ARB_vertex_type_2_10_10_10_rev 1
+#define GL_ARB_viewport_array 1
+#define GL_ARB_window_pos 1
+#define GL_ARM_mali_program_binary 1
+#define GL_ARM_mali_shader_binary 1
+#define GL_ARM_rgba8 1
+#define GL_ARM_shader_framebuffer_fetch 1
+#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1
+#define GL_ATI_draw_buffers 1
+#define GL_ATI_element_array 1
+#define GL_ATI_envmap_bumpmap 1
+#define GL_ATI_fragment_shader 1
+#define GL_ATI_map_object_buffer 1
+#define GL_ATI_meminfo 1
+#define GL_ATI_pixel_format_float 1
+#define GL_ATI_pn_triangles 1
+#define GL_ATI_separate_stencil 1
+#define GL_ATI_text_fragment_shader 1
+#define GL_ATI_texture_env_combine3 1
+#define GL_ATI_texture_float 1
+#define GL_ATI_texture_mirror_once 1
+#define GL_ATI_vertex_array_object 1
+#define GL_ATI_vertex_attrib_array_object 1
+#define GL_ATI_vertex_streams 1
+#define GL_DMP_program_binary 1
+#define GL_DMP_shader_binary 1
+#define GL_EXT_422_pixels 1
+#define GL_EXT_EGL_image_array 1
+#define GL_EXT_EGL_image_storage 1
+#define GL_EXT_YUV_target 1
+#define GL_EXT_abgr 1
+#define GL_EXT_base_instance 1
+#define GL_EXT_bgra 1
+#define GL_EXT_bindable_uniform 1
+#define GL_EXT_blend_color 1
+#define GL_EXT_blend_equation_separate 1
+#define GL_EXT_blend_func_extended 1
+#define GL_EXT_blend_func_separate 1
+#define GL_EXT_blend_logic_op 1
+#define GL_EXT_blend_minmax 1
+#define GL_EXT_blend_subtract 1
+#define GL_EXT_buffer_storage 1
+#define GL_EXT_clear_texture 1
+#define GL_EXT_clip_control 1
+#define GL_EXT_clip_cull_distance 1
+#define GL_EXT_clip_volume_hint 1
+#define GL_EXT_cmyka 1
+#define GL_EXT_color_buffer_float 1
+#define GL_EXT_color_buffer_half_float 1
+#define GL_EXT_color_subtable 1
+#define GL_EXT_compiled_vertex_array 1
+#define GL_EXT_conservative_depth 1
+#define GL_EXT_convolution 1
+#define GL_EXT_coordinate_frame 1
+#define GL_EXT_copy_image 1
+#define GL_EXT_copy_texture 1
+#define GL_EXT_cull_vertex 1
+#define GL_EXT_debug_label 1
+#define GL_EXT_debug_marker 1
+#define GL_EXT_depth_bounds_test 1
+#define GL_EXT_depth_clamp 1
+#define GL_EXT_direct_state_access 1
+#define GL_EXT_discard_framebuffer 1
+#define GL_EXT_disjoint_timer_query 1
+#define GL_EXT_draw_buffers 1
+#define GL_EXT_draw_buffers2 1
+#define GL_EXT_draw_buffers_indexed 1
+#define GL_EXT_draw_elements_base_vertex 1
+#define GL_EXT_draw_instanced 1
+#define GL_EXT_draw_range_elements 1
+#define GL_EXT_draw_transform_feedback 1
+#define GL_EXT_external_buffer 1
+#define GL_EXT_float_blend 1
+#define GL_EXT_fog_coord 1
+#define GL_EXT_framebuffer_blit 1
+#define GL_EXT_framebuffer_multisample 1
+#define GL_EXT_framebuffer_multisample_blit_scaled 1
+#define GL_EXT_framebuffer_object 1
+#define GL_EXT_framebuffer_sRGB 1
+#define GL_EXT_geometry_point_size 1
+#define GL_EXT_geometry_shader 1
+#define GL_EXT_geometry_shader4 1
+#define GL_EXT_gpu_program_parameters 1
+#define GL_EXT_gpu_shader4 1
+#define GL_EXT_gpu_shader5 1
+#define GL_EXT_histogram 1
+#define GL_EXT_index_array_formats 1
+#define GL_EXT_index_func 1
+#define GL_EXT_index_material 1
+#define GL_EXT_index_texture 1
+#define GL_EXT_instanced_arrays 1
+#define GL_EXT_light_texture 1
+#define GL_EXT_map_buffer_range 1
+#define GL_EXT_memory_object 1
+#define GL_EXT_memory_object_fd 1
+#define GL_EXT_memory_object_win32 1
+#define GL_EXT_misc_attribute 1
+#define GL_EXT_multi_draw_arrays 1
+#define GL_EXT_multi_draw_indirect 1
+#define GL_EXT_multisample 1
+#define GL_EXT_multisampled_compatibility 1
+#define GL_EXT_multisampled_render_to_texture 1
+#define GL_EXT_multiview_draw_buffers 1
+#define GL_EXT_multiview_tessellation_geometry_shader 1
+#define GL_EXT_multiview_texture_multisample 1
+#define GL_EXT_multiview_timer_query 1
+#define GL_EXT_occlusion_query_boolean 1
+#define GL_EXT_packed_depth_stencil 1
+#define GL_EXT_packed_float 1
+#define GL_EXT_packed_pixels 1
+#define GL_EXT_paletted_texture 1
+#define GL_EXT_pixel_buffer_object 1
+#define GL_EXT_pixel_transform 1
+#define GL_EXT_pixel_transform_color_table 1
+#define GL_EXT_point_parameters 1
+#define GL_EXT_polygon_offset 1
+#define GL_EXT_polygon_offset_clamp 1
+#define GL_EXT_post_depth_coverage 1
+#define GL_EXT_primitive_bounding_box 1
+#define GL_EXT_protected_textures 1
+#define GL_EXT_provoking_vertex 1
+#define GL_EXT_pvrtc_sRGB 1
+#define GL_EXT_raster_multisample 1
+#define GL_EXT_read_format_bgra 1
+#define GL_EXT_render_snorm 1
+#define GL_EXT_rescale_normal 1
+#define GL_EXT_robustness 1
+#define GL_EXT_sRGB 1
+#define GL_EXT_sRGB_write_control 1
+#define GL_EXT_secondary_color 1
+#define GL_EXT_semaphore 1
+#define GL_EXT_semaphore_fd 1
+#define GL_EXT_semaphore_win32 1
+#define GL_EXT_separate_shader_objects 1
+#define GL_EXT_separate_specular_color 1
+#define GL_EXT_shader_framebuffer_fetch 1
+#define GL_EXT_shader_framebuffer_fetch_non_coherent 1
+#define GL_EXT_shader_group_vote 1
+#define GL_EXT_shader_image_load_formatted 1
+#define GL_EXT_shader_image_load_store 1
+#define GL_EXT_shader_implicit_conversions 1
+#define GL_EXT_shader_integer_mix 1
+#define GL_EXT_shader_io_blocks 1
+#define GL_EXT_shader_non_constant_global_initializers 1
+#define GL_EXT_shader_pixel_local_storage 1
+#define GL_EXT_shader_pixel_local_storage2 1
+#define GL_EXT_shader_texture_lod 1
+#define GL_EXT_shadow_funcs 1
+#define GL_EXT_shadow_samplers 1
+#define GL_EXT_shared_texture_palette 1
+#define GL_EXT_sparse_texture 1
+#define GL_EXT_sparse_texture2 1
+#define GL_EXT_stencil_clear_tag 1
+#define GL_EXT_stencil_two_side 1
+#define GL_EXT_stencil_wrap 1
+#define GL_EXT_subtexture 1
+#define GL_EXT_tessellation_point_size 1
+#define GL_EXT_tessellation_shader 1
+#define GL_EXT_texture 1
+#define GL_EXT_texture3D 1
+#define GL_EXT_texture_array 1
+#define GL_EXT_texture_border_clamp 1
+#define GL_EXT_texture_buffer 1
+#define GL_EXT_texture_buffer_object 1
+#define GL_EXT_texture_compression_astc_decode_mode 1
+#define GL_EXT_texture_compression_bptc 1
+#define GL_EXT_texture_compression_dxt1 1
+#define GL_EXT_texture_compression_latc 1
+#define GL_EXT_texture_compression_rgtc 1
+#define GL_EXT_texture_compression_s3tc 1
+#define GL_EXT_texture_compression_s3tc_srgb 1
+#define GL_EXT_texture_cube_map 1
+#define GL_EXT_texture_cube_map_array 1
+#define GL_EXT_texture_env_add 1
+#define GL_EXT_texture_env_combine 1
+#define GL_EXT_texture_env_dot3 1
+#define GL_EXT_texture_filter_anisotropic 1
+#define GL_EXT_texture_filter_minmax 1
+#define GL_EXT_texture_format_BGRA8888 1
+#define GL_EXT_texture_format_sRGB_override 1
+#define GL_EXT_texture_integer 1
+#define GL_EXT_texture_lod_bias 1
+#define GL_EXT_texture_mirror_clamp 1
+#define GL_EXT_texture_mirror_clamp_to_edge 1
+#define GL_EXT_texture_norm16 1
+#define GL_EXT_texture_object 1
+#define GL_EXT_texture_perturb_normal 1
+#define GL_EXT_texture_query_lod 1
+#define GL_EXT_texture_rg 1
+#define GL_EXT_texture_sRGB 1
+#define GL_EXT_texture_sRGB_R8 1
+#define GL_EXT_texture_sRGB_RG8 1
+#define GL_EXT_texture_sRGB_decode 1
+#define GL_EXT_texture_shadow_lod 1
+#define GL_EXT_texture_shared_exponent 1
+#define GL_EXT_texture_snorm 1
+#define GL_EXT_texture_storage 1
+#define GL_EXT_texture_swizzle 1
+#define GL_EXT_texture_type_2_10_10_10_REV 1
+#define GL_EXT_texture_view 1
+#define GL_EXT_timer_query 1
+#define GL_EXT_transform_feedback 1
+#define GL_EXT_unpack_subimage 1
+#define GL_EXT_vertex_array 1
+#define GL_EXT_vertex_array_bgra 1
+#define GL_EXT_vertex_attrib_64bit 1
+#define GL_EXT_vertex_shader 1
+#define GL_EXT_vertex_weighting 1
+#define GL_EXT_win32_keyed_mutex 1
+#define GL_EXT_window_rectangles 1
+#define GL_EXT_x11_sync_object 1
+#define GL_FJ_shader_binary_GCCSO 1
+#define GL_GREMEDY_frame_terminator 1
+#define GL_GREMEDY_string_marker 1
+#define GL_HP_convolution_border_modes 1
+#define GL_HP_image_transform 1
+#define GL_HP_occlusion_test 1
+#define GL_HP_texture_lighting 1
+#define GL_IBM_cull_vertex 1
+#define GL_IBM_multimode_draw_arrays 1
+#define GL_IBM_rasterpos_clip 1
+#define GL_IBM_static_data 1
+#define GL_IBM_texture_mirrored_repeat 1
+#define GL_IBM_vertex_array_lists 1
+#define GL_IMG_bindless_texture 1
+#define GL_IMG_framebuffer_downsample 1
+#define GL_IMG_multisampled_render_to_texture 1
+#define GL_IMG_program_binary 1
+#define GL_IMG_read_format 1
+#define GL_IMG_shader_binary 1
+#define GL_IMG_texture_compression_pvrtc 1
+#define GL_IMG_texture_compression_pvrtc2 1
+#define GL_IMG_texture_env_enhanced_fixed_function 1
+#define GL_IMG_texture_filter_cubic 1
+#define GL_IMG_user_clip_plane 1
+#define GL_INGR_blend_func_separate 1
+#define GL_INGR_color_clamp 1
+#define GL_INGR_interlace_read 1
+#define GL_INTEL_blackhole_render 1
+#define GL_INTEL_conservative_rasterization 1
+#define GL_INTEL_fragment_shader_ordering 1
+#define GL_INTEL_framebuffer_CMAA 1
+#define GL_INTEL_map_texture 1
+#define GL_INTEL_parallel_arrays 1
+#define GL_INTEL_performance_query 1
+#define GL_KHR_blend_equation_advanced 1
+#define GL_KHR_blend_equation_advanced_coherent 1
+#define GL_KHR_context_flush_control 1
+#define GL_KHR_debug 1
+#define GL_KHR_no_error 1
+#define GL_KHR_parallel_shader_compile 1
+#define GL_KHR_robust_buffer_access_behavior 1
+#define GL_KHR_robustness 1
+#define GL_KHR_shader_subgroup 1
+#define GL_KHR_texture_compression_astc_hdr 1
+#define GL_KHR_texture_compression_astc_ldr 1
+#define GL_KHR_texture_compression_astc_sliced_3d 1
+#define GL_MESAX_texture_stack 1
+#define GL_MESA_framebuffer_flip_y 1
+#define GL_MESA_pack_invert 1
+#define GL_MESA_program_binary_formats 1
+#define GL_MESA_resize_buffers 1
+#define GL_MESA_shader_integer_functions 1
+#define GL_MESA_tile_raster_order 1
+#define GL_MESA_window_pos 1
+#define GL_MESA_ycbcr_texture 1
+#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1
+#define GL_NVX_conditional_render 1
+#define GL_NVX_cross_process_interop 1
+#define GL_NVX_gpu_memory_info 1
+#define GL_NVX_gpu_multicast2 1
+#define GL_NVX_linked_gpu_multicast 1
+#define GL_NVX_progress_fence 1
+#define GL_NV_alpha_to_coverage_dither_control 1
+#define GL_NV_bindless_multi_draw_indirect 1
+#define GL_NV_bindless_multi_draw_indirect_count 1
+#define GL_NV_bindless_texture 1
+#define GL_NV_blend_equation_advanced 1
+#define GL_NV_blend_equation_advanced_coherent 1
+#define GL_NV_blend_minmax_factor 1
+#define GL_NV_blend_square 1
+#define GL_NV_clip_space_w_scaling 1
+#define GL_NV_command_list 1
+#define GL_NV_compute_program5 1
+#define GL_NV_compute_shader_derivatives 1
+#define GL_NV_conditional_render 1
+#define GL_NV_conservative_raster 1
+#define GL_NV_conservative_raster_dilate 1
+#define GL_NV_conservative_raster_pre_snap 1
+#define GL_NV_conservative_raster_pre_snap_triangles 1
+#define GL_NV_conservative_raster_underestimation 1
+#define GL_NV_copy_buffer 1
+#define GL_NV_copy_depth_to_color 1
+#define GL_NV_copy_image 1
+#define GL_NV_coverage_sample 1
+#define GL_NV_deep_texture3D 1
+#define GL_NV_depth_buffer_float 1
+#define GL_NV_depth_clamp 1
+#define GL_NV_depth_nonlinear 1
+#define GL_NV_draw_buffers 1
+#define GL_NV_draw_instanced 1
+#define GL_NV_draw_texture 1
+#define GL_NV_draw_vulkan_image 1
+#define GL_NV_evaluators 1
+#define GL_NV_explicit_attrib_location 1
+#define GL_NV_explicit_multisample 1
+#define GL_NV_fbo_color_attachments 1
+#define GL_NV_fence 1
+#define GL_NV_fill_rectangle 1
+#define GL_NV_float_buffer 1
+#define GL_NV_fog_distance 1
+#define GL_NV_fragment_coverage_to_color 1
+#define GL_NV_fragment_program 1
+#define GL_NV_fragment_program2 1
+#define GL_NV_fragment_program4 1
+#define GL_NV_fragment_program_option 1
+#define GL_NV_fragment_shader_barycentric 1
+#define GL_NV_fragment_shader_interlock 1
+#define GL_NV_framebuffer_blit 1
+#define GL_NV_framebuffer_mixed_samples 1
+#define GL_NV_framebuffer_multisample 1
+#define GL_NV_framebuffer_multisample_coverage 1
+#define GL_NV_generate_mipmap_sRGB 1
+#define GL_NV_geometry_program4 1
+#define GL_NV_geometry_shader4 1
+#define GL_NV_geometry_shader_passthrough 1
+#define GL_NV_gpu_multicast 1
+#define GL_NV_gpu_program4 1
+#define GL_NV_gpu_program5 1
+#define GL_NV_gpu_program5_mem_extended 1
+#define GL_NV_gpu_shader5 1
+#define GL_NV_half_float 1
+#define GL_NV_image_formats 1
+#define GL_NV_instanced_arrays 1
+#define GL_NV_internalformat_sample_query 1
+#define GL_NV_light_max_exponent 1
+#define GL_NV_memory_attachment 1
+#define GL_NV_mesh_shader 1
+#define GL_NV_multisample_coverage 1
+#define GL_NV_multisample_filter_hint 1
+#define GL_NV_non_square_matrices 1
+#define GL_NV_occlusion_query 1
+#define GL_NV_packed_depth_stencil 1
+#define GL_NV_parameter_buffer_object 1
+#define GL_NV_parameter_buffer_object2 1
+#define GL_NV_path_rendering 1
+#define GL_NV_path_rendering_shared_edge 1
+#define GL_NV_pixel_buffer_object 1
+#define GL_NV_pixel_data_range 1
+#define GL_NV_point_sprite 1
+#define GL_NV_polygon_mode 1
+#define GL_NV_present_video 1
+#define GL_NV_primitive_restart 1
+#define GL_NV_query_resource 1
+#define GL_NV_query_resource_tag 1
+#define GL_NV_read_buffer 1
+#define GL_NV_read_buffer_front 1
+#define GL_NV_read_depth 1
+#define GL_NV_read_depth_stencil 1
+#define GL_NV_read_stencil 1
+#define GL_NV_register_combiners 1
+#define GL_NV_register_combiners2 1
+#define GL_NV_representative_fragment_test 1
+#define GL_NV_robustness_video_memory_purge 1
+#define GL_NV_sRGB_formats 1
+#define GL_NV_sample_locations 1
+#define GL_NV_sample_mask_override_coverage 1
+#define GL_NV_scissor_exclusive 1
+#define GL_NV_shader_atomic_counters 1
+#define GL_NV_shader_atomic_float 1
+#define GL_NV_shader_atomic_float64 1
+#define GL_NV_shader_atomic_fp16_vector 1
+#define GL_NV_shader_atomic_int64 1
+#define GL_NV_shader_buffer_load 1
+#define GL_NV_shader_buffer_store 1
+#define GL_NV_shader_noperspective_interpolation 1
+#define GL_NV_shader_storage_buffer_object 1
+#define GL_NV_shader_subgroup_partitioned 1
+#define GL_NV_shader_texture_footprint 1
+#define GL_NV_shader_thread_group 1
+#define GL_NV_shader_thread_shuffle 1
+#define GL_NV_shading_rate_image 1
+#define GL_NV_shadow_samplers_array 1
+#define GL_NV_shadow_samplers_cube 1
+#define GL_NV_stereo_view_rendering 1
+#define GL_NV_tessellation_program5 1
+#define GL_NV_texgen_emboss 1
+#define GL_NV_texgen_reflection 1
+#define GL_NV_texture_barrier 1
+#define GL_NV_texture_border_clamp 1
+#define GL_NV_texture_compression_s3tc_update 1
+#define GL_NV_texture_compression_vtc 1
+#define GL_NV_texture_env_combine4 1
+#define GL_NV_texture_expand_normal 1
+#define GL_NV_texture_multisample 1
+#define GL_NV_texture_npot_2D_mipmap 1
+#define GL_NV_texture_rectangle 1
+#define GL_NV_texture_rectangle_compressed 1
+#define GL_NV_texture_shader 1
+#define GL_NV_texture_shader2 1
+#define GL_NV_texture_shader3 1
+#define GL_NV_transform_feedback 1
+#define GL_NV_transform_feedback2 1
+#define GL_NV_uniform_buffer_unified_memory 1
+#define GL_NV_vdpau_interop 1
+#define GL_NV_vdpau_interop2 1
+#define GL_NV_vertex_array_range 1
+#define GL_NV_vertex_array_range2 1
+#define GL_NV_vertex_attrib_integer_64bit 1
+#define GL_NV_vertex_buffer_unified_memory 1
+#define GL_NV_vertex_program 1
+#define GL_NV_vertex_program1_1 1
+#define GL_NV_vertex_program2 1
+#define GL_NV_vertex_program2_option 1
+#define GL_NV_vertex_program3 1
+#define GL_NV_vertex_program4 1
+#define GL_NV_video_capture 1
+#define GL_NV_viewport_array 1
+#define GL_NV_viewport_array2 1
+#define GL_NV_viewport_swizzle 1
+#define GL_OES_EGL_image 1
+#define GL_OES_EGL_image_external 1
+#define GL_OES_EGL_image_external_essl3 1
+#define GL_OES_blend_equation_separate 1
+#define GL_OES_blend_func_separate 1
+#define GL_OES_blend_subtract 1
+#define GL_OES_byte_coordinates 1
+#define GL_OES_compressed_ETC1_RGB8_sub_texture 1
+#define GL_OES_compressed_ETC1_RGB8_texture 1
+#define GL_OES_compressed_paletted_texture 1
+#define GL_OES_copy_image 1
+#define GL_OES_depth24 1
+#define GL_OES_depth32 1
+#define GL_OES_depth_texture 1
+#define GL_OES_draw_buffers_indexed 1
+#define GL_OES_draw_elements_base_vertex 1
+#define GL_OES_draw_texture 1
+#define GL_OES_element_index_uint 1
+#define GL_OES_extended_matrix_palette 1
+#define GL_OES_fbo_render_mipmap 1
+#define GL_OES_fixed_point 1
+#define GL_OES_fragment_precision_high 1
+#define GL_OES_framebuffer_object 1
+#define GL_OES_geometry_point_size 1
+#define GL_OES_geometry_shader 1
+#define GL_OES_get_program_binary 1
+#define GL_OES_gpu_shader5 1
+#define GL_OES_mapbuffer 1
+#define GL_OES_matrix_get 1
+#define GL_OES_matrix_palette 1
+#define GL_OES_packed_depth_stencil 1
+#define GL_OES_point_size_array 1
+#define GL_OES_point_sprite 1
+#define GL_OES_primitive_bounding_box 1
+#define GL_OES_query_matrix 1
+#define GL_OES_read_format 1
+#define GL_OES_required_internalformat 1
+#define GL_OES_rgb8_rgba8 1
+#define GL_OES_sample_shading 1
+#define GL_OES_sample_variables 1
+#define GL_OES_shader_image_atomic 1
+#define GL_OES_shader_io_blocks 1
+#define GL_OES_shader_multisample_interpolation 1
+#define GL_OES_single_precision 1
+#define GL_OES_standard_derivatives 1
+#define GL_OES_stencil1 1
+#define GL_OES_stencil4 1
+#define GL_OES_stencil8 1
+#define GL_OES_stencil_wrap 1
+#define GL_OES_surfaceless_context 1
+#define GL_OES_tessellation_point_size 1
+#define GL_OES_tessellation_shader 1
+#define GL_OES_texture_3D 1
+#define GL_OES_texture_border_clamp 1
+#define GL_OES_texture_buffer 1
+#define GL_OES_texture_compression_astc 1
+#define GL_OES_texture_cube_map 1
+#define GL_OES_texture_cube_map_array 1
+#define GL_OES_texture_env_crossbar 1
+#define GL_OES_texture_float 1
+#define GL_OES_texture_float_linear 1
+#define GL_OES_texture_half_float 1
+#define GL_OES_texture_half_float_linear 1
+#define GL_OES_texture_mirrored_repeat 1
+#define GL_OES_texture_npot 1
+#define GL_OES_texture_stencil8 1
+#define GL_OES_texture_storage_multisample_2d_array 1
+#define GL_OES_texture_view 1
+#define GL_OES_vertex_array_object 1
+#define GL_OES_vertex_half_float 1
+#define GL_OES_vertex_type_10_10_10_2 1
+#define GL_OES_viewport_array 1
+#define GL_OML_interlace 1
+#define GL_OML_resample 1
+#define GL_OML_subsample 1
+#define GL_OVR_multiview 1
+#define GL_OVR_multiview2 1
+#define GL_OVR_multiview_multisampled_render_to_texture 1
+#define GL_PGI_misc_hints 1
+#define GL_PGI_vertex_hints 1
+#define GL_QCOM_YUV_texture_gather 1
+#define GL_QCOM_alpha_test 1
+#define GL_QCOM_binning_control 1
+#define GL_QCOM_driver_control 1
+#define GL_QCOM_extended_get 1
+#define GL_QCOM_extended_get2 1
+#define GL_QCOM_framebuffer_foveated 1
+#define GL_QCOM_perfmon_global_mode 1
+#define GL_QCOM_shader_framebuffer_fetch_noncoherent 1
+#define GL_QCOM_shader_framebuffer_fetch_rate 1
+#define GL_QCOM_texture_foveated 1
+#define GL_QCOM_texture_foveated_subsampled_layout 1
+#define GL_QCOM_tiled_rendering 1
+#define GL_QCOM_writeonly_rendering 1
+#define GL_REND_screen_coordinates 1
+#define GL_S3_s3tc 1
+#define GL_SGIS_detail_texture 1
+#define GL_SGIS_fog_function 1
+#define GL_SGIS_generate_mipmap 1
+#define GL_SGIS_multisample 1
+#define GL_SGIS_pixel_texture 1
+#define GL_SGIS_point_line_texgen 1
+#define GL_SGIS_point_parameters 1
+#define GL_SGIS_sharpen_texture 1
+#define GL_SGIS_texture4D 1
+#define GL_SGIS_texture_border_clamp 1
+#define GL_SGIS_texture_color_mask 1
+#define GL_SGIS_texture_edge_clamp 1
+#define GL_SGIS_texture_filter4 1
+#define GL_SGIS_texture_lod 1
+#define GL_SGIS_texture_select 1
+#define GL_SGIX_async 1
+#define GL_SGIX_async_histogram 1
+#define GL_SGIX_async_pixel 1
+#define GL_SGIX_blend_alpha_minmax 1
+#define GL_SGIX_calligraphic_fragment 1
+#define GL_SGIX_clipmap 1
+#define GL_SGIX_convolution_accuracy 1
+#define GL_SGIX_depth_pass_instrument 1
+#define GL_SGIX_depth_texture 1
+#define GL_SGIX_flush_raster 1
+#define GL_SGIX_fog_offset 1
+#define GL_SGIX_fragment_lighting 1
+#define GL_SGIX_framezoom 1
+#define GL_SGIX_igloo_interface 1
+#define GL_SGIX_instruments 1
+#define GL_SGIX_interlace 1
+#define GL_SGIX_ir_instrument1 1
+#define GL_SGIX_list_priority 1
+#define GL_SGIX_pixel_texture 1
+#define GL_SGIX_pixel_tiles 1
+#define GL_SGIX_polynomial_ffd 1
+#define GL_SGIX_reference_plane 1
+#define GL_SGIX_resample 1
+#define GL_SGIX_scalebias_hint 1
+#define GL_SGIX_shadow 1
+#define GL_SGIX_shadow_ambient 1
+#define GL_SGIX_sprite 1
+#define GL_SGIX_subsample 1
+#define GL_SGIX_tag_sample_buffer 1
+#define GL_SGIX_texture_add_env 1
+#define GL_SGIX_texture_coordinate_clamp 1
+#define GL_SGIX_texture_lod_bias 1
+#define GL_SGIX_texture_multi_buffer 1
+#define GL_SGIX_texture_scale_bias 1
+#define GL_SGIX_vertex_preclip 1
+#define GL_SGIX_ycrcb 1
+#define GL_SGIX_ycrcb_subsample 1
+#define GL_SGIX_ycrcba 1
+#define GL_SGI_color_matrix 1
+#define GL_SGI_color_table 1
+#define GL_SGI_texture_color_table 1
+#define GL_SUNX_constant_data 1
+#define GL_SUN_convolution_border_modes 1
+#define GL_SUN_global_alpha 1
+#define GL_SUN_mesh_array 1
+#define GL_SUN_slice_accum 1
+#define GL_SUN_triangle_list 1
+#define GL_SUN_vertex 1
+#define GL_VIV_shader_binary 1
+#define GL_WIN_phong_shading 1
+#define GL_WIN_specular_fog 1
+
+#define GL_NEXT_BUFFER_NV -2
+#define GL_SKIP_COMPONENTS4_NV -3
+#define GL_SKIP_COMPONENTS3_NV -4
+#define GL_SKIP_COMPONENTS2_NV -5
+#define GL_SKIP_COMPONENTS1_NV -6
+#define GL_FALSE 0
+#define GL_LAYOUT_DEFAULT_INTEL 0
+#define GL_NONE 0
+#define GL_NONE_OES 0
+#define GL_NO_ERROR 0
+#define GL_ZERO 0
+#define GL_CLOSE_PATH_NV 0x00
+#define GL_POINTS 0x0000
+#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000
+#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
+#define GL_2X_BIT_ATI 0x00000001
+#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
+#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001
+#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001
+#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001
+#define GL_CURRENT_BIT 0x00000001
+#define GL_FOVEATION_ENABLE_BIT_QCOM 0x00000001
+#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
+#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001
+#define GL_RED_BIT_ATI 0x00000001
+#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001
+#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
+#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001
+#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001
+#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001
+#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
+#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001
+#define GL_VERTEX_SHADER_BIT 0x00000001
+#define GL_VERTEX_SHADER_BIT_EXT 0x00000001
+#define GL_4X_BIT_ATI 0x00000002
+#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
+#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002
+#define GL_COMP_BIT_ATI 0x00000002
+#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
+#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
+#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002
+#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002
+#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002
+#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x00000002
+#define GL_FRAGMENT_SHADER_BIT 0x00000002
+#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002
+#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002
+#define GL_GREEN_BIT_ATI 0x00000002
+#define GL_POINT_BIT 0x00000002
+#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002
+#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002
+#define GL_8X_BIT_ATI 0x00000004
+#define GL_BLUE_BIT_ATI 0x00000004
+#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004
+#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004
+#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
+#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x00000004
+#define GL_GEOMETRY_SHADER_BIT 0x00000004
+#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004
+#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004
+#define GL_LINE_BIT 0x00000004
+#define GL_NEGATE_BIT_ATI 0x00000004
+#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004
+#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004
+#define GL_UNIFORM_BARRIER_BIT 0x00000004
+#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004
+#define GL_VERTEX23_BIT_PGI 0x00000004
+#define GL_BIAS_BIT_ATI 0x00000008
+#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008
+#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008
+#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008
+#define GL_HALF_BIT_ATI 0x00000008
+#define GL_POLYGON_BIT 0x00000008
+#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008
+#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008
+#define GL_TESS_CONTROL_SHADER_BIT 0x00000008
+#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008
+#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008
+#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008
+#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008
+#define GL_VERTEX4_BIT_PGI 0x00000008
+#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010
+#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010
+#define GL_POLYGON_STIPPLE_BIT 0x00000010
+#define GL_QUARTER_BIT_ATI 0x00000010
+#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010
+#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010
+#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010
+#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010
+#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010
+#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020
+#define GL_COMPUTE_SHADER_BIT 0x00000020
+#define GL_EIGHTH_BIT_ATI 0x00000020
+#define GL_PIXEL_MODE_BIT 0x00000020
+#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
+#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020
+#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020
+#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040
+#define GL_COMMAND_BARRIER_BIT 0x00000040
+#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040
+#define GL_LIGHTING_BIT 0x00000040
+#define GL_MESH_SHADER_BIT_NV 0x00000040
+#define GL_SATURATE_BIT_ATI 0x00000040
+#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040
+#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080
+#define GL_FOG_BIT 0x00000080
+#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080
+#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080
+#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080
+#define GL_TASK_SHADER_BIT_NV 0x00000080
+#define GL_DEPTH_BUFFER_BIT 0x00000100
+#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100
+#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100
+#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100
+#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100
+#define GL_ACCUM_BUFFER_BIT 0x00000200
+#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200
+#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200
+#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200
+#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400
+#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400
+#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400
+#define GL_STENCIL_BUFFER_BIT 0x00000400
+#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800
+#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
+#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800
+#define GL_VIEWPORT_BIT 0x00000800
+#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000
+#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000
+#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000
+#define GL_TRANSFORM_BIT 0x00001000
+#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000
+#define GL_ENABLE_BIT 0x00002000
+#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000
+#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
+#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000
+#define GL_COLOR_BUFFER_BIT 0x00004000
+#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000
+#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000
+#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000
+#define GL_HINT_BIT 0x00008000
+#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000
+#define GL_LINES 0x0001
+#define GL_MAP_READ_BIT 0x0001
+#define GL_MAP_READ_BIT_EXT 0x0001
+#define GL_NOP_COMMAND_NV 0x0001
+#define GL_RESTART_SUN 0x0001
+#define GL_TRACE_OPERATIONS_BIT_MESA 0x0001
+#define GL_COLOR3_BIT_PGI 0x00010000
+#define GL_EVAL_BIT 0x00010000
+#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000
+#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000
+#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002
+#define GL_LINE_LOOP 0x0002
+#define GL_MAP_WRITE_BIT 0x0002
+#define GL_MAP_WRITE_BIT_EXT 0x0002
+#define GL_REPLACE_MIDDLE_SUN 0x0002
+#define GL_TRACE_PRIMITIVES_BIT_MESA 0x0002
+#define GL_COLOR4_BIT_PGI 0x00020000
+#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000
+#define GL_LIST_BIT 0x00020000
+#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000
+#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003
+#define GL_LINE_STRIP 0x0003
+#define GL_REPLACE_OLDEST_SUN 0x0003
+#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004
+#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004
+#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004
+#define GL_TRACE_ARRAYS_BIT_MESA 0x0004
+#define GL_TRIANGLES 0x0004
+#define GL_EDGEFLAG_BIT_PGI 0x00040000
+#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000
+#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000
+#define GL_TEXTURE_BIT 0x00040000
+#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005
+#define GL_TRIANGLE_STRIP 0x0005
+#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006
+#define GL_TRIANGLE_FAN 0x0006
+#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007
+#define GL_QUADS 0x0007
+#define GL_QUADS_EXT 0x0007
+#define GL_QUADS_OES 0x0007
+#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008
+#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008
+#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008
+#define GL_QUAD_STRIP 0x0008
+#define GL_TRACE_TEXTURES_BIT_MESA 0x0008
+#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000
+#define GL_INDEX_BIT_PGI 0x00080000
+#define GL_SCISSOR_BIT 0x00080000
+#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000
+#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009
+#define GL_POLYGON 0x0009
+#define GL_LINES_ADJACENCY 0x000A
+#define GL_LINES_ADJACENCY_ARB 0x000A
+#define GL_LINES_ADJACENCY_EXT 0x000A
+#define GL_LINES_ADJACENCY_OES 0x000A
+#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A
+#define GL_BLEND_COLOR_COMMAND_NV 0x000B
+#define GL_LINE_STRIP_ADJACENCY 0x000B
+#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B
+#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B
+#define GL_LINE_STRIP_ADJACENCY_OES 0x000B
+#define GL_STENCIL_REF_COMMAND_NV 0x000C
+#define GL_TRIANGLES_ADJACENCY 0x000C
+#define GL_TRIANGLES_ADJACENCY_ARB 0x000C
+#define GL_TRIANGLES_ADJACENCY_EXT 0x000C
+#define GL_TRIANGLES_ADJACENCY_OES 0x000C
+#define GL_LINE_WIDTH_COMMAND_NV 0x000D
+#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D
+#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D
+#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D
+#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0x000D
+#define GL_PATCHES 0x000E
+#define GL_PATCHES_EXT 0x000E
+#define GL_PATCHES_OES 0x000E
+#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E
+#define GL_ALPHA_REF_COMMAND_NV 0x000F
+#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010
+#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010
+#define GL_TRACE_PIXELS_BIT_MESA 0x0010
+#define GL_VIEWPORT_COMMAND_NV 0x0010
+#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000
+#define GL_MAT_AMBIENT_BIT_PGI 0x00100000
+#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000
+#define GL_SCISSOR_COMMAND_NV 0x0011
+#define GL_FRONT_FACE_COMMAND_NV 0x0012
+#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
+#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020
+#define GL_TRACE_ERRORS_BIT_MESA 0x0020
+#define GL_FONT_ASCENDER_BIT_NV 0x00200000
+#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
+#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000
+#define GL_MAP_PERSISTENT_BIT 0x0040
+#define GL_MAP_PERSISTENT_BIT_EXT 0x0040
+#define GL_FONT_DESCENDER_BIT_NV 0x00400000
+#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000
+#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000
+#define GL_MAP_COHERENT_BIT 0x0080
+#define GL_MAP_COHERENT_BIT_EXT 0x0080
+#define GL_FONT_HEIGHT_BIT_NV 0x00800000
+#define GL_MAT_EMISSION_BIT_PGI 0x00800000
+#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000
+#define GL_BOLD_BIT_NV 0x01
+#define GL_GLYPH_WIDTH_BIT_NV 0x01
+#define GL_ACCUM 0x0100
+#define GL_DYNAMIC_STORAGE_BIT 0x0100
+#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100
+#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000
+#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000
+#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000
+#define GL_LOAD 0x0101
+#define GL_RETURN 0x0102
+#define GL_MULT 0x0103
+#define GL_ADD 0x0104
+#define GL_GLYPH_HEIGHT_BIT_NV 0x02
+#define GL_ITALIC_BIT_NV 0x02
+#define GL_MOVE_TO_NV 0x02
+#define GL_CLIENT_STORAGE_BIT 0x0200
+#define GL_CLIENT_STORAGE_BIT_EXT 0x0200
+#define GL_NEVER 0x0200
+#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
+#define GL_MAT_SHININESS_BIT_PGI 0x02000000
+#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000
+#define GL_LESS 0x0201
+#define GL_EQUAL 0x0202
+#define GL_LEQUAL 0x0203
+#define GL_GREATER 0x0204
+#define GL_NOTEQUAL 0x0205
+#define GL_GEQUAL 0x0206
+#define GL_ALWAYS 0x0207
+#define GL_RELATIVE_MOVE_TO_NV 0x03
+#define GL_SRC_COLOR 0x0300
+#define GL_ONE_MINUS_SRC_COLOR 0x0301
+#define GL_SRC_ALPHA 0x0302
+#define GL_ONE_MINUS_SRC_ALPHA 0x0303
+#define GL_DST_ALPHA 0x0304
+#define GL_ONE_MINUS_DST_ALPHA 0x0305
+#define GL_DST_COLOR 0x0306
+#define GL_ONE_MINUS_DST_COLOR 0x0307
+#define GL_SRC_ALPHA_SATURATE 0x0308
+#define GL_SRC_ALPHA_SATURATE_EXT 0x0308
+#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
+#define GL_LINE_TO_NV 0x04
+#define GL_FRONT_LEFT 0x0400
+#define GL_SPARSE_STORAGE_BIT_ARB 0x0400
+#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
+#define GL_MAT_SPECULAR_BIT_PGI 0x04000000
+#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000
+#define GL_FRONT_RIGHT 0x0401
+#define GL_BACK_LEFT 0x0402
+#define GL_BACK_RIGHT 0x0403
+#define GL_FRONT 0x0404
+#define GL_BACK 0x0405
+#define GL_LEFT 0x0406
+#define GL_RIGHT 0x0407
+#define GL_FRONT_AND_BACK 0x0408
+#define GL_AUX0 0x0409
+#define GL_AUX1 0x040A
+#define GL_AUX2 0x040B
+#define GL_AUX3 0x040C
+#define GL_RELATIVE_LINE_TO_NV 0x05
+#define GL_INVALID_ENUM 0x0500
+#define GL_INVALID_VALUE 0x0501
+#define GL_INVALID_OPERATION 0x0502
+#define GL_STACK_OVERFLOW 0x0503
+#define GL_STACK_OVERFLOW_KHR 0x0503
+#define GL_STACK_UNDERFLOW 0x0504
+#define GL_STACK_UNDERFLOW_KHR 0x0504
+#define GL_OUT_OF_MEMORY 0x0505
+#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
+#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
+#define GL_INVALID_FRAMEBUFFER_OPERATION_OES 0x0506
+#define GL_CONTEXT_LOST 0x0507
+#define GL_CONTEXT_LOST_KHR 0x0507
+#define GL_HORIZONTAL_LINE_TO_NV 0x06
+#define GL_2D 0x0600
+#define GL_3D 0x0601
+#define GL_3D_COLOR 0x0602
+#define GL_3D_COLOR_TEXTURE 0x0603
+#define GL_4D_COLOR_TEXTURE 0x0604
+#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
+#define GL_PASS_THROUGH_TOKEN 0x0700
+#define GL_POINT_TOKEN 0x0701
+#define GL_LINE_TOKEN 0x0702
+#define GL_POLYGON_TOKEN 0x0703
+#define GL_BITMAP_TOKEN 0x0704
+#define GL_DRAW_PIXEL_TOKEN 0x0705
+#define GL_COPY_PIXEL_TOKEN 0x0706
+#define GL_LINE_RESET_TOKEN 0x0707
+#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
+#define GL_VERTICAL_LINE_TO_NV 0x08
+#define GL_EXP 0x0800
+#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800
+#define GL_PER_GPU_STORAGE_BIT_NV 0x0800
+#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
+#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000
+#define GL_NORMAL_BIT_PGI 0x08000000
+#define GL_EXP2 0x0801
+#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09
+#define GL_CW 0x0900
+#define GL_CCW 0x0901
+#define GL_QUADRATIC_CURVE_TO_NV 0x0A
+#define GL_COEFF 0x0A00
+#define GL_ORDER 0x0A01
+#define GL_DOMAIN 0x0A02
+#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
+#define GL_CURRENT_COLOR 0x0B00
+#define GL_CURRENT_INDEX 0x0B01
+#define GL_CURRENT_NORMAL 0x0B02
+#define GL_CURRENT_TEXTURE_COORDS 0x0B03
+#define GL_CURRENT_RASTER_COLOR 0x0B04
+#define GL_CURRENT_RASTER_INDEX 0x0B05
+#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06
+#define GL_CURRENT_RASTER_POSITION 0x0B07
+#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08
+#define GL_CURRENT_RASTER_DISTANCE 0x0B09
+#define GL_POINT_SMOOTH 0x0B10
+#define GL_POINT_SIZE 0x0B11
+#define GL_POINT_SIZE_RANGE 0x0B12
+#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12
+#define GL_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_LINE_SMOOTH 0x0B20
+#define GL_LINE_WIDTH 0x0B21
+#define GL_LINE_WIDTH_RANGE 0x0B22
+#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22
+#define GL_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_LINE_STIPPLE 0x0B24
+#define GL_LINE_STIPPLE_PATTERN 0x0B25
+#define GL_LINE_STIPPLE_REPEAT 0x0B26
+#define GL_LIST_MODE 0x0B30
+#define GL_MAX_LIST_NESTING 0x0B31
+#define GL_LIST_BASE 0x0B32
+#define GL_LIST_INDEX 0x0B33
+#define GL_POLYGON_MODE 0x0B40
+#define GL_POLYGON_MODE_NV 0x0B40
+#define GL_POLYGON_SMOOTH 0x0B41
+#define GL_POLYGON_STIPPLE 0x0B42
+#define GL_EDGE_FLAG 0x0B43
+#define GL_CULL_FACE 0x0B44
+#define GL_CULL_FACE_MODE 0x0B45
+#define GL_FRONT_FACE 0x0B46
+#define GL_LIGHTING 0x0B50
+#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51
+#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52
+#define GL_LIGHT_MODEL_AMBIENT 0x0B53
+#define GL_SHADE_MODEL 0x0B54
+#define GL_COLOR_MATERIAL_FACE 0x0B55
+#define GL_COLOR_MATERIAL_PARAMETER 0x0B56
+#define GL_COLOR_MATERIAL 0x0B57
+#define GL_FOG 0x0B60
+#define GL_FOG_INDEX 0x0B61
+#define GL_FOG_DENSITY 0x0B62
+#define GL_FOG_START 0x0B63
+#define GL_FOG_END 0x0B64
+#define GL_FOG_MODE 0x0B65
+#define GL_FOG_COLOR 0x0B66
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_DEPTH_TEST 0x0B71
+#define GL_DEPTH_WRITEMASK 0x0B72
+#define GL_DEPTH_CLEAR_VALUE 0x0B73
+#define GL_DEPTH_FUNC 0x0B74
+#define GL_ACCUM_CLEAR_VALUE 0x0B80
+#define GL_STENCIL_TEST 0x0B90
+#define GL_STENCIL_CLEAR_VALUE 0x0B91
+#define GL_STENCIL_FUNC 0x0B92
+#define GL_STENCIL_VALUE_MASK 0x0B93
+#define GL_STENCIL_FAIL 0x0B94
+#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
+#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
+#define GL_STENCIL_REF 0x0B97
+#define GL_STENCIL_WRITEMASK 0x0B98
+#define GL_MATRIX_MODE 0x0BA0
+#define GL_NORMALIZE 0x0BA1
+#define GL_VIEWPORT 0x0BA2
+#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3
+#define GL_MODELVIEW_STACK_DEPTH 0x0BA3
+#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3
+#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4
+#define GL_PROJECTION_STACK_DEPTH 0x0BA4
+#define GL_TEXTURE_STACK_DEPTH 0x0BA5
+#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6
+#define GL_MODELVIEW_MATRIX 0x0BA6
+#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6
+#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7
+#define GL_PROJECTION_MATRIX 0x0BA7
+#define GL_TEXTURE_MATRIX 0x0BA8
+#define GL_ATTRIB_STACK_DEPTH 0x0BB0
+#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1
+#define GL_ALPHA_TEST 0x0BC0
+#define GL_ALPHA_TEST_QCOM 0x0BC0
+#define GL_ALPHA_TEST_FUNC 0x0BC1
+#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1
+#define GL_ALPHA_TEST_REF 0x0BC2
+#define GL_ALPHA_TEST_REF_QCOM 0x0BC2
+#define GL_DITHER 0x0BD0
+#define GL_BLEND_DST 0x0BE0
+#define GL_BLEND_SRC 0x0BE1
+#define GL_BLEND 0x0BE2
+#define GL_LOGIC_OP_MODE 0x0BF0
+#define GL_INDEX_LOGIC_OP 0x0BF1
+#define GL_LOGIC_OP 0x0BF1
+#define GL_COLOR_LOGIC_OP 0x0BF2
+#define GL_CUBIC_CURVE_TO_NV 0x0C
+#define GL_AUX_BUFFERS 0x0C00
+#define GL_DRAW_BUFFER 0x0C01
+#define GL_DRAW_BUFFER_EXT 0x0C01
+#define GL_READ_BUFFER 0x0C02
+#define GL_READ_BUFFER_EXT 0x0C02
+#define GL_READ_BUFFER_NV 0x0C02
+#define GL_SCISSOR_BOX 0x0C10
+#define GL_SCISSOR_TEST 0x0C11
+#define GL_INDEX_CLEAR_VALUE 0x0C20
+#define GL_INDEX_WRITEMASK 0x0C21
+#define GL_COLOR_CLEAR_VALUE 0x0C22
+#define GL_COLOR_WRITEMASK 0x0C23
+#define GL_INDEX_MODE 0x0C30
+#define GL_RGBA_MODE 0x0C31
+#define GL_DOUBLEBUFFER 0x0C32
+#define GL_STEREO 0x0C33
+#define GL_RENDER_MODE 0x0C40
+#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50
+#define GL_POINT_SMOOTH_HINT 0x0C51
+#define GL_LINE_SMOOTH_HINT 0x0C52
+#define GL_POLYGON_SMOOTH_HINT 0x0C53
+#define GL_FOG_HINT 0x0C54
+#define GL_TEXTURE_GEN_S 0x0C60
+#define GL_TEXTURE_GEN_T 0x0C61
+#define GL_TEXTURE_GEN_R 0x0C62
+#define GL_TEXTURE_GEN_Q 0x0C63
+#define GL_PIXEL_MAP_I_TO_I 0x0C70
+#define GL_PIXEL_MAP_S_TO_S 0x0C71
+#define GL_PIXEL_MAP_I_TO_R 0x0C72
+#define GL_PIXEL_MAP_I_TO_G 0x0C73
+#define GL_PIXEL_MAP_I_TO_B 0x0C74
+#define GL_PIXEL_MAP_I_TO_A 0x0C75
+#define GL_PIXEL_MAP_R_TO_R 0x0C76
+#define GL_PIXEL_MAP_G_TO_G 0x0C77
+#define GL_PIXEL_MAP_B_TO_B 0x0C78
+#define GL_PIXEL_MAP_A_TO_A 0x0C79
+#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0
+#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1
+#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2
+#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3
+#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4
+#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5
+#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6
+#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7
+#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8
+#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9
+#define GL_UNPACK_SWAP_BYTES 0x0CF0
+#define GL_UNPACK_LSB_FIRST 0x0CF1
+#define GL_UNPACK_ROW_LENGTH 0x0CF2
+#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2
+#define GL_UNPACK_SKIP_ROWS 0x0CF3
+#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3
+#define GL_UNPACK_SKIP_PIXELS 0x0CF4
+#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4
+#define GL_UNPACK_ALIGNMENT 0x0CF5
+#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D
+#define GL_PACK_SWAP_BYTES 0x0D00
+#define GL_PACK_LSB_FIRST 0x0D01
+#define GL_PACK_ROW_LENGTH 0x0D02
+#define GL_PACK_SKIP_ROWS 0x0D03
+#define GL_PACK_SKIP_PIXELS 0x0D04
+#define GL_PACK_ALIGNMENT 0x0D05
+#define GL_MAP_COLOR 0x0D10
+#define GL_MAP_STENCIL 0x0D11
+#define GL_INDEX_SHIFT 0x0D12
+#define GL_INDEX_OFFSET 0x0D13
+#define GL_RED_SCALE 0x0D14
+#define GL_RED_BIAS 0x0D15
+#define GL_ZOOM_X 0x0D16
+#define GL_ZOOM_Y 0x0D17
+#define GL_GREEN_SCALE 0x0D18
+#define GL_GREEN_BIAS 0x0D19
+#define GL_BLUE_SCALE 0x0D1A
+#define GL_BLUE_BIAS 0x0D1B
+#define GL_ALPHA_SCALE 0x0D1C
+#define GL_ALPHA_BIAS 0x0D1D
+#define GL_DEPTH_SCALE 0x0D1E
+#define GL_DEPTH_BIAS 0x0D1F
+#define GL_MAX_EVAL_ORDER 0x0D30
+#define GL_MAX_LIGHTS 0x0D31
+#define GL_MAX_CLIP_DISTANCES 0x0D32
+#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32
+#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32
+#define GL_MAX_CLIP_PLANES 0x0D32
+#define GL_MAX_CLIP_PLANES_IMG 0x0D32
+#define GL_MAX_TEXTURE_SIZE 0x0D33
+#define GL_MAX_PIXEL_MAP_TABLE 0x0D34
+#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35
+#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36
+#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36
+#define GL_MAX_NAME_STACK_DEPTH 0x0D37
+#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38
+#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38
+#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39
+#define GL_MAX_VIEWPORT_DIMS 0x0D3A
+#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B
+#define GL_SUBPIXEL_BITS 0x0D50
+#define GL_INDEX_BITS 0x0D51
+#define GL_RED_BITS 0x0D52
+#define GL_GREEN_BITS 0x0D53
+#define GL_BLUE_BITS 0x0D54
+#define GL_ALPHA_BITS 0x0D55
+#define GL_DEPTH_BITS 0x0D56
+#define GL_STENCIL_BITS 0x0D57
+#define GL_ACCUM_RED_BITS 0x0D58
+#define GL_ACCUM_GREEN_BITS 0x0D59
+#define GL_ACCUM_BLUE_BITS 0x0D5A
+#define GL_ACCUM_ALPHA_BITS 0x0D5B
+#define GL_NAME_STACK_DEPTH 0x0D70
+#define GL_AUTO_NORMAL 0x0D80
+#define GL_MAP1_COLOR_4 0x0D90
+#define GL_MAP1_INDEX 0x0D91
+#define GL_MAP1_NORMAL 0x0D92
+#define GL_MAP1_TEXTURE_COORD_1 0x0D93
+#define GL_MAP1_TEXTURE_COORD_2 0x0D94
+#define GL_MAP1_TEXTURE_COORD_3 0x0D95
+#define GL_MAP1_TEXTURE_COORD_4 0x0D96
+#define GL_MAP1_VERTEX_3 0x0D97
+#define GL_MAP1_VERTEX_4 0x0D98
+#define GL_MAP2_COLOR_4 0x0DB0
+#define GL_MAP2_INDEX 0x0DB1
+#define GL_MAP2_NORMAL 0x0DB2
+#define GL_MAP2_TEXTURE_COORD_1 0x0DB3
+#define GL_MAP2_TEXTURE_COORD_2 0x0DB4
+#define GL_MAP2_TEXTURE_COORD_3 0x0DB5
+#define GL_MAP2_TEXTURE_COORD_4 0x0DB6
+#define GL_MAP2_VERTEX_3 0x0DB7
+#define GL_MAP2_VERTEX_4 0x0DB8
+#define GL_MAP1_GRID_DOMAIN 0x0DD0
+#define GL_MAP1_GRID_SEGMENTS 0x0DD1
+#define GL_MAP2_GRID_DOMAIN 0x0DD2
+#define GL_MAP2_GRID_SEGMENTS 0x0DD3
+#define GL_TEXTURE_1D 0x0DE0
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0
+#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1
+#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2
+#define GL_SELECTION_BUFFER_POINTER 0x0DF3
+#define GL_SELECTION_BUFFER_SIZE 0x0DF4
+#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E
+#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
+#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
+#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10
+#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100
+#define GL_TEXTURE_WIDTH 0x1000
+#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000
+#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000
+#define GL_TEXCOORD1_BIT_PGI 0x10000000
+#define GL_TEXTURE_HEIGHT 0x1001
+#define GL_TEXTURE_COMPONENTS 0x1003
+#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
+#define GL_TEXTURE_BORDER_COLOR 0x1004
+#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004
+#define GL_TEXTURE_BORDER_COLOR_NV 0x1004
+#define GL_TEXTURE_BORDER_COLOR_OES 0x1004
+#define GL_TEXTURE_BORDER 0x1005
+#define GL_TEXTURE_TARGET 0x1006
+#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
+#define GL_DONT_CARE 0x1100
+#define GL_FASTEST 0x1101
+#define GL_NICEST 0x1102
+#define GL_SMALL_CCW_ARC_TO_NV 0x12
+#define GL_AMBIENT 0x1200
+#define GL_DIFFUSE 0x1201
+#define GL_SPECULAR 0x1202
+#define GL_POSITION 0x1203
+#define GL_SPOT_DIRECTION 0x1204
+#define GL_SPOT_EXPONENT 0x1205
+#define GL_SPOT_CUTOFF 0x1206
+#define GL_CONSTANT_ATTENUATION 0x1207
+#define GL_LINEAR_ATTENUATION 0x1208
+#define GL_QUADRATIC_ATTENUATION 0x1209
+#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13
+#define GL_COMPILE 0x1300
+#define GL_COMPILE_AND_EXECUTE 0x1301
+#define GL_SMALL_CW_ARC_TO_NV 0x14
+#define GL_BYTE 0x1400
+#define GL_UNSIGNED_BYTE 0x1401
+#define GL_SHORT 0x1402
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_INT 0x1404
+#define GL_UNSIGNED_INT 0x1405
+#define GL_FLOAT 0x1406
+#define GL_2_BYTES 0x1407
+#define GL_2_BYTES_NV 0x1407
+#define GL_3_BYTES 0x1408
+#define GL_3_BYTES_NV 0x1408
+#define GL_4_BYTES 0x1409
+#define GL_4_BYTES_NV 0x1409
+#define GL_DOUBLE 0x140A
+#define GL_DOUBLE_EXT 0x140A
+#define GL_HALF_APPLE 0x140B
+#define GL_HALF_FLOAT 0x140B
+#define GL_HALF_FLOAT_ARB 0x140B
+#define GL_HALF_FLOAT_NV 0x140B
+#define GL_FIXED 0x140C
+#define GL_FIXED_OES 0x140C
+#define GL_INT64_ARB 0x140E
+#define GL_INT64_NV 0x140E
+#define GL_UNSIGNED_INT64_ARB 0x140F
+#define GL_UNSIGNED_INT64_NV 0x140F
+#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15
+#define GL_CLEAR 0x1500
+#define GL_AND 0x1501
+#define GL_AND_REVERSE 0x1502
+#define GL_COPY 0x1503
+#define GL_AND_INVERTED 0x1504
+#define GL_NOOP 0x1505
+#define GL_XOR 0x1506
+#define GL_XOR_NV 0x1506
+#define GL_OR 0x1507
+#define GL_NOR 0x1508
+#define GL_EQUIV 0x1509
+#define GL_INVERT 0x150A
+#define GL_OR_REVERSE 0x150B
+#define GL_COPY_INVERTED 0x150C
+#define GL_OR_INVERTED 0x150D
+#define GL_NAND 0x150E
+#define GL_SET 0x150F
+#define GL_LARGE_CCW_ARC_TO_NV 0x16
+#define GL_EMISSION 0x1600
+#define GL_SHININESS 0x1601
+#define GL_AMBIENT_AND_DIFFUSE 0x1602
+#define GL_COLOR_INDEXES 0x1603
+#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17
+#define GL_MODELVIEW 0x1700
+#define GL_MODELVIEW0_ARB 0x1700
+#define GL_MODELVIEW0_EXT 0x1700
+#define GL_PATH_MODELVIEW_NV 0x1700
+#define GL_PATH_PROJECTION_NV 0x1701
+#define GL_PROJECTION 0x1701
+#define GL_TEXTURE 0x1702
+#define GL_LARGE_CW_ARC_TO_NV 0x18
+#define GL_COLOR 0x1800
+#define GL_COLOR_EXT 0x1800
+#define GL_DEPTH 0x1801
+#define GL_DEPTH_EXT 0x1801
+#define GL_STENCIL 0x1802
+#define GL_STENCIL_EXT 0x1802
+#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19
+#define GL_COLOR_INDEX 0x1900
+#define GL_STENCIL_INDEX 0x1901
+#define GL_STENCIL_INDEX_OES 0x1901
+#define GL_DEPTH_COMPONENT 0x1902
+#define GL_RED 0x1903
+#define GL_RED_EXT 0x1903
+#define GL_RED_NV 0x1903
+#define GL_GREEN 0x1904
+#define GL_GREEN_NV 0x1904
+#define GL_BLUE 0x1905
+#define GL_BLUE_NV 0x1905
+#define GL_ALPHA 0x1906
+#define GL_RGB 0x1907
+#define GL_RGBA 0x1908
+#define GL_LUMINANCE 0x1909
+#define GL_LUMINANCE_ALPHA 0x190A
+#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262
+#define GL_CONIC_CURVE_TO_NV 0x1A
+#define GL_BITMAP 0x1A00
+#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8
+#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD
+#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE
+#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202
+#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
+#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204
+#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C
+#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D
+#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E
+#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F
+#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210
+#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211
+#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216
+#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217
+#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218
+#define GL_FULL_STIPPLE_HINT_PGI 0x1A219
+#define GL_CLIP_NEAR_HINT_PGI 0x1A220
+#define GL_CLIP_FAR_HINT_PGI 0x1A221
+#define GL_WIDE_LINE_HINT_PGI 0x1A222
+#define GL_BACK_NORMALS_HINT_PGI 0x1A223
+#define GL_VERTEX_DATA_HINT_PGI 0x1A22A
+#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B
+#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C
+#define GL_MAX_VERTEX_HINT_PGI 0x1A22D
+#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B
+#define GL_POINT 0x1B00
+#define GL_POINT_NV 0x1B00
+#define GL_LINE 0x1B01
+#define GL_LINE_NV 0x1B01
+#define GL_FILL 0x1B02
+#define GL_FILL_NV 0x1B02
+#define GL_RENDER 0x1C00
+#define GL_FEEDBACK 0x1C01
+#define GL_SELECT 0x1C02
+#define GL_FLAT 0x1D00
+#define GL_SMOOTH 0x1D01
+#define GL_KEEP 0x1E00
+#define GL_REPLACE 0x1E01
+#define GL_INCR 0x1E02
+#define GL_DECR 0x1E03
+#define GL_VENDOR 0x1F00
+#define GL_RENDERER 0x1F01
+#define GL_VERSION 0x1F02
+#define GL_EXTENSIONS 0x1F03
+#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
+#define GL_EXTERNAL_STORAGE_BIT_NVX 0x2000
+#define GL_S 0x2000
+#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000
+#define GL_MULTISAMPLE_BIT 0x20000000
+#define GL_MULTISAMPLE_BIT_3DFX 0x20000000
+#define GL_MULTISAMPLE_BIT_ARB 0x20000000
+#define GL_MULTISAMPLE_BIT_EXT 0x20000000
+#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000
+#define GL_TEXCOORD2_BIT_PGI 0x20000000
+#define GL_T 0x2001
+#define GL_R 0x2002
+#define GL_Q 0x2003
+#define GL_MODULATE 0x2100
+#define GL_DECAL 0x2101
+#define GL_TEXTURE_ENV_MODE 0x2200
+#define GL_TEXTURE_ENV_COLOR 0x2201
+#define GL_TEXTURE_ENV 0x2300
+#define GL_EYE_LINEAR 0x2400
+#define GL_EYE_LINEAR_NV 0x2400
+#define GL_OBJECT_LINEAR 0x2401
+#define GL_OBJECT_LINEAR_NV 0x2401
+#define GL_SPHERE_MAP 0x2402
+#define GL_TEXTURE_GEN_MODE 0x2500
+#define GL_TEXTURE_GEN_MODE_OES 0x2500
+#define GL_OBJECT_PLANE 0x2501
+#define GL_EYE_PLANE 0x2502
+#define GL_NEAREST 0x2600
+#define GL_LINEAR 0x2601
+#define GL_NEAREST_MIPMAP_NEAREST 0x2700
+#define GL_LINEAR_MIPMAP_NEAREST 0x2701
+#define GL_NEAREST_MIPMAP_LINEAR 0x2702
+#define GL_LINEAR_MIPMAP_LINEAR 0x2703
+#define GL_TEXTURE_MAG_FILTER 0x2800
+#define GL_TEXTURE_MIN_FILTER 0x2801
+#define GL_TEXTURE_WRAP_S 0x2802
+#define GL_TEXTURE_WRAP_T 0x2803
+#define GL_CLAMP 0x2900
+#define GL_REPEAT 0x2901
+#define GL_POLYGON_OFFSET_UNITS 0x2A00
+#define GL_POLYGON_OFFSET_POINT 0x2A01
+#define GL_POLYGON_OFFSET_POINT_NV 0x2A01
+#define GL_POLYGON_OFFSET_LINE 0x2A02
+#define GL_POLYGON_OFFSET_LINE_NV 0x2A02
+#define GL_R3_G3_B2 0x2A10
+#define GL_V2F 0x2A20
+#define GL_V3F 0x2A21
+#define GL_C4UB_V2F 0x2A22
+#define GL_C4UB_V3F 0x2A23
+#define GL_C3F_V3F 0x2A24
+#define GL_N3F_V3F 0x2A25
+#define GL_C4F_N3F_V3F 0x2A26
+#define GL_T2F_V3F 0x2A27
+#define GL_T4F_V4F 0x2A28
+#define GL_T2F_C4UB_V3F 0x2A29
+#define GL_T2F_C3F_V3F 0x2A2A
+#define GL_T2F_N3F_V3F 0x2A2B
+#define GL_T2F_C4F_N3F_V3F 0x2A2C
+#define GL_T4F_C4F_N3F_V4F 0x2A2D
+#define GL_CLIP_DISTANCE0 0x3000
+#define GL_CLIP_DISTANCE0_APPLE 0x3000
+#define GL_CLIP_DISTANCE0_EXT 0x3000
+#define GL_CLIP_PLANE0 0x3000
+#define GL_CLIP_PLANE0_IMG 0x3000
+#define GL_CLIP_DISTANCE1 0x3001
+#define GL_CLIP_DISTANCE1_APPLE 0x3001
+#define GL_CLIP_DISTANCE1_EXT 0x3001
+#define GL_CLIP_PLANE1 0x3001
+#define GL_CLIP_PLANE1_IMG 0x3001
+#define GL_CLIP_DISTANCE2 0x3002
+#define GL_CLIP_DISTANCE2_APPLE 0x3002
+#define GL_CLIP_DISTANCE2_EXT 0x3002
+#define GL_CLIP_PLANE2 0x3002
+#define GL_CLIP_PLANE2_IMG 0x3002
+#define GL_CLIP_DISTANCE3 0x3003
+#define GL_CLIP_DISTANCE3_APPLE 0x3003
+#define GL_CLIP_DISTANCE3_EXT 0x3003
+#define GL_CLIP_PLANE3 0x3003
+#define GL_CLIP_PLANE3_IMG 0x3003
+#define GL_CLIP_DISTANCE4 0x3004
+#define GL_CLIP_DISTANCE4_APPLE 0x3004
+#define GL_CLIP_DISTANCE4_EXT 0x3004
+#define GL_CLIP_PLANE4 0x3004
+#define GL_CLIP_PLANE4_IMG 0x3004
+#define GL_CLIP_DISTANCE5 0x3005
+#define GL_CLIP_DISTANCE5_APPLE 0x3005
+#define GL_CLIP_DISTANCE5_EXT 0x3005
+#define GL_CLIP_PLANE5 0x3005
+#define GL_CLIP_PLANE5_IMG 0x3005
+#define GL_CLIP_DISTANCE6 0x3006
+#define GL_CLIP_DISTANCE6_APPLE 0x3006
+#define GL_CLIP_DISTANCE6_EXT 0x3006
+#define GL_CLIP_DISTANCE7 0x3007
+#define GL_CLIP_DISTANCE7_APPLE 0x3007
+#define GL_CLIP_DISTANCE7_EXT 0x3007
+#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
+#define GL_LIGHT0 0x4000
+#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000
+#define GL_TEXCOORD3_BIT_PGI 0x40000000
+#define GL_LIGHT1 0x4001
+#define GL_LIGHT2 0x4002
+#define GL_LIGHT3 0x4003
+#define GL_LIGHT4 0x4004
+#define GL_LIGHT5 0x4005
+#define GL_LIGHT6 0x4006
+#define GL_LIGHT7 0x4007
+#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
+#define GL_ABGR_EXT 0x8000
+#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000
+#define GL_TEXCOORD4_BIT_PGI 0x80000000
+#define GL_CONSTANT_COLOR 0x8001
+#define GL_CONSTANT_COLOR_EXT 0x8001
+#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
+#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002
+#define GL_CONSTANT_ALPHA 0x8003
+#define GL_CONSTANT_ALPHA_EXT 0x8003
+#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
+#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004
+#define GL_BLEND_COLOR 0x8005
+#define GL_BLEND_COLOR_EXT 0x8005
+#define GL_FUNC_ADD 0x8006
+#define GL_FUNC_ADD_EXT 0x8006
+#define GL_FUNC_ADD_OES 0x8006
+#define GL_MIN 0x8007
+#define GL_MIN_EXT 0x8007
+#define GL_MAX 0x8008
+#define GL_MAX_EXT 0x8008
+#define GL_BLEND_EQUATION 0x8009
+#define GL_BLEND_EQUATION_EXT 0x8009
+#define GL_BLEND_EQUATION_OES 0x8009
+#define GL_BLEND_EQUATION_RGB 0x8009
+#define GL_BLEND_EQUATION_RGB_EXT 0x8009
+#define GL_BLEND_EQUATION_RGB_OES 0x8009
+#define GL_FUNC_SUBTRACT 0x800A
+#define GL_FUNC_SUBTRACT_EXT 0x800A
+#define GL_FUNC_SUBTRACT_OES 0x800A
+#define GL_FUNC_REVERSE_SUBTRACT 0x800B
+#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B
+#define GL_FUNC_REVERSE_SUBTRACT_OES 0x800B
+#define GL_CMYK_EXT 0x800C
+#define GL_CMYKA_EXT 0x800D
+#define GL_PACK_CMYK_HINT_EXT 0x800E
+#define GL_UNPACK_CMYK_HINT_EXT 0x800F
+#define GL_CONVOLUTION_1D 0x8010
+#define GL_CONVOLUTION_1D_EXT 0x8010
+#define GL_CONVOLUTION_2D 0x8011
+#define GL_CONVOLUTION_2D_EXT 0x8011
+#define GL_SEPARABLE_2D 0x8012
+#define GL_SEPARABLE_2D_EXT 0x8012
+#define GL_CONVOLUTION_BORDER_MODE 0x8013
+#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013
+#define GL_CONVOLUTION_FILTER_SCALE 0x8014
+#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014
+#define GL_CONVOLUTION_FILTER_BIAS 0x8015
+#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015
+#define GL_REDUCE 0x8016
+#define GL_REDUCE_EXT 0x8016
+#define GL_CONVOLUTION_FORMAT 0x8017
+#define GL_CONVOLUTION_FORMAT_EXT 0x8017
+#define GL_CONVOLUTION_WIDTH 0x8018
+#define GL_CONVOLUTION_WIDTH_EXT 0x8018
+#define GL_CONVOLUTION_HEIGHT 0x8019
+#define GL_CONVOLUTION_HEIGHT_EXT 0x8019
+#define GL_MAX_CONVOLUTION_WIDTH 0x801A
+#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A
+#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
+#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B
+#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
+#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
+#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
+#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
+#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
+#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
+#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
+#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
+#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
+#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020
+#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
+#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
+#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
+#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
+#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
+#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
+#define GL_HISTOGRAM 0x8024
+#define GL_HISTOGRAM_EXT 0x8024
+#define GL_PROXY_HISTOGRAM 0x8025
+#define GL_PROXY_HISTOGRAM_EXT 0x8025
+#define GL_HISTOGRAM_WIDTH 0x8026
+#define GL_HISTOGRAM_WIDTH_EXT 0x8026
+#define GL_HISTOGRAM_FORMAT 0x8027
+#define GL_HISTOGRAM_FORMAT_EXT 0x8027
+#define GL_HISTOGRAM_RED_SIZE 0x8028
+#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028
+#define GL_HISTOGRAM_GREEN_SIZE 0x8029
+#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029
+#define GL_HISTOGRAM_BLUE_SIZE 0x802A
+#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A
+#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
+#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B
+#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
+#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C
+#define GL_HISTOGRAM_SINK 0x802D
+#define GL_HISTOGRAM_SINK_EXT 0x802D
+#define GL_MINMAX 0x802E
+#define GL_MINMAX_EXT 0x802E
+#define GL_MINMAX_FORMAT 0x802F
+#define GL_MINMAX_FORMAT_EXT 0x802F
+#define GL_MINMAX_SINK 0x8030
+#define GL_MINMAX_SINK_EXT 0x8030
+#define GL_TABLE_TOO_LARGE 0x8031
+#define GL_TABLE_TOO_LARGE_EXT 0x8031
+#define GL_UNSIGNED_BYTE_3_3_2 0x8032
+#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032
+#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
+#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
+#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
+#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
+#define GL_UNSIGNED_INT_8_8_8_8 0x8035
+#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035
+#define GL_UNSIGNED_INT_10_10_10_2 0x8036
+#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036
+#define GL_POLYGON_OFFSET_EXT 0x8037
+#define GL_POLYGON_OFFSET_FILL 0x8037
+#define GL_POLYGON_OFFSET_FACTOR 0x8038
+#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038
+#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039
+#define GL_RESCALE_NORMAL 0x803A
+#define GL_RESCALE_NORMAL_EXT 0x803A
+#define GL_ALPHA4 0x803B
+#define GL_ALPHA4_EXT 0x803B
+#define GL_ALPHA8 0x803C
+#define GL_ALPHA8_EXT 0x803C
+#define GL_ALPHA8_OES 0x803C
+#define GL_ALPHA12 0x803D
+#define GL_ALPHA12_EXT 0x803D
+#define GL_ALPHA16 0x803E
+#define GL_ALPHA16_EXT 0x803E
+#define GL_LUMINANCE4 0x803F
+#define GL_LUMINANCE4_EXT 0x803F
+#define GL_LUMINANCE8 0x8040
+#define GL_LUMINANCE8_EXT 0x8040
+#define GL_LUMINANCE8_OES 0x8040
+#define GL_LUMINANCE12 0x8041
+#define GL_LUMINANCE12_EXT 0x8041
+#define GL_LUMINANCE16 0x8042
+#define GL_LUMINANCE16_EXT 0x8042
+#define GL_LUMINANCE4_ALPHA4 0x8043
+#define GL_LUMINANCE4_ALPHA4_EXT 0x8043
+#define GL_LUMINANCE4_ALPHA4_OES 0x8043
+#define GL_LUMINANCE6_ALPHA2 0x8044
+#define GL_LUMINANCE6_ALPHA2_EXT 0x8044
+#define GL_LUMINANCE8_ALPHA8 0x8045
+#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
+#define GL_LUMINANCE8_ALPHA8_OES 0x8045
+#define GL_LUMINANCE12_ALPHA4 0x8046
+#define GL_LUMINANCE12_ALPHA4_EXT 0x8046
+#define GL_LUMINANCE12_ALPHA12 0x8047
+#define GL_LUMINANCE12_ALPHA12_EXT 0x8047
+#define GL_LUMINANCE16_ALPHA16 0x8048
+#define GL_LUMINANCE16_ALPHA16_EXT 0x8048
+#define GL_INTENSITY 0x8049
+#define GL_INTENSITY_EXT 0x8049
+#define GL_INTENSITY4 0x804A
+#define GL_INTENSITY4_EXT 0x804A
+#define GL_INTENSITY8 0x804B
+#define GL_INTENSITY8_EXT 0x804B
+#define GL_INTENSITY12 0x804C
+#define GL_INTENSITY12_EXT 0x804C
+#define GL_INTENSITY16 0x804D
+#define GL_INTENSITY16_EXT 0x804D
+#define GL_RGB2_EXT 0x804E
+#define GL_RGB4 0x804F
+#define GL_RGB4_EXT 0x804F
+#define GL_RGB5 0x8050
+#define GL_RGB5_EXT 0x8050
+#define GL_RGB8 0x8051
+#define GL_RGB8_EXT 0x8051
+#define GL_RGB8_OES 0x8051
+#define GL_RGB10 0x8052
+#define GL_RGB10_EXT 0x8052
+#define GL_RGB12 0x8053
+#define GL_RGB12_EXT 0x8053
+#define GL_RGB16 0x8054
+#define GL_RGB16_EXT 0x8054
+#define GL_RGBA2 0x8055
+#define GL_RGBA2_EXT 0x8055
+#define GL_RGBA4 0x8056
+#define GL_RGBA4_EXT 0x8056
+#define GL_RGBA4_OES 0x8056
+#define GL_RGB5_A1 0x8057
+#define GL_RGB5_A1_EXT 0x8057
+#define GL_RGB5_A1_OES 0x8057
+#define GL_RGBA8 0x8058
+#define GL_RGBA8_EXT 0x8058
+#define GL_RGBA8_OES 0x8058
+#define GL_RGB10_A2 0x8059
+#define GL_RGB10_A2_EXT 0x8059
+#define GL_RGBA12 0x805A
+#define GL_RGBA12_EXT 0x805A
+#define GL_RGBA16 0x805B
+#define GL_RGBA16_EXT 0x805B
+#define GL_TEXTURE_RED_SIZE 0x805C
+#define GL_TEXTURE_RED_SIZE_EXT 0x805C
+#define GL_TEXTURE_GREEN_SIZE 0x805D
+#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D
+#define GL_TEXTURE_BLUE_SIZE 0x805E
+#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E
+#define GL_TEXTURE_ALPHA_SIZE 0x805F
+#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE 0x8060
+#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060
+#define GL_TEXTURE_INTENSITY_SIZE 0x8061
+#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061
+#define GL_REPLACE_EXT 0x8062
+#define GL_PROXY_TEXTURE_1D 0x8063
+#define GL_PROXY_TEXTURE_1D_EXT 0x8063
+#define GL_PROXY_TEXTURE_2D 0x8064
+#define GL_PROXY_TEXTURE_2D_EXT 0x8064
+#define GL_TEXTURE_TOO_LARGE_EXT 0x8065
+#define GL_TEXTURE_PRIORITY 0x8066
+#define GL_TEXTURE_PRIORITY_EXT 0x8066
+#define GL_TEXTURE_RESIDENT 0x8067
+#define GL_TEXTURE_RESIDENT_EXT 0x8067
+#define GL_TEXTURE_1D_BINDING_EXT 0x8068
+#define GL_TEXTURE_BINDING_1D 0x8068
+#define GL_TEXTURE_2D_BINDING_EXT 0x8069
+#define GL_TEXTURE_BINDING_2D 0x8069
+#define GL_TEXTURE_3D_BINDING_EXT 0x806A
+#define GL_TEXTURE_3D_BINDING_OES 0x806A
+#define GL_TEXTURE_BINDING_3D 0x806A
+#define GL_TEXTURE_BINDING_3D_OES 0x806A
+#define GL_PACK_SKIP_IMAGES 0x806B
+#define GL_PACK_SKIP_IMAGES_EXT 0x806B
+#define GL_PACK_IMAGE_HEIGHT 0x806C
+#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C
+#define GL_UNPACK_SKIP_IMAGES 0x806D
+#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D
+#define GL_UNPACK_IMAGE_HEIGHT 0x806E
+#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E
+#define GL_TEXTURE_3D 0x806F
+#define GL_TEXTURE_3D_EXT 0x806F
+#define GL_TEXTURE_3D_OES 0x806F
+#define GL_PROXY_TEXTURE_3D 0x8070
+#define GL_PROXY_TEXTURE_3D_EXT 0x8070
+#define GL_TEXTURE_DEPTH 0x8071
+#define GL_TEXTURE_DEPTH_EXT 0x8071
+#define GL_TEXTURE_WRAP_R 0x8072
+#define GL_TEXTURE_WRAP_R_EXT 0x8072
+#define GL_TEXTURE_WRAP_R_OES 0x8072
+#define GL_MAX_3D_TEXTURE_SIZE 0x8073
+#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073
+#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073
+#define GL_VERTEX_ARRAY 0x8074
+#define GL_VERTEX_ARRAY_EXT 0x8074
+#define GL_VERTEX_ARRAY_KHR 0x8074
+#define GL_NORMAL_ARRAY 0x8075
+#define GL_NORMAL_ARRAY_EXT 0x8075
+#define GL_COLOR_ARRAY 0x8076
+#define GL_COLOR_ARRAY_EXT 0x8076
+#define GL_INDEX_ARRAY 0x8077
+#define GL_INDEX_ARRAY_EXT 0x8077
+#define GL_TEXTURE_COORD_ARRAY 0x8078
+#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078
+#define GL_EDGE_FLAG_ARRAY 0x8079
+#define GL_EDGE_FLAG_ARRAY_EXT 0x8079
+#define GL_VERTEX_ARRAY_SIZE 0x807A
+#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A
+#define GL_VERTEX_ARRAY_TYPE 0x807B
+#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B
+#define GL_VERTEX_ARRAY_STRIDE 0x807C
+#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
+#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D
+#define GL_NORMAL_ARRAY_TYPE 0x807E
+#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E
+#define GL_NORMAL_ARRAY_STRIDE 0x807F
+#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
+#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080
+#define GL_COLOR_ARRAY_SIZE 0x8081
+#define GL_COLOR_ARRAY_SIZE_EXT 0x8081
+#define GL_COLOR_ARRAY_TYPE 0x8082
+#define GL_COLOR_ARRAY_TYPE_EXT 0x8082
+#define GL_COLOR_ARRAY_STRIDE 0x8083
+#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083
+#define GL_COLOR_ARRAY_COUNT_EXT 0x8084
+#define GL_INDEX_ARRAY_TYPE 0x8085
+#define GL_INDEX_ARRAY_TYPE_EXT 0x8085
+#define GL_INDEX_ARRAY_STRIDE 0x8086
+#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086
+#define GL_INDEX_ARRAY_COUNT_EXT 0x8087
+#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088
+#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089
+#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A
+#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
+#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
+#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C
+#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
+#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
+#define GL_VERTEX_ARRAY_POINTER 0x808E
+#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E
+#define GL_NORMAL_ARRAY_POINTER 0x808F
+#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F
+#define GL_COLOR_ARRAY_POINTER 0x8090
+#define GL_COLOR_ARRAY_POINTER_EXT 0x8090
+#define GL_INDEX_ARRAY_POINTER 0x8091
+#define GL_INDEX_ARRAY_POINTER_EXT 0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092
+#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093
+#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
+#define GL_INTERLACE_SGIX 0x8094
+#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095
+#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
+#define GL_LINEAR_DETAIL_SGIS 0x8097
+#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098
+#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099
+#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A
+#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B
+#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
+#define GL_MULTISAMPLE 0x809D
+#define GL_MULTISAMPLE_ARB 0x809D
+#define GL_MULTISAMPLE_EXT 0x809D
+#define GL_MULTISAMPLE_SGIS 0x809D
+#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
+#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
+#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E
+#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E
+#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
+#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
+#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
+#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F
+#define GL_SAMPLE_COVERAGE 0x80A0
+#define GL_SAMPLE_COVERAGE_ARB 0x80A0
+#define GL_SAMPLE_MASK_EXT 0x80A0
+#define GL_SAMPLE_MASK_SGIS 0x80A0
+#define GL_1PASS_EXT 0x80A1
+#define GL_1PASS_SGIS 0x80A1
+#define GL_2PASS_0_EXT 0x80A2
+#define GL_2PASS_0_SGIS 0x80A2
+#define GL_2PASS_1_EXT 0x80A3
+#define GL_2PASS_1_SGIS 0x80A3
+#define GL_4PASS_0_EXT 0x80A4
+#define GL_4PASS_0_SGIS 0x80A4
+#define GL_4PASS_1_EXT 0x80A5
+#define GL_4PASS_1_SGIS 0x80A5
+#define GL_4PASS_2_EXT 0x80A6
+#define GL_4PASS_2_SGIS 0x80A6
+#define GL_4PASS_3_EXT 0x80A7
+#define GL_4PASS_3_SGIS 0x80A7
+#define GL_SAMPLE_BUFFERS 0x80A8
+#define GL_SAMPLE_BUFFERS_ARB 0x80A8
+#define GL_SAMPLE_BUFFERS_EXT 0x80A8
+#define GL_SAMPLE_BUFFERS_SGIS 0x80A8
+#define GL_SAMPLES 0x80A9
+#define GL_SAMPLES_ARB 0x80A9
+#define GL_SAMPLES_EXT 0x80A9
+#define GL_SAMPLES_SGIS 0x80A9
+#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
+#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
+#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA
+#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA
+#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
+#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
+#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB
+#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB
+#define GL_SAMPLE_PATTERN_EXT 0x80AC
+#define GL_SAMPLE_PATTERN_SGIS 0x80AC
+#define GL_LINEAR_SHARPEN_SGIS 0x80AD
+#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE
+#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF
+#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
+#define GL_COLOR_MATRIX 0x80B1
+#define GL_COLOR_MATRIX_SGI 0x80B1
+#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
+#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
+#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
+#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
+#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
+#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
+#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC
+#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD
+#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE
+#define GL_SHADOW_AMBIENT_SGIX 0x80BF
+#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
+#define GL_BLEND_DST_RGB 0x80C8
+#define GL_BLEND_DST_RGB_EXT 0x80C8
+#define GL_BLEND_DST_RGB_OES 0x80C8
+#define GL_BLEND_SRC_RGB 0x80C9
+#define GL_BLEND_SRC_RGB_EXT 0x80C9
+#define GL_BLEND_SRC_RGB_OES 0x80C9
+#define GL_BLEND_DST_ALPHA 0x80CA
+#define GL_BLEND_DST_ALPHA_EXT 0x80CA
+#define GL_BLEND_DST_ALPHA_OES 0x80CA
+#define GL_BLEND_SRC_ALPHA 0x80CB
+#define GL_BLEND_SRC_ALPHA_EXT 0x80CB
+#define GL_BLEND_SRC_ALPHA_OES 0x80CB
+#define GL_422_EXT 0x80CC
+#define GL_422_REV_EXT 0x80CD
+#define GL_422_AVERAGE_EXT 0x80CE
+#define GL_422_REV_AVERAGE_EXT 0x80CF
+#define GL_COLOR_TABLE 0x80D0
+#define GL_COLOR_TABLE_SGI 0x80D0
+#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
+#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
+#define GL_PROXY_COLOR_TABLE 0x80D3
+#define GL_PROXY_COLOR_TABLE_SGI 0x80D3
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
+#define GL_COLOR_TABLE_SCALE 0x80D6
+#define GL_COLOR_TABLE_SCALE_SGI 0x80D6
+#define GL_COLOR_TABLE_BIAS 0x80D7
+#define GL_COLOR_TABLE_BIAS_SGI 0x80D7
+#define GL_COLOR_TABLE_FORMAT 0x80D8
+#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8
+#define GL_COLOR_TABLE_WIDTH 0x80D9
+#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE 0x80DA
+#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
+#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
+#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
+#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
+#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
+#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
+#define GL_BGR 0x80E0
+#define GL_BGR_EXT 0x80E0
+#define GL_BGRA 0x80E1
+#define GL_BGRA_EXT 0x80E1
+#define GL_BGRA_IMG 0x80E1
+#define GL_COLOR_INDEX1_EXT 0x80E2
+#define GL_COLOR_INDEX2_EXT 0x80E3
+#define GL_COLOR_INDEX4_EXT 0x80E4
+#define GL_COLOR_INDEX8_EXT 0x80E5
+#define GL_COLOR_INDEX12_EXT 0x80E6
+#define GL_COLOR_INDEX16_EXT 0x80E7
+#define GL_MAX_ELEMENTS_VERTICES 0x80E8
+#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8
+#define GL_MAX_ELEMENTS_INDICES 0x80E9
+#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9
+#define GL_PHONG_WIN 0x80EA
+#define GL_PHONG_HINT_WIN 0x80EB
+#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
+#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
+#define GL_PARAMETER_BUFFER 0x80EE
+#define GL_PARAMETER_BUFFER_ARB 0x80EE
+#define GL_PARAMETER_BUFFER_BINDING 0x80EF
+#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF
+#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0
+#define GL_DUAL_ALPHA4_SGIS 0x8110
+#define GL_DUAL_ALPHA8_SGIS 0x8111
+#define GL_DUAL_ALPHA12_SGIS 0x8112
+#define GL_DUAL_ALPHA16_SGIS 0x8113
+#define GL_DUAL_LUMINANCE4_SGIS 0x8114
+#define GL_DUAL_LUMINANCE8_SGIS 0x8115
+#define GL_DUAL_LUMINANCE12_SGIS 0x8116
+#define GL_DUAL_LUMINANCE16_SGIS 0x8117
+#define GL_DUAL_INTENSITY4_SGIS 0x8118
+#define GL_DUAL_INTENSITY8_SGIS 0x8119
+#define GL_DUAL_INTENSITY12_SGIS 0x811A
+#define GL_DUAL_INTENSITY16_SGIS 0x811B
+#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C
+#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D
+#define GL_QUAD_ALPHA4_SGIS 0x811E
+#define GL_QUAD_ALPHA8_SGIS 0x811F
+#define GL_QUAD_LUMINANCE4_SGIS 0x8120
+#define GL_QUAD_LUMINANCE8_SGIS 0x8121
+#define GL_QUAD_INTENSITY4_SGIS 0x8122
+#define GL_QUAD_INTENSITY8_SGIS 0x8123
+#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124
+#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125
+#define GL_POINT_SIZE_MIN 0x8126
+#define GL_POINT_SIZE_MIN_ARB 0x8126
+#define GL_POINT_SIZE_MIN_EXT 0x8126
+#define GL_POINT_SIZE_MIN_SGIS 0x8126
+#define GL_POINT_SIZE_MAX 0x8127
+#define GL_POINT_SIZE_MAX_ARB 0x8127
+#define GL_POINT_SIZE_MAX_EXT 0x8127
+#define GL_POINT_SIZE_MAX_SGIS 0x8127
+#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128
+#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128
+#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128
+#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
+#define GL_DISTANCE_ATTENUATION_EXT 0x8129
+#define GL_DISTANCE_ATTENUATION_SGIS 0x8129
+#define GL_POINT_DISTANCE_ATTENUATION 0x8129
+#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
+#define GL_FOG_FUNC_SGIS 0x812A
+#define GL_FOG_FUNC_POINTS_SGIS 0x812B
+#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C
+#define GL_CLAMP_TO_BORDER 0x812D
+#define GL_CLAMP_TO_BORDER_ARB 0x812D
+#define GL_CLAMP_TO_BORDER_EXT 0x812D
+#define GL_CLAMP_TO_BORDER_NV 0x812D
+#define GL_CLAMP_TO_BORDER_OES 0x812D
+#define GL_CLAMP_TO_BORDER_SGIS 0x812D
+#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
+#define GL_CLAMP_TO_EDGE 0x812F
+#define GL_CLAMP_TO_EDGE_SGIS 0x812F
+#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130
+#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131
+#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132
+#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133
+#define GL_TEXTURE_4D_SGIS 0x8134
+#define GL_PROXY_TEXTURE_4D_SGIS 0x8135
+#define GL_TEXTURE_4DSIZE_SGIS 0x8136
+#define GL_TEXTURE_WRAP_Q_SGIS 0x8137
+#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138
+#define GL_PIXEL_TEX_GEN_SGIX 0x8139
+#define GL_TEXTURE_MIN_LOD 0x813A
+#define GL_TEXTURE_MIN_LOD_SGIS 0x813A
+#define GL_TEXTURE_MAX_LOD 0x813B
+#define GL_TEXTURE_MAX_LOD_SGIS 0x813B
+#define GL_TEXTURE_BASE_LEVEL 0x813C
+#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C
+#define GL_TEXTURE_MAX_LEVEL 0x813D
+#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D
+#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D
+#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
+#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
+#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140
+#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141
+#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142
+#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143
+#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144
+#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145
+#define GL_FILTER4_SGIS 0x8146
+#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147
+#define GL_SPRITE_SGIX 0x8148
+#define GL_SPRITE_MODE_SGIX 0x8149
+#define GL_SPRITE_AXIS_SGIX 0x814A
+#define GL_SPRITE_TRANSLATION_SGIX 0x814B
+#define GL_SPRITE_AXIAL_SGIX 0x814C
+#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D
+#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E
+#define GL_TEXTURE_4D_BINDING_SGIS 0x814F
+#define GL_IGNORE_BORDER_HP 0x8150
+#define GL_CONSTANT_BORDER 0x8151
+#define GL_CONSTANT_BORDER_HP 0x8151
+#define GL_REPLICATE_BORDER 0x8153
+#define GL_REPLICATE_BORDER_HP 0x8153
+#define GL_CONVOLUTION_BORDER_COLOR 0x8154
+#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154
+#define GL_IMAGE_SCALE_X_HP 0x8155
+#define GL_IMAGE_SCALE_Y_HP 0x8156
+#define GL_IMAGE_TRANSLATE_X_HP 0x8157
+#define GL_IMAGE_TRANSLATE_Y_HP 0x8158
+#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159
+#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A
+#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B
+#define GL_IMAGE_MAG_FILTER_HP 0x815C
+#define GL_IMAGE_MIN_FILTER_HP 0x815D
+#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E
+#define GL_CUBIC_HP 0x815F
+#define GL_AVERAGE_HP 0x8160
+#define GL_IMAGE_TRANSFORM_2D_HP 0x8161
+#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
+#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
+#define GL_OCCLUSION_TEST_HP 0x8165
+#define GL_OCCLUSION_TEST_RESULT_HP 0x8166
+#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167
+#define GL_TEXTURE_POST_SPECULAR_HP 0x8168
+#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169
+#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170
+#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171
+#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172
+#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173
+#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
+#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
+#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176
+#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177
+#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
+#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179
+#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
+#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
+#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
+#define GL_REFERENCE_PLANE_SGIX 0x817D
+#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E
+#define GL_IR_INSTRUMENT1_SGIX 0x817F
+#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
+#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181
+#define GL_LIST_PRIORITY_SGIX 0x8182
+#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183
+#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184
+#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185
+#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186
+#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187
+#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188
+#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189
+#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A
+#define GL_FRAMEZOOM_SGIX 0x818B
+#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C
+#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D
+#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E
+#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F
+#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190
+#define GL_GENERATE_MIPMAP 0x8191
+#define GL_GENERATE_MIPMAP_SGIS 0x8191
+#define GL_GENERATE_MIPMAP_HINT 0x8192
+#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192
+#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194
+#define GL_TEXTURE_DEFORMATION_SGIX 0x8195
+#define GL_DEFORMATIONS_MASK_SGIX 0x8196
+#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197
+#define GL_FOG_OFFSET_SGIX 0x8198
+#define GL_FOG_OFFSET_VALUE_SGIX 0x8199
+#define GL_TEXTURE_COMPARE_SGIX 0x819A
+#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B
+#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C
+#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D
+#define GL_DEPTH_COMPONENT16 0x81A5
+#define GL_DEPTH_COMPONENT16_ARB 0x81A5
+#define GL_DEPTH_COMPONENT16_OES 0x81A5
+#define GL_DEPTH_COMPONENT16_SGIX 0x81A5
+#define GL_DEPTH_COMPONENT24 0x81A6
+#define GL_DEPTH_COMPONENT24_ARB 0x81A6
+#define GL_DEPTH_COMPONENT24_OES 0x81A6
+#define GL_DEPTH_COMPONENT24_SGIX 0x81A6
+#define GL_DEPTH_COMPONENT32 0x81A7
+#define GL_DEPTH_COMPONENT32_ARB 0x81A7
+#define GL_DEPTH_COMPONENT32_OES 0x81A7
+#define GL_DEPTH_COMPONENT32_SGIX 0x81A7
+#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8
+#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9
+#define GL_CULL_VERTEX_EXT 0x81AA
+#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
+#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
+#define GL_IUI_V2F_EXT 0x81AD
+#define GL_IUI_V3F_EXT 0x81AE
+#define GL_IUI_N3F_V2F_EXT 0x81AF
+#define GL_IUI_N3F_V3F_EXT 0x81B0
+#define GL_T2F_IUI_V2F_EXT 0x81B1
+#define GL_T2F_IUI_V3F_EXT 0x81B2
+#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3
+#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4
+#define GL_INDEX_TEST_EXT 0x81B5
+#define GL_INDEX_TEST_FUNC_EXT 0x81B6
+#define GL_INDEX_TEST_REF_EXT 0x81B7
+#define GL_INDEX_MATERIAL_EXT 0x81B8
+#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9
+#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA
+#define GL_YCRCB_422_SGIX 0x81BB
+#define GL_YCRCB_444_SGIX 0x81BC
+#define GL_WRAP_BORDER_SUN 0x81D4
+#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5
+#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6
+#define GL_TRIANGLE_LIST_SUN 0x81D7
+#define GL_REPLACEMENT_CODE_SUN 0x81D8
+#define GL_GLOBAL_ALPHA_SUN 0x81D9
+#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA
+#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF
+#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0
+#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1
+#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2
+#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3
+#define GL_EYE_POINT_SGIS 0x81F4
+#define GL_OBJECT_POINT_SGIS 0x81F5
+#define GL_EYE_LINE_SGIS 0x81F6
+#define GL_OBJECT_LINE_SGIS 0x81F7
+#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
+#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8
+#define GL_SINGLE_COLOR 0x81F9
+#define GL_SINGLE_COLOR_EXT 0x81F9
+#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
+#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
+#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB
+#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200
+#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
+#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210
+#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
+#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211
+#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
+#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
+#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
+#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
+#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
+#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
+#define GL_FRAMEBUFFER_DEFAULT 0x8218
+#define GL_FRAMEBUFFER_UNDEFINED 0x8219
+#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219
+#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A
+#define GL_MAJOR_VERSION 0x821B
+#define GL_MINOR_VERSION 0x821C
+#define GL_NUM_EXTENSIONS 0x821D
+#define GL_CONTEXT_FLAGS 0x821E
+#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F
+#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F
+#define GL_BUFFER_STORAGE_FLAGS 0x8220
+#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221
+#define GL_INDEX 0x8222
+#define GL_COMPRESSED_RED 0x8225
+#define GL_COMPRESSED_RG 0x8226
+#define GL_RG 0x8227
+#define GL_RG_EXT 0x8227
+#define GL_RG_INTEGER 0x8228
+#define GL_R8 0x8229
+#define GL_R8_EXT 0x8229
+#define GL_R16 0x822A
+#define GL_R16_EXT 0x822A
+#define GL_RG8 0x822B
+#define GL_RG8_EXT 0x822B
+#define GL_RG16 0x822C
+#define GL_RG16_EXT 0x822C
+#define GL_R16F 0x822D
+#define GL_R16F_EXT 0x822D
+#define GL_R32F 0x822E
+#define GL_R32F_EXT 0x822E
+#define GL_RG16F 0x822F
+#define GL_RG16F_EXT 0x822F
+#define GL_RG32F 0x8230
+#define GL_RG32F_EXT 0x8230
+#define GL_R8I 0x8231
+#define GL_R8UI 0x8232
+#define GL_R16I 0x8233
+#define GL_R16UI 0x8234
+#define GL_R32I 0x8235
+#define GL_R32UI 0x8236
+#define GL_RG8I 0x8237
+#define GL_RG8UI 0x8238
+#define GL_RG16I 0x8239
+#define GL_RG16UI 0x823A
+#define GL_RG32I 0x823B
+#define GL_RG32UI 0x823C
+#define GL_SYNC_CL_EVENT_ARB 0x8240
+#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241
+#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
+#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
+#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242
+#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
+#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
+#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243
+#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
+#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
+#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244
+#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
+#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
+#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245
+#define GL_DEBUG_SOURCE_API 0x8246
+#define GL_DEBUG_SOURCE_API_ARB 0x8246
+#define GL_DEBUG_SOURCE_API_KHR 0x8246
+#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
+#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
+#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247
+#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
+#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
+#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248
+#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
+#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
+#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249
+#define GL_DEBUG_SOURCE_APPLICATION 0x824A
+#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
+#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A
+#define GL_DEBUG_SOURCE_OTHER 0x824B
+#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B
+#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B
+#define GL_DEBUG_TYPE_ERROR 0x824C
+#define GL_DEBUG_TYPE_ERROR_ARB 0x824C
+#define GL_DEBUG_TYPE_ERROR_KHR 0x824C
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E
+#define GL_DEBUG_TYPE_PORTABILITY 0x824F
+#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
+#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F
+#define GL_DEBUG_TYPE_PERFORMANCE 0x8250
+#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
+#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250
+#define GL_DEBUG_TYPE_OTHER 0x8251
+#define GL_DEBUG_TYPE_OTHER_ARB 0x8251
+#define GL_DEBUG_TYPE_OTHER_KHR 0x8251
+#define GL_LOSE_CONTEXT_ON_RESET 0x8252
+#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252
+#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252
+#define GL_GUILTY_CONTEXT_RESET 0x8253
+#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253
+#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253
+#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253
+#define GL_INNOCENT_CONTEXT_RESET 0x8254
+#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254
+#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254
+#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254
+#define GL_UNKNOWN_CONTEXT_RESET 0x8255
+#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255
+#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255
+#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255
+#define GL_RESET_NOTIFICATION_STRATEGY 0x8256
+#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256
+#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256
+#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
+#define GL_PROGRAM_SEPARABLE 0x8258
+#define GL_PROGRAM_SEPARABLE_EXT 0x8258
+#define GL_ACTIVE_PROGRAM 0x8259
+#define GL_PROGRAM_PIPELINE_BINDING 0x825A
+#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A
+#define GL_MAX_VIEWPORTS 0x825B
+#define GL_MAX_VIEWPORTS_NV 0x825B
+#define GL_MAX_VIEWPORTS_OES 0x825B
+#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C
+#define GL_VIEWPORT_SUBPIXEL_BITS_EXT 0x825C
+#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C
+#define GL_VIEWPORT_SUBPIXEL_BITS_OES 0x825C
+#define GL_VIEWPORT_BOUNDS_RANGE 0x825D
+#define GL_VIEWPORT_BOUNDS_RANGE_EXT 0x825D
+#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D
+#define GL_VIEWPORT_BOUNDS_RANGE_OES 0x825D
+#define GL_LAYER_PROVOKING_VERTEX 0x825E
+#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E
+#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E
+#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
+#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_EXT 0x825F
+#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F
+#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES 0x825F
+#define GL_UNDEFINED_VERTEX 0x8260
+#define GL_UNDEFINED_VERTEX_EXT 0x8260
+#define GL_UNDEFINED_VERTEX_OES 0x8260
+#define GL_NO_RESET_NOTIFICATION 0x8261
+#define GL_NO_RESET_NOTIFICATION_ARB 0x8261
+#define GL_NO_RESET_NOTIFICATION_EXT 0x8261
+#define GL_NO_RESET_NOTIFICATION_KHR 0x8261
+#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
+#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
+#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
+#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265
+#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
+#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267
+#define GL_DEBUG_TYPE_MARKER 0x8268
+#define GL_DEBUG_TYPE_MARKER_KHR 0x8268
+#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
+#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269
+#define GL_DEBUG_TYPE_POP_GROUP 0x826A
+#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A
+#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
+#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B
+#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
+#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C
+#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D
+#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D
+#define GL_MAX_UNIFORM_LOCATIONS 0x826E
+#define GL_INTERNALFORMAT_SUPPORTED 0x826F
+#define GL_INTERNALFORMAT_PREFERRED 0x8270
+#define GL_INTERNALFORMAT_RED_SIZE 0x8271
+#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272
+#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273
+#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274
+#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275
+#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276
+#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277
+#define GL_INTERNALFORMAT_RED_TYPE 0x8278
+#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279
+#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A
+#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B
+#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C
+#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D
+#define GL_MAX_WIDTH 0x827E
+#define GL_MAX_HEIGHT 0x827F
+#define GL_MAX_DEPTH 0x8280
+#define GL_MAX_LAYERS 0x8281
+#define GL_MAX_COMBINED_DIMENSIONS 0x8282
+#define GL_COLOR_COMPONENTS 0x8283
+#define GL_DEPTH_COMPONENTS 0x8284
+#define GL_STENCIL_COMPONENTS 0x8285
+#define GL_COLOR_RENDERABLE 0x8286
+#define GL_DEPTH_RENDERABLE 0x8287
+#define GL_STENCIL_RENDERABLE 0x8288
+#define GL_FRAMEBUFFER_RENDERABLE 0x8289
+#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
+#define GL_FRAMEBUFFER_BLEND 0x828B
+#define GL_READ_PIXELS 0x828C
+#define GL_READ_PIXELS_FORMAT 0x828D
+#define GL_READ_PIXELS_TYPE 0x828E
+#define GL_TEXTURE_IMAGE_FORMAT 0x828F
+#define GL_TEXTURE_IMAGE_TYPE 0x8290
+#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291
+#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292
+#define GL_MIPMAP 0x8293
+#define GL_MANUAL_GENERATE_MIPMAP 0x8294
+#define GL_AUTO_GENERATE_MIPMAP 0x8295
+#define GL_COLOR_ENCODING 0x8296
+#define GL_SRGB_READ 0x8297
+#define GL_SRGB_WRITE 0x8298
+#define GL_SRGB_DECODE_ARB 0x8299
+#define GL_FILTER 0x829A
+#define GL_VERTEX_TEXTURE 0x829B
+#define GL_TESS_CONTROL_TEXTURE 0x829C
+#define GL_TESS_EVALUATION_TEXTURE 0x829D
+#define GL_GEOMETRY_TEXTURE 0x829E
+#define GL_FRAGMENT_TEXTURE 0x829F
+#define GL_COMPUTE_TEXTURE 0x82A0
+#define GL_TEXTURE_SHADOW 0x82A1
+#define GL_TEXTURE_GATHER 0x82A2
+#define GL_TEXTURE_GATHER_SHADOW 0x82A3
+#define GL_SHADER_IMAGE_LOAD 0x82A4
+#define GL_SHADER_IMAGE_STORE 0x82A5
+#define GL_SHADER_IMAGE_ATOMIC 0x82A6
+#define GL_IMAGE_TEXEL_SIZE 0x82A7
+#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8
+#define GL_IMAGE_PIXEL_FORMAT 0x82A9
+#define GL_IMAGE_PIXEL_TYPE 0x82AA
+#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
+#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
+#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
+#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
+#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
+#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
+#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3
+#define GL_CLEAR_BUFFER 0x82B4
+#define GL_TEXTURE_VIEW 0x82B5
+#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6
+#define GL_FULL_SUPPORT 0x82B7
+#define GL_CAVEAT_SUPPORT 0x82B8
+#define GL_IMAGE_CLASS_4_X_32 0x82B9
+#define GL_IMAGE_CLASS_2_X_32 0x82BA
+#define GL_IMAGE_CLASS_1_X_32 0x82BB
+#define GL_IMAGE_CLASS_4_X_16 0x82BC
+#define GL_IMAGE_CLASS_2_X_16 0x82BD
+#define GL_IMAGE_CLASS_1_X_16 0x82BE
+#define GL_IMAGE_CLASS_4_X_8 0x82BF
+#define GL_IMAGE_CLASS_2_X_8 0x82C0
+#define GL_IMAGE_CLASS_1_X_8 0x82C1
+#define GL_IMAGE_CLASS_11_11_10 0x82C2
+#define GL_IMAGE_CLASS_10_10_10_2 0x82C3
+#define GL_VIEW_CLASS_128_BITS 0x82C4
+#define GL_VIEW_CLASS_96_BITS 0x82C5
+#define GL_VIEW_CLASS_64_BITS 0x82C6
+#define GL_VIEW_CLASS_48_BITS 0x82C7
+#define GL_VIEW_CLASS_32_BITS 0x82C8
+#define GL_VIEW_CLASS_24_BITS 0x82C9
+#define GL_VIEW_CLASS_16_BITS 0x82CA
+#define GL_VIEW_CLASS_8_BITS 0x82CB
+#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC
+#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD
+#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE
+#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF
+#define GL_VIEW_CLASS_RGTC1_RED 0x82D0
+#define GL_VIEW_CLASS_RGTC2_RG 0x82D1
+#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2
+#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3
+#define GL_VERTEX_ATTRIB_BINDING 0x82D4
+#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5
+#define GL_VERTEX_BINDING_DIVISOR 0x82D6
+#define GL_VERTEX_BINDING_OFFSET 0x82D7
+#define GL_VERTEX_BINDING_STRIDE 0x82D8
+#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
+#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
+#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB
+#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB
+#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB
+#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC
+#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC
+#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC
+#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD
+#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD
+#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD
+#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE
+#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE
+#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE
+#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+#define GL_BUFFER 0x82E0
+#define GL_BUFFER_KHR 0x82E0
+#define GL_SHADER 0x82E1
+#define GL_SHADER_KHR 0x82E1
+#define GL_PROGRAM 0x82E2
+#define GL_PROGRAM_KHR 0x82E2
+#define GL_QUERY 0x82E3
+#define GL_QUERY_KHR 0x82E3
+#define GL_PROGRAM_PIPELINE 0x82E4
+#define GL_PROGRAM_PIPELINE_KHR 0x82E4
+#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5
+#define GL_SAMPLER 0x82E6
+#define GL_SAMPLER_KHR 0x82E6
+#define GL_DISPLAY_LIST 0x82E7
+#define GL_MAX_LABEL_LENGTH 0x82E8
+#define GL_MAX_LABEL_LENGTH_KHR 0x82E8
+#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9
+#define GL_QUERY_TARGET 0x82EA
+#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC
+#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC
+#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED
+#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED
+#define GL_VERTICES_SUBMITTED 0x82EE
+#define GL_VERTICES_SUBMITTED_ARB 0x82EE
+#define GL_PRIMITIVES_SUBMITTED 0x82EF
+#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF
+#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0
+#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0
+#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1
+#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1
+#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2
+#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2
+#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3
+#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3
+#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4
+#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4
+#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5
+#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5
+#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6
+#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6
+#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7
+#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7
+#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8
+#define GL_MAX_CULL_DISTANCES 0x82F9
+#define GL_MAX_CULL_DISTANCES_EXT 0x82F9
+#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA
+#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA
+#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB
+#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB
+#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
+#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC
+#define GL_ROBUST_GPU_TIMEOUT_MS_KHR 0x82FD
+#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310
+#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311
+#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312
+#define GL_FRAGMENTS_INSTRUMENT_SGIX 0x8313
+#define GL_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX 0x8314
+#define GL_FRAGMENTS_INSTRUMENT_MAX_SGIX 0x8315
+#define GL_CONVOLUTION_HINT_SGIX 0x8316
+#define GL_YCRCB_SGIX 0x8318
+#define GL_YCRCBA_SGIX 0x8319
+#define GL_UNPACK_COMPRESSED_SIZE_SGIX 0x831A
+#define GL_PACK_MAX_COMPRESSED_SIZE_SGIX 0x831B
+#define GL_PACK_COMPRESSED_SIZE_SGIX 0x831C
+#define GL_SLIM8U_SGIX 0x831D
+#define GL_SLIM10U_SGIX 0x831E
+#define GL_SLIM12S_SGIX 0x831F
+#define GL_ALPHA_MIN_SGIX 0x8320
+#define GL_ALPHA_MAX_SGIX 0x8321
+#define GL_SCALEBIAS_HINT_SGIX 0x8322
+#define GL_ASYNC_MARKER_SGIX 0x8329
+#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B
+#define GL_ASYNC_HISTOGRAM_SGIX 0x832C
+#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D
+#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330
+#define GL_PIXEL_MAG_FILTER_EXT 0x8331
+#define GL_PIXEL_MIN_FILTER_EXT 0x8332
+#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333
+#define GL_CUBIC_EXT 0x8334
+#define GL_AVERAGE_EXT 0x8335
+#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
+#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
+#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338
+#define GL_FRAGMENT_MATERIAL_EXT 0x8349
+#define GL_FRAGMENT_NORMAL_EXT 0x834A
+#define GL_FRAGMENT_COLOR_EXT 0x834C
+#define GL_ATTENUATION_EXT 0x834D
+#define GL_SHADOW_ATTENUATION_EXT 0x834E
+#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F
+#define GL_TEXTURE_LIGHT_EXT 0x8350
+#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351
+#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
+#define GL_PIXEL_TEXTURE_SGIS 0x8353
+#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
+#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
+#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356
+#define GL_LINE_QUALITY_HINT_SGIX 0x835B
+#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C
+#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D
+#define GL_ASYNC_READ_PIXELS_SGIX 0x835E
+#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F
+#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360
+#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361
+#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
+#define GL_UNSIGNED_BYTE_2_3_3_REV_EXT 0x8362
+#define GL_UNSIGNED_SHORT_5_6_5 0x8363
+#define GL_UNSIGNED_SHORT_5_6_5_EXT 0x8363
+#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
+#define GL_UNSIGNED_SHORT_5_6_5_REV_EXT 0x8364
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366
+#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
+#define GL_UNSIGNED_INT_8_8_8_8_REV_EXT 0x8367
+#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
+#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368
+#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369
+#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A
+#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B
+#define GL_MIRRORED_REPEAT 0x8370
+#define GL_MIRRORED_REPEAT_ARB 0x8370
+#define GL_MIRRORED_REPEAT_IBM 0x8370
+#define GL_MIRRORED_REPEAT_OES 0x8370
+#define GL_RGB_S3TC 0x83A0
+#define GL_RGB4_S3TC 0x83A1
+#define GL_RGBA_S3TC 0x83A2
+#define GL_RGBA4_S3TC 0x83A3
+#define GL_RGBA_DXT5_S3TC 0x83A4
+#define GL_RGBA4_DXT5_S3TC 0x83A5
+#define GL_VERTEX_PRECLIP_SGIX 0x83EE
+#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
+#define GL_PARALLEL_ARRAYS_INTEL 0x83F4
+#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
+#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
+#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
+#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
+#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
+#define GL_PERFQUERY_FLUSH_INTEL 0x83FA
+#define GL_PERFQUERY_WAIT_INTEL 0x83FB
+#define GL_BLACKHOLE_RENDER_INTEL 0x83FC
+#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
+#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF
+#define GL_FRAGMENT_LIGHTING_SGIX 0x8400
+#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401
+#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
+#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
+#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404
+#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405
+#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406
+#define GL_LIGHT_ENV_MODE_SGIX 0x8407
+#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
+#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
+#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
+#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
+#define GL_FRAGMENT_LIGHT0_SGIX 0x840C
+#define GL_FRAGMENT_LIGHT1_SGIX 0x840D
+#define GL_FRAGMENT_LIGHT2_SGIX 0x840E
+#define GL_FRAGMENT_LIGHT3_SGIX 0x840F
+#define GL_FRAGMENT_LIGHT4_SGIX 0x8410
+#define GL_FRAGMENT_LIGHT5_SGIX 0x8411
+#define GL_FRAGMENT_LIGHT6_SGIX 0x8412
+#define GL_FRAGMENT_LIGHT7_SGIX 0x8413
+#define GL_PACK_RESAMPLE_SGIX 0x842E
+#define GL_UNPACK_RESAMPLE_SGIX 0x842F
+#define GL_RESAMPLE_DECIMATE_SGIX 0x8430
+#define GL_RESAMPLE_REPLICATE_SGIX 0x8433
+#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434
+#define GL_TANGENT_ARRAY_EXT 0x8439
+#define GL_BINORMAL_ARRAY_EXT 0x843A
+#define GL_CURRENT_TANGENT_EXT 0x843B
+#define GL_CURRENT_BINORMAL_EXT 0x843C
+#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E
+#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F
+#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440
+#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441
+#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442
+#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443
+#define GL_MAP1_TANGENT_EXT 0x8444
+#define GL_MAP2_TANGENT_EXT 0x8445
+#define GL_MAP1_BINORMAL_EXT 0x8446
+#define GL_MAP2_BINORMAL_EXT 0x8447
+#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D
+#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E
+#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F
+#define GL_FOG_COORDINATE_SOURCE 0x8450
+#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450
+#define GL_FOG_COORD_SRC 0x8450
+#define GL_FOG_COORD 0x8451
+#define GL_FOG_COORDINATE 0x8451
+#define GL_FOG_COORDINATE_EXT 0x8451
+#define GL_FRAGMENT_DEPTH 0x8452
+#define GL_FRAGMENT_DEPTH_EXT 0x8452
+#define GL_CURRENT_FOG_COORD 0x8453
+#define GL_CURRENT_FOG_COORDINATE 0x8453
+#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453
+#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454
+#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
+#define GL_FOG_COORD_ARRAY_TYPE 0x8454
+#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455
+#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
+#define GL_FOG_COORD_ARRAY_STRIDE 0x8455
+#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456
+#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
+#define GL_FOG_COORD_ARRAY_POINTER 0x8456
+#define GL_FOG_COORDINATE_ARRAY 0x8457
+#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457
+#define GL_FOG_COORD_ARRAY 0x8457
+#define GL_COLOR_SUM 0x8458
+#define GL_COLOR_SUM_ARB 0x8458
+#define GL_COLOR_SUM_EXT 0x8458
+#define GL_CURRENT_SECONDARY_COLOR 0x8459
+#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459
+#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A
+#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
+#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B
+#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
+#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D
+#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
+#define GL_SECONDARY_COLOR_ARRAY 0x845E
+#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E
+#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
+#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
+#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
+#define GL_SCREEN_COORDINATES_REND 0x8490
+#define GL_INVERTED_SCREEN_W_REND 0x8491
+#define GL_TEXTURE0 0x84C0
+#define GL_TEXTURE0_ARB 0x84C0
+#define GL_TEXTURE1 0x84C1
+#define GL_TEXTURE1_ARB 0x84C1
+#define GL_TEXTURE2 0x84C2
+#define GL_TEXTURE2_ARB 0x84C2
+#define GL_TEXTURE3 0x84C3
+#define GL_TEXTURE3_ARB 0x84C3
+#define GL_TEXTURE4 0x84C4
+#define GL_TEXTURE4_ARB 0x84C4
+#define GL_TEXTURE5 0x84C5
+#define GL_TEXTURE5_ARB 0x84C5
+#define GL_TEXTURE6 0x84C6
+#define GL_TEXTURE6_ARB 0x84C6
+#define GL_TEXTURE7 0x84C7
+#define GL_TEXTURE7_ARB 0x84C7
+#define GL_TEXTURE8 0x84C8
+#define GL_TEXTURE8_ARB 0x84C8
+#define GL_TEXTURE9 0x84C9
+#define GL_TEXTURE9_ARB 0x84C9
+#define GL_TEXTURE10 0x84CA
+#define GL_TEXTURE10_ARB 0x84CA
+#define GL_TEXTURE11 0x84CB
+#define GL_TEXTURE11_ARB 0x84CB
+#define GL_TEXTURE12 0x84CC
+#define GL_TEXTURE12_ARB 0x84CC
+#define GL_TEXTURE13 0x84CD
+#define GL_TEXTURE13_ARB 0x84CD
+#define GL_TEXTURE14 0x84CE
+#define GL_TEXTURE14_ARB 0x84CE
+#define GL_TEXTURE15 0x84CF
+#define GL_TEXTURE15_ARB 0x84CF
+#define GL_TEXTURE16 0x84D0
+#define GL_TEXTURE16_ARB 0x84D0
+#define GL_TEXTURE17 0x84D1
+#define GL_TEXTURE17_ARB 0x84D1
+#define GL_TEXTURE18 0x84D2
+#define GL_TEXTURE18_ARB 0x84D2
+#define GL_TEXTURE19 0x84D3
+#define GL_TEXTURE19_ARB 0x84D3
+#define GL_TEXTURE20 0x84D4
+#define GL_TEXTURE20_ARB 0x84D4
+#define GL_TEXTURE21 0x84D5
+#define GL_TEXTURE21_ARB 0x84D5
+#define GL_TEXTURE22 0x84D6
+#define GL_TEXTURE22_ARB 0x84D6
+#define GL_TEXTURE23 0x84D7
+#define GL_TEXTURE23_ARB 0x84D7
+#define GL_TEXTURE24 0x84D8
+#define GL_TEXTURE24_ARB 0x84D8
+#define GL_TEXTURE25 0x84D9
+#define GL_TEXTURE25_ARB 0x84D9
+#define GL_TEXTURE26 0x84DA
+#define GL_TEXTURE26_ARB 0x84DA
+#define GL_TEXTURE27 0x84DB
+#define GL_TEXTURE27_ARB 0x84DB
+#define GL_TEXTURE28 0x84DC
+#define GL_TEXTURE28_ARB 0x84DC
+#define GL_TEXTURE29 0x84DD
+#define GL_TEXTURE29_ARB 0x84DD
+#define GL_TEXTURE30 0x84DE
+#define GL_TEXTURE30_ARB 0x84DE
+#define GL_TEXTURE31 0x84DF
+#define GL_TEXTURE31_ARB 0x84DF
+#define GL_ACTIVE_TEXTURE 0x84E0
+#define GL_ACTIVE_TEXTURE_ARB 0x84E0
+#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
+#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
+#define GL_MAX_TEXTURE_UNITS 0x84E2
+#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
+#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3
+#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
+#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
+#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4
+#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
+#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
+#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
+#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5
+#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
+#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6
+#define GL_SUBTRACT 0x84E7
+#define GL_SUBTRACT_ARB 0x84E7
+#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
+#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
+#define GL_MAX_RENDERBUFFER_SIZE_OES 0x84E8
+#define GL_COMPRESSED_ALPHA 0x84E9
+#define GL_COMPRESSED_ALPHA_ARB 0x84E9
+#define GL_COMPRESSED_LUMINANCE 0x84EA
+#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA
+#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
+#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
+#define GL_COMPRESSED_INTENSITY 0x84EC
+#define GL_COMPRESSED_INTENSITY_ARB 0x84EC
+#define GL_COMPRESSED_RGB 0x84ED
+#define GL_COMPRESSED_RGB_ARB 0x84ED
+#define GL_COMPRESSED_RGBA 0x84EE
+#define GL_COMPRESSED_RGBA_ARB 0x84EE
+#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
+#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
+#define GL_ALL_COMPLETED_NV 0x84F2
+#define GL_FENCE_STATUS_NV 0x84F3
+#define GL_FENCE_CONDITION_NV 0x84F4
+#define GL_TEXTURE_RECTANGLE 0x84F5
+#define GL_TEXTURE_RECTANGLE_ARB 0x84F5
+#define GL_TEXTURE_RECTANGLE_NV 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6
+#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
+#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7
+#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
+#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8
+#define GL_DEPTH_STENCIL 0x84F9
+#define GL_DEPTH_STENCIL_EXT 0x84F9
+#define GL_DEPTH_STENCIL_NV 0x84F9
+#define GL_DEPTH_STENCIL_OES 0x84F9
+#define GL_UNSIGNED_INT_24_8 0x84FA
+#define GL_UNSIGNED_INT_24_8_EXT 0x84FA
+#define GL_UNSIGNED_INT_24_8_NV 0x84FA
+#define GL_UNSIGNED_INT_24_8_OES 0x84FA
+#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
+#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD
+#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE
+#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
+#define GL_TEXTURE_FILTER_CONTROL 0x8500
+#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500
+#define GL_TEXTURE_LOD_BIAS 0x8501
+#define GL_TEXTURE_LOD_BIAS_EXT 0x8501
+#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502
+#define GL_COMBINE4_NV 0x8503
+#define GL_MAX_SHININESS_NV 0x8504
+#define GL_MAX_SPOT_EXPONENT_NV 0x8505
+#define GL_MODELVIEW1_MATRIX_EXT 0x8506
+#define GL_INCR_WRAP 0x8507
+#define GL_INCR_WRAP_EXT 0x8507
+#define GL_INCR_WRAP_OES 0x8507
+#define GL_DECR_WRAP 0x8508
+#define GL_DECR_WRAP_EXT 0x8508
+#define GL_DECR_WRAP_OES 0x8508
+#define GL_VERTEX_WEIGHTING_EXT 0x8509
+#define GL_MODELVIEW1_ARB 0x850A
+#define GL_MODELVIEW1_EXT 0x850A
+#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B
+#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C
+#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D
+#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E
+#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
+#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
+#define GL_NORMAL_MAP 0x8511
+#define GL_NORMAL_MAP_ARB 0x8511
+#define GL_NORMAL_MAP_EXT 0x8511
+#define GL_NORMAL_MAP_NV 0x8511
+#define GL_NORMAL_MAP_OES 0x8511
+#define GL_REFLECTION_MAP 0x8512
+#define GL_REFLECTION_MAP_ARB 0x8512
+#define GL_REFLECTION_MAP_EXT 0x8512
+#define GL_REFLECTION_MAP_NV 0x8512
+#define GL_REFLECTION_MAP_OES 0x8512
+#define GL_TEXTURE_CUBE_MAP 0x8513
+#define GL_TEXTURE_CUBE_MAP_ARB 0x8513
+#define GL_TEXTURE_CUBE_MAP_EXT 0x8513
+#define GL_TEXTURE_CUBE_MAP_OES 0x8513
+#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514
+#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514
+#define GL_TEXTURE_BINDING_CUBE_MAP_OES 0x8514
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES 0x8515
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES 0x8516
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES 0x8517
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES 0x8518
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES 0x8519
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES 0x851A
+#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
+#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES 0x851C
+#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D
+#define GL_VERTEX_ARRAY_RANGE_NV 0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
+#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F
+#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
+#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
+#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
+#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
+#define GL_REGISTER_COMBINERS_NV 0x8522
+#define GL_VARIABLE_A_NV 0x8523
+#define GL_VARIABLE_B_NV 0x8524
+#define GL_VARIABLE_C_NV 0x8525
+#define GL_VARIABLE_D_NV 0x8526
+#define GL_VARIABLE_E_NV 0x8527
+#define GL_VARIABLE_F_NV 0x8528
+#define GL_VARIABLE_G_NV 0x8529
+#define GL_CONSTANT_COLOR0_NV 0x852A
+#define GL_CONSTANT_COLOR1_NV 0x852B
+#define GL_PRIMARY_COLOR_NV 0x852C
+#define GL_SECONDARY_COLOR_NV 0x852D
+#define GL_SPARE0_NV 0x852E
+#define GL_SPARE1_NV 0x852F
+#define GL_DISCARD_NV 0x8530
+#define GL_E_TIMES_F_NV 0x8531
+#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
+#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
+#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534
+#define GL_PER_STAGE_CONSTANTS_NV 0x8535
+#define GL_UNSIGNED_IDENTITY_NV 0x8536
+#define GL_UNSIGNED_INVERT_NV 0x8537
+#define GL_EXPAND_NORMAL_NV 0x8538
+#define GL_EXPAND_NEGATE_NV 0x8539
+#define GL_HALF_BIAS_NORMAL_NV 0x853A
+#define GL_HALF_BIAS_NEGATE_NV 0x853B
+#define GL_SIGNED_IDENTITY_NV 0x853C
+#define GL_SIGNED_NEGATE_NV 0x853D
+#define GL_SCALE_BY_TWO_NV 0x853E
+#define GL_SCALE_BY_FOUR_NV 0x853F
+#define GL_SCALE_BY_ONE_HALF_NV 0x8540
+#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
+#define GL_COMBINER_INPUT_NV 0x8542
+#define GL_COMBINER_MAPPING_NV 0x8543
+#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544
+#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
+#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
+#define GL_COMBINER_MUX_SUM_NV 0x8547
+#define GL_COMBINER_SCALE_NV 0x8548
+#define GL_COMBINER_BIAS_NV 0x8549
+#define GL_COMBINER_AB_OUTPUT_NV 0x854A
+#define GL_COMBINER_CD_OUTPUT_NV 0x854B
+#define GL_COMBINER_SUM_OUTPUT_NV 0x854C
+#define GL_MAX_GENERAL_COMBINERS_NV 0x854D
+#define GL_NUM_GENERAL_COMBINERS_NV 0x854E
+#define GL_COLOR_SUM_CLAMP_NV 0x854F
+#define GL_COMBINER0_NV 0x8550
+#define GL_COMBINER1_NV 0x8551
+#define GL_COMBINER2_NV 0x8552
+#define GL_COMBINER3_NV 0x8553
+#define GL_COMBINER4_NV 0x8554
+#define GL_COMBINER5_NV 0x8555
+#define GL_COMBINER6_NV 0x8556
+#define GL_COMBINER7_NV 0x8557
+#define GL_PRIMITIVE_RESTART_NV 0x8558
+#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559
+#define GL_FOG_DISTANCE_MODE_NV 0x855A
+#define GL_EYE_RADIAL_NV 0x855B
+#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C
+#define GL_EMBOSS_LIGHT_NV 0x855D
+#define GL_EMBOSS_CONSTANT_NV 0x855E
+#define GL_EMBOSS_MAP_NV 0x855F
+#define GL_RED_MIN_CLAMP_INGR 0x8560
+#define GL_GREEN_MIN_CLAMP_INGR 0x8561
+#define GL_BLUE_MIN_CLAMP_INGR 0x8562
+#define GL_ALPHA_MIN_CLAMP_INGR 0x8563
+#define GL_RED_MAX_CLAMP_INGR 0x8564
+#define GL_GREEN_MAX_CLAMP_INGR 0x8565
+#define GL_BLUE_MAX_CLAMP_INGR 0x8566
+#define GL_ALPHA_MAX_CLAMP_INGR 0x8567
+#define GL_INTERLACE_READ_INGR 0x8568
+#define GL_COMBINE 0x8570
+#define GL_COMBINE_ARB 0x8570
+#define GL_COMBINE_EXT 0x8570
+#define GL_COMBINE_RGB 0x8571
+#define GL_COMBINE_RGB_ARB 0x8571
+#define GL_COMBINE_RGB_EXT 0x8571
+#define GL_COMBINE_ALPHA 0x8572
+#define GL_COMBINE_ALPHA_ARB 0x8572
+#define GL_COMBINE_ALPHA_EXT 0x8572
+#define GL_RGB_SCALE 0x8573
+#define GL_RGB_SCALE_ARB 0x8573
+#define GL_RGB_SCALE_EXT 0x8573
+#define GL_ADD_SIGNED 0x8574
+#define GL_ADD_SIGNED_ARB 0x8574
+#define GL_ADD_SIGNED_EXT 0x8574
+#define GL_INTERPOLATE 0x8575
+#define GL_INTERPOLATE_ARB 0x8575
+#define GL_INTERPOLATE_EXT 0x8575
+#define GL_CONSTANT 0x8576
+#define GL_CONSTANT_ARB 0x8576
+#define GL_CONSTANT_EXT 0x8576
+#define GL_CONSTANT_NV 0x8576
+#define GL_PRIMARY_COLOR 0x8577
+#define GL_PRIMARY_COLOR_ARB 0x8577
+#define GL_PRIMARY_COLOR_EXT 0x8577
+#define GL_PREVIOUS 0x8578
+#define GL_PREVIOUS_ARB 0x8578
+#define GL_PREVIOUS_EXT 0x8578
+#define GL_SOURCE0_RGB 0x8580
+#define GL_SOURCE0_RGB_ARB 0x8580
+#define GL_SOURCE0_RGB_EXT 0x8580
+#define GL_SRC0_RGB 0x8580
+#define GL_SOURCE1_RGB 0x8581
+#define GL_SOURCE1_RGB_ARB 0x8581
+#define GL_SOURCE1_RGB_EXT 0x8581
+#define GL_SRC1_RGB 0x8581
+#define GL_SOURCE2_RGB 0x8582
+#define GL_SOURCE2_RGB_ARB 0x8582
+#define GL_SOURCE2_RGB_EXT 0x8582
+#define GL_SRC2_RGB 0x8582
+#define GL_SOURCE3_RGB_NV 0x8583
+#define GL_SOURCE0_ALPHA 0x8588
+#define GL_SOURCE0_ALPHA_ARB 0x8588
+#define GL_SOURCE0_ALPHA_EXT 0x8588
+#define GL_SRC0_ALPHA 0x8588
+#define GL_SOURCE1_ALPHA 0x8589
+#define GL_SOURCE1_ALPHA_ARB 0x8589
+#define GL_SOURCE1_ALPHA_EXT 0x8589
+#define GL_SRC1_ALPHA 0x8589
+#define GL_SRC1_ALPHA_EXT 0x8589
+#define GL_SOURCE2_ALPHA 0x858A
+#define GL_SOURCE2_ALPHA_ARB 0x858A
+#define GL_SOURCE2_ALPHA_EXT 0x858A
+#define GL_SRC2_ALPHA 0x858A
+#define GL_SOURCE3_ALPHA_NV 0x858B
+#define GL_OPERAND0_RGB 0x8590
+#define GL_OPERAND0_RGB_ARB 0x8590
+#define GL_OPERAND0_RGB_EXT 0x8590
+#define GL_OPERAND1_RGB 0x8591
+#define GL_OPERAND1_RGB_ARB 0x8591
+#define GL_OPERAND1_RGB_EXT 0x8591
+#define GL_OPERAND2_RGB 0x8592
+#define GL_OPERAND2_RGB_ARB 0x8592
+#define GL_OPERAND2_RGB_EXT 0x8592
+#define GL_OPERAND3_RGB_NV 0x8593
+#define GL_OPERAND0_ALPHA 0x8598
+#define GL_OPERAND0_ALPHA_ARB 0x8598
+#define GL_OPERAND0_ALPHA_EXT 0x8598
+#define GL_OPERAND1_ALPHA 0x8599
+#define GL_OPERAND1_ALPHA_ARB 0x8599
+#define GL_OPERAND1_ALPHA_EXT 0x8599
+#define GL_OPERAND2_ALPHA 0x859A
+#define GL_OPERAND2_ALPHA_ARB 0x859A
+#define GL_OPERAND2_ALPHA_EXT 0x859A
+#define GL_OPERAND3_ALPHA_NV 0x859B
+#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0
+#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1
+#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2
+#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3
+#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4
+#define GL_PERTURB_EXT 0x85AE
+#define GL_TEXTURE_NORMAL_EXT 0x85AF
+#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
+#define GL_TRANSFORM_HINT_APPLE 0x85B1
+#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2
+#define GL_BUFFER_OBJECT_APPLE 0x85B3
+#define GL_STORAGE_CLIENT_APPLE 0x85B4
+#define GL_VERTEX_ARRAY_BINDING 0x85B5
+#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5
+#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5
+#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7
+#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8
+#define GL_YCBCR_422_APPLE 0x85B9
+#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
+#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
+#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB
+#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC
+#define GL_STORAGE_PRIVATE_APPLE 0x85BD
+#define GL_STORAGE_CACHED_APPLE 0x85BE
+#define GL_STORAGE_SHARED_APPLE 0x85BF
+#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0
+#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
+#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
+#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
+#define GL_R1UI_V3F_SUN 0x85C4
+#define GL_R1UI_C4UB_V3F_SUN 0x85C5
+#define GL_R1UI_C3F_V3F_SUN 0x85C6
+#define GL_R1UI_N3F_V3F_SUN 0x85C7
+#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8
+#define GL_R1UI_T2F_V3F_SUN 0x85C9
+#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA
+#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB
+#define GL_SLICE_ACCUM_SUN 0x85CC
+#define GL_QUAD_MESH_SUN 0x8614
+#define GL_TRIANGLE_MESH_SUN 0x8615
+#define GL_VERTEX_PROGRAM_ARB 0x8620
+#define GL_VERTEX_PROGRAM_NV 0x8620
+#define GL_VERTEX_STATE_PROGRAM_NV 0x8621
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
+#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
+#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
+#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623
+#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
+#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
+#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
+#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625
+#define GL_CURRENT_ATTRIB_NV 0x8626
+#define GL_CURRENT_VERTEX_ATTRIB 0x8626
+#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626
+#define GL_PROGRAM_LENGTH_ARB 0x8627
+#define GL_PROGRAM_LENGTH_NV 0x8627
+#define GL_PROGRAM_STRING_ARB 0x8628
+#define GL_PROGRAM_STRING_NV 0x8628
+#define GL_MODELVIEW_PROJECTION_NV 0x8629
+#define GL_IDENTITY_NV 0x862A
+#define GL_INVERSE_NV 0x862B
+#define GL_TRANSPOSE_NV 0x862C
+#define GL_INVERSE_TRANSPOSE_NV 0x862D
+#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
+#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
+#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F
+#define GL_MAX_TRACK_MATRICES_NV 0x862F
+#define GL_MATRIX0_NV 0x8630
+#define GL_MATRIX1_NV 0x8631
+#define GL_MATRIX2_NV 0x8632
+#define GL_MATRIX3_NV 0x8633
+#define GL_MATRIX4_NV 0x8634
+#define GL_MATRIX5_NV 0x8635
+#define GL_MATRIX6_NV 0x8636
+#define GL_MATRIX7_NV 0x8637
+#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
+#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640
+#define GL_CURRENT_MATRIX_ARB 0x8641
+#define GL_CURRENT_MATRIX_NV 0x8641
+#define GL_PROGRAM_POINT_SIZE 0x8642
+#define GL_PROGRAM_POINT_SIZE_ARB 0x8642
+#define GL_PROGRAM_POINT_SIZE_EXT 0x8642
+#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
+#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
+#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642
+#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643
+#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643
+#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643
+#define GL_PROGRAM_PARAMETER_NV 0x8644
+#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
+#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
+#define GL_PROGRAM_TARGET_NV 0x8646
+#define GL_PROGRAM_RESIDENT_NV 0x8647
+#define GL_TRACK_MATRIX_NV 0x8648
+#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649
+#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A
+#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B
+#define GL_PROGRAM_ERROR_POSITION_NV 0x864B
+#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C
+#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
+#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
+#define GL_DEPTH_CLAMP 0x864F
+#define GL_DEPTH_CLAMP_EXT 0x864F
+#define GL_DEPTH_CLAMP_NV 0x864F
+#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650
+#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651
+#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652
+#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653
+#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654
+#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655
+#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656
+#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657
+#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658
+#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659
+#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A
+#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B
+#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C
+#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D
+#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E
+#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F
+#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660
+#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661
+#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662
+#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663
+#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664
+#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665
+#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666
+#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667
+#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668
+#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669
+#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A
+#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B
+#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C
+#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D
+#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E
+#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F
+#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670
+#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671
+#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672
+#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673
+#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674
+#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675
+#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676
+#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677
+#define GL_PROGRAM_BINDING_ARB 0x8677
+#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678
+#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679
+#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A
+#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B
+#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C
+#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D
+#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E
+#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
+#define GL_TEXTURE_COMPRESSED 0x86A1
+#define GL_TEXTURE_COMPRESSED_ARB 0x86A1
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
+#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
+#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
+#define GL_MAX_VERTEX_UNITS_ARB 0x86A4
+#define GL_MAX_VERTEX_UNITS_OES 0x86A4
+#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5
+#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6
+#define GL_VERTEX_BLEND_ARB 0x86A7
+#define GL_CURRENT_WEIGHT_ARB 0x86A8
+#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9
+#define GL_WEIGHT_ARRAY_TYPE_OES 0x86A9
+#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA
+#define GL_WEIGHT_ARRAY_STRIDE_OES 0x86AA
+#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB
+#define GL_WEIGHT_ARRAY_SIZE_OES 0x86AB
+#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC
+#define GL_WEIGHT_ARRAY_POINTER_OES 0x86AC
+#define GL_WEIGHT_ARRAY_ARB 0x86AD
+#define GL_WEIGHT_ARRAY_OES 0x86AD
+#define GL_DOT3_RGB 0x86AE
+#define GL_DOT3_RGB_ARB 0x86AE
+#define GL_DOT3_RGBA 0x86AF
+#define GL_DOT3_RGBA_ARB 0x86AF
+#define GL_DOT3_RGBA_IMG 0x86AF
+#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0
+#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1
+#define GL_MULTISAMPLE_3DFX 0x86B2
+#define GL_SAMPLE_BUFFERS_3DFX 0x86B3
+#define GL_SAMPLES_3DFX 0x86B4
+#define GL_EVAL_2D_NV 0x86C0
+#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1
+#define GL_MAP_TESSELLATION_NV 0x86C2
+#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3
+#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4
+#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
+#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6
+#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7
+#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8
+#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9
+#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA
+#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB
+#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC
+#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD
+#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE
+#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF
+#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0
+#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1
+#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2
+#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3
+#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4
+#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5
+#define GL_MAX_MAP_TESSELLATION_NV 0x86D6
+#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7
+#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8
+#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
+#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA
+#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB
+#define GL_DSDT_MAG_INTENSITY_NV 0x86DC
+#define GL_SHADER_CONSISTENT_NV 0x86DD
+#define GL_TEXTURE_SHADER_NV 0x86DE
+#define GL_SHADER_OPERATION_NV 0x86DF
+#define GL_CULL_MODES_NV 0x86E0
+#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1
+#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1
+#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2
+#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2
+#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3
+#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3
+#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4
+#define GL_CONST_EYE_NV 0x86E5
+#define GL_PASS_THROUGH_NV 0x86E6
+#define GL_CULL_FRAGMENT_NV 0x86E7
+#define GL_OFFSET_TEXTURE_2D_NV 0x86E8
+#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9
+#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA
+#define GL_SURFACE_STATE_NV 0x86EB
+#define GL_DOT_PRODUCT_NV 0x86EC
+#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED
+#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE
+#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF
+#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
+#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
+#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
+#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
+#define GL_HILO_NV 0x86F4
+#define GL_DSDT_NV 0x86F5
+#define GL_DSDT_MAG_NV 0x86F6
+#define GL_DSDT_MAG_VIB_NV 0x86F7
+#define GL_HILO16_NV 0x86F8
+#define GL_SIGNED_HILO_NV 0x86F9
+#define GL_SIGNED_HILO16_NV 0x86FA
+#define GL_SIGNED_RGBA_NV 0x86FB
+#define GL_SIGNED_RGBA8_NV 0x86FC
+#define GL_SURFACE_REGISTERED_NV 0x86FD
+#define GL_SIGNED_RGB_NV 0x86FE
+#define GL_SIGNED_RGB8_NV 0x86FF
+#define GL_SURFACE_MAPPED_NV 0x8700
+#define GL_SIGNED_LUMINANCE_NV 0x8701
+#define GL_SIGNED_LUMINANCE8_NV 0x8702
+#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703
+#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704
+#define GL_SIGNED_ALPHA_NV 0x8705
+#define GL_SIGNED_ALPHA8_NV 0x8706
+#define GL_SIGNED_INTENSITY_NV 0x8707
+#define GL_SIGNED_INTENSITY8_NV 0x8708
+#define GL_DSDT8_NV 0x8709
+#define GL_DSDT8_MAG8_NV 0x870A
+#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B
+#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C
+#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
+#define GL_HI_SCALE_NV 0x870E
+#define GL_LO_SCALE_NV 0x870F
+#define GL_DS_SCALE_NV 0x8710
+#define GL_DT_SCALE_NV 0x8711
+#define GL_MAGNITUDE_SCALE_NV 0x8712
+#define GL_VIBRANCE_SCALE_NV 0x8713
+#define GL_HI_BIAS_NV 0x8714
+#define GL_LO_BIAS_NV 0x8715
+#define GL_DS_BIAS_NV 0x8716
+#define GL_DT_BIAS_NV 0x8717
+#define GL_MAGNITUDE_BIAS_NV 0x8718
+#define GL_VIBRANCE_BIAS_NV 0x8719
+#define GL_TEXTURE_BORDER_VALUES_NV 0x871A
+#define GL_TEXTURE_HI_SIZE_NV 0x871B
+#define GL_TEXTURE_LO_SIZE_NV 0x871C
+#define GL_TEXTURE_DS_SIZE_NV 0x871D
+#define GL_TEXTURE_DT_SIZE_NV 0x871E
+#define GL_TEXTURE_MAG_SIZE_NV 0x871F
+#define GL_MODELVIEW2_ARB 0x8722
+#define GL_MODELVIEW3_ARB 0x8723
+#define GL_MODELVIEW4_ARB 0x8724
+#define GL_MODELVIEW5_ARB 0x8725
+#define GL_MODELVIEW6_ARB 0x8726
+#define GL_MODELVIEW7_ARB 0x8727
+#define GL_MODELVIEW8_ARB 0x8728
+#define GL_MODELVIEW9_ARB 0x8729
+#define GL_MODELVIEW10_ARB 0x872A
+#define GL_MODELVIEW11_ARB 0x872B
+#define GL_MODELVIEW12_ARB 0x872C
+#define GL_MODELVIEW13_ARB 0x872D
+#define GL_MODELVIEW14_ARB 0x872E
+#define GL_MODELVIEW15_ARB 0x872F
+#define GL_MODELVIEW16_ARB 0x8730
+#define GL_MODELVIEW17_ARB 0x8731
+#define GL_MODELVIEW18_ARB 0x8732
+#define GL_MODELVIEW19_ARB 0x8733
+#define GL_MODELVIEW20_ARB 0x8734
+#define GL_MODELVIEW21_ARB 0x8735
+#define GL_MODELVIEW22_ARB 0x8736
+#define GL_MODELVIEW23_ARB 0x8737
+#define GL_MODELVIEW24_ARB 0x8738
+#define GL_MODELVIEW25_ARB 0x8739
+#define GL_MODELVIEW26_ARB 0x873A
+#define GL_MODELVIEW27_ARB 0x873B
+#define GL_MODELVIEW28_ARB 0x873C
+#define GL_MODELVIEW29_ARB 0x873D
+#define GL_MODELVIEW30_ARB 0x873E
+#define GL_MODELVIEW31_ARB 0x873F
+#define GL_DOT3_RGB_EXT 0x8740
+#define GL_Z400_BINARY_AMD 0x8740
+#define GL_DOT3_RGBA_EXT 0x8741
+#define GL_PROGRAM_BINARY_LENGTH 0x8741
+#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741
+#define GL_MIRROR_CLAMP_ATI 0x8742
+#define GL_MIRROR_CLAMP_EXT 0x8742
+#define GL_MIRROR_CLAMP_TO_EDGE 0x8743
+#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743
+#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
+#define GL_MODULATE_ADD_ATI 0x8744
+#define GL_MODULATE_SIGNED_ADD_ATI 0x8745
+#define GL_MODULATE_SUBTRACT_ATI 0x8746
+#define GL_SET_AMD 0x874A
+#define GL_REPLACE_VALUE_AMD 0x874B
+#define GL_STENCIL_OP_VALUE_AMD 0x874C
+#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D
+#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E
+#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F
+#define GL_DEPTH_STENCIL_MESA 0x8750
+#define GL_UNSIGNED_INT_24_8_MESA 0x8751
+#define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752
+#define GL_UNSIGNED_SHORT_15_1_MESA 0x8753
+#define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
+#define GL_TRACE_MASK_MESA 0x8755
+#define GL_TRACE_NAME_MESA 0x8756
+#define GL_YCBCR_MESA 0x8757
+#define GL_PACK_INVERT_MESA 0x8758
+#define GL_DEBUG_OBJECT_MESA 0x8759
+#define GL_TEXTURE_1D_STACK_MESAX 0x8759
+#define GL_DEBUG_PRINT_MESA 0x875A
+#define GL_TEXTURE_2D_STACK_MESAX 0x875A
+#define GL_DEBUG_ASSERT_MESA 0x875B
+#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
+#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
+#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
+#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
+#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F
+#define GL_STATIC_ATI 0x8760
+#define GL_DYNAMIC_ATI 0x8761
+#define GL_PRESERVE_ATI 0x8762
+#define GL_DISCARD_ATI 0x8763
+#define GL_BUFFER_SIZE 0x8764
+#define GL_BUFFER_SIZE_ARB 0x8764
+#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764
+#define GL_BUFFER_USAGE 0x8765
+#define GL_BUFFER_USAGE_ARB 0x8765
+#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765
+#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766
+#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767
+#define GL_ELEMENT_ARRAY_ATI 0x8768
+#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769
+#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A
+#define GL_MAX_VERTEX_STREAMS_ATI 0x876B
+#define GL_VERTEX_STREAM0_ATI 0x876C
+#define GL_VERTEX_STREAM1_ATI 0x876D
+#define GL_VERTEX_STREAM2_ATI 0x876E
+#define GL_VERTEX_STREAM3_ATI 0x876F
+#define GL_VERTEX_STREAM4_ATI 0x8770
+#define GL_VERTEX_STREAM5_ATI 0x8771
+#define GL_VERTEX_STREAM6_ATI 0x8772
+#define GL_VERTEX_STREAM7_ATI 0x8773
+#define GL_VERTEX_SOURCE_ATI 0x8774
+#define GL_BUMP_ROT_MATRIX_ATI 0x8775
+#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776
+#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777
+#define GL_BUMP_TEX_UNITS_ATI 0x8778
+#define GL_DUDV_ATI 0x8779
+#define GL_DU8DV8_ATI 0x877A
+#define GL_BUMP_ENVMAP_ATI 0x877B
+#define GL_BUMP_TARGET_ATI 0x877C
+#define GL_VERTEX_SHADER_EXT 0x8780
+#define GL_VERTEX_SHADER_BINDING_EXT 0x8781
+#define GL_OP_INDEX_EXT 0x8782
+#define GL_OP_NEGATE_EXT 0x8783
+#define GL_OP_DOT3_EXT 0x8784
+#define GL_OP_DOT4_EXT 0x8785
+#define GL_OP_MUL_EXT 0x8786
+#define GL_OP_ADD_EXT 0x8787
+#define GL_OP_MADD_EXT 0x8788
+#define GL_OP_FRAC_EXT 0x8789
+#define GL_OP_MAX_EXT 0x878A
+#define GL_OP_MIN_EXT 0x878B
+#define GL_OP_SET_GE_EXT 0x878C
+#define GL_OP_SET_LT_EXT 0x878D
+#define GL_OP_CLAMP_EXT 0x878E
+#define GL_OP_FLOOR_EXT 0x878F
+#define GL_OP_ROUND_EXT 0x8790
+#define GL_OP_EXP_BASE_2_EXT 0x8791
+#define GL_OP_LOG_BASE_2_EXT 0x8792
+#define GL_OP_POWER_EXT 0x8793
+#define GL_OP_RECIP_EXT 0x8794
+#define GL_OP_RECIP_SQRT_EXT 0x8795
+#define GL_OP_SUB_EXT 0x8796
+#define GL_OP_CROSS_PRODUCT_EXT 0x8797
+#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798
+#define GL_OP_MOV_EXT 0x8799
+#define GL_OUTPUT_VERTEX_EXT 0x879A
+#define GL_OUTPUT_COLOR0_EXT 0x879B
+#define GL_OUTPUT_COLOR1_EXT 0x879C
+#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D
+#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E
+#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F
+#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0
+#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1
+#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2
+#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3
+#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4
+#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5
+#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6
+#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7
+#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8
+#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9
+#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA
+#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB
+#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC
+#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD
+#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE
+#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF
+#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0
+#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1
+#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2
+#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3
+#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4
+#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5
+#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6
+#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7
+#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8
+#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9
+#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA
+#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB
+#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC
+#define GL_OUTPUT_FOG_EXT 0x87BD
+#define GL_SCALAR_EXT 0x87BE
+#define GL_VECTOR_EXT 0x87BF
+#define GL_MATRIX_EXT 0x87C0
+#define GL_VARIANT_EXT 0x87C1
+#define GL_INVARIANT_EXT 0x87C2
+#define GL_LOCAL_CONSTANT_EXT 0x87C3
+#define GL_LOCAL_EXT 0x87C4
+#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
+#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
+#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
+#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
+#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD
+#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
+#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
+#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0
+#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1
+#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
+#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3
+#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4
+#define GL_X_EXT 0x87D5
+#define GL_Y_EXT 0x87D6
+#define GL_Z_EXT 0x87D7
+#define GL_W_EXT 0x87D8
+#define GL_NEGATIVE_X_EXT 0x87D9
+#define GL_NEGATIVE_Y_EXT 0x87DA
+#define GL_NEGATIVE_Z_EXT 0x87DB
+#define GL_NEGATIVE_W_EXT 0x87DC
+#define GL_ZERO_EXT 0x87DD
+#define GL_ONE_EXT 0x87DE
+#define GL_NEGATIVE_ONE_EXT 0x87DF
+#define GL_NORMALIZED_RANGE_EXT 0x87E0
+#define GL_FULL_RANGE_EXT 0x87E1
+#define GL_CURRENT_VERTEX_EXT 0x87E2
+#define GL_MVP_MATRIX_EXT 0x87E3
+#define GL_VARIANT_VALUE_EXT 0x87E4
+#define GL_VARIANT_DATATYPE_EXT 0x87E5
+#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6
+#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7
+#define GL_VARIANT_ARRAY_EXT 0x87E8
+#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9
+#define GL_INVARIANT_VALUE_EXT 0x87EA
+#define GL_INVARIANT_DATATYPE_EXT 0x87EB
+#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC
+#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED
+#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
+#define GL_PN_TRIANGLES_ATI 0x87F0
+#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
+#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2
+#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3
+#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
+#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
+#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
+#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
+#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
+#define GL_3DC_X_AMD 0x87F9
+#define GL_3DC_XY_AMD 0x87FA
+#define GL_VBO_FREE_MEMORY_ATI 0x87FB
+#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC
+#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD
+#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
+#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE
+#define GL_PROGRAM_BINARY_FORMATS 0x87FF
+#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF
+#define GL_STENCIL_BACK_FUNC 0x8800
+#define GL_STENCIL_BACK_FUNC_ATI 0x8800
+#define GL_STENCIL_BACK_FAIL 0x8801
+#define GL_STENCIL_BACK_FAIL_ATI 0x8801
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
+#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
+#define GL_FRAGMENT_PROGRAM_ARB 0x8804
+#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805
+#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806
+#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807
+#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
+#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
+#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
+#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
+#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
+#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
+#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
+#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
+#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
+#define GL_RGBA32F 0x8814
+#define GL_RGBA32F_ARB 0x8814
+#define GL_RGBA32F_EXT 0x8814
+#define GL_RGBA_FLOAT32_APPLE 0x8814
+#define GL_RGBA_FLOAT32_ATI 0x8814
+#define GL_RGB32F 0x8815
+#define GL_RGB32F_ARB 0x8815
+#define GL_RGB32F_EXT 0x8815
+#define GL_RGB_FLOAT32_APPLE 0x8815
+#define GL_RGB_FLOAT32_ATI 0x8815
+#define GL_ALPHA32F_ARB 0x8816
+#define GL_ALPHA32F_EXT 0x8816
+#define GL_ALPHA_FLOAT32_APPLE 0x8816
+#define GL_ALPHA_FLOAT32_ATI 0x8816
+#define GL_INTENSITY32F_ARB 0x8817
+#define GL_INTENSITY_FLOAT32_APPLE 0x8817
+#define GL_INTENSITY_FLOAT32_ATI 0x8817
+#define GL_LUMINANCE32F_ARB 0x8818
+#define GL_LUMINANCE32F_EXT 0x8818
+#define GL_LUMINANCE_FLOAT32_APPLE 0x8818
+#define GL_LUMINANCE_FLOAT32_ATI 0x8818
+#define GL_LUMINANCE_ALPHA32F_ARB 0x8819
+#define GL_LUMINANCE_ALPHA32F_EXT 0x8819
+#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819
+#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
+#define GL_RGBA16F 0x881A
+#define GL_RGBA16F_ARB 0x881A
+#define GL_RGBA16F_EXT 0x881A
+#define GL_RGBA_FLOAT16_APPLE 0x881A
+#define GL_RGBA_FLOAT16_ATI 0x881A
+#define GL_RGB16F 0x881B
+#define GL_RGB16F_ARB 0x881B
+#define GL_RGB16F_EXT 0x881B
+#define GL_RGB_FLOAT16_APPLE 0x881B
+#define GL_RGB_FLOAT16_ATI 0x881B
+#define GL_ALPHA16F_ARB 0x881C
+#define GL_ALPHA16F_EXT 0x881C
+#define GL_ALPHA_FLOAT16_APPLE 0x881C
+#define GL_ALPHA_FLOAT16_ATI 0x881C
+#define GL_INTENSITY16F_ARB 0x881D
+#define GL_INTENSITY_FLOAT16_APPLE 0x881D
+#define GL_INTENSITY_FLOAT16_ATI 0x881D
+#define GL_LUMINANCE16F_ARB 0x881E
+#define GL_LUMINANCE16F_EXT 0x881E
+#define GL_LUMINANCE_FLOAT16_APPLE 0x881E
+#define GL_LUMINANCE_FLOAT16_ATI 0x881E
+#define GL_LUMINANCE_ALPHA16F_ARB 0x881F
+#define GL_LUMINANCE_ALPHA16F_EXT 0x881F
+#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F
+#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
+#define GL_RGBA_FLOAT_MODE_ARB 0x8820
+#define GL_RGBA_FLOAT_MODE_ATI 0x8820
+#define GL_WRITEONLY_RENDERING_QCOM 0x8823
+#define GL_MAX_DRAW_BUFFERS 0x8824
+#define GL_MAX_DRAW_BUFFERS_ARB 0x8824
+#define GL_MAX_DRAW_BUFFERS_ATI 0x8824
+#define GL_MAX_DRAW_BUFFERS_EXT 0x8824
+#define GL_MAX_DRAW_BUFFERS_NV 0x8824
+#define GL_DRAW_BUFFER0 0x8825
+#define GL_DRAW_BUFFER0_ARB 0x8825
+#define GL_DRAW_BUFFER0_ATI 0x8825
+#define GL_DRAW_BUFFER0_EXT 0x8825
+#define GL_DRAW_BUFFER0_NV 0x8825
+#define GL_DRAW_BUFFER1 0x8826
+#define GL_DRAW_BUFFER1_ARB 0x8826
+#define GL_DRAW_BUFFER1_ATI 0x8826
+#define GL_DRAW_BUFFER1_EXT 0x8826
+#define GL_DRAW_BUFFER1_NV 0x8826
+#define GL_DRAW_BUFFER2 0x8827
+#define GL_DRAW_BUFFER2_ARB 0x8827
+#define GL_DRAW_BUFFER2_ATI 0x8827
+#define GL_DRAW_BUFFER2_EXT 0x8827
+#define GL_DRAW_BUFFER2_NV 0x8827
+#define GL_DRAW_BUFFER3 0x8828
+#define GL_DRAW_BUFFER3_ARB 0x8828
+#define GL_DRAW_BUFFER3_ATI 0x8828
+#define GL_DRAW_BUFFER3_EXT 0x8828
+#define GL_DRAW_BUFFER3_NV 0x8828
+#define GL_DRAW_BUFFER4 0x8829
+#define GL_DRAW_BUFFER4_ARB 0x8829
+#define GL_DRAW_BUFFER4_ATI 0x8829
+#define GL_DRAW_BUFFER4_EXT 0x8829
+#define GL_DRAW_BUFFER4_NV 0x8829
+#define GL_DRAW_BUFFER5 0x882A
+#define GL_DRAW_BUFFER5_ARB 0x882A
+#define GL_DRAW_BUFFER5_ATI 0x882A
+#define GL_DRAW_BUFFER5_EXT 0x882A
+#define GL_DRAW_BUFFER5_NV 0x882A
+#define GL_DRAW_BUFFER6 0x882B
+#define GL_DRAW_BUFFER6_ARB 0x882B
+#define GL_DRAW_BUFFER6_ATI 0x882B
+#define GL_DRAW_BUFFER6_EXT 0x882B
+#define GL_DRAW_BUFFER6_NV 0x882B
+#define GL_DRAW_BUFFER7 0x882C
+#define GL_DRAW_BUFFER7_ARB 0x882C
+#define GL_DRAW_BUFFER7_ATI 0x882C
+#define GL_DRAW_BUFFER7_EXT 0x882C
+#define GL_DRAW_BUFFER7_NV 0x882C
+#define GL_DRAW_BUFFER8 0x882D
+#define GL_DRAW_BUFFER8_ARB 0x882D
+#define GL_DRAW_BUFFER8_ATI 0x882D
+#define GL_DRAW_BUFFER8_EXT 0x882D
+#define GL_DRAW_BUFFER8_NV 0x882D
+#define GL_DRAW_BUFFER9 0x882E
+#define GL_DRAW_BUFFER9_ARB 0x882E
+#define GL_DRAW_BUFFER9_ATI 0x882E
+#define GL_DRAW_BUFFER9_EXT 0x882E
+#define GL_DRAW_BUFFER9_NV 0x882E
+#define GL_DRAW_BUFFER10 0x882F
+#define GL_DRAW_BUFFER10_ARB 0x882F
+#define GL_DRAW_BUFFER10_ATI 0x882F
+#define GL_DRAW_BUFFER10_EXT 0x882F
+#define GL_DRAW_BUFFER10_NV 0x882F
+#define GL_DRAW_BUFFER11 0x8830
+#define GL_DRAW_BUFFER11_ARB 0x8830
+#define GL_DRAW_BUFFER11_ATI 0x8830
+#define GL_DRAW_BUFFER11_EXT 0x8830
+#define GL_DRAW_BUFFER11_NV 0x8830
+#define GL_DRAW_BUFFER12 0x8831
+#define GL_DRAW_BUFFER12_ARB 0x8831
+#define GL_DRAW_BUFFER12_ATI 0x8831
+#define GL_DRAW_BUFFER12_EXT 0x8831
+#define GL_DRAW_BUFFER12_NV 0x8831
+#define GL_DRAW_BUFFER13 0x8832
+#define GL_DRAW_BUFFER13_ARB 0x8832
+#define GL_DRAW_BUFFER13_ATI 0x8832
+#define GL_DRAW_BUFFER13_EXT 0x8832
+#define GL_DRAW_BUFFER13_NV 0x8832
+#define GL_DRAW_BUFFER14 0x8833
+#define GL_DRAW_BUFFER14_ARB 0x8833
+#define GL_DRAW_BUFFER14_ATI 0x8833
+#define GL_DRAW_BUFFER14_EXT 0x8833
+#define GL_DRAW_BUFFER14_NV 0x8833
+#define GL_DRAW_BUFFER15 0x8834
+#define GL_DRAW_BUFFER15_ARB 0x8834
+#define GL_DRAW_BUFFER15_ATI 0x8834
+#define GL_DRAW_BUFFER15_EXT 0x8834
+#define GL_DRAW_BUFFER15_NV 0x8834
+#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
+#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837
+#define GL_BLEND_EQUATION_ALPHA 0x883D
+#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D
+#define GL_BLEND_EQUATION_ALPHA_OES 0x883D
+#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F
+#define GL_MATRIX_PALETTE_ARB 0x8840
+#define GL_MATRIX_PALETTE_OES 0x8840
+#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
+#define GL_MAX_PALETTE_MATRICES_ARB 0x8842
+#define GL_MAX_PALETTE_MATRICES_OES 0x8842
+#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843
+#define GL_CURRENT_PALETTE_MATRIX_OES 0x8843
+#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844
+#define GL_MATRIX_INDEX_ARRAY_OES 0x8844
+#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845
+#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846
+#define GL_MATRIX_INDEX_ARRAY_SIZE_OES 0x8846
+#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847
+#define GL_MATRIX_INDEX_ARRAY_TYPE_OES 0x8847
+#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848
+#define GL_MATRIX_INDEX_ARRAY_STRIDE_OES 0x8848
+#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
+#define GL_MATRIX_INDEX_ARRAY_POINTER_OES 0x8849
+#define GL_TEXTURE_DEPTH_SIZE 0x884A
+#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A
+#define GL_DEPTH_TEXTURE_MODE 0x884B
+#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B
+#define GL_TEXTURE_COMPARE_MODE 0x884C
+#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C
+#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C
+#define GL_TEXTURE_COMPARE_FUNC 0x884D
+#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D
+#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D
+#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
+#define GL_COMPARE_REF_TO_TEXTURE 0x884E
+#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E
+#define GL_COMPARE_R_TO_TEXTURE 0x884E
+#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E
+#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
+#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
+#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
+#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854
+#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
+#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
+#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858
+#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859
+#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
+#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B
+#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C
+#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
+#define GL_HILO8_NV 0x885E
+#define GL_SIGNED_HILO8_NV 0x885F
+#define GL_FORCE_BLUE_TO_ONE_NV 0x8860
+#define GL_POINT_SPRITE 0x8861
+#define GL_POINT_SPRITE_ARB 0x8861
+#define GL_POINT_SPRITE_NV 0x8861
+#define GL_POINT_SPRITE_OES 0x8861
+#define GL_COORD_REPLACE 0x8862
+#define GL_COORD_REPLACE_ARB 0x8862
+#define GL_COORD_REPLACE_NV 0x8862
+#define GL_COORD_REPLACE_OES 0x8862
+#define GL_POINT_SPRITE_R_MODE_NV 0x8863
+#define GL_PIXEL_COUNTER_BITS_NV 0x8864
+#define GL_QUERY_COUNTER_BITS 0x8864
+#define GL_QUERY_COUNTER_BITS_ARB 0x8864
+#define GL_QUERY_COUNTER_BITS_EXT 0x8864
+#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865
+#define GL_CURRENT_QUERY 0x8865
+#define GL_CURRENT_QUERY_ARB 0x8865
+#define GL_CURRENT_QUERY_EXT 0x8865
+#define GL_PIXEL_COUNT_NV 0x8866
+#define GL_QUERY_RESULT 0x8866
+#define GL_QUERY_RESULT_ARB 0x8866
+#define GL_QUERY_RESULT_EXT 0x8866
+#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867
+#define GL_QUERY_RESULT_AVAILABLE 0x8867
+#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867
+#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867
+#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
+#define GL_MAX_VERTEX_ATTRIBS 0x8869
+#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
+#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D
+#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
+#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F
+#define GL_FRAGMENT_PROGRAM_NV 0x8870
+#define GL_MAX_TEXTURE_COORDS 0x8871
+#define GL_MAX_TEXTURE_COORDS_ARB 0x8871
+#define GL_MAX_TEXTURE_COORDS_NV 0x8871
+#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
+#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872
+#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872
+#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873
+#define GL_PROGRAM_ERROR_STRING_ARB 0x8874
+#define GL_PROGRAM_ERROR_STRING_NV 0x8874
+#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
+#define GL_PROGRAM_FORMAT_ARB 0x8876
+#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
+#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879
+#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
+#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
+#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
+#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
+#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
+#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F
+#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F
+#define GL_FLOAT_R_NV 0x8880
+#define GL_FLOAT_RG_NV 0x8881
+#define GL_FLOAT_RGB_NV 0x8882
+#define GL_FLOAT_RGBA_NV 0x8883
+#define GL_FLOAT_R16_NV 0x8884
+#define GL_FLOAT_R32_NV 0x8885
+#define GL_FLOAT_RG16_NV 0x8886
+#define GL_FLOAT_RG32_NV 0x8887
+#define GL_FLOAT_RGB16_NV 0x8888
+#define GL_FLOAT_RGB32_NV 0x8889
+#define GL_FLOAT_RGBA16_NV 0x888A
+#define GL_FLOAT_RGBA32_NV 0x888B
+#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C
+#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D
+#define GL_FLOAT_RGBA_MODE_NV 0x888E
+#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
+#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890
+#define GL_DEPTH_BOUNDS_EXT 0x8891
+#define GL_ARRAY_BUFFER 0x8892
+#define GL_ARRAY_BUFFER_ARB 0x8892
+#define GL_ELEMENT_ARRAY_BUFFER 0x8893
+#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
+#define GL_ARRAY_BUFFER_BINDING 0x8894
+#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896
+#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
+#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897
+#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898
+#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899
+#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
+#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_OES 0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
+#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0
+#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1
+#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
+#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
+#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4
+#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5
+#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
+#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
+#define GL_PROGRAM_PARAMETERS_ARB 0x88A8
+#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9
+#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA
+#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
+#define GL_PROGRAM_ATTRIBS_ARB 0x88AC
+#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
+#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE
+#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
+#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0
+#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
+#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
+#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
+#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
+#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
+#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
+#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7
+#define GL_READ_ONLY 0x88B8
+#define GL_READ_ONLY_ARB 0x88B8
+#define GL_WRITE_ONLY 0x88B9
+#define GL_WRITE_ONLY_ARB 0x88B9
+#define GL_WRITE_ONLY_OES 0x88B9
+#define GL_READ_WRITE 0x88BA
+#define GL_READ_WRITE_ARB 0x88BA
+#define GL_BUFFER_ACCESS 0x88BB
+#define GL_BUFFER_ACCESS_ARB 0x88BB
+#define GL_BUFFER_ACCESS_OES 0x88BB
+#define GL_BUFFER_MAPPED 0x88BC
+#define GL_BUFFER_MAPPED_ARB 0x88BC
+#define GL_BUFFER_MAPPED_OES 0x88BC
+#define GL_BUFFER_MAP_POINTER 0x88BD
+#define GL_BUFFER_MAP_POINTER_ARB 0x88BD
+#define GL_BUFFER_MAP_POINTER_OES 0x88BD
+#define GL_WRITE_DISCARD_NV 0x88BE
+#define GL_TIME_ELAPSED 0x88BF
+#define GL_TIME_ELAPSED_EXT 0x88BF
+#define GL_MATRIX0_ARB 0x88C0
+#define GL_MATRIX1_ARB 0x88C1
+#define GL_MATRIX2_ARB 0x88C2
+#define GL_MATRIX3_ARB 0x88C3
+#define GL_MATRIX4_ARB 0x88C4
+#define GL_MATRIX5_ARB 0x88C5
+#define GL_MATRIX6_ARB 0x88C6
+#define GL_MATRIX7_ARB 0x88C7
+#define GL_MATRIX8_ARB 0x88C8
+#define GL_MATRIX9_ARB 0x88C9
+#define GL_MATRIX10_ARB 0x88CA
+#define GL_MATRIX11_ARB 0x88CB
+#define GL_MATRIX12_ARB 0x88CC
+#define GL_MATRIX13_ARB 0x88CD
+#define GL_MATRIX14_ARB 0x88CE
+#define GL_MATRIX15_ARB 0x88CF
+#define GL_MATRIX16_ARB 0x88D0
+#define GL_MATRIX17_ARB 0x88D1
+#define GL_MATRIX18_ARB 0x88D2
+#define GL_MATRIX19_ARB 0x88D3
+#define GL_MATRIX20_ARB 0x88D4
+#define GL_MATRIX21_ARB 0x88D5
+#define GL_MATRIX22_ARB 0x88D6
+#define GL_MATRIX23_ARB 0x88D7
+#define GL_MATRIX24_ARB 0x88D8
+#define GL_MATRIX25_ARB 0x88D9
+#define GL_MATRIX26_ARB 0x88DA
+#define GL_MATRIX27_ARB 0x88DB
+#define GL_MATRIX28_ARB 0x88DC
+#define GL_MATRIX29_ARB 0x88DD
+#define GL_MATRIX30_ARB 0x88DE
+#define GL_MATRIX31_ARB 0x88DF
+#define GL_STREAM_DRAW 0x88E0
+#define GL_STREAM_DRAW_ARB 0x88E0
+#define GL_STREAM_READ 0x88E1
+#define GL_STREAM_READ_ARB 0x88E1
+#define GL_STREAM_COPY 0x88E2
+#define GL_STREAM_COPY_ARB 0x88E2
+#define GL_STATIC_DRAW 0x88E4
+#define GL_STATIC_DRAW_ARB 0x88E4
+#define GL_STATIC_READ 0x88E5
+#define GL_STATIC_READ_ARB 0x88E5
+#define GL_STATIC_COPY 0x88E6
+#define GL_STATIC_COPY_ARB 0x88E6
+#define GL_DYNAMIC_DRAW 0x88E8
+#define GL_DYNAMIC_DRAW_ARB 0x88E8
+#define GL_DYNAMIC_READ 0x88E9
+#define GL_DYNAMIC_READ_ARB 0x88E9
+#define GL_DYNAMIC_COPY 0x88EA
+#define GL_DYNAMIC_COPY_ARB 0x88EA
+#define GL_PIXEL_PACK_BUFFER 0x88EB
+#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
+#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB
+#define GL_PIXEL_PACK_BUFFER_NV 0x88EB
+#define GL_PIXEL_UNPACK_BUFFER 0x88EC
+#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
+#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC
+#define GL_PIXEL_UNPACK_BUFFER_NV 0x88EC
+#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
+#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
+#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED
+#define GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED
+#define GL_ETC1_SRGB8_NV 0x88EE
+#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
+#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF
+#define GL_DEPTH24_STENCIL8 0x88F0
+#define GL_DEPTH24_STENCIL8_EXT 0x88F0
+#define GL_DEPTH24_STENCIL8_OES 0x88F0
+#define GL_TEXTURE_STENCIL_SIZE 0x88F1
+#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1
+#define GL_STENCIL_TAG_BITS_EXT 0x88F2
+#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3
+#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
+#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5
+#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6
+#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7
+#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8
+#define GL_SRC1_COLOR 0x88F9
+#define GL_SRC1_COLOR_EXT 0x88F9
+#define GL_ONE_MINUS_SRC1_COLOR 0x88FA
+#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
+#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB
+#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
+#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC
+#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD
+#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE
+#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF
+#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
+#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904
+#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904
+#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904
+#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905
+#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905
+#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905
+#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906
+#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907
+#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
+#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
+#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910
+#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911
+#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912
+#define GL_SAMPLES_PASSED 0x8914
+#define GL_SAMPLES_PASSED_ARB 0x8914
+#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916
+#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916
+#define GL_GEOMETRY_VERTICES_OUT 0x8916
+#define GL_GEOMETRY_INPUT_TYPE 0x8917
+#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917
+#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917
+#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918
+#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918
+#define GL_GEOMETRY_OUTPUT_TYPE 0x8918
+#define GL_SAMPLER_BINDING 0x8919
+#define GL_CLAMP_VERTEX_COLOR 0x891A
+#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A
+#define GL_CLAMP_FRAGMENT_COLOR 0x891B
+#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B
+#define GL_CLAMP_READ_COLOR 0x891C
+#define GL_CLAMP_READ_COLOR_ARB 0x891C
+#define GL_FIXED_ONLY 0x891D
+#define GL_FIXED_ONLY_ARB 0x891D
+#define GL_TESS_CONTROL_PROGRAM_NV 0x891E
+#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F
+#define GL_FRAGMENT_SHADER_ATI 0x8920
+#define GL_REG_0_ATI 0x8921
+#define GL_REG_1_ATI 0x8922
+#define GL_REG_2_ATI 0x8923
+#define GL_REG_3_ATI 0x8924
+#define GL_REG_4_ATI 0x8925
+#define GL_REG_5_ATI 0x8926
+#define GL_REG_6_ATI 0x8927
+#define GL_REG_7_ATI 0x8928
+#define GL_REG_8_ATI 0x8929
+#define GL_REG_9_ATI 0x892A
+#define GL_REG_10_ATI 0x892B
+#define GL_REG_11_ATI 0x892C
+#define GL_REG_12_ATI 0x892D
+#define GL_REG_13_ATI 0x892E
+#define GL_REG_14_ATI 0x892F
+#define GL_REG_15_ATI 0x8930
+#define GL_REG_16_ATI 0x8931
+#define GL_REG_17_ATI 0x8932
+#define GL_REG_18_ATI 0x8933
+#define GL_REG_19_ATI 0x8934
+#define GL_REG_20_ATI 0x8935
+#define GL_REG_21_ATI 0x8936
+#define GL_REG_22_ATI 0x8937
+#define GL_REG_23_ATI 0x8938
+#define GL_REG_24_ATI 0x8939
+#define GL_REG_25_ATI 0x893A
+#define GL_REG_26_ATI 0x893B
+#define GL_REG_27_ATI 0x893C
+#define GL_REG_28_ATI 0x893D
+#define GL_REG_29_ATI 0x893E
+#define GL_REG_30_ATI 0x893F
+#define GL_REG_31_ATI 0x8940
+#define GL_CON_0_ATI 0x8941
+#define GL_CON_1_ATI 0x8942
+#define GL_CON_2_ATI 0x8943
+#define GL_CON_3_ATI 0x8944
+#define GL_CON_4_ATI 0x8945
+#define GL_CON_5_ATI 0x8946
+#define GL_CON_6_ATI 0x8947
+#define GL_CON_7_ATI 0x8948
+#define GL_CON_8_ATI 0x8949
+#define GL_CON_9_ATI 0x894A
+#define GL_CON_10_ATI 0x894B
+#define GL_CON_11_ATI 0x894C
+#define GL_CON_12_ATI 0x894D
+#define GL_CON_13_ATI 0x894E
+#define GL_CON_14_ATI 0x894F
+#define GL_CON_15_ATI 0x8950
+#define GL_CON_16_ATI 0x8951
+#define GL_CON_17_ATI 0x8952
+#define GL_CON_18_ATI 0x8953
+#define GL_CON_19_ATI 0x8954
+#define GL_CON_20_ATI 0x8955
+#define GL_CON_21_ATI 0x8956
+#define GL_CON_22_ATI 0x8957
+#define GL_CON_23_ATI 0x8958
+#define GL_CON_24_ATI 0x8959
+#define GL_CON_25_ATI 0x895A
+#define GL_CON_26_ATI 0x895B
+#define GL_CON_27_ATI 0x895C
+#define GL_CON_28_ATI 0x895D
+#define GL_CON_29_ATI 0x895E
+#define GL_CON_30_ATI 0x895F
+#define GL_CON_31_ATI 0x8960
+#define GL_MOV_ATI 0x8961
+#define GL_ADD_ATI 0x8963
+#define GL_MUL_ATI 0x8964
+#define GL_SUB_ATI 0x8965
+#define GL_DOT3_ATI 0x8966
+#define GL_DOT4_ATI 0x8967
+#define GL_MAD_ATI 0x8968
+#define GL_LERP_ATI 0x8969
+#define GL_CND_ATI 0x896A
+#define GL_CND0_ATI 0x896B
+#define GL_DOT2_ADD_ATI 0x896C
+#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D
+#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
+#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
+#define GL_NUM_PASSES_ATI 0x8970
+#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
+#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
+#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
+#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
+#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975
+#define GL_SWIZZLE_STR_ATI 0x8976
+#define GL_SWIZZLE_STQ_ATI 0x8977
+#define GL_SWIZZLE_STR_DR_ATI 0x8978
+#define GL_SWIZZLE_STQ_DQ_ATI 0x8979
+#define GL_SWIZZLE_STRQ_ATI 0x897A
+#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B
+#define GL_INTERLACE_OML 0x8980
+#define GL_INTERLACE_READ_OML 0x8981
+#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982
+#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983
+#define GL_PACK_RESAMPLE_OML 0x8984
+#define GL_UNPACK_RESAMPLE_OML 0x8985
+#define GL_RESAMPLE_REPLICATE_OML 0x8986
+#define GL_RESAMPLE_ZERO_FILL_OML 0x8987
+#define GL_RESAMPLE_AVERAGE_OML 0x8988
+#define GL_RESAMPLE_DECIMATE_OML 0x8989
+#define GL_POINT_SIZE_ARRAY_TYPE_OES 0x898A
+#define GL_POINT_SIZE_ARRAY_STRIDE_OES 0x898B
+#define GL_POINT_SIZE_ARRAY_POINTER_OES 0x898C
+#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES 0x898D
+#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES 0x898E
+#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES 0x898F
+#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00
+#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01
+#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02
+#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03
+#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04
+#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05
+#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06
+#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07
+#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08
+#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09
+#define GL_DRAW_PIXELS_APPLE 0x8A0A
+#define GL_FENCE_APPLE 0x8A0B
+#define GL_ELEMENT_ARRAY_APPLE 0x8A0C
+#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D
+#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E
+#define GL_COLOR_FLOAT_APPLE 0x8A0F
+#define GL_UNIFORM_BUFFER 0x8A11
+#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
+#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13
+#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14
+#define GL_PACK_ROW_BYTES_APPLE 0x8A15
+#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16
+#define GL_RELEASED_APPLE 0x8A19
+#define GL_VOLATILE_APPLE 0x8A1A
+#define GL_RETAINED_APPLE 0x8A1B
+#define GL_UNDEFINED_APPLE 0x8A1C
+#define GL_PURGEABLE_APPLE 0x8A1D
+#define GL_RGB_422_APPLE 0x8A1F
+#define GL_UNIFORM_BUFFER_BINDING 0x8A28
+#define GL_UNIFORM_BUFFER_START 0x8A29
+#define GL_UNIFORM_BUFFER_SIZE 0x8A2A
+#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C
+#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D
+#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E
+#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F
+#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30
+#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32
+#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
+#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
+#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
+#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36
+#define GL_UNIFORM_TYPE 0x8A37
+#define GL_UNIFORM_SIZE 0x8A38
+#define GL_UNIFORM_NAME_LENGTH 0x8A39
+#define GL_UNIFORM_BLOCK_INDEX 0x8A3A
+#define GL_UNIFORM_OFFSET 0x8A3B
+#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C
+#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D
+#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E
+#define GL_UNIFORM_BLOCK_BINDING 0x8A3F
+#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40
+#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41
+#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42
+#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
+#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48
+#define GL_DECODE_EXT 0x8A49
+#define GL_SKIP_DECODE_EXT 0x8A4A
+#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
+#define GL_RGB_RAW_422_APPLE 0x8A51
+#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
+#define GL_SYNC_OBJECT_APPLE 0x8A53
+#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54
+#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55
+#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56
+#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57
+#define GL_FRAGMENT_SHADER 0x8B30
+#define GL_FRAGMENT_SHADER_ARB 0x8B30
+#define GL_VERTEX_SHADER 0x8B31
+#define GL_VERTEX_SHADER_ARB 0x8B31
+#define GL_PROGRAM_OBJECT_ARB 0x8B40
+#define GL_PROGRAM_OBJECT_EXT 0x8B40
+#define GL_SHADER_OBJECT_ARB 0x8B48
+#define GL_SHADER_OBJECT_EXT 0x8B48
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
+#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A
+#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
+#define GL_MAX_VARYING_COMPONENTS 0x8B4B
+#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B
+#define GL_MAX_VARYING_FLOATS 0x8B4B
+#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
+#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
+#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
+#define GL_OBJECT_TYPE_ARB 0x8B4E
+#define GL_OBJECT_SUBTYPE_ARB 0x8B4F
+#define GL_SHADER_TYPE 0x8B4F
+#define GL_FLOAT_VEC2 0x8B50
+#define GL_FLOAT_VEC2_ARB 0x8B50
+#define GL_FLOAT_VEC3 0x8B51
+#define GL_FLOAT_VEC3_ARB 0x8B51
+#define GL_FLOAT_VEC4 0x8B52
+#define GL_FLOAT_VEC4_ARB 0x8B52
+#define GL_INT_VEC2 0x8B53
+#define GL_INT_VEC2_ARB 0x8B53
+#define GL_INT_VEC3 0x8B54
+#define GL_INT_VEC3_ARB 0x8B54
+#define GL_INT_VEC4 0x8B55
+#define GL_INT_VEC4_ARB 0x8B55
+#define GL_BOOL 0x8B56
+#define GL_BOOL_ARB 0x8B56
+#define GL_BOOL_VEC2 0x8B57
+#define GL_BOOL_VEC2_ARB 0x8B57
+#define GL_BOOL_VEC3 0x8B58
+#define GL_BOOL_VEC3_ARB 0x8B58
+#define GL_BOOL_VEC4 0x8B59
+#define GL_BOOL_VEC4_ARB 0x8B59
+#define GL_FLOAT_MAT2 0x8B5A
+#define GL_FLOAT_MAT2_ARB 0x8B5A
+#define GL_FLOAT_MAT3 0x8B5B
+#define GL_FLOAT_MAT3_ARB 0x8B5B
+#define GL_FLOAT_MAT4 0x8B5C
+#define GL_FLOAT_MAT4_ARB 0x8B5C
+#define GL_SAMPLER_1D 0x8B5D
+#define GL_SAMPLER_1D_ARB 0x8B5D
+#define GL_SAMPLER_2D 0x8B5E
+#define GL_SAMPLER_2D_ARB 0x8B5E
+#define GL_SAMPLER_3D 0x8B5F
+#define GL_SAMPLER_3D_ARB 0x8B5F
+#define GL_SAMPLER_3D_OES 0x8B5F
+#define GL_SAMPLER_CUBE 0x8B60
+#define GL_SAMPLER_CUBE_ARB 0x8B60
+#define GL_SAMPLER_1D_SHADOW 0x8B61
+#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61
+#define GL_SAMPLER_2D_SHADOW 0x8B62
+#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62
+#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62
+#define GL_SAMPLER_2D_RECT 0x8B63
+#define GL_SAMPLER_2D_RECT_ARB 0x8B63
+#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64
+#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
+#define GL_FLOAT_MAT2x3 0x8B65
+#define GL_FLOAT_MAT2x3_NV 0x8B65
+#define GL_FLOAT_MAT2x4 0x8B66
+#define GL_FLOAT_MAT2x4_NV 0x8B66
+#define GL_FLOAT_MAT3x2 0x8B67
+#define GL_FLOAT_MAT3x2_NV 0x8B67
+#define GL_FLOAT_MAT3x4 0x8B68
+#define GL_FLOAT_MAT3x4_NV 0x8B68
+#define GL_FLOAT_MAT4x2 0x8B69
+#define GL_FLOAT_MAT4x2_NV 0x8B69
+#define GL_FLOAT_MAT4x3 0x8B6A
+#define GL_FLOAT_MAT4x3_NV 0x8B6A
+#define GL_DELETE_STATUS 0x8B80
+#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80
+#define GL_COMPILE_STATUS 0x8B81
+#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
+#define GL_LINK_STATUS 0x8B82
+#define GL_OBJECT_LINK_STATUS_ARB 0x8B82
+#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
+#define GL_VALIDATE_STATUS 0x8B83
+#define GL_INFO_LOG_LENGTH 0x8B84
+#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
+#define GL_ATTACHED_SHADERS 0x8B85
+#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
+#define GL_ACTIVE_UNIFORMS 0x8B86
+#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
+#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
+#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
+#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
+#define GL_SHADER_SOURCE_LENGTH 0x8B88
+#define GL_ACTIVE_ATTRIBUTES 0x8B89
+#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
+#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
+#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
+#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
+#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
+#define GL_ACTIVE_PROGRAM_EXT 0x8B8D
+#define GL_CURRENT_PROGRAM 0x8B8D
+#define GL_PALETTE4_RGB8_OES 0x8B90
+#define GL_PALETTE4_RGBA8_OES 0x8B91
+#define GL_PALETTE4_R5_G6_B5_OES 0x8B92
+#define GL_PALETTE4_RGBA4_OES 0x8B93
+#define GL_PALETTE4_RGB5_A1_OES 0x8B94
+#define GL_PALETTE8_RGB8_OES 0x8B95
+#define GL_PALETTE8_RGBA8_OES 0x8B96
+#define GL_PALETTE8_R5_G6_B5_OES 0x8B97
+#define GL_PALETTE8_RGBA4_OES 0x8B98
+#define GL_PALETTE8_RGB5_A1_OES 0x8B99
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
+#define GL_POINT_SIZE_ARRAY_OES 0x8B9C
+#define GL_TEXTURE_CROP_RECT_OES 0x8B9D
+#define GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES 0x8B9E
+#define GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES 0x8B9F
+#define GL_FRAGMENT_PROGRAM_POSITION_MESA 0x8BB0
+#define GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x8BB1
+#define GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x8BB2
+#define GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x8BB3
+#define GL_VERTEX_PROGRAM_POSITION_MESA 0x8BB4
+#define GL_VERTEX_PROGRAM_CALLBACK_MESA 0x8BB5
+#define GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x8BB6
+#define GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x8BB7
+#define GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8
+#define GL_TILE_RASTER_ORDER_INCREASING_X_MESA 0x8BB9
+#define GL_TILE_RASTER_ORDER_INCREASING_Y_MESA 0x8BBA
+#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB
+#define GL_COUNTER_TYPE_AMD 0x8BC0
+#define GL_COUNTER_RANGE_AMD 0x8BC1
+#define GL_UNSIGNED_INT64_AMD 0x8BC2
+#define GL_PERCENTAGE_AMD 0x8BC3
+#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4
+#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5
+#define GL_PERFMON_RESULT_AMD 0x8BC6
+#define GL_TEXTURE_WIDTH_QCOM 0x8BD2
+#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3
+#define GL_TEXTURE_DEPTH_QCOM 0x8BD4
+#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5
+#define GL_TEXTURE_FORMAT_QCOM 0x8BD6
+#define GL_TEXTURE_TYPE_QCOM 0x8BD7
+#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8
+#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9
+#define GL_TEXTURE_TARGET_QCOM 0x8BDA
+#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB
+#define GL_STATE_RESTORE 0x8BDC
+#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7
+#define GL_TEXTURE_PROTECTED_EXT 0x8BFA
+#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB
+#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC
+#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD
+#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE
+#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF
+#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
+#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
+#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
+#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
+#define GL_MODULATE_COLOR_IMG 0x8C04
+#define GL_RECIP_ADD_SIGNED_ALPHA_IMG 0x8C05
+#define GL_TEXTURE_ALPHA_MODULATE_IMG 0x8C06
+#define GL_FACTOR_ALPHA_MODULATE_IMG 0x8C07
+#define GL_FRAGMENT_ALPHA_MODULATE_IMG 0x8C08
+#define GL_ADD_BLEND_IMG 0x8C09
+#define GL_SGX_BINARY_IMG 0x8C0A
+#define GL_TEXTURE_RED_TYPE 0x8C10
+#define GL_TEXTURE_RED_TYPE_ARB 0x8C10
+#define GL_TEXTURE_GREEN_TYPE 0x8C11
+#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11
+#define GL_TEXTURE_BLUE_TYPE 0x8C12
+#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12
+#define GL_TEXTURE_ALPHA_TYPE 0x8C13
+#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13
+#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14
+#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14
+#define GL_TEXTURE_INTENSITY_TYPE 0x8C15
+#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15
+#define GL_TEXTURE_DEPTH_TYPE 0x8C16
+#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16
+#define GL_UNSIGNED_NORMALIZED 0x8C17
+#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17
+#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17
+#define GL_TEXTURE_1D_ARRAY 0x8C18
+#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18
+#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19
+#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
+#define GL_TEXTURE_2D_ARRAY 0x8C1A
+#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A
+#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B
+#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
+#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C
+#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
+#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D
+#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
+#define GL_GEOMETRY_PROGRAM_NV 0x8C26
+#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
+#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29
+#define GL_TEXTURE_BUFFER 0x8C2A
+#define GL_TEXTURE_BUFFER_ARB 0x8C2A
+#define GL_TEXTURE_BUFFER_BINDING 0x8C2A
+#define GL_TEXTURE_BUFFER_BINDING_EXT 0x8C2A
+#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A
+#define GL_TEXTURE_BUFFER_EXT 0x8C2A
+#define GL_TEXTURE_BUFFER_OES 0x8C2A
+#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B
+#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B
+#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B
+#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B
+#define GL_TEXTURE_BINDING_BUFFER 0x8C2C
+#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C
+#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C
+#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D
+#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E
+#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E
+#define GL_ANY_SAMPLES_PASSED 0x8C2F
+#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F
+#define GL_SAMPLE_SHADING 0x8C36
+#define GL_SAMPLE_SHADING_ARB 0x8C36
+#define GL_SAMPLE_SHADING_OES 0x8C36
+#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37
+#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37
+#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37
+#define GL_R11F_G11F_B10F 0x8C3A
+#define GL_R11F_G11F_B10F_APPLE 0x8C3A
+#define GL_R11F_G11F_B10F_EXT 0x8C3A
+#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B
+#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
+#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C
+#define GL_RGB9_E5 0x8C3D
+#define GL_RGB9_E5_APPLE 0x8C3D
+#define GL_RGB9_E5_EXT 0x8C3D
+#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E
+#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E
+#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E
+#define GL_TEXTURE_SHARED_SIZE 0x8C3F
+#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F
+#define GL_SRGB 0x8C40
+#define GL_SRGB_EXT 0x8C40
+#define GL_SRGB8 0x8C41
+#define GL_SRGB8_EXT 0x8C41
+#define GL_SRGB8_NV 0x8C41
+#define GL_SRGB_ALPHA 0x8C42
+#define GL_SRGB_ALPHA_EXT 0x8C42
+#define GL_SRGB8_ALPHA8 0x8C43
+#define GL_SRGB8_ALPHA8_EXT 0x8C43
+#define GL_SLUMINANCE_ALPHA 0x8C44
+#define GL_SLUMINANCE_ALPHA_EXT 0x8C44
+#define GL_SLUMINANCE_ALPHA_NV 0x8C44
+#define GL_SLUMINANCE8_ALPHA8 0x8C45
+#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45
+#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45
+#define GL_SLUMINANCE 0x8C46
+#define GL_SLUMINANCE_EXT 0x8C46
+#define GL_SLUMINANCE_NV 0x8C46
+#define GL_SLUMINANCE8 0x8C47
+#define GL_SLUMINANCE8_EXT 0x8C47
+#define GL_SLUMINANCE8_NV 0x8C47
+#define GL_COMPRESSED_SRGB 0x8C48
+#define GL_COMPRESSED_SRGB_EXT 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA 0x8C49
+#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49
+#define GL_COMPRESSED_SLUMINANCE 0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B
+#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F
+#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
+#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
+#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
+#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
+#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74
+#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75
+#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
+#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76
+#define GL_BACK_PRIMARY_COLOR_NV 0x8C77
+#define GL_BACK_SECONDARY_COLOR_NV 0x8C78
+#define GL_TEXTURE_COORD_NV 0x8C79
+#define GL_CLIP_DISTANCE_NV 0x8C7A
+#define GL_VERTEX_ID_NV 0x8C7B
+#define GL_PRIMITIVE_ID_NV 0x8C7C
+#define GL_GENERIC_ATTRIB_NV 0x8C7D
+#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F
+#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
+#define GL_ACTIVE_VARYINGS_NV 0x8C81
+#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82
+#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83
+#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83
+#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85
+#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
+#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86
+#define GL_PRIMITIVES_GENERATED 0x8C87
+#define GL_PRIMITIVES_GENERATED_EXT 0x8C87
+#define GL_PRIMITIVES_GENERATED_NV 0x8C87
+#define GL_PRIMITIVES_GENERATED_OES 0x8C87
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88
+#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
+#define GL_RASTERIZER_DISCARD 0x8C89
+#define GL_RASTERIZER_DISCARD_EXT 0x8C89
+#define GL_RASTERIZER_DISCARD_NV 0x8C89
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B
+#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
+#define GL_INTERLEAVED_ATTRIBS 0x8C8C
+#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C
+#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C
+#define GL_SEPARATE_ATTRIBS 0x8C8D
+#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D
+#define GL_SEPARATE_ATTRIBS_NV 0x8C8D
+#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F
+#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
+#define GL_ATC_RGB_AMD 0x8C92
+#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
+#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0
+#define GL_LOWER_LEFT 0x8CA1
+#define GL_LOWER_LEFT_EXT 0x8CA1
+#define GL_UPPER_LEFT 0x8CA2
+#define GL_UPPER_LEFT_EXT 0x8CA2
+#define GL_STENCIL_BACK_REF 0x8CA3
+#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
+#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
+#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
+#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6
+#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6
+#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6
+#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6
+#define GL_FRAMEBUFFER_BINDING 0x8CA6
+#define GL_FRAMEBUFFER_BINDING_ANGLE 0x8CA6
+#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
+#define GL_FRAMEBUFFER_BINDING_OES 0x8CA6
+#define GL_RENDERBUFFER_BINDING 0x8CA7
+#define GL_RENDERBUFFER_BINDING_ANGLE 0x8CA7
+#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7
+#define GL_RENDERBUFFER_BINDING_OES 0x8CA7
+#define GL_READ_FRAMEBUFFER 0x8CA8
+#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8
+#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8
+#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
+#define GL_READ_FRAMEBUFFER_NV 0x8CA8
+#define GL_DRAW_FRAMEBUFFER 0x8CA9
+#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9
+#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9
+#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
+#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9
+#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA
+#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA
+#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA
+#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
+#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA
+#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
+#define GL_RENDERBUFFER_SAMPLES 0x8CAB
+#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB
+#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB
+#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
+#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB
+#define GL_DEPTH_COMPONENT32F 0x8CAC
+#define GL_DEPTH32F_STENCIL8 0x8CAD
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES 0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES 0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES 0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES 0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
+#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
+#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
+#define GL_FRAMEBUFFER_COMPLETE_OES 0x8CD5
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES 0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES 0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES 0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES 0x8CDA
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES 0x8CDB
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
+#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES 0x8CDC
+#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
+#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
+#define GL_FRAMEBUFFER_UNSUPPORTED_OES 0x8CDD
+#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF
+#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
+#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF
+#define GL_COLOR_ATTACHMENT0 0x8CE0
+#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
+#define GL_COLOR_ATTACHMENT0_NV 0x8CE0
+#define GL_COLOR_ATTACHMENT0_OES 0x8CE0
+#define GL_COLOR_ATTACHMENT1 0x8CE1
+#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
+#define GL_COLOR_ATTACHMENT1_NV 0x8CE1
+#define GL_COLOR_ATTACHMENT2 0x8CE2
+#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
+#define GL_COLOR_ATTACHMENT2_NV 0x8CE2
+#define GL_COLOR_ATTACHMENT3 0x8CE3
+#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
+#define GL_COLOR_ATTACHMENT3_NV 0x8CE3
+#define GL_COLOR_ATTACHMENT4 0x8CE4
+#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
+#define GL_COLOR_ATTACHMENT4_NV 0x8CE4
+#define GL_COLOR_ATTACHMENT5 0x8CE5
+#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
+#define GL_COLOR_ATTACHMENT5_NV 0x8CE5
+#define GL_COLOR_ATTACHMENT6 0x8CE6
+#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
+#define GL_COLOR_ATTACHMENT6_NV 0x8CE6
+#define GL_COLOR_ATTACHMENT7 0x8CE7
+#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
+#define GL_COLOR_ATTACHMENT7_NV 0x8CE7
+#define GL_COLOR_ATTACHMENT8 0x8CE8
+#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
+#define GL_COLOR_ATTACHMENT8_NV 0x8CE8
+#define GL_COLOR_ATTACHMENT9 0x8CE9
+#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
+#define GL_COLOR_ATTACHMENT9_NV 0x8CE9
+#define GL_COLOR_ATTACHMENT10 0x8CEA
+#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
+#define GL_COLOR_ATTACHMENT10_NV 0x8CEA
+#define GL_COLOR_ATTACHMENT11 0x8CEB
+#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
+#define GL_COLOR_ATTACHMENT11_NV 0x8CEB
+#define GL_COLOR_ATTACHMENT12 0x8CEC
+#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
+#define GL_COLOR_ATTACHMENT12_NV 0x8CEC
+#define GL_COLOR_ATTACHMENT13 0x8CED
+#define GL_COLOR_ATTACHMENT13_EXT 0x8CED
+#define GL_COLOR_ATTACHMENT13_NV 0x8CED
+#define GL_COLOR_ATTACHMENT14 0x8CEE
+#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
+#define GL_COLOR_ATTACHMENT14_NV 0x8CEE
+#define GL_COLOR_ATTACHMENT15 0x8CEF
+#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
+#define GL_COLOR_ATTACHMENT15_NV 0x8CEF
+#define GL_COLOR_ATTACHMENT16 0x8CF0
+#define GL_COLOR_ATTACHMENT17 0x8CF1
+#define GL_COLOR_ATTACHMENT18 0x8CF2
+#define GL_COLOR_ATTACHMENT19 0x8CF3
+#define GL_COLOR_ATTACHMENT20 0x8CF4
+#define GL_COLOR_ATTACHMENT21 0x8CF5
+#define GL_COLOR_ATTACHMENT22 0x8CF6
+#define GL_COLOR_ATTACHMENT23 0x8CF7
+#define GL_COLOR_ATTACHMENT24 0x8CF8
+#define GL_COLOR_ATTACHMENT25 0x8CF9
+#define GL_COLOR_ATTACHMENT26 0x8CFA
+#define GL_COLOR_ATTACHMENT27 0x8CFB
+#define GL_COLOR_ATTACHMENT28 0x8CFC
+#define GL_COLOR_ATTACHMENT29 0x8CFD
+#define GL_COLOR_ATTACHMENT30 0x8CFE
+#define GL_COLOR_ATTACHMENT31 0x8CFF
+#define GL_DEPTH_ATTACHMENT 0x8D00
+#define GL_DEPTH_ATTACHMENT_EXT 0x8D00
+#define GL_DEPTH_ATTACHMENT_OES 0x8D00
+#define GL_STENCIL_ATTACHMENT 0x8D20
+#define GL_STENCIL_ATTACHMENT_EXT 0x8D20
+#define GL_STENCIL_ATTACHMENT_OES 0x8D20
+#define GL_FRAMEBUFFER 0x8D40
+#define GL_FRAMEBUFFER_EXT 0x8D40
+#define GL_FRAMEBUFFER_OES 0x8D40
+#define GL_RENDERBUFFER 0x8D41
+#define GL_RENDERBUFFER_EXT 0x8D41
+#define GL_RENDERBUFFER_OES 0x8D41
+#define GL_RENDERBUFFER_WIDTH 0x8D42
+#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42
+#define GL_RENDERBUFFER_WIDTH_OES 0x8D42
+#define GL_RENDERBUFFER_HEIGHT 0x8D43
+#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
+#define GL_RENDERBUFFER_HEIGHT_OES 0x8D43
+#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
+#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
+#define GL_RENDERBUFFER_INTERNAL_FORMAT_OES 0x8D44
+#define GL_STENCIL_INDEX1 0x8D46
+#define GL_STENCIL_INDEX1_EXT 0x8D46
+#define GL_STENCIL_INDEX1_OES 0x8D46
+#define GL_STENCIL_INDEX4 0x8D47
+#define GL_STENCIL_INDEX4_EXT 0x8D47
+#define GL_STENCIL_INDEX4_OES 0x8D47
+#define GL_STENCIL_INDEX8 0x8D48
+#define GL_STENCIL_INDEX8_EXT 0x8D48
+#define GL_STENCIL_INDEX8_OES 0x8D48
+#define GL_STENCIL_INDEX16 0x8D49
+#define GL_STENCIL_INDEX16_EXT 0x8D49
+#define GL_RENDERBUFFER_RED_SIZE 0x8D50
+#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50
+#define GL_RENDERBUFFER_RED_SIZE_OES 0x8D50
+#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
+#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51
+#define GL_RENDERBUFFER_GREEN_SIZE_OES 0x8D51
+#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
+#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52
+#define GL_RENDERBUFFER_BLUE_SIZE_OES 0x8D52
+#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
+#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
+#define GL_RENDERBUFFER_ALPHA_SIZE_OES 0x8D53
+#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
+#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
+#define GL_RENDERBUFFER_DEPTH_SIZE_OES 0x8D54
+#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
+#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
+#define GL_RENDERBUFFER_STENCIL_SIZE_OES 0x8D55
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56
+#define GL_MAX_SAMPLES 0x8D57
+#define GL_MAX_SAMPLES_ANGLE 0x8D57
+#define GL_MAX_SAMPLES_APPLE 0x8D57
+#define GL_MAX_SAMPLES_EXT 0x8D57
+#define GL_MAX_SAMPLES_NV 0x8D57
+#define GL_TEXTURE_GEN_STR_OES 0x8D60
+#define GL_HALF_FLOAT_OES 0x8D61
+#define GL_RGB565 0x8D62
+#define GL_RGB565_OES 0x8D62
+#define GL_ETC1_RGB8_OES 0x8D64
+#define GL_TEXTURE_EXTERNAL_OES 0x8D65
+#define GL_SAMPLER_EXTERNAL_OES 0x8D66
+#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
+#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
+#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
+#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
+#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A
+#define GL_MAX_ELEMENT_INDEX 0x8D6B
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C
+#define GL_RGBA32UI 0x8D70
+#define GL_RGBA32UI_EXT 0x8D70
+#define GL_RGB32UI 0x8D71
+#define GL_RGB32UI_EXT 0x8D71
+#define GL_ALPHA32UI_EXT 0x8D72
+#define GL_INTENSITY32UI_EXT 0x8D73
+#define GL_LUMINANCE32UI_EXT 0x8D74
+#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75
+#define GL_RGBA16UI 0x8D76
+#define GL_RGBA16UI_EXT 0x8D76
+#define GL_RGB16UI 0x8D77
+#define GL_RGB16UI_EXT 0x8D77
+#define GL_ALPHA16UI_EXT 0x8D78
+#define GL_INTENSITY16UI_EXT 0x8D79
+#define GL_LUMINANCE16UI_EXT 0x8D7A
+#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B
+#define GL_RGBA8UI 0x8D7C
+#define GL_RGBA8UI_EXT 0x8D7C
+#define GL_RGB8UI 0x8D7D
+#define GL_RGB8UI_EXT 0x8D7D
+#define GL_ALPHA8UI_EXT 0x8D7E
+#define GL_INTENSITY8UI_EXT 0x8D7F
+#define GL_LUMINANCE8UI_EXT 0x8D80
+#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81
+#define GL_RGBA32I 0x8D82
+#define GL_RGBA32I_EXT 0x8D82
+#define GL_RGB32I 0x8D83
+#define GL_RGB32I_EXT 0x8D83
+#define GL_ALPHA32I_EXT 0x8D84
+#define GL_INTENSITY32I_EXT 0x8D85
+#define GL_LUMINANCE32I_EXT 0x8D86
+#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87
+#define GL_RGBA16I 0x8D88
+#define GL_RGBA16I_EXT 0x8D88
+#define GL_RGB16I 0x8D89
+#define GL_RGB16I_EXT 0x8D89
+#define GL_ALPHA16I_EXT 0x8D8A
+#define GL_INTENSITY16I_EXT 0x8D8B
+#define GL_LUMINANCE16I_EXT 0x8D8C
+#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D
+#define GL_RGBA8I 0x8D8E
+#define GL_RGBA8I_EXT 0x8D8E
+#define GL_RGB8I 0x8D8F
+#define GL_RGB8I_EXT 0x8D8F
+#define GL_ALPHA8I_EXT 0x8D90
+#define GL_INTENSITY8I_EXT 0x8D91
+#define GL_LUMINANCE8I_EXT 0x8D92
+#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93
+#define GL_RED_INTEGER 0x8D94
+#define GL_RED_INTEGER_EXT 0x8D94
+#define GL_GREEN_INTEGER 0x8D95
+#define GL_GREEN_INTEGER_EXT 0x8D95
+#define GL_BLUE_INTEGER 0x8D96
+#define GL_BLUE_INTEGER_EXT 0x8D96
+#define GL_ALPHA_INTEGER 0x8D97
+#define GL_ALPHA_INTEGER_EXT 0x8D97
+#define GL_RGB_INTEGER 0x8D98
+#define GL_RGB_INTEGER_EXT 0x8D98
+#define GL_RGBA_INTEGER 0x8D99
+#define GL_RGBA_INTEGER_EXT 0x8D99
+#define GL_BGR_INTEGER 0x8D9A
+#define GL_BGR_INTEGER_EXT 0x8D9A
+#define GL_BGRA_INTEGER 0x8D9B
+#define GL_BGRA_INTEGER_EXT 0x8D9B
+#define GL_LUMINANCE_INTEGER_EXT 0x8D9C
+#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D
+#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E
+#define GL_INT_2_10_10_10_REV 0x8D9F
+#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
+#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
+#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
+#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
+#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
+#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
+#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
+#define GL_LAYER_NV 0x8DAA
+#define GL_DEPTH_COMPONENT32F_NV 0x8DAB
+#define GL_DEPTH32F_STENCIL8_NV 0x8DAC
+#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
+#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
+#define GL_SHADER_INCLUDE_ARB 0x8DAE
+#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF
+#define GL_FRAMEBUFFER_SRGB 0x8DB9
+#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9
+#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
+#define GL_COMPRESSED_RED_RGTC1 0x8DBB
+#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
+#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
+#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
+#define GL_COMPRESSED_RG_RGTC2 0x8DBD
+#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
+#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
+#define GL_SAMPLER_1D_ARRAY 0x8DC0
+#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0
+#define GL_SAMPLER_2D_ARRAY 0x8DC1
+#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1
+#define GL_SAMPLER_BUFFER 0x8DC2
+#define GL_SAMPLER_BUFFER_EXT 0x8DC2
+#define GL_SAMPLER_BUFFER_OES 0x8DC2
+#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3
+#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3
+#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4
+#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4
+#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4
+#define GL_SAMPLER_CUBE_SHADOW 0x8DC5
+#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5
+#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5
+#define GL_UNSIGNED_INT_VEC2 0x8DC6
+#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6
+#define GL_UNSIGNED_INT_VEC3 0x8DC7
+#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7
+#define GL_UNSIGNED_INT_VEC4 0x8DC8
+#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8
+#define GL_INT_SAMPLER_1D 0x8DC9
+#define GL_INT_SAMPLER_1D_EXT 0x8DC9
+#define GL_INT_SAMPLER_2D 0x8DCA
+#define GL_INT_SAMPLER_2D_EXT 0x8DCA
+#define GL_INT_SAMPLER_3D 0x8DCB
+#define GL_INT_SAMPLER_3D_EXT 0x8DCB
+#define GL_INT_SAMPLER_CUBE 0x8DCC
+#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC
+#define GL_INT_SAMPLER_2D_RECT 0x8DCD
+#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD
+#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE
+#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE
+#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF
+#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF
+#define GL_INT_SAMPLER_BUFFER 0x8DD0
+#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
+#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0
+#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1
+#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1
+#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2
+#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2
+#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3
+#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3
+#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4
+#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5
+#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
+#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6
+#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
+#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7
+#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8
+#define GL_GEOMETRY_SHADER 0x8DD9
+#define GL_GEOMETRY_SHADER_ARB 0x8DD9
+#define GL_GEOMETRY_SHADER_EXT 0x8DD9
+#define GL_GEOMETRY_SHADER_OES 0x8DD9
+#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA
+#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA
+#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
+#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
+#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC
+#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC
+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
+#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
+#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1
+#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
+#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
+#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
+#define GL_ACTIVE_SUBROUTINES 0x8DE5
+#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6
+#define GL_MAX_SUBROUTINES 0x8DE7
+#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
+#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9
+#define GL_NAMED_STRING_TYPE_ARB 0x8DEA
+#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED
+#define GL_UNIFORM_BUFFER_EXT 0x8DEE
+#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF
+#define GL_LOW_FLOAT 0x8DF0
+#define GL_MEDIUM_FLOAT 0x8DF1
+#define GL_HIGH_FLOAT 0x8DF2
+#define GL_LOW_INT 0x8DF3
+#define GL_MEDIUM_INT 0x8DF4
+#define GL_HIGH_INT 0x8DF5
+#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6
+#define GL_INT_10_10_10_2_OES 0x8DF7
+#define GL_SHADER_BINARY_FORMATS 0x8DF8
+#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
+#define GL_SHADER_COMPILER 0x8DFA
+#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
+#define GL_MAX_VARYING_VECTORS 0x8DFC
+#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
+#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10
+#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
+#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12
+#define GL_QUERY_WAIT 0x8E13
+#define GL_QUERY_WAIT_NV 0x8E13
+#define GL_QUERY_NO_WAIT 0x8E14
+#define GL_QUERY_NO_WAIT_NV 0x8E14
+#define GL_QUERY_BY_REGION_WAIT 0x8E15
+#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15
+#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16
+#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16
+#define GL_QUERY_WAIT_INVERTED 0x8E17
+#define GL_QUERY_NO_WAIT_INVERTED 0x8E18
+#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19
+#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A
+#define GL_POLYGON_OFFSET_CLAMP 0x8E1B
+#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F
+#define GL_COLOR_SAMPLES_NV 0x8E20
+#define GL_TRANSFORM_FEEDBACK 0x8E22
+#define GL_TRANSFORM_FEEDBACK_NV 0x8E22
+#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
+#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23
+#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23
+#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24
+#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
+#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24
+#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
+#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25
+#define GL_FRAME_NV 0x8E26
+#define GL_FIELDS_NV 0x8E27
+#define GL_CURRENT_TIME_NV 0x8E28
+#define GL_TIMESTAMP 0x8E28
+#define GL_TIMESTAMP_EXT 0x8E28
+#define GL_NUM_FILL_STREAMS_NV 0x8E29
+#define GL_PRESENT_TIME_NV 0x8E2A
+#define GL_PRESENT_DURATION_NV 0x8E2B
+#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C
+#define GL_PROGRAM_MATRIX_EXT 0x8E2D
+#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E
+#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
+#define GL_TEXTURE_SWIZZLE_R 0x8E42
+#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42
+#define GL_TEXTURE_SWIZZLE_G 0x8E43
+#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43
+#define GL_TEXTURE_SWIZZLE_B 0x8E44
+#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44
+#define GL_TEXTURE_SWIZZLE_A 0x8E45
+#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45
+#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46
+#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
+#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
+#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A
+#define GL_COMPATIBLE_SUBROUTINES 0x8E4B
+#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
+#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C
+#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
+#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D
+#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION 0x8E4E
+#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E
+#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E
+#define GL_PROVOKING_VERTEX 0x8E4F
+#define GL_PROVOKING_VERTEX_EXT 0x8E4F
+#define GL_SAMPLE_LOCATION_ARB 0x8E50
+#define GL_SAMPLE_LOCATION_NV 0x8E50
+#define GL_SAMPLE_POSITION 0x8E50
+#define GL_SAMPLE_POSITION_NV 0x8E50
+#define GL_SAMPLE_MASK 0x8E51
+#define GL_SAMPLE_MASK_NV 0x8E51
+#define GL_SAMPLE_MASK_VALUE 0x8E52
+#define GL_SAMPLE_MASK_VALUE_NV 0x8E52
+#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53
+#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54
+#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55
+#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56
+#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57
+#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58
+#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59
+#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59
+#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C
+#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
+#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D
+#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F
+#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60
+#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61
+#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62
+#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63
+#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64
+#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65
+#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66
+#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67
+#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68
+#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69
+#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A
+#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B
+#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C
+#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D
+#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E
+#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F
+#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
+#define GL_MAX_VERTEX_STREAMS 0x8E71
+#define GL_PATCH_VERTICES 0x8E72
+#define GL_PATCH_VERTICES_EXT 0x8E72
+#define GL_PATCH_VERTICES_OES 0x8E72
+#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73
+#define GL_PATCH_DEFAULT_INNER_LEVEL_EXT 0x8E73
+#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74
+#define GL_PATCH_DEFAULT_OUTER_LEVEL_EXT 0x8E74
+#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75
+#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75
+#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75
+#define GL_TESS_GEN_MODE 0x8E76
+#define GL_TESS_GEN_MODE_EXT 0x8E76
+#define GL_TESS_GEN_MODE_OES 0x8E76
+#define GL_TESS_GEN_SPACING 0x8E77
+#define GL_TESS_GEN_SPACING_EXT 0x8E77
+#define GL_TESS_GEN_SPACING_OES 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER 0x8E78
+#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78
+#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78
+#define GL_TESS_GEN_POINT_MODE 0x8E79
+#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79
+#define GL_TESS_GEN_POINT_MODE_OES 0x8E79
+#define GL_ISOLINES 0x8E7A
+#define GL_ISOLINES_EXT 0x8E7A
+#define GL_ISOLINES_OES 0x8E7A
+#define GL_FRACTIONAL_ODD 0x8E7B
+#define GL_FRACTIONAL_ODD_EXT 0x8E7B
+#define GL_FRACTIONAL_ODD_OES 0x8E7B
+#define GL_FRACTIONAL_EVEN 0x8E7C
+#define GL_FRACTIONAL_EVEN_EXT 0x8E7C
+#define GL_FRACTIONAL_EVEN_OES 0x8E7C
+#define GL_MAX_PATCH_VERTICES 0x8E7D
+#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D
+#define GL_MAX_PATCH_VERTICES_OES 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL 0x8E7E
+#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E
+#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84
+#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84
+#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86
+#define GL_TESS_EVALUATION_SHADER 0x8E87
+#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87
+#define GL_TESS_EVALUATION_SHADER_OES 0x8E87
+#define GL_TESS_CONTROL_SHADER 0x8E88
+#define GL_TESS_CONTROL_SHADER_EXT 0x8E88
+#define GL_TESS_CONTROL_SHADER_OES 0x8E88
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A
+#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
+#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
+#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F
+#define GL_COVERAGE_COMPONENT_NV 0x8ED0
+#define GL_COVERAGE_COMPONENT4_NV 0x8ED1
+#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2
+#define GL_COVERAGE_BUFFERS_NV 0x8ED3
+#define GL_COVERAGE_SAMPLES_NV 0x8ED4
+#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5
+#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6
+#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7
+#define GL_INCLUSIVE_EXT 0x8F10
+#define GL_EXCLUSIVE_EXT 0x8F11
+#define GL_WINDOW_RECTANGLE_EXT 0x8F12
+#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
+#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
+#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
+#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D
+#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
+#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F
+#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
+#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21
+#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22
+#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23
+#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24
+#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
+#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26
+#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
+#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28
+#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29
+#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A
+#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B
+#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C
+#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D
+#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E
+#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F
+#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30
+#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
+#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32
+#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33
+#define GL_GPU_ADDRESS_NV 0x8F34
+#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35
+#define GL_COPY_READ_BUFFER 0x8F36
+#define GL_COPY_READ_BUFFER_BINDING 0x8F36
+#define GL_COPY_READ_BUFFER_NV 0x8F36
+#define GL_COPY_WRITE_BUFFER 0x8F37
+#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37
+#define GL_COPY_WRITE_BUFFER_NV 0x8F37
+#define GL_MAX_IMAGE_UNITS 0x8F38
+#define GL_MAX_IMAGE_UNITS_EXT 0x8F38
+#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
+#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
+#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
+#define GL_IMAGE_BINDING_NAME 0x8F3A
+#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A
+#define GL_IMAGE_BINDING_LEVEL 0x8F3B
+#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B
+#define GL_IMAGE_BINDING_LAYERED 0x8F3C
+#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C
+#define GL_IMAGE_BINDING_LAYER 0x8F3D
+#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D
+#define GL_IMAGE_BINDING_ACCESS 0x8F3E
+#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E
+#define GL_DRAW_INDIRECT_BUFFER 0x8F3F
+#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40
+#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41
+#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42
+#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43
+#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44
+#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45
+#define GL_DOUBLE_MAT2 0x8F46
+#define GL_DOUBLE_MAT2_EXT 0x8F46
+#define GL_DOUBLE_MAT3 0x8F47
+#define GL_DOUBLE_MAT3_EXT 0x8F47
+#define GL_DOUBLE_MAT4 0x8F48
+#define GL_DOUBLE_MAT4_EXT 0x8F48
+#define GL_DOUBLE_MAT2x3 0x8F49
+#define GL_DOUBLE_MAT2x3_EXT 0x8F49
+#define GL_DOUBLE_MAT2x4 0x8F4A
+#define GL_DOUBLE_MAT2x4_EXT 0x8F4A
+#define GL_DOUBLE_MAT3x2 0x8F4B
+#define GL_DOUBLE_MAT3x2_EXT 0x8F4B
+#define GL_DOUBLE_MAT3x4 0x8F4C
+#define GL_DOUBLE_MAT3x4_EXT 0x8F4C
+#define GL_DOUBLE_MAT4x2 0x8F4D
+#define GL_DOUBLE_MAT4x2_EXT 0x8F4D
+#define GL_DOUBLE_MAT4x3 0x8F4E
+#define GL_DOUBLE_MAT4x3_EXT 0x8F4E
+#define GL_VERTEX_BINDING_BUFFER 0x8F4F
+#define GL_MALI_SHADER_BINARY_ARM 0x8F60
+#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61
+#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63
+#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64
+#define GL_FETCH_PER_SAMPLE_ARM 0x8F65
+#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66
+#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67
+#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69
+#define GL_RED_SNORM 0x8F90
+#define GL_RG_SNORM 0x8F91
+#define GL_RGB_SNORM 0x8F92
+#define GL_RGBA_SNORM 0x8F93
+#define GL_R8_SNORM 0x8F94
+#define GL_RG8_SNORM 0x8F95
+#define GL_RGB8_SNORM 0x8F96
+#define GL_RGBA8_SNORM 0x8F97
+#define GL_R16_SNORM 0x8F98
+#define GL_R16_SNORM_EXT 0x8F98
+#define GL_RG16_SNORM 0x8F99
+#define GL_RG16_SNORM_EXT 0x8F99
+#define GL_RGB16_SNORM 0x8F9A
+#define GL_RGB16_SNORM_EXT 0x8F9A
+#define GL_RGBA16_SNORM 0x8F9B
+#define GL_RGBA16_SNORM_EXT 0x8F9B
+#define GL_SIGNED_NORMALIZED 0x8F9C
+#define GL_PRIMITIVE_RESTART 0x8F9D
+#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
+#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0
+#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1
+#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0
+#define GL_CPU_OPTIMIZED_QCOM 0x8FB1
+#define GL_GPU_OPTIMIZED_QCOM 0x8FB2
+#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3
+#define GL_GPU_DISJOINT_EXT 0x8FBB
+#define GL_SR8_EXT 0x8FBD
+#define GL_SRG8_EXT 0x8FBE
+#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF
+#define GL_SHADER_BINARY_VIV 0x8FC4
+#define GL_INT8_NV 0x8FE0
+#define GL_INT8_VEC2_NV 0x8FE1
+#define GL_INT8_VEC3_NV 0x8FE2
+#define GL_INT8_VEC4_NV 0x8FE3
+#define GL_INT16_NV 0x8FE4
+#define GL_INT16_VEC2_NV 0x8FE5
+#define GL_INT16_VEC3_NV 0x8FE6
+#define GL_INT16_VEC4_NV 0x8FE7
+#define GL_INT64_VEC2_ARB 0x8FE9
+#define GL_INT64_VEC2_NV 0x8FE9
+#define GL_INT64_VEC3_ARB 0x8FEA
+#define GL_INT64_VEC3_NV 0x8FEA
+#define GL_INT64_VEC4_ARB 0x8FEB
+#define GL_INT64_VEC4_NV 0x8FEB
+#define GL_UNSIGNED_INT8_NV 0x8FEC
+#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED
+#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
+#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
+#define GL_UNSIGNED_INT16_NV 0x8FF0
+#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
+#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
+#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
+#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5
+#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
+#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6
+#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
+#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7
+#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
+#define GL_FLOAT16_NV 0x8FF8
+#define GL_FLOAT16_VEC2_NV 0x8FF9
+#define GL_FLOAT16_VEC3_NV 0x8FFA
+#define GL_FLOAT16_VEC4_NV 0x8FFB
+#define GL_DOUBLE_VEC2 0x8FFC
+#define GL_DOUBLE_VEC2_EXT 0x8FFC
+#define GL_DOUBLE_VEC3 0x8FFD
+#define GL_DOUBLE_VEC3_EXT 0x8FFD
+#define GL_DOUBLE_VEC4 0x8FFE
+#define GL_DOUBLE_VEC4_EXT 0x8FFE
+#define GL_SAMPLER_BUFFER_AMD 0x9001
+#define GL_INT_SAMPLER_BUFFER_AMD 0x9002
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
+#define GL_TESSELLATION_MODE_AMD 0x9004
+#define GL_TESSELLATION_FACTOR_AMD 0x9005
+#define GL_DISCRETE_AMD 0x9006
+#define GL_CONTINUOUS_AMD 0x9007
+#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009
+#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009
+#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009
+#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
+#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F
+#define GL_ALPHA_SNORM 0x9010
+#define GL_LUMINANCE_SNORM 0x9011
+#define GL_LUMINANCE_ALPHA_SNORM 0x9012
+#define GL_INTENSITY_SNORM 0x9013
+#define GL_ALPHA8_SNORM 0x9014
+#define GL_LUMINANCE8_SNORM 0x9015
+#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016
+#define GL_INTENSITY8_SNORM 0x9017
+#define GL_ALPHA16_SNORM 0x9018
+#define GL_LUMINANCE16_SNORM 0x9019
+#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A
+#define GL_INTENSITY16_SNORM 0x901B
+#define GL_FACTOR_MIN_AMD 0x901C
+#define GL_FACTOR_MAX_AMD 0x901D
+#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E
+#define GL_DEPTH_CLAMP_FAR_AMD 0x901F
+#define GL_VIDEO_BUFFER_NV 0x9020
+#define GL_VIDEO_BUFFER_BINDING_NV 0x9021
+#define GL_FIELD_UPPER_NV 0x9022
+#define GL_FIELD_LOWER_NV 0x9023
+#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024
+#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025
+#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026
+#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027
+#define GL_VIDEO_BUFFER_PITCH_NV 0x9028
+#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029
+#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A
+#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B
+#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C
+#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D
+#define GL_PARTIAL_SUCCESS_NV 0x902E
+#define GL_SUCCESS_NV 0x902F
+#define GL_FAILURE_NV 0x9030
+#define GL_YCBYCR8_422_NV 0x9031
+#define GL_YCBAYCR8A_4224_NV 0x9032
+#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033
+#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034
+#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035
+#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036
+#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037
+#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038
+#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039
+#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A
+#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B
+#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C
+#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045
+#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046
+#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
+#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
+#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
+#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
+#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
+#define GL_IMAGE_1D 0x904C
+#define GL_IMAGE_1D_EXT 0x904C
+#define GL_IMAGE_2D 0x904D
+#define GL_IMAGE_2D_EXT 0x904D
+#define GL_IMAGE_3D 0x904E
+#define GL_IMAGE_3D_EXT 0x904E
+#define GL_IMAGE_2D_RECT 0x904F
+#define GL_IMAGE_2D_RECT_EXT 0x904F
+#define GL_IMAGE_CUBE 0x9050
+#define GL_IMAGE_CUBE_EXT 0x9050
+#define GL_IMAGE_BUFFER 0x9051
+#define GL_IMAGE_BUFFER_EXT 0x9051
+#define GL_IMAGE_BUFFER_OES 0x9051
+#define GL_IMAGE_1D_ARRAY 0x9052
+#define GL_IMAGE_1D_ARRAY_EXT 0x9052
+#define GL_IMAGE_2D_ARRAY 0x9053
+#define GL_IMAGE_2D_ARRAY_EXT 0x9053
+#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054
+#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
+#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054
+#define GL_IMAGE_2D_MULTISAMPLE 0x9055
+#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055
+#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056
+#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056
+#define GL_INT_IMAGE_1D 0x9057
+#define GL_INT_IMAGE_1D_EXT 0x9057
+#define GL_INT_IMAGE_2D 0x9058
+#define GL_INT_IMAGE_2D_EXT 0x9058
+#define GL_INT_IMAGE_3D 0x9059
+#define GL_INT_IMAGE_3D_EXT 0x9059
+#define GL_INT_IMAGE_2D_RECT 0x905A
+#define GL_INT_IMAGE_2D_RECT_EXT 0x905A
+#define GL_INT_IMAGE_CUBE 0x905B
+#define GL_INT_IMAGE_CUBE_EXT 0x905B
+#define GL_INT_IMAGE_BUFFER 0x905C
+#define GL_INT_IMAGE_BUFFER_EXT 0x905C
+#define GL_INT_IMAGE_BUFFER_OES 0x905C
+#define GL_INT_IMAGE_1D_ARRAY 0x905D
+#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D
+#define GL_INT_IMAGE_2D_ARRAY 0x905E
+#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F
+#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060
+#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060
+#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
+#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061
+#define GL_UNSIGNED_INT_IMAGE_1D 0x9062
+#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062
+#define GL_UNSIGNED_INT_IMAGE_2D 0x9063
+#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063
+#define GL_UNSIGNED_INT_IMAGE_3D 0x9064
+#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064
+#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065
+#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065
+#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066
+#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066
+#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067
+#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
+#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067
+#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068
+#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068
+#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069
+#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C
+#define GL_MAX_IMAGE_SAMPLES 0x906D
+#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D
+#define GL_IMAGE_BINDING_FORMAT 0x906E
+#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E
+#define GL_RGB10_A2UI 0x906F
+#define GL_PATH_FORMAT_SVG_NV 0x9070
+#define GL_PATH_FORMAT_PS_NV 0x9071
+#define GL_STANDARD_FONT_NAME_NV 0x9072
+#define GL_SYSTEM_FONT_NAME_NV 0x9073
+#define GL_FILE_NAME_NV 0x9074
+#define GL_PATH_STROKE_WIDTH_NV 0x9075
+#define GL_PATH_END_CAPS_NV 0x9076
+#define GL_PATH_INITIAL_END_CAP_NV 0x9077
+#define GL_PATH_TERMINAL_END_CAP_NV 0x9078
+#define GL_PATH_JOIN_STYLE_NV 0x9079
+#define GL_PATH_MITER_LIMIT_NV 0x907A
+#define GL_PATH_DASH_CAPS_NV 0x907B
+#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C
+#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D
+#define GL_PATH_DASH_OFFSET_NV 0x907E
+#define GL_PATH_CLIENT_LENGTH_NV 0x907F
+#define GL_PATH_FILL_MODE_NV 0x9080
+#define GL_PATH_FILL_MASK_NV 0x9081
+#define GL_PATH_FILL_COVER_MODE_NV 0x9082
+#define GL_PATH_STROKE_COVER_MODE_NV 0x9083
+#define GL_PATH_STROKE_MASK_NV 0x9084
+#define GL_COUNT_UP_NV 0x9088
+#define GL_COUNT_DOWN_NV 0x9089
+#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A
+#define GL_CONVEX_HULL_NV 0x908B
+#define GL_BOUNDING_BOX_NV 0x908D
+#define GL_TRANSLATE_X_NV 0x908E
+#define GL_TRANSLATE_Y_NV 0x908F
+#define GL_TRANSLATE_2D_NV 0x9090
+#define GL_TRANSLATE_3D_NV 0x9091
+#define GL_AFFINE_2D_NV 0x9092
+#define GL_AFFINE_3D_NV 0x9094
+#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096
+#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098
+#define GL_UTF8_NV 0x909A
+#define GL_UTF16_NV 0x909B
+#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
+#define GL_PATH_COMMAND_COUNT_NV 0x909D
+#define GL_PATH_COORD_COUNT_NV 0x909E
+#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F
+#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0
+#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1
+#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2
+#define GL_SQUARE_NV 0x90A3
+#define GL_ROUND_NV 0x90A4
+#define GL_TRIANGULAR_NV 0x90A5
+#define GL_BEVEL_NV 0x90A6
+#define GL_MITER_REVERT_NV 0x90A7
+#define GL_MITER_TRUNCATE_NV 0x90A8
+#define GL_SKIP_MISSING_GLYPH_NV 0x90A9
+#define GL_USE_MISSING_GLYPH_NV 0x90AA
+#define GL_PATH_ERROR_POSITION_NV 0x90AB
+#define GL_PATH_FOG_GEN_MODE_NV 0x90AC
+#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD
+#define GL_ADJACENT_PAIRS_NV 0x90AE
+#define GL_FIRST_TO_REST_NV 0x90AF
+#define GL_PATH_GEN_MODE_NV 0x90B0
+#define GL_PATH_GEN_COEFF_NV 0x90B1
+#define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2
+#define GL_PATH_GEN_COMPONENTS_NV 0x90B3
+#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4
+#define GL_MOVE_TO_RESETS_NV 0x90B5
+#define GL_MOVE_TO_CONTINUES_NV 0x90B6
+#define GL_PATH_STENCIL_FUNC_NV 0x90B7
+#define GL_PATH_STENCIL_REF_NV 0x90B8
+#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9
+#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA
+#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB
+#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC
+#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
+#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
+#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF
+#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
+#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
+#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
+#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD
+#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
+#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
+#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0
+#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1
+#define GL_SHADER_STORAGE_BUFFER 0x90D2
+#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3
+#define GL_SHADER_STORAGE_BUFFER_START 0x90D4
+#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5
+#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9
+#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
+#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
+#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
+#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
+#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE
+#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
+#define GL_SYNC_X11_FENCE_EXT 0x90E1
+#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA
+#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB
+#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
+#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE
+#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
+#define GL_COLOR_ATTACHMENT_EXT 0x90F0
+#define GL_MULTIVIEW_EXT 0x90F1
+#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2
+#define GL_CONTEXT_ROBUST_ACCESS 0x90F3
+#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3
+#define GL_CONTEXT_ROBUST_ACCESS_KHR 0x90F3
+#define GL_COMPUTE_PROGRAM_NV 0x90FB
+#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC
+#define GL_TEXTURE_2D_MULTISAMPLE 0x9100
+#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
+#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
+#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102
+#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105
+#define GL_TEXTURE_SAMPLES 0x9106
+#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
+#define GL_SAMPLER_2D_MULTISAMPLE 0x9108
+#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
+#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
+#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B
+#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
+#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D
+#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E
+#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F
+#define GL_MAX_INTEGER_SAMPLES 0x9110
+#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
+#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111
+#define GL_OBJECT_TYPE 0x9112
+#define GL_OBJECT_TYPE_APPLE 0x9112
+#define GL_SYNC_CONDITION 0x9113
+#define GL_SYNC_CONDITION_APPLE 0x9113
+#define GL_SYNC_STATUS 0x9114
+#define GL_SYNC_STATUS_APPLE 0x9114
+#define GL_SYNC_FLAGS 0x9115
+#define GL_SYNC_FLAGS_APPLE 0x9115
+#define GL_SYNC_FENCE 0x9116
+#define GL_SYNC_FENCE_APPLE 0x9116
+#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
+#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117
+#define GL_UNSIGNALED 0x9118
+#define GL_UNSIGNALED_APPLE 0x9118
+#define GL_SIGNALED 0x9119
+#define GL_SIGNALED_APPLE 0x9119
+#define GL_ALREADY_SIGNALED 0x911A
+#define GL_ALREADY_SIGNALED_APPLE 0x911A
+#define GL_TIMEOUT_EXPIRED 0x911B
+#define GL_TIMEOUT_EXPIRED_APPLE 0x911B
+#define GL_CONDITION_SATISFIED 0x911C
+#define GL_CONDITION_SATISFIED_APPLE 0x911C
+#define GL_WAIT_FAILED 0x911D
+#define GL_WAIT_FAILED_APPLE 0x911D
+#define GL_BUFFER_ACCESS_FLAGS 0x911F
+#define GL_BUFFER_MAP_LENGTH 0x9120
+#define GL_BUFFER_MAP_OFFSET 0x9121
+#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124
+#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125
+#define GL_CONTEXT_PROFILE_MASK 0x9126
+#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127
+#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128
+#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129
+#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A
+#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B
+#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C
+#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D
+#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E
+#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
+#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F
+#define GL_SGX_PROGRAM_BINARY_IMG 0x9130
+#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134
+#define GL_MAX_SAMPLES_IMG 0x9135
+#define GL_TEXTURE_SAMPLES_IMG 0x9136
+#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137
+#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138
+#define GL_CUBIC_IMG 0x9139
+#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A
+#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C
+#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D
+#define GL_DOWNSAMPLE_SCALES_IMG 0x913E
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F
+#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
+#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143
+#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
+#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143
+#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
+#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144
+#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
+#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144
+#define GL_DEBUG_LOGGED_MESSAGES 0x9145
+#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145
+#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
+#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145
+#define GL_DEBUG_SEVERITY_HIGH 0x9146
+#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146
+#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
+#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM 0x9147
+#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147
+#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
+#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147
+#define GL_DEBUG_SEVERITY_LOW 0x9148
+#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148
+#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148
+#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148
+#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149
+#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A
+#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B
+#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C
+#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D
+#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E
+#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F
+#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150
+#define GL_BUFFER_OBJECT_EXT 0x9151
+#define GL_DATA_BUFFER_AMD 0x9151
+#define GL_PERFORMANCE_MONITOR_AMD 0x9152
+#define GL_QUERY_OBJECT_AMD 0x9153
+#define GL_QUERY_OBJECT_EXT 0x9153
+#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154
+#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
+#define GL_SAMPLER_OBJECT_AMD 0x9155
+#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160
+#define GL_QUERY_BUFFER 0x9192
+#define GL_QUERY_BUFFER_AMD 0x9192
+#define GL_QUERY_BUFFER_BINDING 0x9193
+#define GL_QUERY_BUFFER_BINDING_AMD 0x9193
+#define GL_QUERY_RESULT_NO_WAIT 0x9194
+#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194
+#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195
+#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195
+#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195
+#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196
+#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196
+#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196
+#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197
+#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197
+#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197
+#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198
+#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198
+#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198
+#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199
+#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199
+#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199
+#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A
+#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A
+#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A
+#define GL_MIN_SPARSE_LEVEL_AMD 0x919B
+#define GL_MIN_LOD_WARNING_AMD 0x919C
+#define GL_TEXTURE_BUFFER_OFFSET 0x919D
+#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D
+#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D
+#define GL_TEXTURE_BUFFER_SIZE 0x919E
+#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E
+#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT 0x919F
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F
+#define GL_STREAM_RASTERIZATION_AMD 0x91A0
+#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4
+#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5
+#define GL_TEXTURE_SPARSE_ARB 0x91A6
+#define GL_TEXTURE_SPARSE_EXT 0x91A6
+#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7
+#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7
+#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8
+#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8
+#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
+#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9
+#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA
+#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA
+#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE
+#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF
+#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0
+#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
+#define GL_COMPLETION_STATUS_ARB 0x91B1
+#define GL_COMPLETION_STATUS_KHR 0x91B1
+#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2
+#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3
+#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4
+#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5
+#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6
+#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7
+#define GL_COMPUTE_SHADER 0x91B9
+#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB
+#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
+#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD
+#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE
+#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF
+#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF
+#define GL_FLOAT16_MAT2_AMD 0x91C5
+#define GL_FLOAT16_MAT3_AMD 0x91C6
+#define GL_FLOAT16_MAT4_AMD 0x91C7
+#define GL_FLOAT16_MAT2x3_AMD 0x91C8
+#define GL_FLOAT16_MAT2x4_AMD 0x91C9
+#define GL_FLOAT16_MAT3x2_AMD 0x91CA
+#define GL_FLOAT16_MAT3x4_AMD 0x91CB
+#define GL_FLOAT16_MAT4x2_AMD 0x91CC
+#define GL_FLOAT16_MAT4x3_AMD 0x91CD
+#define GL_UNPACK_FLIP_Y_WEBGL 0x9240
+#define GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL 0x9241
+#define GL_CONTEXT_LOST_WEBGL 0x9242
+#define GL_UNPACK_COLORSPACE_CONVERSION_WEBGL 0x9243
+#define GL_BROWSER_DEFAULT_WEBGL 0x9244
+#define GL_SHADER_BINARY_DMP 0x9250
+#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251
+#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252
+#define GL_DMP_PROGRAM_BINARY_DMP 0x9253
+#define GL_GCCSO_SHADER_BINARY_FJ 0x9260
+#define GL_COMPRESSED_R11_EAC 0x9270
+#define GL_COMPRESSED_R11_EAC_OES 0x9270
+#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271
+#define GL_COMPRESSED_SIGNED_R11_EAC_OES 0x9271
+#define GL_COMPRESSED_RG11_EAC 0x9272
+#define GL_COMPRESSED_RG11_EAC_OES 0x9272
+#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
+#define GL_COMPRESSED_SIGNED_RG11_EAC_OES 0x9273
+#define GL_COMPRESSED_RGB8_ETC2 0x9274
+#define GL_COMPRESSED_RGB8_ETC2_OES 0x9274
+#define GL_COMPRESSED_SRGB8_ETC2 0x9275
+#define GL_COMPRESSED_SRGB8_ETC2_OES 0x9275
+#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
+#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES 0x9276
+#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
+#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES 0x9277
+#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
+#define GL_COMPRESSED_RGBA8_ETC2_EAC_OES 0x9278
+#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
+#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES 0x9279
+#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280
+#define GL_BLEND_OVERLAP_NV 0x9281
+#define GL_UNCORRELATED_NV 0x9282
+#define GL_DISJOINT_NV 0x9283
+#define GL_CONJOINT_NV 0x9284
+#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285
+#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285
+#define GL_SRC_NV 0x9286
+#define GL_DST_NV 0x9287
+#define GL_SRC_OVER_NV 0x9288
+#define GL_DST_OVER_NV 0x9289
+#define GL_SRC_IN_NV 0x928A
+#define GL_DST_IN_NV 0x928B
+#define GL_SRC_OUT_NV 0x928C
+#define GL_DST_OUT_NV 0x928D
+#define GL_SRC_ATOP_NV 0x928E
+#define GL_DST_ATOP_NV 0x928F
+#define GL_PLUS_NV 0x9291
+#define GL_PLUS_DARKER_NV 0x9292
+#define GL_MULTIPLY 0x9294
+#define GL_MULTIPLY_KHR 0x9294
+#define GL_MULTIPLY_NV 0x9294
+#define GL_SCREEN 0x9295
+#define GL_SCREEN_KHR 0x9295
+#define GL_SCREEN_NV 0x9295
+#define GL_OVERLAY 0x9296
+#define GL_OVERLAY_KHR 0x9296
+#define GL_OVERLAY_NV 0x9296
+#define GL_DARKEN 0x9297
+#define GL_DARKEN_KHR 0x9297
+#define GL_DARKEN_NV 0x9297
+#define GL_LIGHTEN 0x9298
+#define GL_LIGHTEN_KHR 0x9298
+#define GL_LIGHTEN_NV 0x9298
+#define GL_COLORDODGE 0x9299
+#define GL_COLORDODGE_KHR 0x9299
+#define GL_COLORDODGE_NV 0x9299
+#define GL_COLORBURN 0x929A
+#define GL_COLORBURN_KHR 0x929A
+#define GL_COLORBURN_NV 0x929A
+#define GL_HARDLIGHT 0x929B
+#define GL_HARDLIGHT_KHR 0x929B
+#define GL_HARDLIGHT_NV 0x929B
+#define GL_SOFTLIGHT 0x929C
+#define GL_SOFTLIGHT_KHR 0x929C
+#define GL_SOFTLIGHT_NV 0x929C
+#define GL_DIFFERENCE 0x929E
+#define GL_DIFFERENCE_KHR 0x929E
+#define GL_DIFFERENCE_NV 0x929E
+#define GL_MINUS_NV 0x929F
+#define GL_EXCLUSION 0x92A0
+#define GL_EXCLUSION_KHR 0x92A0
+#define GL_EXCLUSION_NV 0x92A0
+#define GL_CONTRAST_NV 0x92A1
+#define GL_INVERT_RGB_NV 0x92A3
+#define GL_LINEARDODGE_NV 0x92A4
+#define GL_LINEARBURN_NV 0x92A5
+#define GL_VIVIDLIGHT_NV 0x92A6
+#define GL_LINEARLIGHT_NV 0x92A7
+#define GL_PINLIGHT_NV 0x92A8
+#define GL_HARDMIX_NV 0x92A9
+#define GL_HSL_HUE 0x92AD
+#define GL_HSL_HUE_KHR 0x92AD
+#define GL_HSL_HUE_NV 0x92AD
+#define GL_HSL_SATURATION 0x92AE
+#define GL_HSL_SATURATION_KHR 0x92AE
+#define GL_HSL_SATURATION_NV 0x92AE
+#define GL_HSL_COLOR 0x92AF
+#define GL_HSL_COLOR_KHR 0x92AF
+#define GL_HSL_COLOR_NV 0x92AF
+#define GL_HSL_LUMINOSITY 0x92B0
+#define GL_HSL_LUMINOSITY_KHR 0x92B0
+#define GL_HSL_LUMINOSITY_NV 0x92B0
+#define GL_PLUS_CLAMPED_NV 0x92B1
+#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2
+#define GL_MINUS_CLAMPED_NV 0x92B3
+#define GL_INVERT_OVG_NV 0x92B4
+#define GL_MAX_LGPU_GPUS_NVX 0x92BA
+#define GL_MULTICAST_GPUS_NV 0x92BA
+#define GL_PURGED_CONTEXT_RESET_NV 0x92BB
+#define GL_PRIMITIVE_BOUNDING_BOX 0x92BE
+#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE
+#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE
+#define GL_PRIMITIVE_BOUNDING_BOX_OES 0x92BE
+#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF
+#define GL_ATOMIC_COUNTER_BUFFER 0x92C0
+#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1
+#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2
+#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3
+#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4
+#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5
+#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB
+#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF
+#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
+#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
+#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5
+#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6
+#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7
+#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
+#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9
+#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA
+#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB
+#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
+#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD
+#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE
+#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF
+#define GL_DEBUG_OUTPUT 0x92E0
+#define GL_DEBUG_OUTPUT_KHR 0x92E0
+#define GL_UNIFORM 0x92E1
+#define GL_UNIFORM_BLOCK 0x92E2
+#define GL_PROGRAM_INPUT 0x92E3
+#define GL_PROGRAM_OUTPUT 0x92E4
+#define GL_BUFFER_VARIABLE 0x92E5
+#define GL_SHADER_STORAGE_BLOCK 0x92E6
+#define GL_IS_PER_PATCH 0x92E7
+#define GL_IS_PER_PATCH_EXT 0x92E7
+#define GL_IS_PER_PATCH_OES 0x92E7
+#define GL_VERTEX_SUBROUTINE 0x92E8
+#define GL_TESS_CONTROL_SUBROUTINE 0x92E9
+#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA
+#define GL_GEOMETRY_SUBROUTINE 0x92EB
+#define GL_FRAGMENT_SUBROUTINE 0x92EC
+#define GL_COMPUTE_SUBROUTINE 0x92ED
+#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE
+#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
+#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
+#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1
+#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2
+#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3
+#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4
+#define GL_ACTIVE_RESOURCES 0x92F5
+#define GL_MAX_NAME_LENGTH 0x92F6
+#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7
+#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
+#define GL_NAME_LENGTH 0x92F9
+#define GL_TYPE 0x92FA
+#define GL_ARRAY_SIZE 0x92FB
+#define GL_OFFSET 0x92FC
+#define GL_BLOCK_INDEX 0x92FD
+#define GL_ARRAY_STRIDE 0x92FE
+#define GL_MATRIX_STRIDE 0x92FF
+#define GL_IS_ROW_MAJOR 0x9300
+#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301
+#define GL_BUFFER_BINDING 0x9302
+#define GL_BUFFER_DATA_SIZE 0x9303
+#define GL_NUM_ACTIVE_VARIABLES 0x9304
+#define GL_ACTIVE_VARIABLES 0x9305
+#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308
+#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309
+#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309
+#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309
+#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A
+#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B
+#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C
+#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D
+#define GL_LOCATION 0x930E
+#define GL_LOCATION_INDEX 0x930F
+#define GL_LOCATION_INDEX_EXT 0x930F
+#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310
+#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312
+#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313
+#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
+#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315
+#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316
+#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317
+#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317
+#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317
+#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318
+#define GL_RASTER_MULTISAMPLE_EXT 0x9327
+#define GL_RASTER_SAMPLES_EXT 0x9328
+#define GL_MAX_RASTER_SAMPLES_EXT 0x9329
+#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
+#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
+#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C
+#define GL_DEPTH_SAMPLES_NV 0x932D
+#define GL_STENCIL_SAMPLES_NV 0x932E
+#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
+#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
+#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331
+#define GL_COVERAGE_MODULATION_NV 0x9332
+#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
+#define GL_WARP_SIZE_NV 0x9339
+#define GL_WARPS_PER_SM_NV 0x933A
+#define GL_SM_COUNT_NV 0x933B
+#define GL_FILL_RECTANGLE_NV 0x933C
+#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D
+#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F
+#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341
+#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341
+#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342
+#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342
+#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343
+#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343
+#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344
+#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345
+#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346
+#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347
+#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348
+#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349
+#define GL_LOCATION_COMPONENT 0x934A
+#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
+#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
+#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D
+#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E
+#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355
+#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356
+#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357
+#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358
+#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359
+#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A
+#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B
+#define GL_CLIP_ORIGIN 0x935C
+#define GL_CLIP_ORIGIN_EXT 0x935C
+#define GL_CLIP_DEPTH_MODE 0x935D
+#define GL_CLIP_DEPTH_MODE_EXT 0x935D
+#define GL_NEGATIVE_ONE_TO_ONE 0x935E
+#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E
+#define GL_ZERO_TO_ONE 0x935F
+#define GL_ZERO_TO_ONE_EXT 0x935F
+#define GL_CLEAR_TEXTURE 0x9365
+#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366
+#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366
+#define GL_WEIGHTED_AVERAGE_ARB 0x9367
+#define GL_WEIGHTED_AVERAGE_EXT 0x9367
+#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368
+#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369
+#define GL_FONT_UNAVAILABLE_NV 0x936A
+#define GL_FONT_UNINTELLIGIBLE_NV 0x936B
+#define GL_STANDARD_FONT_FORMAT_NV 0x936C
+#define GL_FRAGMENT_INPUT_NV 0x936D
+#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E
+#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F
+#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370
+#define GL_MULTISAMPLES_NV 0x9371
+#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372
+#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373
+#define GL_CONFORMANT_NV 0x9374
+#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379
+#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A
+#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B
+#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C
+#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D
+#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E
+#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F
+#define GL_NUM_SAMPLE_COUNTS 0x9380
+#define GL_MULTISAMPLE_LINE_WIDTH_RANGE 0x9381
+#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381
+#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY 0x9382
+#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382
+#define GL_VIEW_CLASS_EAC_R11 0x9383
+#define GL_VIEW_CLASS_EAC_RG11 0x9384
+#define GL_VIEW_CLASS_ETC2_RGB 0x9385
+#define GL_VIEW_CLASS_ETC2_RGBA 0x9386
+#define GL_VIEW_CLASS_ETC2_EAC_RGBA 0x9387
+#define GL_VIEW_CLASS_ASTC_4x4_RGBA 0x9388
+#define GL_VIEW_CLASS_ASTC_5x4_RGBA 0x9389
+#define GL_VIEW_CLASS_ASTC_5x5_RGBA 0x938A
+#define GL_VIEW_CLASS_ASTC_6x5_RGBA 0x938B
+#define GL_VIEW_CLASS_ASTC_6x6_RGBA 0x938C
+#define GL_VIEW_CLASS_ASTC_8x5_RGBA 0x938D
+#define GL_VIEW_CLASS_ASTC_8x6_RGBA 0x938E
+#define GL_VIEW_CLASS_ASTC_8x8_RGBA 0x938F
+#define GL_VIEW_CLASS_ASTC_10x5_RGBA 0x9390
+#define GL_VIEW_CLASS_ASTC_10x6_RGBA 0x9391
+#define GL_VIEW_CLASS_ASTC_10x8_RGBA 0x9392
+#define GL_VIEW_CLASS_ASTC_10x10_RGBA 0x9393
+#define GL_VIEW_CLASS_ASTC_12x10_RGBA 0x9394
+#define GL_VIEW_CLASS_ASTC_12x12_RGBA 0x9395
+#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0
+#define GL_BGRA8_EXT 0x93A1
+#define GL_TEXTURE_USAGE_ANGLE 0x93A2
+#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3
+#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4
+#define GL_PROGRAM_BINARY_ANGLE 0x93A6
+#define GL_COMPRESSED_RGBA_ASTC_4x4 0x93B0
+#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0
+#define GL_COMPRESSED_RGBA_ASTC_5x4 0x93B1
+#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1
+#define GL_COMPRESSED_RGBA_ASTC_5x5 0x93B2
+#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2
+#define GL_COMPRESSED_RGBA_ASTC_6x5 0x93B3
+#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3
+#define GL_COMPRESSED_RGBA_ASTC_6x6 0x93B4
+#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4
+#define GL_COMPRESSED_RGBA_ASTC_8x5 0x93B5
+#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5
+#define GL_COMPRESSED_RGBA_ASTC_8x6 0x93B6
+#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6
+#define GL_COMPRESSED_RGBA_ASTC_8x8 0x93B7
+#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7
+#define GL_COMPRESSED_RGBA_ASTC_10x5 0x93B8
+#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8
+#define GL_COMPRESSED_RGBA_ASTC_10x6 0x93B9
+#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9
+#define GL_COMPRESSED_RGBA_ASTC_10x8 0x93BA
+#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA
+#define GL_COMPRESSED_RGBA_ASTC_10x10 0x93BB
+#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
+#define GL_COMPRESSED_RGBA_ASTC_12x10 0x93BC
+#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
+#define GL_COMPRESSED_RGBA_ASTC_12x12 0x93BD
+#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
+#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
+#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
+#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
+#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
+#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
+#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
+#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
+#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
+#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
+#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4 0x93D0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4 0x93D1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5 0x93D2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5 0x93D3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6 0x93D4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5 0x93D5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6 0x93D6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8 0x93D7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5 0x93D8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6 0x93D9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8 0x93DA
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10 0x93DB
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10 0x93DC
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12 0x93DD
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
+#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
+#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0
+#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1
+#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
+#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
+#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
+#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
+#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
+#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
+#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
+#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
+#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
+#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
+#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
+#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
+#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
+#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
+#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
+#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530
+#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531
+#define GL_SUBGROUP_SIZE_KHR 0x9532
+#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533
+#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534
+#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535
+#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536
+#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537
+#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538
+#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539
+#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A
+#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B
+#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C
+#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D
+#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E
+#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F
+#define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540
+#define GL_QUERY_RESOURCE_MEMTYPE_VIDMEM_NV 0x9542
+#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543
+#define GL_QUERY_RESOURCE_SYS_RESERVED_NV 0x9544
+#define GL_QUERY_RESOURCE_TEXTURE_NV 0x9545
+#define GL_QUERY_RESOURCE_RENDERBUFFER_NV 0x9546
+#define GL_QUERY_RESOURCE_BUFFEROBJECT_NV 0x9547
+#define GL_PER_GPU_STORAGE_NV 0x9548
+#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549
+#define GL_UPLOAD_GPU_MASK_NVX 0x954A
+#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D
+#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E
+#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F
+#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550
+#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551
+#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551
+#define GL_SPIR_V_BINARY 0x9552
+#define GL_SPIR_V_BINARY_ARB 0x9552
+#define GL_SPIR_V_EXTENSIONS 0x9553
+#define GL_NUM_SPIR_V_EXTENSIONS 0x9554
+#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555
+#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556
+#define GL_MAX_MESH_VIEWS_NV 0x9557
+#define GL_RENDER_GPU_MASK_NV 0x9558
+#define GL_MESH_SHADER_NV 0x9559
+#define GL_TASK_SHADER_NV 0x955A
+#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B
+#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C
+#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D
+#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E
+#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F
+#define GL_SHADING_RATE_IMAGE_NV 0x9563
+#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564
+#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565
+#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566
+#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567
+#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568
+#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569
+#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A
+#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B
+#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C
+#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D
+#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E
+#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F
+#define GL_MESH_VERTICES_OUT_NV 0x9579
+#define GL_MESH_PRIMITIVES_OUT_NV 0x957A
+#define GL_MESH_OUTPUT_TYPE_NV 0x957B
+#define GL_MESH_SUBROUTINE_NV 0x957C
+#define GL_TASK_SUBROUTINE_NV 0x957D
+#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E
+#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F
+#define GL_TEXTURE_TILING_EXT 0x9580
+#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581
+#define GL_NUM_TILING_TYPES_EXT 0x9582
+#define GL_TILING_TYPES_EXT 0x9583
+#define GL_OPTIMAL_TILING_EXT 0x9584
+#define GL_LINEAR_TILING_EXT 0x9585
+#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
+#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
+#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
+#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589
+#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A
+#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B
+#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C
+#define GL_LAYOUT_GENERAL_EXT 0x958D
+#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E
+#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F
+#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590
+#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591
+#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592
+#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593
+#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594
+#define GL_D3D12_FENCE_VALUE_EXT 0x9595
+#define GL_NUM_DEVICE_UUIDS_EXT 0x9596
+#define GL_DEVICE_UUID_EXT 0x9597
+#define GL_DRIVER_UUID_EXT 0x9598
+#define GL_DEVICE_LUID_EXT 0x9599
+#define GL_DEVICE_NODE_MASK_EXT 0x959A
+#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F
+#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0
+#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1
+#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2
+#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3
+#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4
+#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5
+#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6
+#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7
+#define GL_MEMORY_ATTACHABLE_NV 0x95A8
+#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9
+#define GL_DETACHED_TEXTURES_NV 0x95AA
+#define GL_DETACHED_BUFFERS_NV 0x95AB
+#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC
+#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD
+#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE
+#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF
+#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
+#define GL_MAX_VIEWS_OVR 0x9631
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
+#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
+#define GL_GS_SHADER_BINARY_MTK 0x9640
+#define GL_GS_PROGRAM_BINARY_MTK 0x9641
+#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650
+#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651
+#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652
+#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2
+#define GL_VALIDATE_SHADER_BINARY_QCOM 0x96A3
+#define GL_SHARED_EDGE_NV 0xC0
+#define GL_ROUNDED_RECT_NV 0xE8
+#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9
+#define GL_ROUNDED_RECT2_NV 0xEA
+#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB
+#define GL_ROUNDED_RECT4_NV 0xEC
+#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED
+#define GL_ROUNDED_RECT8_NV 0xEE
+#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF
+#define GL_RESTART_PATH_NV 0xF0
+#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2
+#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4
+#define GL_RECT_NV 0xF6
+#define GL_RELATIVE_RECT_NV 0xF7
+#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8
+#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA
+#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC
+#define GL_ARC_TO_NV 0xFE
+#define GL_RELATIVE_ARC_TO_NV 0xFF
+#define GL_TRACE_ALL_BITS_MESA 0xFFFF
+#define GL_ALL_ATTRIB_BITS 0xFFFFFFFF
+#define GL_ALL_BARRIER_BITS 0xFFFFFFFF
+#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF
+#define GL_ALL_PIXELS_AMD 0xFFFFFFFF
+#define GL_ALL_SHADER_BITS 0xFFFFFFFF
+#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF
+#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF
+#define GL_INVALID_INDEX 0xFFFFFFFF
+#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF
+#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF
+#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFF
+#define GL_LAYOUT_LINEAR_INTEL 1
+#define GL_ONE 1
+#define GL_TRUE 1
+#define GL_VERSION_ES_CL_1_0 1
+#define GL_VERSION_ES_CL_1_1 1
+#define GL_VERSION_ES_CM_1_1 1
+#define GL_CULL_VERTEX_IBM 103050
+#define GL_ALL_STATIC_DATA_IBM 103060
+#define GL_STATIC_VERTEX_ARRAY_IBM 103061
+#define GL_VERTEX_ARRAY_LIST_IBM 103070
+#define GL_NORMAL_ARRAY_LIST_IBM 103071
+#define GL_COLOR_ARRAY_LIST_IBM 103072
+#define GL_INDEX_ARRAY_LIST_IBM 103073
+#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074
+#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075
+#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076
+#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
+#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080
+#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081
+#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082
+#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083
+#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
+#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
+#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
+#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
+#define GL_UUID_SIZE_EXT 16
+#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2
+#define GL_LUID_SIZE_EXT 8
+
+typedef void (GLAPIENTRY *PFNGLACCUMPROC)(GLenum op, GLfloat value);
+typedef void (GLAPIENTRY *PFNGLACCUMXOESPROC)(GLenum op, GLfixed value);
+typedef GLboolean (GLAPIENTRY *PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key, GLuint timeout);
+typedef void (GLAPIENTRY *PFNGLACTIVEPROGRAMEXTPROC)(GLuint program);
+typedef void (GLAPIENTRY *PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program);
+typedef void (GLAPIENTRY *PFNGLACTIVESHADERPROGRAMEXTPROC)(GLuint pipeline, GLuint program);
+typedef void (GLAPIENTRY *PFNGLACTIVESTENCILFACEEXTPROC)(GLenum face);
+typedef void (GLAPIENTRY *PFNGLACTIVETEXTUREPROC)(GLenum texture);
+typedef void (GLAPIENTRY *PFNGLACTIVETEXTUREARBPROC)(GLenum texture);
+typedef void (GLAPIENTRY *PFNGLACTIVEVARYINGNVPROC)(GLuint program, const GLchar * name);
+typedef void (GLAPIENTRY *PFNGLALPHAFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (GLAPIENTRY *PFNGLALPHAFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (GLAPIENTRY *PFNGLALPHAFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+typedef void (GLAPIENTRY *PFNGLALPHAFUNCPROC)(GLenum func, GLfloat ref);
+typedef void (GLAPIENTRY *PFNGLALPHAFUNCQCOMPROC)(GLenum func, GLclampf ref);
+typedef void (GLAPIENTRY *PFNGLALPHAFUNCXPROC)(GLenum func, GLfixed ref);
+typedef void (GLAPIENTRY *PFNGLALPHAFUNCXOESPROC)(GLenum func, GLfixed ref);
+typedef void (GLAPIENTRY *PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)(void);
+typedef void (GLAPIENTRY *PFNGLAPPLYTEXTUREEXTPROC)(GLenum mode);
+typedef GLboolean (GLAPIENTRY *PFNGLAREPROGRAMSRESIDENTNVPROC)(GLsizei n, const GLuint * programs, GLboolean * residences);
+typedef GLboolean (GLAPIENTRY *PFNGLARETEXTURESRESIDENTPROC)(GLsizei n, const GLuint * textures, GLboolean * residences);
+typedef GLboolean (GLAPIENTRY *PFNGLARETEXTURESRESIDENTEXTPROC)(GLsizei n, const GLuint * textures, GLboolean * residences);
+typedef void (GLAPIENTRY *PFNGLARRAYELEMENTPROC)(GLint i);
+typedef void (GLAPIENTRY *PFNGLARRAYELEMENTEXTPROC)(GLint i);
+typedef void (GLAPIENTRY *PFNGLARRAYOBJECTATIPROC)(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+typedef GLuint (GLAPIENTRY *PFNGLASYNCCOPYBUFFERSUBDATANVXPROC)(GLsizei waitSemaphoreCount, const GLuint * waitSemaphoreArray, const GLuint64 * fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint * signalSemaphoreArray, const GLuint64 * signalValueArray);
+typedef GLuint (GLAPIENTRY *PFNGLASYNCCOPYIMAGESUBDATANVXPROC)(GLsizei waitSemaphoreCount, const GLuint * waitSemaphoreArray, const GLuint64 * waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, const GLuint * signalSemaphoreArray, const GLuint64 * signalValueArray);
+typedef void (GLAPIENTRY *PFNGLASYNCMARKERSGIXPROC)(GLuint marker);
+typedef void (GLAPIENTRY *PFNGLATTACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB obj);
+typedef void (GLAPIENTRY *PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader);
+typedef void (GLAPIENTRY *PFNGLBEGINPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLBEGINCONDITIONALRENDERNVPROC)(GLuint id, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLBEGINCONDITIONALRENDERNVXPROC)(GLuint id);
+typedef void (GLAPIENTRY *PFNGLBEGINFRAGMENTSHADERATIPROC)(void);
+typedef void (GLAPIENTRY *PFNGLBEGINOCCLUSIONQUERYNVPROC)(GLuint id);
+typedef void (GLAPIENTRY *PFNGLBEGINPERFMONITORAMDPROC)(GLuint monitor);
+typedef void (GLAPIENTRY *PFNGLBEGINPERFQUERYINTELPROC)(GLuint queryHandle);
+typedef void (GLAPIENTRY *PFNGLBEGINQUERYPROC)(GLenum target, GLuint id);
+typedef void (GLAPIENTRY *PFNGLBEGINQUERYARBPROC)(GLenum target, GLuint id);
+typedef void (GLAPIENTRY *PFNGLBEGINQUERYEXTPROC)(GLenum target, GLuint id);
+typedef void (GLAPIENTRY *PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id);
+typedef void (GLAPIENTRY *PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode);
+typedef void (GLAPIENTRY *PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)(GLenum primitiveMode);
+typedef void (GLAPIENTRY *PFNGLBEGINTRANSFORMFEEDBACKNVPROC)(GLenum primitiveMode);
+typedef void (GLAPIENTRY *PFNGLBEGINVERTEXSHADEREXTPROC)(void);
+typedef void (GLAPIENTRY *PFNGLBEGINVIDEOCAPTURENVPROC)(GLuint video_capture_slot);
+typedef void (GLAPIENTRY *PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar * name);
+typedef void (GLAPIENTRY *PFNGLBINDATTRIBLOCATIONARBPROC)(GLhandleARB programObj, GLuint index, const GLcharARB * name);
+typedef void (GLAPIENTRY *PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLBINDBUFFERARBPROC)(GLenum target, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLBINDBUFFERBASEEXTPROC)(GLenum target, GLuint index, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLBINDBUFFERBASENVPROC)(GLenum target, GLuint index, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLBINDBUFFEROFFSETEXTPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLBINDBUFFEROFFSETNVPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLBINDBUFFERRANGEEXTPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLBINDBUFFERRANGENVPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLBINDBUFFERSBASEPROC)(GLenum target, GLuint first, GLsizei count, const GLuint * buffers);
+typedef void (GLAPIENTRY *PFNGLBINDBUFFERSRANGEPROC)(GLenum target, GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizeiptr * sizes);
+typedef void (GLAPIENTRY *PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar * name);
+typedef void (GLAPIENTRY *PFNGLBINDFRAGDATALOCATIONEXTPROC)(GLuint program, GLuint color, const GLchar * name);
+typedef void (GLAPIENTRY *PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar * name);
+typedef void (GLAPIENTRY *PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar * name);
+typedef void (GLAPIENTRY *PFNGLBINDFRAGMENTSHADERATIPROC)(GLuint id);
+typedef void (GLAPIENTRY *PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer);
+typedef void (GLAPIENTRY *PFNGLBINDFRAMEBUFFEREXTPROC)(GLenum target, GLuint framebuffer);
+typedef void (GLAPIENTRY *PFNGLBINDFRAMEBUFFEROESPROC)(GLenum target, GLuint framebuffer);
+typedef void (GLAPIENTRY *PFNGLBINDIMAGETEXTUREPROC)(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
+typedef void (GLAPIENTRY *PFNGLBINDIMAGETEXTUREEXTPROC)(GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
+typedef void (GLAPIENTRY *PFNGLBINDIMAGETEXTURESPROC)(GLuint first, GLsizei count, const GLuint * textures);
+typedef GLuint (GLAPIENTRY *PFNGLBINDLIGHTPARAMETEREXTPROC)(GLenum light, GLenum value);
+typedef GLuint (GLAPIENTRY *PFNGLBINDMATERIALPARAMETEREXTPROC)(GLenum face, GLenum value);
+typedef void (GLAPIENTRY *PFNGLBINDMULTITEXTUREEXTPROC)(GLenum texunit, GLenum target, GLuint texture);
+typedef GLuint (GLAPIENTRY *PFNGLBINDPARAMETEREXTPROC)(GLenum value);
+typedef void (GLAPIENTRY *PFNGLBINDPROGRAMARBPROC)(GLenum target, GLuint program);
+typedef void (GLAPIENTRY *PFNGLBINDPROGRAMNVPROC)(GLenum target, GLuint id);
+typedef void (GLAPIENTRY *PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline);
+typedef void (GLAPIENTRY *PFNGLBINDPROGRAMPIPELINEEXTPROC)(GLuint pipeline);
+typedef void (GLAPIENTRY *PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer);
+typedef void (GLAPIENTRY *PFNGLBINDRENDERBUFFEREXTPROC)(GLenum target, GLuint renderbuffer);
+typedef void (GLAPIENTRY *PFNGLBINDRENDERBUFFEROESPROC)(GLenum target, GLuint renderbuffer);
+typedef void (GLAPIENTRY *PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler);
+typedef void (GLAPIENTRY *PFNGLBINDSAMPLERSPROC)(GLuint first, GLsizei count, const GLuint * samplers);
+typedef void (GLAPIENTRY *PFNGLBINDSHADINGRATEIMAGENVPROC)(GLuint texture);
+typedef GLuint (GLAPIENTRY *PFNGLBINDTEXGENPARAMETEREXTPROC)(GLenum unit, GLenum coord, GLenum value);
+typedef void (GLAPIENTRY *PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture);
+typedef void (GLAPIENTRY *PFNGLBINDTEXTUREEXTPROC)(GLenum target, GLuint texture);
+typedef void (GLAPIENTRY *PFNGLBINDTEXTUREUNITPROC)(GLuint unit, GLuint texture);
+typedef GLuint (GLAPIENTRY *PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)(GLenum unit, GLenum value);
+typedef void (GLAPIENTRY *PFNGLBINDTEXTURESPROC)(GLuint first, GLsizei count, const GLuint * textures);
+typedef void (GLAPIENTRY *PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id);
+typedef void (GLAPIENTRY *PFNGLBINDTRANSFORMFEEDBACKNVPROC)(GLenum target, GLuint id);
+typedef void (GLAPIENTRY *PFNGLBINDVERTEXARRAYPROC)(GLuint array);
+typedef void (GLAPIENTRY *PFNGLBINDVERTEXARRAYAPPLEPROC)(GLuint array);
+typedef void (GLAPIENTRY *PFNGLBINDVERTEXARRAYOESPROC)(GLuint array);
+typedef void (GLAPIENTRY *PFNGLBINDVERTEXBUFFERPROC)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLBINDVERTEXBUFFERSPROC)(GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides);
+typedef void (GLAPIENTRY *PFNGLBINDVERTEXSHADEREXTPROC)(GLuint id);
+typedef void (GLAPIENTRY *PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
+typedef void (GLAPIENTRY *PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
+typedef void (GLAPIENTRY *PFNGLBINORMAL3BEXTPROC)(GLbyte bx, GLbyte by, GLbyte bz);
+typedef void (GLAPIENTRY *PFNGLBINORMAL3BVEXTPROC)(const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLBINORMAL3DEXTPROC)(GLdouble bx, GLdouble by, GLdouble bz);
+typedef void (GLAPIENTRY *PFNGLBINORMAL3DVEXTPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLBINORMAL3FEXTPROC)(GLfloat bx, GLfloat by, GLfloat bz);
+typedef void (GLAPIENTRY *PFNGLBINORMAL3FVEXTPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLBINORMAL3IEXTPROC)(GLint bx, GLint by, GLint bz);
+typedef void (GLAPIENTRY *PFNGLBINORMAL3IVEXTPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLBINORMAL3SEXTPROC)(GLshort bx, GLshort by, GLshort bz);
+typedef void (GLAPIENTRY *PFNGLBINORMAL3SVEXTPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLBINORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLBITMAPPROC)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap);
+typedef void (GLAPIENTRY *PFNGLBITMAPXOESPROC)(GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte * bitmap);
+typedef void (GLAPIENTRY *PFNGLBLENDBARRIERPROC)(void);
+typedef void (GLAPIENTRY *PFNGLBLENDBARRIERKHRPROC)(void);
+typedef void (GLAPIENTRY *PFNGLBLENDBARRIERNVPROC)(void);
+typedef void (GLAPIENTRY *PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+typedef void (GLAPIENTRY *PFNGLBLENDCOLOREXTPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+typedef void (GLAPIENTRY *PFNGLBLENDCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONEXTPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONINDEXEDAMDPROC)(GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONOESPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONSEPARATEEXTPROC)(GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONSEPARATEOESPROC)(GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONSEPARATEIARBPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONSEPARATEIEXTPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONSEPARATEIOESPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONIARBPROC)(GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONIEXTPROC)(GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLBLENDEQUATIONIOESPROC)(GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCINDEXEDAMDPROC)(GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCSEPARATEEXTPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCSEPARATEINGRPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCSEPARATEOESPROC)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCSEPARATEIARBPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCSEPARATEIEXTPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCSEPARATEIOESPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCIARBPROC)(GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCIEXTPROC)(GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY *PFNGLBLENDFUNCIOESPROC)(GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY *PFNGLBLENDPARAMETERINVPROC)(GLenum pname, GLint value);
+typedef void (GLAPIENTRY *PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef void (GLAPIENTRY *PFNGLBLITFRAMEBUFFERANGLEPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef void (GLAPIENTRY *PFNGLBLITFRAMEBUFFEREXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef void (GLAPIENTRY *PFNGLBLITFRAMEBUFFERNVPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef void (GLAPIENTRY *PFNGLBLITNAMEDFRAMEBUFFERPROC)(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef void (GLAPIENTRY *PFNGLBUFFERADDRESSRANGENVPROC)(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
+typedef void (GLAPIENTRY *PFNGLBUFFERATTACHMEMORYNVPROC)(GLenum target, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void * data, GLenum usage);
+typedef void (GLAPIENTRY *PFNGLBUFFERDATAARBPROC)(GLenum target, GLsizeiptrARB size, const void * data, GLenum usage);
+typedef void (GLAPIENTRY *PFNGLBUFFERPAGECOMMITMENTARBPROC)(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);
+typedef void (GLAPIENTRY *PFNGLBUFFERPARAMETERIAPPLEPROC)(GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLBUFFERSTORAGEPROC)(GLenum target, GLsizeiptr size, const void * data, GLbitfield flags);
+typedef void (GLAPIENTRY *PFNGLBUFFERSTORAGEEXTPROC)(GLenum target, GLsizeiptr size, const void * data, GLbitfield flags);
+typedef void (GLAPIENTRY *PFNGLBUFFERSTORAGEEXTERNALEXTPROC)(GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
+typedef void (GLAPIENTRY *PFNGLBUFFERSTORAGEMEMEXTPROC)(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void * data);
+typedef void (GLAPIENTRY *PFNGLBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void * data);
+typedef void (GLAPIENTRY *PFNGLCALLCOMMANDLISTNVPROC)(GLuint list);
+typedef void (GLAPIENTRY *PFNGLCALLLISTPROC)(GLuint list);
+typedef void (GLAPIENTRY *PFNGLCALLLISTSPROC)(GLsizei n, GLenum type, const void * lists);
+typedef GLenum (GLAPIENTRY *PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target);
+typedef GLenum (GLAPIENTRY *PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)(GLenum target);
+typedef GLenum (GLAPIENTRY *PFNGLCHECKFRAMEBUFFERSTATUSOESPROC)(GLenum target);
+typedef GLenum (GLAPIENTRY *PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)(GLuint framebuffer, GLenum target);
+typedef GLenum (GLAPIENTRY *PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)(GLuint framebuffer, GLenum target);
+typedef void (GLAPIENTRY *PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp);
+typedef void (GLAPIENTRY *PFNGLCLAMPCOLORARBPROC)(GLenum target, GLenum clamp);
+typedef void (GLAPIENTRY *PFNGLCLEARPROC)(GLbitfield mask);
+typedef void (GLAPIENTRY *PFNGLCLEARACCUMPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+typedef void (GLAPIENTRY *PFNGLCLEARACCUMXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+typedef void (GLAPIENTRY *PFNGLCLEARBUFFERDATAPROC)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void * data);
+typedef void (GLAPIENTRY *PFNGLCLEARBUFFERSUBDATAPROC)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data);
+typedef void (GLAPIENTRY *PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+typedef void (GLAPIENTRY *PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+typedef void (GLAPIENTRY *PFNGLCLEARCOLORIIEXTPROC)(GLint red, GLint green, GLint blue, GLint alpha);
+typedef void (GLAPIENTRY *PFNGLCLEARCOLORIUIEXTPROC)(GLuint red, GLuint green, GLuint blue, GLuint alpha);
+typedef void (GLAPIENTRY *PFNGLCLEARCOLORXPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+typedef void (GLAPIENTRY *PFNGLCLEARCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+typedef void (GLAPIENTRY *PFNGLCLEARDEPTHPROC)(GLdouble depth);
+typedef void (GLAPIENTRY *PFNGLCLEARDEPTHDNVPROC)(GLdouble depth);
+typedef void (GLAPIENTRY *PFNGLCLEARDEPTHFPROC)(GLfloat d);
+typedef void (GLAPIENTRY *PFNGLCLEARDEPTHFOESPROC)(GLclampf depth);
+typedef void (GLAPIENTRY *PFNGLCLEARDEPTHXPROC)(GLfixed depth);
+typedef void (GLAPIENTRY *PFNGLCLEARDEPTHXOESPROC)(GLfixed depth);
+typedef void (GLAPIENTRY *PFNGLCLEARINDEXPROC)(GLfloat c);
+typedef void (GLAPIENTRY *PFNGLCLEARNAMEDBUFFERDATAPROC)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void * data);
+typedef void (GLAPIENTRY *PFNGLCLEARNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void * data);
+typedef void (GLAPIENTRY *PFNGLCLEARNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data);
+typedef void (GLAPIENTRY *PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data);
+typedef void (GLAPIENTRY *PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+typedef void (GLAPIENTRY *PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC)(GLsizei offset, GLsizei n, const GLuint * values);
+typedef void (GLAPIENTRY *PFNGLCLEARSTENCILPROC)(GLint s);
+typedef void (GLAPIENTRY *PFNGLCLEARTEXIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, const void * data);
+typedef void (GLAPIENTRY *PFNGLCLEARTEXIMAGEEXTPROC)(GLuint texture, GLint level, GLenum format, GLenum type, const void * data);
+typedef void (GLAPIENTRY *PFNGLCLEARTEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * data);
+typedef void (GLAPIENTRY *PFNGLCLEARTEXSUBIMAGEEXTPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * data);
+typedef void (GLAPIENTRY *PFNGLCLIENTACTIVETEXTUREPROC)(GLenum texture);
+typedef void (GLAPIENTRY *PFNGLCLIENTACTIVETEXTUREARBPROC)(GLenum texture);
+typedef void (GLAPIENTRY *PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)(GLenum stream);
+typedef void (GLAPIENTRY *PFNGLCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask);
+typedef void (GLAPIENTRY *PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC)(GLsizei fenceObjectCount, const GLuint * semaphoreArray, const GLuint64 * fenceValueArray);
+typedef GLenum (GLAPIENTRY *PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout);
+typedef GLenum (GLAPIENTRY *PFNGLCLIENTWAITSYNCAPPLEPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout);
+typedef void (GLAPIENTRY *PFNGLCLIPCONTROLPROC)(GLenum origin, GLenum depth);
+typedef void (GLAPIENTRY *PFNGLCLIPCONTROLEXTPROC)(GLenum origin, GLenum depth);
+typedef void (GLAPIENTRY *PFNGLCLIPPLANEPROC)(GLenum plane, const GLdouble * equation);
+typedef void (GLAPIENTRY *PFNGLCLIPPLANEFPROC)(GLenum p, const GLfloat * eqn);
+typedef void (GLAPIENTRY *PFNGLCLIPPLANEFIMGPROC)(GLenum p, const GLfloat * eqn);
+typedef void (GLAPIENTRY *PFNGLCLIPPLANEFOESPROC)(GLenum plane, const GLfloat * equation);
+typedef void (GLAPIENTRY *PFNGLCLIPPLANEXPROC)(GLenum plane, const GLfixed * equation);
+typedef void (GLAPIENTRY *PFNGLCLIPPLANEXIMGPROC)(GLenum p, const GLfixed * eqn);
+typedef void (GLAPIENTRY *PFNGLCLIPPLANEXOESPROC)(GLenum plane, const GLfixed * equation);
+typedef void (GLAPIENTRY *PFNGLCOLOR3BPROC)(GLbyte red, GLbyte green, GLbyte blue);
+typedef void (GLAPIENTRY *PFNGLCOLOR3BVPROC)(const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR3DPROC)(GLdouble red, GLdouble green, GLdouble blue);
+typedef void (GLAPIENTRY *PFNGLCOLOR3DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR3FPROC)(GLfloat red, GLfloat green, GLfloat blue);
+typedef void (GLAPIENTRY *PFNGLCOLOR3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLCOLOR3FVERTEX3FVSUNPROC)(const GLfloat * c, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR3FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+typedef void (GLAPIENTRY *PFNGLCOLOR3HVNVPROC)(const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR3IPROC)(GLint red, GLint green, GLint blue);
+typedef void (GLAPIENTRY *PFNGLCOLOR3IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR3SPROC)(GLshort red, GLshort green, GLshort blue);
+typedef void (GLAPIENTRY *PFNGLCOLOR3SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR3UBPROC)(GLubyte red, GLubyte green, GLubyte blue);
+typedef void (GLAPIENTRY *PFNGLCOLOR3UBVPROC)(const GLubyte * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR3UIPROC)(GLuint red, GLuint green, GLuint blue);
+typedef void (GLAPIENTRY *PFNGLCOLOR3UIVPROC)(const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR3USPROC)(GLushort red, GLushort green, GLushort blue);
+typedef void (GLAPIENTRY *PFNGLCOLOR3USVPROC)(const GLushort * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR3XOESPROC)(GLfixed red, GLfixed green, GLfixed blue);
+typedef void (GLAPIENTRY *PFNGLCOLOR3XVOESPROC)(const GLfixed * components);
+typedef void (GLAPIENTRY *PFNGLCOLOR4BPROC)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
+typedef void (GLAPIENTRY *PFNGLCOLOR4BVPROC)(const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR4DPROC)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
+typedef void (GLAPIENTRY *PFNGLCOLOR4DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR4FPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+typedef void (GLAPIENTRY *PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat * c, const GLfloat * n, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR4FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR4HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
+typedef void (GLAPIENTRY *PFNGLCOLOR4HVNVPROC)(const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR4IPROC)(GLint red, GLint green, GLint blue, GLint alpha);
+typedef void (GLAPIENTRY *PFNGLCOLOR4IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR4SPROC)(GLshort red, GLshort green, GLshort blue, GLshort alpha);
+typedef void (GLAPIENTRY *PFNGLCOLOR4SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR4UBPROC)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+typedef void (GLAPIENTRY *PFNGLCOLOR4UBVERTEX2FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY *PFNGLCOLOR4UBVERTEX2FVSUNPROC)(const GLubyte * c, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR4UBVERTEX3FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLCOLOR4UBVERTEX3FVSUNPROC)(const GLubyte * c, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR4UBVPROC)(const GLubyte * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR4UIPROC)(GLuint red, GLuint green, GLuint blue, GLuint alpha);
+typedef void (GLAPIENTRY *PFNGLCOLOR4UIVPROC)(const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR4USPROC)(GLushort red, GLushort green, GLushort blue, GLushort alpha);
+typedef void (GLAPIENTRY *PFNGLCOLOR4USVPROC)(const GLushort * v);
+typedef void (GLAPIENTRY *PFNGLCOLOR4XPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+typedef void (GLAPIENTRY *PFNGLCOLOR4XOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+typedef void (GLAPIENTRY *PFNGLCOLOR4XVOESPROC)(const GLfixed * components);
+typedef void (GLAPIENTRY *PFNGLCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLCOLORFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+typedef void (GLAPIENTRY *PFNGLCOLORFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+typedef void (GLAPIENTRY *PFNGLCOLORFRAGMENTOP3ATIPROC)(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);
+typedef void (GLAPIENTRY *PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+typedef void (GLAPIENTRY *PFNGLCOLORMASKINDEXEDEXTPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (GLAPIENTRY *PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (GLAPIENTRY *PFNGLCOLORMASKIEXTPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (GLAPIENTRY *PFNGLCOLORMASKIOESPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (GLAPIENTRY *PFNGLCOLORMATERIALPROC)(GLenum face, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLCOLORP3UIPROC)(GLenum type, GLuint color);
+typedef void (GLAPIENTRY *PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint * color);
+typedef void (GLAPIENTRY *PFNGLCOLORP4UIPROC)(GLenum type, GLuint color);
+typedef void (GLAPIENTRY *PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint * color);
+typedef void (GLAPIENTRY *PFNGLCOLORPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLCOLORPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY *PFNGLCOLORPOINTERVINTELPROC)(GLint size, GLenum type, const void ** pointer);
+typedef void (GLAPIENTRY *PFNGLCOLORSUBTABLEPROC)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOLORTABLEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void * table);
+typedef void (GLAPIENTRY *PFNGLCOLORTABLEEXTPROC)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void * table);
+typedef void (GLAPIENTRY *PFNGLCOLORTABLEPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLCOLORTABLEPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void * table);
+typedef void (GLAPIENTRY *PFNGLCOMBINERINPUTNVPROC)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (GLAPIENTRY *PFNGLCOMBINEROUTPUTNVPROC)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
+typedef void (GLAPIENTRY *PFNGLCOMBINERPARAMETERFNVPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLCOMBINERPARAMETERFVNVPROC)(GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLCOMBINERPARAMETERINVPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLCOMBINERPARAMETERIVNVPROC)(GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLCOMMANDLISTSEGMENTSNVPROC)(GLuint list, GLuint segments);
+typedef void (GLAPIENTRY *PFNGLCOMPILECOMMANDLISTNVPROC)(GLuint list);
+typedef void (GLAPIENTRY *PFNGLCOMPILESHADERPROC)(GLuint shader);
+typedef void (GLAPIENTRY *PFNGLCOMPILESHADERARBPROC)(GLhandleARB shaderObj);
+typedef void (GLAPIENTRY *PFNGLCOMPILESHADERINCLUDEARBPROC)(GLuint shader, GLsizei count, const GLchar *const* path, const GLint * length);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * bits);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * bits);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * bits);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * bits);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * bits);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * bits);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXIMAGE3DOESPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * bits);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * bits);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * bits);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * bits);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * bits);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data);
+typedef void (GLAPIENTRY *PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * bits);
+typedef void (GLAPIENTRY *PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)(GLenum pname, GLfloat value);
+typedef void (GLAPIENTRY *PFNGLCONSERVATIVERASTERPARAMETERINVPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONFILTER1DPROC)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void * image);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONFILTER1DEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void * image);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONFILTER2DPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * image);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONFILTER2DEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * image);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat params);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONPARAMETERFEXTPROC)(GLenum target, GLenum pname, GLfloat params);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONPARAMETERIPROC)(GLenum target, GLenum pname, GLint params);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONPARAMETERIEXTPROC)(GLenum target, GLenum pname, GLint params);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONPARAMETERXOESPROC)(GLenum target, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, const GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLCOPYBUFFERSUBDATANVPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLCOPYCOLORSUBTABLEPROC)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLCOPYCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLCOPYCOLORTABLEPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLCOPYCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLCOPYCONVOLUTIONFILTER1DPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLCOPYCONVOLUTIONFILTER2DPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOPYIMAGESUBDATAPROC)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+typedef void (GLAPIENTRY *PFNGLCOPYIMAGESUBDATAEXTPROC)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+typedef void (GLAPIENTRY *PFNGLCOPYIMAGESUBDATANVPROC)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY *PFNGLCOPYIMAGESUBDATAOESPROC)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+typedef void (GLAPIENTRY *PFNGLCOPYMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (GLAPIENTRY *PFNGLCOPYMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (GLAPIENTRY *PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOPYNAMEDBUFFERSUBDATAPROC)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLCOPYPATHNVPROC)(GLuint resultPath, GLuint srcPath);
+typedef void (GLAPIENTRY *PFNGLCOPYPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXIMAGE1DEXTPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXIMAGE2DEXTPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXSUBIMAGE3DOESPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXTURELEVELSAPPLEPROC)(GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLCOVERFILLPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat * transformValues);
+typedef void (GLAPIENTRY *PFNGLCOVERFILLPATHNVPROC)(GLuint path, GLenum coverMode);
+typedef void (GLAPIENTRY *PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat * transformValues);
+typedef void (GLAPIENTRY *PFNGLCOVERSTROKEPATHNVPROC)(GLuint path, GLenum coverMode);
+typedef void (GLAPIENTRY *PFNGLCOVERAGEMASKNVPROC)(GLboolean mask);
+typedef void (GLAPIENTRY *PFNGLCOVERAGEMODULATIONNVPROC)(GLenum components);
+typedef void (GLAPIENTRY *PFNGLCOVERAGEMODULATIONTABLENVPROC)(GLsizei n, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLCOVERAGEOPERATIONNVPROC)(GLenum operation);
+typedef void (GLAPIENTRY *PFNGLCREATEBUFFERSPROC)(GLsizei n, GLuint * buffers);
+typedef void (GLAPIENTRY *PFNGLCREATECOMMANDLISTSNVPROC)(GLsizei n, GLuint * lists);
+typedef void (GLAPIENTRY *PFNGLCREATEFRAMEBUFFERSPROC)(GLsizei n, GLuint * framebuffers);
+typedef void (GLAPIENTRY *PFNGLCREATEMEMORYOBJECTSEXTPROC)(GLsizei n, GLuint * memoryObjects);
+typedef void (GLAPIENTRY *PFNGLCREATEPERFQUERYINTELPROC)(GLuint queryId, GLuint * queryHandle);
+typedef GLuint (GLAPIENTRY *PFNGLCREATEPROGRAMPROC)(void);
+typedef GLhandleARB (GLAPIENTRY *PFNGLCREATEPROGRAMOBJECTARBPROC)(void);
+typedef void (GLAPIENTRY *PFNGLCREATEPROGRAMPIPELINESPROC)(GLsizei n, GLuint * pipelines);
+typedef GLuint (GLAPIENTRY *PFNGLCREATEPROGRESSFENCENVXPROC)(void);
+typedef void (GLAPIENTRY *PFNGLCREATEQUERIESPROC)(GLenum target, GLsizei n, GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLCREATERENDERBUFFERSPROC)(GLsizei n, GLuint * renderbuffers);
+typedef void (GLAPIENTRY *PFNGLCREATESAMPLERSPROC)(GLsizei n, GLuint * samplers);
+typedef GLuint (GLAPIENTRY *PFNGLCREATESHADERPROC)(GLenum type);
+typedef GLhandleARB (GLAPIENTRY *PFNGLCREATESHADEROBJECTARBPROC)(GLenum shaderType);
+typedef GLuint (GLAPIENTRY *PFNGLCREATESHADERPROGRAMEXTPROC)(GLenum type, const GLchar * string);
+typedef GLuint (GLAPIENTRY *PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, const GLchar *const* strings);
+typedef GLuint (GLAPIENTRY *PFNGLCREATESHADERPROGRAMVEXTPROC)(GLenum type, GLsizei count, const GLchar ** strings);
+typedef void (GLAPIENTRY *PFNGLCREATESTATESNVPROC)(GLsizei n, GLuint * states);
+typedef GLsync (GLAPIENTRY *PFNGLCREATESYNCFROMCLEVENTARBPROC)(struct _cl_context * context, struct _cl_event * event, GLbitfield flags);
+typedef void (GLAPIENTRY *PFNGLCREATETEXTURESPROC)(GLenum target, GLsizei n, GLuint * textures);
+typedef void (GLAPIENTRY *PFNGLCREATETRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLCREATEVERTEXARRAYSPROC)(GLsizei n, GLuint * arrays);
+typedef void (GLAPIENTRY *PFNGLCULLFACEPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLCULLPARAMETERDVEXTPROC)(GLenum pname, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLCULLPARAMETERFVEXTPROC)(GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLCURRENTPALETTEMATRIXARBPROC)(GLint index);
+typedef void (GLAPIENTRY *PFNGLCURRENTPALETTEMATRIXOESPROC)(GLuint matrixpaletteindex);
+typedef void (GLAPIENTRY *PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC callback, const void * userParam);
+typedef void (GLAPIENTRY *PFNGLDEBUGMESSAGECALLBACKAMDPROC)(GLDEBUGPROCAMD callback, void * userParam);
+typedef void (GLAPIENTRY *PFNGLDEBUGMESSAGECALLBACKARBPROC)(GLDEBUGPROCARB callback, const void * userParam);
+typedef void (GLAPIENTRY *PFNGLDEBUGMESSAGECALLBACKKHRPROC)(GLDEBUGPROCKHR callback, const void * userParam);
+typedef void (GLAPIENTRY *PFNGLDEBUGMESSAGECONTROLPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled);
+typedef void (GLAPIENTRY *PFNGLDEBUGMESSAGECONTROLARBPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled);
+typedef void (GLAPIENTRY *PFNGLDEBUGMESSAGECONTROLKHRPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled);
+typedef void (GLAPIENTRY *PFNGLDEBUGMESSAGEENABLEAMDPROC)(GLenum category, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled);
+typedef void (GLAPIENTRY *PFNGLDEBUGMESSAGEINSERTPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf);
+typedef void (GLAPIENTRY *PFNGLDEBUGMESSAGEINSERTAMDPROC)(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar * buf);
+typedef void (GLAPIENTRY *PFNGLDEBUGMESSAGEINSERTARBPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf);
+typedef void (GLAPIENTRY *PFNGLDEBUGMESSAGEINSERTKHRPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf);
+typedef void (GLAPIENTRY *PFNGLDEFORMSGIXPROC)(GLbitfield mask);
+typedef void (GLAPIENTRY *PFNGLDEFORMATIONMAP3DSGIXPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble * points);
+typedef void (GLAPIENTRY *PFNGLDEFORMATIONMAP3FSGIXPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat * points);
+typedef void (GLAPIENTRY *PFNGLDELETEASYNCMARKERSSGIXPROC)(GLuint marker, GLsizei range);
+typedef void (GLAPIENTRY *PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint * buffers);
+typedef void (GLAPIENTRY *PFNGLDELETEBUFFERSARBPROC)(GLsizei n, const GLuint * buffers);
+typedef void (GLAPIENTRY *PFNGLDELETECOMMANDLISTSNVPROC)(GLsizei n, const GLuint * lists);
+typedef void (GLAPIENTRY *PFNGLDELETEFENCESAPPLEPROC)(GLsizei n, const GLuint * fences);
+typedef void (GLAPIENTRY *PFNGLDELETEFENCESNVPROC)(GLsizei n, const GLuint * fences);
+typedef void (GLAPIENTRY *PFNGLDELETEFRAGMENTSHADERATIPROC)(GLuint id);
+typedef void (GLAPIENTRY *PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint * framebuffers);
+typedef void (GLAPIENTRY *PFNGLDELETEFRAMEBUFFERSEXTPROC)(GLsizei n, const GLuint * framebuffers);
+typedef void (GLAPIENTRY *PFNGLDELETEFRAMEBUFFERSOESPROC)(GLsizei n, const GLuint * framebuffers);
+typedef void (GLAPIENTRY *PFNGLDELETELISTSPROC)(GLuint list, GLsizei range);
+typedef void (GLAPIENTRY *PFNGLDELETEMEMORYOBJECTSEXTPROC)(GLsizei n, const GLuint * memoryObjects);
+typedef void (GLAPIENTRY *PFNGLDELETENAMEDSTRINGARBPROC)(GLint namelen, const GLchar * name);
+typedef void (GLAPIENTRY *PFNGLDELETENAMESAMDPROC)(GLenum identifier, GLuint num, const GLuint * names);
+typedef void (GLAPIENTRY *PFNGLDELETEOBJECTARBPROC)(GLhandleARB obj);
+typedef void (GLAPIENTRY *PFNGLDELETEOCCLUSIONQUERIESNVPROC)(GLsizei n, const GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLDELETEPATHSNVPROC)(GLuint path, GLsizei range);
+typedef void (GLAPIENTRY *PFNGLDELETEPERFMONITORSAMDPROC)(GLsizei n, GLuint * monitors);
+typedef void (GLAPIENTRY *PFNGLDELETEPERFQUERYINTELPROC)(GLuint queryHandle);
+typedef void (GLAPIENTRY *PFNGLDELETEPROGRAMPROC)(GLuint program);
+typedef void (GLAPIENTRY *PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint * pipelines);
+typedef void (GLAPIENTRY *PFNGLDELETEPROGRAMPIPELINESEXTPROC)(GLsizei n, const GLuint * pipelines);
+typedef void (GLAPIENTRY *PFNGLDELETEPROGRAMSARBPROC)(GLsizei n, const GLuint * programs);
+typedef void (GLAPIENTRY *PFNGLDELETEPROGRAMSNVPROC)(GLsizei n, const GLuint * programs);
+typedef void (GLAPIENTRY *PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLDELETEQUERIESARBPROC)(GLsizei n, const GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLDELETEQUERIESEXTPROC)(GLsizei n, const GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLDELETEQUERYRESOURCETAGNVPROC)(GLsizei n, const GLint * tagIds);
+typedef void (GLAPIENTRY *PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint * renderbuffers);
+typedef void (GLAPIENTRY *PFNGLDELETERENDERBUFFERSEXTPROC)(GLsizei n, const GLuint * renderbuffers);
+typedef void (GLAPIENTRY *PFNGLDELETERENDERBUFFERSOESPROC)(GLsizei n, const GLuint * renderbuffers);
+typedef void (GLAPIENTRY *PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint * samplers);
+typedef void (GLAPIENTRY *PFNGLDELETESEMAPHORESEXTPROC)(GLsizei n, const GLuint * semaphores);
+typedef void (GLAPIENTRY *PFNGLDELETESHADERPROC)(GLuint shader);
+typedef void (GLAPIENTRY *PFNGLDELETESTATESNVPROC)(GLsizei n, const GLuint * states);
+typedef void (GLAPIENTRY *PFNGLDELETESYNCPROC)(GLsync sync);
+typedef void (GLAPIENTRY *PFNGLDELETESYNCAPPLEPROC)(GLsync sync);
+typedef void (GLAPIENTRY *PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint * textures);
+typedef void (GLAPIENTRY *PFNGLDELETETEXTURESEXTPROC)(GLsizei n, const GLuint * textures);
+typedef void (GLAPIENTRY *PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLDELETETRANSFORMFEEDBACKSNVPROC)(GLsizei n, const GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint * arrays);
+typedef void (GLAPIENTRY *PFNGLDELETEVERTEXARRAYSAPPLEPROC)(GLsizei n, const GLuint * arrays);
+typedef void (GLAPIENTRY *PFNGLDELETEVERTEXARRAYSOESPROC)(GLsizei n, const GLuint * arrays);
+typedef void (GLAPIENTRY *PFNGLDELETEVERTEXSHADEREXTPROC)(GLuint id);
+typedef void (GLAPIENTRY *PFNGLDEPTHBOUNDSEXTPROC)(GLclampd zmin, GLclampd zmax);
+typedef void (GLAPIENTRY *PFNGLDEPTHBOUNDSDNVPROC)(GLdouble zmin, GLdouble zmax);
+typedef void (GLAPIENTRY *PFNGLDEPTHFUNCPROC)(GLenum func);
+typedef void (GLAPIENTRY *PFNGLDEPTHMASKPROC)(GLboolean flag);
+typedef void (GLAPIENTRY *PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f);
+typedef void (GLAPIENTRY *PFNGLDEPTHRANGEARRAYFVNVPROC)(GLuint first, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLDEPTHRANGEARRAYFVOESPROC)(GLuint first, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLDEPTHRANGEARRAYVPROC)(GLuint first, GLsizei count, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLDEPTHRANGEINDEXEDPROC)(GLuint index, GLdouble n, GLdouble f);
+typedef void (GLAPIENTRY *PFNGLDEPTHRANGEINDEXEDFNVPROC)(GLuint index, GLfloat n, GLfloat f);
+typedef void (GLAPIENTRY *PFNGLDEPTHRANGEINDEXEDFOESPROC)(GLuint index, GLfloat n, GLfloat f);
+typedef void (GLAPIENTRY *PFNGLDEPTHRANGEDNVPROC)(GLdouble zNear, GLdouble zFar);
+typedef void (GLAPIENTRY *PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f);
+typedef void (GLAPIENTRY *PFNGLDEPTHRANGEFOESPROC)(GLclampf n, GLclampf f);
+typedef void (GLAPIENTRY *PFNGLDEPTHRANGEXPROC)(GLfixed n, GLfixed f);
+typedef void (GLAPIENTRY *PFNGLDEPTHRANGEXOESPROC)(GLfixed n, GLfixed f);
+typedef void (GLAPIENTRY *PFNGLDETACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB attachedObj);
+typedef void (GLAPIENTRY *PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader);
+typedef void (GLAPIENTRY *PFNGLDETAILTEXFUNCSGISPROC)(GLenum target, GLsizei n, const GLfloat * points);
+typedef void (GLAPIENTRY *PFNGLDISABLEPROC)(GLenum cap);
+typedef void (GLAPIENTRY *PFNGLDISABLECLIENTSTATEPROC)(GLenum array);
+typedef void (GLAPIENTRY *PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index);
+typedef void (GLAPIENTRY *PFNGLDISABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index);
+typedef void (GLAPIENTRY *PFNGLDISABLEDRIVERCONTROLQCOMPROC)(GLuint driverControl);
+typedef void (GLAPIENTRY *PFNGLDISABLEINDEXEDEXTPROC)(GLenum target, GLuint index);
+typedef void (GLAPIENTRY *PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id);
+typedef void (GLAPIENTRY *PFNGLDISABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index);
+typedef void (GLAPIENTRY *PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index);
+typedef void (GLAPIENTRY *PFNGLDISABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array);
+typedef void (GLAPIENTRY *PFNGLDISABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname);
+typedef void (GLAPIENTRY *PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index);
+typedef void (GLAPIENTRY *PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)(GLuint index);
+typedef void (GLAPIENTRY *PFNGLDISABLEIPROC)(GLenum target, GLuint index);
+typedef void (GLAPIENTRY *PFNGLDISABLEIEXTPROC)(GLenum target, GLuint index);
+typedef void (GLAPIENTRY *PFNGLDISABLEINVPROC)(GLenum target, GLuint index);
+typedef void (GLAPIENTRY *PFNGLDISABLEIOESPROC)(GLenum target, GLuint index);
+typedef void (GLAPIENTRY *PFNGLDISCARDFRAMEBUFFEREXTPROC)(GLenum target, GLsizei numAttachments, const GLenum * attachments);
+typedef void (GLAPIENTRY *PFNGLDISPATCHCOMPUTEPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
+typedef void (GLAPIENTRY *PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
+typedef void (GLAPIENTRY *PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr indirect);
+typedef void (GLAPIENTRY *PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count);
+typedef void (GLAPIENTRY *PFNGLDRAWARRAYSEXTPROC)(GLenum mode, GLint first, GLsizei count);
+typedef void (GLAPIENTRY *PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void * indirect);
+typedef void (GLAPIENTRY *PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
+typedef void (GLAPIENTRY *PFNGLDRAWARRAYSINSTANCEDANGLEPROC)(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY *PFNGLDRAWARRAYSINSTANCEDARBPROC)(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY *PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
+typedef void (GLAPIENTRY *PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
+typedef void (GLAPIENTRY *PFNGLDRAWARRAYSINSTANCEDEXTPROC)(GLenum mode, GLint start, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY *PFNGLDRAWARRAYSINSTANCEDNVPROC)(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (GLAPIENTRY *PFNGLDRAWBUFFERPROC)(GLenum buf);
+typedef void (GLAPIENTRY *PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum * bufs);
+typedef void (GLAPIENTRY *PFNGLDRAWBUFFERSARBPROC)(GLsizei n, const GLenum * bufs);
+typedef void (GLAPIENTRY *PFNGLDRAWBUFFERSATIPROC)(GLsizei n, const GLenum * bufs);
+typedef void (GLAPIENTRY *PFNGLDRAWBUFFERSEXTPROC)(GLsizei n, const GLenum * bufs);
+typedef void (GLAPIENTRY *PFNGLDRAWBUFFERSINDEXEDEXTPROC)(GLint n, const GLenum * location, const GLint * indices);
+typedef void (GLAPIENTRY *PFNGLDRAWBUFFERSNVPROC)(GLsizei n, const GLenum * bufs);
+typedef void (GLAPIENTRY *PFNGLDRAWCOMMANDSADDRESSNVPROC)(GLenum primitiveMode, const GLuint64 * indirects, const GLsizei * sizes, GLuint count);
+typedef void (GLAPIENTRY *PFNGLDRAWCOMMANDSNVPROC)(GLenum primitiveMode, GLuint buffer, const GLintptr * indirects, const GLsizei * sizes, GLuint count);
+typedef void (GLAPIENTRY *PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)(const GLuint64 * indirects, const GLsizei * sizes, const GLuint * states, const GLuint * fbos, GLuint count);
+typedef void (GLAPIENTRY *PFNGLDRAWCOMMANDSSTATESNVPROC)(GLuint buffer, const GLintptr * indirects, const GLsizei * sizes, const GLuint * states, const GLuint * fbos, GLuint count);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, GLint first, GLsizei count);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTARRAYATIPROC)(GLenum mode, GLsizei count);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSBASEVERTEXEXTPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSBASEVERTEXOESPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void * indirect);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINSTANCEDANGLEPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINSTANCEDARBPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLuint baseinstance);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLuint baseinstance);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINSTANCEDEXTPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount);
+typedef void (GLAPIENTRY *PFNGLDRAWELEMENTSINSTANCEDNVPROC)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount);
+typedef void (GLAPIENTRY *PFNGLDRAWMESHARRAYSSUNPROC)(GLenum mode, GLint first, GLsizei count, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect);
+typedef void (GLAPIENTRY *PFNGLDRAWMESHTASKSNVPROC)(GLuint first, GLuint count);
+typedef void (GLAPIENTRY *PFNGLDRAWPIXELSPROC)(GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
+typedef void (GLAPIENTRY *PFNGLDRAWRANGEELEMENTARRAYATIPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count);
+typedef void (GLAPIENTRY *PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices);
+typedef void (GLAPIENTRY *PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex);
+typedef void (GLAPIENTRY *PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex);
+typedef void (GLAPIENTRY *PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex);
+typedef void (GLAPIENTRY *PFNGLDRAWRANGEELEMENTSEXTPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices);
+typedef void (GLAPIENTRY *PFNGLDRAWTEXFOESPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
+typedef void (GLAPIENTRY *PFNGLDRAWTEXFVOESPROC)(const GLfloat * coords);
+typedef void (GLAPIENTRY *PFNGLDRAWTEXIOESPROC)(GLint x, GLint y, GLint z, GLint width, GLint height);
+typedef void (GLAPIENTRY *PFNGLDRAWTEXIVOESPROC)(const GLint * coords);
+typedef void (GLAPIENTRY *PFNGLDRAWTEXSOESPROC)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
+typedef void (GLAPIENTRY *PFNGLDRAWTEXSVOESPROC)(const GLshort * coords);
+typedef void (GLAPIENTRY *PFNGLDRAWTEXTURENVPROC)(GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
+typedef void (GLAPIENTRY *PFNGLDRAWTEXXOESPROC)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
+typedef void (GLAPIENTRY *PFNGLDRAWTEXXVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id);
+typedef void (GLAPIENTRY *PFNGLDRAWTRANSFORMFEEDBACKEXTPROC)(GLenum mode, GLuint id);
+typedef void (GLAPIENTRY *PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)(GLenum mode, GLuint id, GLsizei instancecount);
+typedef void (GLAPIENTRY *PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC)(GLenum mode, GLuint id, GLsizei instancecount);
+typedef void (GLAPIENTRY *PFNGLDRAWTRANSFORMFEEDBACKNVPROC)(GLenum mode, GLuint id);
+typedef void (GLAPIENTRY *PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, GLuint stream);
+typedef void (GLAPIENTRY *PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
+typedef void (GLAPIENTRY *PFNGLDRAWVKIMAGENVPROC)(GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
+typedef void (GLAPIENTRY *PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC)(GLenum target, GLeglImageOES image);
+typedef void (GLAPIENTRY *PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)(GLenum target, GLeglImageOES image, const GLint* attrib_list);
+typedef void (GLAPIENTRY *PFNGLEGLIMAGETARGETTEXTURE2DOESPROC)(GLenum target, GLeglImageOES image);
+typedef void (GLAPIENTRY *PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)(GLuint texture, GLeglImageOES image, const GLint* attrib_list);
+typedef void (GLAPIENTRY *PFNGLEDGEFLAGPROC)(GLboolean flag);
+typedef void (GLAPIENTRY *PFNGLEDGEFLAGFORMATNVPROC)(GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLEDGEFLAGPOINTERPROC)(GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLEDGEFLAGPOINTEREXTPROC)(GLsizei stride, GLsizei count, const GLboolean * pointer);
+typedef void (GLAPIENTRY *PFNGLEDGEFLAGPOINTERLISTIBMPROC)(GLint stride, const GLboolean ** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY *PFNGLEDGEFLAGVPROC)(const GLboolean * flag);
+typedef void (GLAPIENTRY *PFNGLELEMENTPOINTERAPPLEPROC)(GLenum type, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLELEMENTPOINTERATIPROC)(GLenum type, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLENABLEPROC)(GLenum cap);
+typedef void (GLAPIENTRY *PFNGLENABLECLIENTSTATEPROC)(GLenum array);
+typedef void (GLAPIENTRY *PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index);
+typedef void (GLAPIENTRY *PFNGLENABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index);
+typedef void (GLAPIENTRY *PFNGLENABLEDRIVERCONTROLQCOMPROC)(GLuint driverControl);
+typedef void (GLAPIENTRY *PFNGLENABLEINDEXEDEXTPROC)(GLenum target, GLuint index);
+typedef void (GLAPIENTRY *PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id);
+typedef void (GLAPIENTRY *PFNGLENABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index);
+typedef void (GLAPIENTRY *PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index);
+typedef void (GLAPIENTRY *PFNGLENABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array);
+typedef void (GLAPIENTRY *PFNGLENABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname);
+typedef void (GLAPIENTRY *PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index);
+typedef void (GLAPIENTRY *PFNGLENABLEVERTEXATTRIBARRAYARBPROC)(GLuint index);
+typedef void (GLAPIENTRY *PFNGLENABLEIPROC)(GLenum target, GLuint index);
+typedef void (GLAPIENTRY *PFNGLENABLEIEXTPROC)(GLenum target, GLuint index);
+typedef void (GLAPIENTRY *PFNGLENABLEINVPROC)(GLenum target, GLuint index);
+typedef void (GLAPIENTRY *PFNGLENABLEIOESPROC)(GLenum target, GLuint index);
+typedef void (GLAPIENTRY *PFNGLENDPROC)(void);
+typedef void (GLAPIENTRY *PFNGLENDCONDITIONALRENDERPROC)(void);
+typedef void (GLAPIENTRY *PFNGLENDCONDITIONALRENDERNVPROC)(void);
+typedef void (GLAPIENTRY *PFNGLENDCONDITIONALRENDERNVXPROC)(void);
+typedef void (GLAPIENTRY *PFNGLENDFRAGMENTSHADERATIPROC)(void);
+typedef void (GLAPIENTRY *PFNGLENDLISTPROC)(void);
+typedef void (GLAPIENTRY *PFNGLENDOCCLUSIONQUERYNVPROC)(void);
+typedef void (GLAPIENTRY *PFNGLENDPERFMONITORAMDPROC)(GLuint monitor);
+typedef void (GLAPIENTRY *PFNGLENDPERFQUERYINTELPROC)(GLuint queryHandle);
+typedef void (GLAPIENTRY *PFNGLENDQUERYPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLENDQUERYARBPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLENDQUERYEXTPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index);
+typedef void (GLAPIENTRY *PFNGLENDTILINGQCOMPROC)(GLbitfield preserveMask);
+typedef void (GLAPIENTRY *PFNGLENDTRANSFORMFEEDBACKPROC)(void);
+typedef void (GLAPIENTRY *PFNGLENDTRANSFORMFEEDBACKEXTPROC)(void);
+typedef void (GLAPIENTRY *PFNGLENDTRANSFORMFEEDBACKNVPROC)(void);
+typedef void (GLAPIENTRY *PFNGLENDVERTEXSHADEREXTPROC)(void);
+typedef void (GLAPIENTRY *PFNGLENDVIDEOCAPTURENVPROC)(GLuint video_capture_slot);
+typedef void (GLAPIENTRY *PFNGLEVALCOORD1DPROC)(GLdouble u);
+typedef void (GLAPIENTRY *PFNGLEVALCOORD1DVPROC)(const GLdouble * u);
+typedef void (GLAPIENTRY *PFNGLEVALCOORD1FPROC)(GLfloat u);
+typedef void (GLAPIENTRY *PFNGLEVALCOORD1FVPROC)(const GLfloat * u);
+typedef void (GLAPIENTRY *PFNGLEVALCOORD1XOESPROC)(GLfixed u);
+typedef void (GLAPIENTRY *PFNGLEVALCOORD1XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLEVALCOORD2DPROC)(GLdouble u, GLdouble v);
+typedef void (GLAPIENTRY *PFNGLEVALCOORD2DVPROC)(const GLdouble * u);
+typedef void (GLAPIENTRY *PFNGLEVALCOORD2FPROC)(GLfloat u, GLfloat v);
+typedef void (GLAPIENTRY *PFNGLEVALCOORD2FVPROC)(const GLfloat * u);
+typedef void (GLAPIENTRY *PFNGLEVALCOORD2XOESPROC)(GLfixed u, GLfixed v);
+typedef void (GLAPIENTRY *PFNGLEVALCOORD2XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLEVALMAPSNVPROC)(GLenum target, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLEVALMESH1PROC)(GLenum mode, GLint i1, GLint i2);
+typedef void (GLAPIENTRY *PFNGLEVALMESH2PROC)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
+typedef void (GLAPIENTRY *PFNGLEVALPOINT1PROC)(GLint i);
+typedef void (GLAPIENTRY *PFNGLEVALPOINT2PROC)(GLint i, GLint j);
+typedef void (GLAPIENTRY *PFNGLEVALUATEDEPTHVALUESARBPROC)(void);
+typedef void (GLAPIENTRY *PFNGLEXECUTEPROGRAMNVPROC)(GLenum target, GLuint id, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLEXTGETBUFFERPOINTERVQCOMPROC)(GLenum target, void ** params);
+typedef void (GLAPIENTRY *PFNGLEXTGETBUFFERSQCOMPROC)(GLuint * buffers, GLint maxBuffers, GLint * numBuffers);
+typedef void (GLAPIENTRY *PFNGLEXTGETFRAMEBUFFERSQCOMPROC)(GLuint * framebuffers, GLint maxFramebuffers, GLint * numFramebuffers);
+typedef void (GLAPIENTRY *PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC)(GLuint program, GLenum shadertype, GLchar * source, GLint * length);
+typedef void (GLAPIENTRY *PFNGLEXTGETPROGRAMSQCOMPROC)(GLuint * programs, GLint maxPrograms, GLint * numPrograms);
+typedef void (GLAPIENTRY *PFNGLEXTGETRENDERBUFFERSQCOMPROC)(GLuint * renderbuffers, GLint maxRenderbuffers, GLint * numRenderbuffers);
+typedef void (GLAPIENTRY *PFNGLEXTGETSHADERSQCOMPROC)(GLuint * shaders, GLint maxShaders, GLint * numShaders);
+typedef void (GLAPIENTRY *PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC)(GLuint texture, GLenum face, GLint level, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLEXTGETTEXSUBIMAGEQCOMPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void * texels);
+typedef void (GLAPIENTRY *PFNGLEXTGETTEXTURESQCOMPROC)(GLuint * textures, GLint maxTextures, GLint * numTextures);
+typedef GLboolean (GLAPIENTRY *PFNGLEXTISPROGRAMBINARYQCOMPROC)(GLuint program);
+typedef void (GLAPIENTRY *PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC)(GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLEXTRACTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num);
+typedef void (GLAPIENTRY *PFNGLFEEDBACKBUFFERPROC)(GLsizei size, GLenum type, GLfloat * buffer);
+typedef void (GLAPIENTRY *PFNGLFEEDBACKBUFFERXOESPROC)(GLsizei n, GLenum type, const GLfixed * buffer);
+typedef GLsync (GLAPIENTRY *PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags);
+typedef GLsync (GLAPIENTRY *PFNGLFENCESYNCAPPLEPROC)(GLenum condition, GLbitfield flags);
+typedef void (GLAPIENTRY *PFNGLFINALCOMBINERINPUTNVPROC)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+typedef void (GLAPIENTRY *PFNGLFINISHPROC)(void);
+typedef GLint (GLAPIENTRY *PFNGLFINISHASYNCSGIXPROC)(GLuint * markerp);
+typedef void (GLAPIENTRY *PFNGLFINISHFENCEAPPLEPROC)(GLuint fence);
+typedef void (GLAPIENTRY *PFNGLFINISHFENCENVPROC)(GLuint fence);
+typedef void (GLAPIENTRY *PFNGLFINISHOBJECTAPPLEPROC)(GLenum object, GLint name);
+typedef void (GLAPIENTRY *PFNGLFINISHTEXTURESUNXPROC)(void);
+typedef void (GLAPIENTRY *PFNGLFLUSHPROC)(void);
+typedef void (GLAPIENTRY *PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length);
+typedef void (GLAPIENTRY *PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)(GLenum target, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC)(GLenum target, GLintptr offset, GLsizeiptr length);
+typedef void (GLAPIENTRY *PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (GLAPIENTRY *PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (GLAPIENTRY *PFNGLFLUSHPIXELDATARANGENVPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLFLUSHRASTERSGIXPROC)(void);
+typedef void (GLAPIENTRY *PFNGLFLUSHSTATICDATAIBMPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void * pointer);
+typedef void (GLAPIENTRY *PFNGLFLUSHVERTEXARRAYRANGENVPROC)(void);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDFORMATNVPROC)(GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDPOINTERPROC)(GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDPOINTEREXTPROC)(GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDPOINTERLISTIBMPROC)(GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDDPROC)(GLdouble coord);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDDEXTPROC)(GLdouble coord);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDDVPROC)(const GLdouble * coord);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDDVEXTPROC)(const GLdouble * coord);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDFPROC)(GLfloat coord);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDFEXTPROC)(GLfloat coord);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDFVPROC)(const GLfloat * coord);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDFVEXTPROC)(const GLfloat * coord);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDHNVPROC)(GLhalfNV fog);
+typedef void (GLAPIENTRY *PFNGLFOGCOORDHVNVPROC)(const GLhalfNV * fog);
+typedef void (GLAPIENTRY *PFNGLFOGFUNCSGISPROC)(GLsizei n, const GLfloat * points);
+typedef void (GLAPIENTRY *PFNGLFOGFPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLFOGFVPROC)(GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLFOGIPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLFOGIVPROC)(GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLFOGXPROC)(GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLFOGXOESPROC)(GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLFOGXVPROC)(GLenum pname, const GLfixed * param);
+typedef void (GLAPIENTRY *PFNGLFOGXVOESPROC)(GLenum pname, const GLfixed * param);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTCOLORMATERIALSGIXPROC)(GLenum face, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTCOVERAGECOLORNVPROC)(GLuint color);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTLIGHTMODELFSGIXPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)(GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTLIGHTMODELISGIXPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)(GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTLIGHTFSGIXPROC)(GLenum light, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTLIGHTISGIXPROC)(GLenum light, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTMATERIALFSGIXPROC)(GLenum face, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTMATERIALISGIXPROC)(GLenum face, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLFRAMETERMINATORGREMEDYPROC)(void);
+typedef void (GLAPIENTRY *PFNGLFRAMEZOOMSGIXPROC)(GLint factor);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)(GLuint framebuffer, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)(GLuint framebuffer, GLsizei n, const GLenum * bufs);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)(void);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC)(void);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC)(GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint * providedFeatures);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC)(GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERPARAMETERIPROC)(GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERPARAMETERIMESAPROC)(GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC)(GLuint target, GLsizei size);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERREADBUFFEREXTPROC)(GLuint framebuffer, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERRENDERBUFFEROESPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)(GLenum target, GLuint start, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLenum target, GLuint start, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)(GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat * values);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURE2DOESPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURE3DOESPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTUREARBPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTUREEXTPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
+typedef void (GLAPIENTRY *PFNGLFRAMEBUFFERTEXTUREOESPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLFREEOBJECTBUFFERATIPROC)(GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLFRONTFACEPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLFRUSTUMPROC)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+typedef void (GLAPIENTRY *PFNGLFRUSTUMFPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+typedef void (GLAPIENTRY *PFNGLFRUSTUMFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+typedef void (GLAPIENTRY *PFNGLFRUSTUMXPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
+typedef void (GLAPIENTRY *PFNGLFRUSTUMXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
+typedef GLuint (GLAPIENTRY *PFNGLGENASYNCMARKERSSGIXPROC)(GLsizei range);
+typedef void (GLAPIENTRY *PFNGLGENBUFFERSPROC)(GLsizei n, GLuint * buffers);
+typedef void (GLAPIENTRY *PFNGLGENBUFFERSARBPROC)(GLsizei n, GLuint * buffers);
+typedef void (GLAPIENTRY *PFNGLGENFENCESAPPLEPROC)(GLsizei n, GLuint * fences);
+typedef void (GLAPIENTRY *PFNGLGENFENCESNVPROC)(GLsizei n, GLuint * fences);
+typedef GLuint (GLAPIENTRY *PFNGLGENFRAGMENTSHADERSATIPROC)(GLuint range);
+typedef void (GLAPIENTRY *PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint * framebuffers);
+typedef void (GLAPIENTRY *PFNGLGENFRAMEBUFFERSEXTPROC)(GLsizei n, GLuint * framebuffers);
+typedef void (GLAPIENTRY *PFNGLGENFRAMEBUFFERSOESPROC)(GLsizei n, GLuint * framebuffers);
+typedef GLuint (GLAPIENTRY *PFNGLGENLISTSPROC)(GLsizei range);
+typedef void (GLAPIENTRY *PFNGLGENNAMESAMDPROC)(GLenum identifier, GLuint num, GLuint * names);
+typedef void (GLAPIENTRY *PFNGLGENOCCLUSIONQUERIESNVPROC)(GLsizei n, GLuint * ids);
+typedef GLuint (GLAPIENTRY *PFNGLGENPATHSNVPROC)(GLsizei range);
+typedef void (GLAPIENTRY *PFNGLGENPERFMONITORSAMDPROC)(GLsizei n, GLuint * monitors);
+typedef void (GLAPIENTRY *PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint * pipelines);
+typedef void (GLAPIENTRY *PFNGLGENPROGRAMPIPELINESEXTPROC)(GLsizei n, GLuint * pipelines);
+typedef void (GLAPIENTRY *PFNGLGENPROGRAMSARBPROC)(GLsizei n, GLuint * programs);
+typedef void (GLAPIENTRY *PFNGLGENPROGRAMSNVPROC)(GLsizei n, GLuint * programs);
+typedef void (GLAPIENTRY *PFNGLGENQUERIESPROC)(GLsizei n, GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLGENQUERIESARBPROC)(GLsizei n, GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLGENQUERIESEXTPROC)(GLsizei n, GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLGENQUERYRESOURCETAGNVPROC)(GLsizei n, GLint * tagIds);
+typedef void (GLAPIENTRY *PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint * renderbuffers);
+typedef void (GLAPIENTRY *PFNGLGENRENDERBUFFERSEXTPROC)(GLsizei n, GLuint * renderbuffers);
+typedef void (GLAPIENTRY *PFNGLGENRENDERBUFFERSOESPROC)(GLsizei n, GLuint * renderbuffers);
+typedef void (GLAPIENTRY *PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint * samplers);
+typedef void (GLAPIENTRY *PFNGLGENSEMAPHORESEXTPROC)(GLsizei n, GLuint * semaphores);
+typedef GLuint (GLAPIENTRY *PFNGLGENSYMBOLSEXTPROC)(GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
+typedef void (GLAPIENTRY *PFNGLGENTEXTURESPROC)(GLsizei n, GLuint * textures);
+typedef void (GLAPIENTRY *PFNGLGENTEXTURESEXTPROC)(GLsizei n, GLuint * textures);
+typedef void (GLAPIENTRY *PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLGENTRANSFORMFEEDBACKSNVPROC)(GLsizei n, GLuint * ids);
+typedef void (GLAPIENTRY *PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint * arrays);
+typedef void (GLAPIENTRY *PFNGLGENVERTEXARRAYSAPPLEPROC)(GLsizei n, GLuint * arrays);
+typedef void (GLAPIENTRY *PFNGLGENVERTEXARRAYSOESPROC)(GLsizei n, GLuint * arrays);
+typedef GLuint (GLAPIENTRY *PFNGLGENVERTEXSHADERSEXTPROC)(GLuint range);
+typedef void (GLAPIENTRY *PFNGLGENERATEMIPMAPPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLGENERATEMIPMAPEXTPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLGENERATEMIPMAPOESPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLGENERATEMULTITEXMIPMAPEXTPROC)(GLenum texunit, GLenum target);
+typedef void (GLAPIENTRY *PFNGLGENERATETEXTUREMIPMAPPROC)(GLuint texture);
+typedef void (GLAPIENTRY *PFNGLGENERATETEXTUREMIPMAPEXTPROC)(GLuint texture, GLenum target);
+typedef void (GLAPIENTRY *PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)(GLuint program, GLuint bufferIndex, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETACTIVEATTRIBARBPROC)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name);
+typedef void (GLAPIENTRY *PFNGLGETACTIVESUBROUTINENAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei * length, GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei * length, GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint * values);
+typedef void (GLAPIENTRY *PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETACTIVEUNIFORMARBPROC)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name);
+typedef void (GLAPIENTRY *PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformBlockName);
+typedef void (GLAPIENTRY *PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformName);
+typedef void (GLAPIENTRY *PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETACTIVEVARYINGNVPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETARRAYOBJECTFVATIPROC)(GLenum array, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETARRAYOBJECTIVATIPROC)(GLenum array, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETATTACHEDOBJECTSARBPROC)(GLhandleARB containerObj, GLsizei maxCount, GLsizei * count, GLhandleARB * obj);
+typedef void (GLAPIENTRY *PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders);
+typedef GLint (GLAPIENTRY *PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar * name);
+typedef GLint (GLAPIENTRY *PFNGLGETATTRIBLOCATIONARBPROC)(GLhandleARB programObj, const GLcharARB * name);
+typedef void (GLAPIENTRY *PFNGLGETBOOLEANINDEXEDVEXTPROC)(GLenum target, GLuint index, GLboolean * data);
+typedef void (GLAPIENTRY *PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean * data);
+typedef void (GLAPIENTRY *PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean * data);
+typedef void (GLAPIENTRY *PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETBUFFERPARAMETERIVARBPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETBUFFERPARAMETERUI64VNVPROC)(GLenum target, GLenum pname, GLuint64EXT * params);
+typedef void (GLAPIENTRY *PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void ** params);
+typedef void (GLAPIENTRY *PFNGLGETBUFFERPOINTERVARBPROC)(GLenum target, GLenum pname, void ** params);
+typedef void (GLAPIENTRY *PFNGLGETBUFFERPOINTERVOESPROC)(GLenum target, GLenum pname, void ** params);
+typedef void (GLAPIENTRY *PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void * data);
+typedef void (GLAPIENTRY *PFNGLGETBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void * data);
+typedef void (GLAPIENTRY *PFNGLGETCLIPPLANEPROC)(GLenum plane, GLdouble * equation);
+typedef void (GLAPIENTRY *PFNGLGETCLIPPLANEFPROC)(GLenum plane, GLfloat * equation);
+typedef void (GLAPIENTRY *PFNGLGETCLIPPLANEFOESPROC)(GLenum plane, GLfloat * equation);
+typedef void (GLAPIENTRY *PFNGLGETCLIPPLANEXPROC)(GLenum plane, GLfixed * equation);
+typedef void (GLAPIENTRY *PFNGLGETCLIPPLANEXOESPROC)(GLenum plane, GLfixed * equation);
+typedef void (GLAPIENTRY *PFNGLGETCOLORTABLEPROC)(GLenum target, GLenum format, GLenum type, void * table);
+typedef void (GLAPIENTRY *PFNGLGETCOLORTABLEEXTPROC)(GLenum target, GLenum format, GLenum type, void * data);
+typedef void (GLAPIENTRY *PFNGLGETCOLORTABLEPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETCOLORTABLEPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETCOLORTABLESGIPROC)(GLenum target, GLenum format, GLenum type, void * table);
+typedef void (GLAPIENTRY *PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, GLfloat * params);
+typedef GLuint (GLAPIENTRY *PFNGLGETCOMMANDHEADERNVPROC)(GLenum tokenID, GLuint size);
+typedef void (GLAPIENTRY *PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, GLint lod, void * img);
+typedef void (GLAPIENTRY *PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void * img);
+typedef void (GLAPIENTRY *PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint level, void * img);
+typedef void (GLAPIENTRY *PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLsizei bufSize, void * pixels);
+typedef void (GLAPIENTRY *PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, GLint lod, void * img);
+typedef void (GLAPIENTRY *PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void * pixels);
+typedef void (GLAPIENTRY *PFNGLGETCONVOLUTIONFILTERPROC)(GLenum target, GLenum format, GLenum type, void * image);
+typedef void (GLAPIENTRY *PFNGLGETCONVOLUTIONFILTEREXTPROC)(GLenum target, GLenum format, GLenum type, void * image);
+typedef void (GLAPIENTRY *PFNGLGETCONVOLUTIONPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETCONVOLUTIONPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETCOVERAGEMODULATIONTABLENVPROC)(GLsizei bufsize, GLfloat * v);
+typedef GLuint (GLAPIENTRY *PFNGLGETDEBUGMESSAGELOGPROC)(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog);
+typedef GLuint (GLAPIENTRY *PFNGLGETDEBUGMESSAGELOGAMDPROC)(GLuint count, GLsizei bufsize, GLenum * categories, GLuint * severities, GLuint * ids, GLsizei * lengths, GLchar * message);
+typedef GLuint (GLAPIENTRY *PFNGLGETDEBUGMESSAGELOGARBPROC)(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog);
+typedef GLuint (GLAPIENTRY *PFNGLGETDEBUGMESSAGELOGKHRPROC)(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog);
+typedef void (GLAPIENTRY *PFNGLGETDETAILTEXFUNCSGISPROC)(GLenum target, GLfloat * points);
+typedef void (GLAPIENTRY *PFNGLGETDOUBLEINDEXEDVEXTPROC)(GLenum target, GLuint index, GLdouble * data);
+typedef void (GLAPIENTRY *PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble * data);
+typedef void (GLAPIENTRY *PFNGLGETDOUBLEI_VEXTPROC)(GLenum pname, GLuint index, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble * data);
+typedef void (GLAPIENTRY *PFNGLGETDRIVERCONTROLSTRINGQCOMPROC)(GLuint driverControl, GLsizei bufSize, GLsizei * length, GLchar * driverControlString);
+typedef void (GLAPIENTRY *PFNGLGETDRIVERCONTROLSQCOMPROC)(GLint * num, GLsizei size, GLuint * driverControls);
+typedef GLenum (GLAPIENTRY *PFNGLGETERRORPROC)(void);
+typedef void (GLAPIENTRY *PFNGLGETFENCEIVNVPROC)(GLuint fence, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)(GLenum variable, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)(GLenum variable, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETFIRSTPERFQUERYIDINTELPROC)(GLuint * queryId);
+typedef void (GLAPIENTRY *PFNGLGETFIXEDVPROC)(GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETFIXEDVOESPROC)(GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETFLOATINDEXEDVEXTPROC)(GLenum target, GLuint index, GLfloat * data);
+typedef void (GLAPIENTRY *PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat * data);
+typedef void (GLAPIENTRY *PFNGLGETFLOATI_VEXTPROC)(GLenum pname, GLuint index, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETFLOATI_VNVPROC)(GLenum target, GLuint index, GLfloat * data);
+typedef void (GLAPIENTRY *PFNGLGETFLOATI_VOESPROC)(GLenum target, GLuint index, GLfloat * data);
+typedef void (GLAPIENTRY *PFNGLGETFLOATVPROC)(GLenum pname, GLfloat * data);
+typedef void (GLAPIENTRY *PFNGLGETFOGFUNCSGISPROC)(GLfloat * points);
+typedef GLint (GLAPIENTRY *PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar * name);
+typedef GLint (GLAPIENTRY *PFNGLGETFRAGDATAINDEXEXTPROC)(GLuint program, const GLchar * name);
+typedef GLint (GLAPIENTRY *PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar * name);
+typedef GLint (GLAPIENTRY *PFNGLGETFRAGDATALOCATIONEXTPROC)(GLuint program, const GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLenum target, GLenum attachment, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC)(GLenum target, GLenum attachment, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC)(GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat * values);
+typedef void (GLAPIENTRY *PFNGLGETFRAMEBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)(GLenum target, GLenum pname, GLint * params);
+typedef GLsizei (GLAPIENTRY *PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC)(GLuint target);
+typedef GLenum (GLAPIENTRY *PFNGLGETGRAPHICSRESETSTATUSPROC)(void);
+typedef GLenum (GLAPIENTRY *PFNGLGETGRAPHICSRESETSTATUSARBPROC)(void);
+typedef GLenum (GLAPIENTRY *PFNGLGETGRAPHICSRESETSTATUSEXTPROC)(void);
+typedef GLenum (GLAPIENTRY *PFNGLGETGRAPHICSRESETSTATUSKHRPROC)(void);
+typedef GLhandleARB (GLAPIENTRY *PFNGLGETHANDLEARBPROC)(GLenum pname);
+typedef void (GLAPIENTRY *PFNGLGETHISTOGRAMPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void * values);
+typedef void (GLAPIENTRY *PFNGLGETHISTOGRAMEXTPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void * values);
+typedef void (GLAPIENTRY *PFNGLGETHISTOGRAMPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETHISTOGRAMPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETHISTOGRAMPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed * params);
+typedef GLuint64 (GLAPIENTRY *PFNGLGETIMAGEHANDLEARBPROC)(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
+typedef GLuint64 (GLAPIENTRY *PFNGLGETIMAGEHANDLENVPROC)(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
+typedef void (GLAPIENTRY *PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETINFOLOGARBPROC)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog);
+typedef GLint (GLAPIENTRY *PFNGLGETINSTRUMENTSSGIXPROC)(void);
+typedef void (GLAPIENTRY *PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 * data);
+typedef void (GLAPIENTRY *PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 * data);
+typedef void (GLAPIENTRY *PFNGLGETINTEGER64VAPPLEPROC)(GLenum pname, GLint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETINTEGERINDEXEDVEXTPROC)(GLenum target, GLuint index, GLint * data);
+typedef void (GLAPIENTRY *PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint * data);
+typedef void (GLAPIENTRY *PFNGLGETINTEGERI_VEXTPROC)(GLenum target, GLuint index, GLint * data);
+typedef void (GLAPIENTRY *PFNGLGETINTEGERUI64I_VNVPROC)(GLenum value, GLuint index, GLuint64EXT * result);
+typedef void (GLAPIENTRY *PFNGLGETINTEGERUI64VNVPROC)(GLenum value, GLuint64EXT * result);
+typedef void (GLAPIENTRY *PFNGLGETINTEGERVPROC)(GLenum pname, GLint * data);
+typedef void (GLAPIENTRY *PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETINTERNALFORMATI64VPROC)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETINTERNALFORMATIVPROC)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETINVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean * data);
+typedef void (GLAPIENTRY *PFNGLGETINVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat * data);
+typedef void (GLAPIENTRY *PFNGLGETINVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint * data);
+typedef void (GLAPIENTRY *PFNGLGETLIGHTFVPROC)(GLenum light, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETLIGHTIVPROC)(GLenum light, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETLIGHTXVPROC)(GLenum light, GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETLIGHTXVOESPROC)(GLenum light, GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean * data);
+typedef void (GLAPIENTRY *PFNGLGETLOCALCONSTANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat * data);
+typedef void (GLAPIENTRY *PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint * data);
+typedef void (GLAPIENTRY *PFNGLGETMAPATTRIBPARAMETERFVNVPROC)(GLenum target, GLuint index, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETMAPATTRIBPARAMETERIVNVPROC)(GLenum target, GLuint index, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void * points);
+typedef void (GLAPIENTRY *PFNGLGETMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETMAPDVPROC)(GLenum target, GLenum query, GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLGETMAPFVPROC)(GLenum target, GLenum query, GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLGETMAPIVPROC)(GLenum target, GLenum query, GLint * v);
+typedef void (GLAPIENTRY *PFNGLGETMAPXVOESPROC)(GLenum target, GLenum query, GLfixed * v);
+typedef void (GLAPIENTRY *PFNGLGETMATERIALFVPROC)(GLenum face, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETMATERIALIVPROC)(GLenum face, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLGETMATERIALXVPROC)(GLenum face, GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETMATERIALXVOESPROC)(GLenum face, GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)(GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETMINMAXPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void * values);
+typedef void (GLAPIENTRY *PFNGLGETMINMAXEXTPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void * values);
+typedef void (GLAPIENTRY *PFNGLGETMINMAXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETMINMAXPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETMINMAXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETMINMAXPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void * pixels);
+typedef void (GLAPIENTRY *PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat * val);
+typedef void (GLAPIENTRY *PFNGLGETMULTISAMPLEFVNVPROC)(GLenum pname, GLuint index, GLfloat * val);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)(GLuint buffer, GLenum pname, GLint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint buffer, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)(GLuint buffer, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)(GLuint buffer, GLenum pname, GLuint64EXT * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDBUFFERPOINTERVPROC)(GLuint buffer, GLenum pname, void ** params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)(GLuint buffer, GLenum pname, void ** params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, void * data);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, void * data);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC)(GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat * values);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)(GLuint framebuffer, GLenum pname, GLint * param);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)(GLuint program, GLenum target, GLuint index, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)(GLuint program, GLenum target, GLuint index, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)(GLuint program, GLenum target, GLuint index, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)(GLuint program, GLenum target, GLuint index, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, GLenum pname, void * string);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDPROGRAMIVEXTPROC)(GLuint program, GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)(GLuint renderbuffer, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)(GLuint renderbuffer, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDSTRINGARBPROC)(GLint namelen, const GLchar * name, GLsizei bufSize, GLint * stringlen, GLchar * string);
+typedef void (GLAPIENTRY *PFNGLGETNAMEDSTRINGIVARBPROC)(GLint namelen, const GLchar * name, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNEXTPERFQUERYIDINTELPROC)(GLuint queryId, GLuint * nextQueryId);
+typedef void (GLAPIENTRY *PFNGLGETOBJECTBUFFERFVATIPROC)(GLuint buffer, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETOBJECTBUFFERIVATIPROC)(GLuint buffer, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label);
+typedef void (GLAPIENTRY *PFNGLGETOBJECTLABELEXTPROC)(GLenum type, GLuint object, GLsizei bufSize, GLsizei * length, GLchar * label);
+typedef void (GLAPIENTRY *PFNGLGETOBJECTLABELKHRPROC)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label);
+typedef void (GLAPIENTRY *PFNGLGETOBJECTPARAMETERFVARBPROC)(GLhandleARB obj, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETOBJECTPARAMETERIVAPPLEPROC)(GLenum objectType, GLuint name, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETOBJECTPARAMETERIVARBPROC)(GLhandleARB obj, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETOBJECTPTRLABELPROC)(const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label);
+typedef void (GLAPIENTRY *PFNGLGETOBJECTPTRLABELKHRPROC)(const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label);
+typedef void (GLAPIENTRY *PFNGLGETOCCLUSIONQUERYIVNVPROC)(GLuint id, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETOCCLUSIONQUERYUIVNVPROC)(GLuint id, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETPATHCOLORGENFVNVPROC)(GLenum color, GLenum pname, GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLGETPATHCOLORGENIVNVPROC)(GLenum color, GLenum pname, GLint * value);
+typedef void (GLAPIENTRY *PFNGLGETPATHCOMMANDSNVPROC)(GLuint path, GLubyte * commands);
+typedef void (GLAPIENTRY *PFNGLGETPATHCOORDSNVPROC)(GLuint path, GLfloat * coords);
+typedef void (GLAPIENTRY *PFNGLGETPATHDASHARRAYNVPROC)(GLuint path, GLfloat * dashArray);
+typedef GLfloat (GLAPIENTRY *PFNGLGETPATHLENGTHNVPROC)(GLuint path, GLsizei startSegment, GLsizei numSegments);
+typedef void (GLAPIENTRY *PFNGLGETPATHMETRICRANGENVPROC)(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat * metrics);
+typedef void (GLAPIENTRY *PFNGLGETPATHMETRICSNVPROC)(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLsizei stride, GLfloat * metrics);
+typedef void (GLAPIENTRY *PFNGLGETPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLGETPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, GLint * value);
+typedef void (GLAPIENTRY *PFNGLGETPATHSPACINGNVPROC)(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat * returnedSpacing);
+typedef void (GLAPIENTRY *PFNGLGETPATHTEXGENFVNVPROC)(GLenum texCoordSet, GLenum pname, GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLGETPATHTEXGENIVNVPROC)(GLenum texCoordSet, GLenum pname, GLint * value);
+typedef void (GLAPIENTRY *PFNGLGETPERFCOUNTERINFOINTELPROC)(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar * counterName, GLuint counterDescLength, GLchar * counterDesc, GLuint * counterOffset, GLuint * counterDataSize, GLuint * counterTypeEnum, GLuint * counterDataTypeEnum, GLuint64 * rawCounterMaxValue);
+typedef void (GLAPIENTRY *PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint * data, GLint * bytesWritten);
+typedef void (GLAPIENTRY *PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)(GLuint group, GLuint counter, GLenum pname, void * data);
+typedef void (GLAPIENTRY *PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei * length, GLchar * counterString);
+typedef void (GLAPIENTRY *PFNGLGETPERFMONITORCOUNTERSAMDPROC)(GLuint group, GLint * numCounters, GLint * maxActiveCounters, GLsizei counterSize, GLuint * counters);
+typedef void (GLAPIENTRY *PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)(GLuint group, GLsizei bufSize, GLsizei * length, GLchar * groupString);
+typedef void (GLAPIENTRY *PFNGLGETPERFMONITORGROUPSAMDPROC)(GLint * numGroups, GLsizei groupsSize, GLuint * groups);
+typedef void (GLAPIENTRY *PFNGLGETPERFQUERYDATAINTELPROC)(GLuint queryHandle, GLuint flags, GLsizei dataSize, void * data, GLuint * bytesWritten);
+typedef void (GLAPIENTRY *PFNGLGETPERFQUERYIDBYNAMEINTELPROC)(GLchar * queryName, GLuint * queryId);
+typedef void (GLAPIENTRY *PFNGLGETPERFQUERYINFOINTELPROC)(GLuint queryId, GLuint queryNameLength, GLchar * queryName, GLuint * dataSize, GLuint * noCounters, GLuint * noInstances, GLuint * capsMask);
+typedef void (GLAPIENTRY *PFNGLGETPIXELMAPFVPROC)(GLenum map, GLfloat * values);
+typedef void (GLAPIENTRY *PFNGLGETPIXELMAPUIVPROC)(GLenum map, GLuint * values);
+typedef void (GLAPIENTRY *PFNGLGETPIXELMAPUSVPROC)(GLenum map, GLushort * values);
+typedef void (GLAPIENTRY *PFNGLGETPIXELMAPXVPROC)(GLenum map, GLint size, GLfixed * values);
+typedef void (GLAPIENTRY *PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETPOINTERINDEXEDVEXTPROC)(GLenum target, GLuint index, void ** data);
+typedef void (GLAPIENTRY *PFNGLGETPOINTERI_VEXTPROC)(GLenum pname, GLuint index, void ** params);
+typedef void (GLAPIENTRY *PFNGLGETPOINTERVPROC)(GLenum pname, void ** params);
+typedef void (GLAPIENTRY *PFNGLGETPOINTERVEXTPROC)(GLenum pname, void ** params);
+typedef void (GLAPIENTRY *PFNGLGETPOINTERVKHRPROC)(GLenum pname, void ** params);
+typedef void (GLAPIENTRY *PFNGLGETPOLYGONSTIPPLEPROC)(GLubyte * mask);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMBINARYPROC)(GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, void * binary);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMBINARYOESPROC)(GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, void * binary);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)(GLenum target, GLuint index, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)(GLenum target, GLuint index, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMENVPARAMETERDVARBPROC)(GLenum target, GLuint index, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMENVPARAMETERFVARBPROC)(GLenum target, GLuint index, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMINTERFACEIVPROC)(GLuint program, GLenum programInterface, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)(GLenum target, GLuint index, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)(GLenum target, GLuint index, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)(GLenum target, GLuint index, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)(GLenum target, GLuint index, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMPARAMETERDVNVPROC)(GLenum target, GLuint index, GLenum pname, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMPARAMETERFVNVPROC)(GLenum target, GLuint index, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMPIPELINEINFOLOGPROC)(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC)(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint pipeline, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMPIPELINEIVEXTPROC)(GLuint pipeline, GLenum pname, GLint * params);
+typedef GLuint (GLAPIENTRY *PFNGLGETPROGRAMRESOURCEINDEXPROC)(GLuint program, GLenum programInterface, const GLchar * name);
+typedef GLint (GLAPIENTRY *PFNGLGETPROGRAMRESOURCELOCATIONPROC)(GLuint program, GLenum programInterface, const GLchar * name);
+typedef GLint (GLAPIENTRY *PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)(GLuint program, GLenum programInterface, const GLchar * name);
+typedef GLint (GLAPIENTRY *PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC)(GLuint program, GLenum programInterface, const GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMRESOURCENAMEPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei * length, GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMRESOURCEFVNVPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei * length, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMRESOURCEIVPROC)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei * length, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, GLenum pname, GLint * values);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMSTRINGARBPROC)(GLenum target, GLenum pname, void * string);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMSTRINGNVPROC)(GLuint id, GLenum pname, GLubyte * program);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)(GLenum target, GLuint index, GLuint * param);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMIVARBPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETPROGRAMIVNVPROC)(GLuint id, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYBUFFEROBJECTI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLGETQUERYBUFFEROBJECTIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLGETQUERYBUFFEROBJECTUI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLGETQUERYBUFFEROBJECTUIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYOBJECTI64VEXTPROC)(GLuint id, GLenum pname, GLint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYOBJECTIVARBPROC)(GLuint id, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYOBJECTIVEXTPROC)(GLuint id, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYOBJECTUI64VEXTPROC)(GLuint id, GLenum pname, GLuint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYOBJECTUIVARBPROC)(GLuint id, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYOBJECTUIVEXTPROC)(GLuint id, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYIVARBPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETQUERYIVEXTPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETRENDERBUFFERPARAMETERIVOESPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETSAMPLERPARAMETERIIVEXTPROC)(GLuint sampler, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETSAMPLERPARAMETERIIVOESPROC)(GLuint sampler, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETSAMPLERPARAMETERIUIVEXTPROC)(GLuint sampler, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETSAMPLERPARAMETERIUIVOESPROC)(GLuint sampler, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, GLuint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETSEPARABLEFILTERPROC)(GLenum target, GLenum format, GLenum type, void * row, void * column, void * span);
+typedef void (GLAPIENTRY *PFNGLGETSEPARABLEFILTEREXTPROC)(GLenum target, GLenum format, GLenum type, void * row, void * column, void * span);
+typedef void (GLAPIENTRY *PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog);
+typedef void (GLAPIENTRY *PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision);
+typedef void (GLAPIENTRY *PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source);
+typedef void (GLAPIENTRY *PFNGLGETSHADERSOURCEARBPROC)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * source);
+typedef void (GLAPIENTRY *PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint entry, GLenum * rate);
+typedef void (GLAPIENTRY *PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)(GLenum rate, GLuint samples, GLuint index, GLint * location);
+typedef void (GLAPIENTRY *PFNGLGETSHARPENTEXFUNCSGISPROC)(GLenum target, GLfloat * points);
+typedef GLushort (GLAPIENTRY *PFNGLGETSTAGEINDEXNVPROC)(GLenum shadertype);
+typedef const GLubyte * (GLAPIENTRY *PFNGLGETSTRINGPROC)(GLenum name);
+typedef const GLubyte * (GLAPIENTRY *PFNGLGETSTRINGIPROC)(GLenum name, GLuint index);
+typedef GLuint (GLAPIENTRY *PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, const GLchar * name);
+typedef GLint (GLAPIENTRY *PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, GLenum shadertype, const GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values);
+typedef void (GLAPIENTRY *PFNGLGETSYNCIVAPPLEPROC)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values);
+typedef void (GLAPIENTRY *PFNGLGETTEXBUMPPARAMETERFVATIPROC)(GLenum pname, GLfloat * param);
+typedef void (GLAPIENTRY *PFNGLGETTEXBUMPPARAMETERIVATIPROC)(GLenum pname, GLint * param);
+typedef void (GLAPIENTRY *PFNGLGETTEXENVFVPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXENVIVPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXENVXVPROC)(GLenum target, GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXENVXVOESPROC)(GLenum target, GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, GLfloat * weights);
+typedef void (GLAPIENTRY *PFNGLGETTEXGENDVPROC)(GLenum coord, GLenum pname, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXGENFVPROC)(GLenum coord, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXGENFVOESPROC)(GLenum coord, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXGENIVPROC)(GLenum coord, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXGENIVOESPROC)(GLenum coord, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXGENXVOESPROC)(GLenum coord, GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, void * pixels);
+typedef void (GLAPIENTRY *PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXLEVELPARAMETERXVOESPROC)(GLenum target, GLint level, GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXPARAMETERIIVOESPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXPARAMETERIUIVOESPROC)(GLenum target, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)(GLenum target, GLenum pname, void ** params);
+typedef void (GLAPIENTRY *PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXPARAMETERXVPROC)(GLenum target, GLenum pname, GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed * params);
+typedef GLuint64 (GLAPIENTRY *PFNGLGETTEXTUREHANDLEARBPROC)(GLuint texture);
+typedef GLuint64 (GLAPIENTRY *PFNGLGETTEXTUREHANDLEIMGPROC)(GLuint texture);
+typedef GLuint64 (GLAPIENTRY *PFNGLGETTEXTUREHANDLENVPROC)(GLuint texture);
+typedef void (GLAPIENTRY *PFNGLGETTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * pixels);
+typedef void (GLAPIENTRY *PFNGLGETTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void * pixels);
+typedef void (GLAPIENTRY *PFNGLGETTEXTURELEVELPARAMETERFVPROC)(GLuint texture, GLint level, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXTURELEVELPARAMETERIVPROC)(GLuint texture, GLint level, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLint level, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint * params);
+typedef GLuint64 (GLAPIENTRY *PFNGLGETTEXTURESAMPLERHANDLEARBPROC)(GLuint texture, GLuint sampler);
+typedef GLuint64 (GLAPIENTRY *PFNGLGETTEXTURESAMPLERHANDLEIMGPROC)(GLuint texture, GLuint sampler);
+typedef GLuint64 (GLAPIENTRY *PFNGLGETTEXTURESAMPLERHANDLENVPROC)(GLuint texture, GLuint sampler);
+typedef void (GLAPIENTRY *PFNGLGETTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void * pixels);
+typedef void (GLAPIENTRY *PFNGLGETTRACKMATRIXIVNVPROC)(GLenum target, GLuint address, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)(GLuint program, GLuint index, GLint * location);
+typedef void (GLAPIENTRY *PFNGLGETTRANSFORMFEEDBACKI64_VPROC)(GLuint xfb, GLenum pname, GLuint index, GLint64 * param);
+typedef void (GLAPIENTRY *PFNGLGETTRANSFORMFEEDBACKI_VPROC)(GLuint xfb, GLenum pname, GLuint index, GLint * param);
+typedef void (GLAPIENTRY *PFNGLGETTRANSFORMFEEDBACKIVPROC)(GLuint xfb, GLenum pname, GLint * param);
+typedef void (GLAPIENTRY *PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC)(GLuint shader, GLsizei bufsize, GLsizei * length, GLchar * source);
+typedef GLuint (GLAPIENTRY *PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar * uniformBlockName);
+typedef GLint (GLAPIENTRY *PFNGLGETUNIFORMBUFFERSIZEEXTPROC)(GLuint program, GLint location);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint * uniformIndices);
+typedef GLint (GLAPIENTRY *PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar * name);
+typedef GLint (GLAPIENTRY *PFNGLGETUNIFORMLOCATIONARBPROC)(GLhandleARB programObj, const GLcharARB * name);
+typedef GLintptr (GLAPIENTRY *PFNGLGETUNIFORMOFFSETEXTPROC)(GLuint program, GLint location);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMFVARBPROC)(GLhandleARB programObj, GLint location, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMI64VARBPROC)(GLuint program, GLint location, GLint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMI64VNVPROC)(GLuint program, GLint location, GLint64EXT * params);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMIVARBPROC)(GLhandleARB programObj, GLint location, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMUI64VARBPROC)(GLuint program, GLint location, GLuint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMUI64VNVPROC)(GLuint program, GLint location, GLuint64EXT * params);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETUNIFORMUIVEXTPROC)(GLuint program, GLint location, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETUNSIGNEDBYTEI_VEXTPROC)(GLenum target, GLuint index, GLubyte * data);
+typedef void (GLAPIENTRY *PFNGLGETUNSIGNEDBYTEVEXTPROC)(GLenum pname, GLubyte * data);
+typedef void (GLAPIENTRY *PFNGLGETVARIANTARRAYOBJECTFVATIPROC)(GLuint id, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETVARIANTARRAYOBJECTIVATIPROC)(GLuint id, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean * data);
+typedef void (GLAPIENTRY *PFNGLGETVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat * data);
+typedef void (GLAPIENTRY *PFNGLGETVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint * data);
+typedef void (GLAPIENTRY *PFNGLGETVARIANTPOINTERVEXTPROC)(GLuint id, GLenum value, void ** data);
+typedef GLint (GLAPIENTRY *PFNGLGETVARYINGLOCATIONNVPROC)(GLuint program, const GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXARRAYINDEXED64IVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint64 * param);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXARRAYINDEXEDIVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint * param);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint * param);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXARRAYINTEGERVEXTPROC)(GLuint vaobj, GLenum pname, GLint * param);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)(GLuint vaobj, GLuint index, GLenum pname, void ** param);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXARRAYPOINTERVEXTPROC)(GLuint vaobj, GLenum pname, void ** param);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXARRAYIVPROC)(GLuint vaobj, GLenum pname, GLint * param);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)(GLuint index, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)(GLuint index, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBIIVEXTPROC)(GLuint index, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBIUIVEXTPROC)(GLuint index, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBLDVEXTPROC)(GLuint index, GLenum pname, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBLI64VNVPROC)(GLuint index, GLenum pname, GLint64EXT * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBLUI64VARBPROC)(GLuint index, GLenum pname, GLuint64EXT * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBLUI64VNVPROC)(GLuint index, GLenum pname, GLuint64EXT * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void ** pointer);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBPOINTERVARBPROC)(GLuint index, GLenum pname, void ** pointer);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBPOINTERVNVPROC)(GLuint index, GLenum pname, void ** pointer);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBDVARBPROC)(GLuint index, GLenum pname, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBDVNVPROC)(GLuint index, GLenum pname, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBFVARBPROC)(GLuint index, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBFVNVPROC)(GLuint index, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBIVARBPROC)(GLuint index, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETVERTEXATTRIBIVNVPROC)(GLuint index, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETVIDEOCAPTUREIVNVPROC)(GLuint video_capture_slot, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETVIDEOI64VNVPROC)(GLuint video_slot, GLenum pname, GLint64EXT * params);
+typedef void (GLAPIENTRY *PFNGLGETVIDEOIVNVPROC)(GLuint video_slot, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETVIDEOUI64VNVPROC)(GLuint video_slot, GLenum pname, GLuint64EXT * params);
+typedef void (GLAPIENTRY *PFNGLGETVIDEOUIVNVPROC)(GLuint video_slot, GLenum pname, GLuint * params);
+typedef GLVULKANPROCNV (GLAPIENTRY *PFNGLGETVKPROCADDRNVPROC)(const GLchar * name);
+typedef void (GLAPIENTRY *PFNGLGETNCOLORTABLEPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void * table);
+typedef void (GLAPIENTRY *PFNGLGETNCOLORTABLEARBPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void * table);
+typedef void (GLAPIENTRY *PFNGLGETNCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint lod, GLsizei bufSize, void * pixels);
+typedef void (GLAPIENTRY *PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint lod, GLsizei bufSize, void * img);
+typedef void (GLAPIENTRY *PFNGLGETNCONVOLUTIONFILTERPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void * image);
+typedef void (GLAPIENTRY *PFNGLGETNCONVOLUTIONFILTERARBPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void * image);
+typedef void (GLAPIENTRY *PFNGLGETNHISTOGRAMPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void * values);
+typedef void (GLAPIENTRY *PFNGLGETNHISTOGRAMARBPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void * values);
+typedef void (GLAPIENTRY *PFNGLGETNMAPDVPROC)(GLenum target, GLenum query, GLsizei bufSize, GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLGETNMAPDVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLGETNMAPFVPROC)(GLenum target, GLenum query, GLsizei bufSize, GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLGETNMAPFVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLGETNMAPIVPROC)(GLenum target, GLenum query, GLsizei bufSize, GLint * v);
+typedef void (GLAPIENTRY *PFNGLGETNMAPIVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLint * v);
+typedef void (GLAPIENTRY *PFNGLGETNMINMAXPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void * values);
+typedef void (GLAPIENTRY *PFNGLGETNMINMAXARBPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void * values);
+typedef void (GLAPIENTRY *PFNGLGETNPIXELMAPFVPROC)(GLenum map, GLsizei bufSize, GLfloat * values);
+typedef void (GLAPIENTRY *PFNGLGETNPIXELMAPFVARBPROC)(GLenum map, GLsizei bufSize, GLfloat * values);
+typedef void (GLAPIENTRY *PFNGLGETNPIXELMAPUIVPROC)(GLenum map, GLsizei bufSize, GLuint * values);
+typedef void (GLAPIENTRY *PFNGLGETNPIXELMAPUIVARBPROC)(GLenum map, GLsizei bufSize, GLuint * values);
+typedef void (GLAPIENTRY *PFNGLGETNPIXELMAPUSVPROC)(GLenum map, GLsizei bufSize, GLushort * values);
+typedef void (GLAPIENTRY *PFNGLGETNPIXELMAPUSVARBPROC)(GLenum map, GLsizei bufSize, GLushort * values);
+typedef void (GLAPIENTRY *PFNGLGETNPOLYGONSTIPPLEPROC)(GLsizei bufSize, GLubyte * pattern);
+typedef void (GLAPIENTRY *PFNGLGETNPOLYGONSTIPPLEARBPROC)(GLsizei bufSize, GLubyte * pattern);
+typedef void (GLAPIENTRY *PFNGLGETNSEPARABLEFILTERPROC)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void * row, GLsizei columnBufSize, void * column, void * span);
+typedef void (GLAPIENTRY *PFNGLGETNSEPARABLEFILTERARBPROC)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void * row, GLsizei columnBufSize, void * column, void * span);
+typedef void (GLAPIENTRY *PFNGLGETNTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * pixels);
+typedef void (GLAPIENTRY *PFNGLGETNTEXIMAGEARBPROC)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * img);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMDVPROC)(GLuint program, GLint location, GLsizei bufSize, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMDVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMFVPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMFVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMFVEXTPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMFVKHRPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMI64VARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMIVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMIVEXTPROC)(GLuint program, GLint location, GLsizei bufSize, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMIVKHRPROC)(GLuint program, GLint location, GLsizei bufSize, GLint * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMUI64VARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint64 * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMUIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMUIVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGETNUNIFORMUIVKHRPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLGLOBALALPHAFACTORBSUNPROC)(GLbyte factor);
+typedef void (GLAPIENTRY *PFNGLGLOBALALPHAFACTORDSUNPROC)(GLdouble factor);
+typedef void (GLAPIENTRY *PFNGLGLOBALALPHAFACTORFSUNPROC)(GLfloat factor);
+typedef void (GLAPIENTRY *PFNGLGLOBALALPHAFACTORISUNPROC)(GLint factor);
+typedef void (GLAPIENTRY *PFNGLGLOBALALPHAFACTORSSUNPROC)(GLshort factor);
+typedef void (GLAPIENTRY *PFNGLGLOBALALPHAFACTORUBSUNPROC)(GLubyte factor);
+typedef void (GLAPIENTRY *PFNGLGLOBALALPHAFACTORUISUNPROC)(GLuint factor);
+typedef void (GLAPIENTRY *PFNGLGLOBALALPHAFACTORUSSUNPROC)(GLushort factor);
+typedef void (GLAPIENTRY *PFNGLHINTPROC)(GLenum target, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLHINTPGIPROC)(GLenum target, GLint mode);
+typedef void (GLAPIENTRY *PFNGLHISTOGRAMPROC)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (GLAPIENTRY *PFNGLHISTOGRAMEXTPROC)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+typedef void (GLAPIENTRY *PFNGLIGLOOINTERFACESGIXPROC)(GLenum pname, const void * params);
+typedef void (GLAPIENTRY *PFNGLIMAGETRANSFORMPARAMETERFHPPROC)(GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLIMAGETRANSFORMPARAMETERIHPPROC)(GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLIMPORTMEMORYFDEXTPROC)(GLuint memory, GLuint64 size, GLenum handleType, GLint fd);
+typedef void (GLAPIENTRY *PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)(GLuint memory, GLuint64 size, GLenum handleType, void * handle);
+typedef void (GLAPIENTRY *PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)(GLuint memory, GLuint64 size, GLenum handleType, const void * name);
+typedef void (GLAPIENTRY *PFNGLIMPORTSEMAPHOREFDEXTPROC)(GLuint semaphore, GLenum handleType, GLint fd);
+typedef void (GLAPIENTRY *PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)(GLuint semaphore, GLenum handleType, void * handle);
+typedef void (GLAPIENTRY *PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)(GLuint semaphore, GLenum handleType, const void * name);
+typedef GLsync (GLAPIENTRY *PFNGLIMPORTSYNCEXTPROC)(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
+typedef void (GLAPIENTRY *PFNGLINDEXFORMATNVPROC)(GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLINDEXFUNCEXTPROC)(GLenum func, GLclampf ref);
+typedef void (GLAPIENTRY *PFNGLINDEXMASKPROC)(GLuint mask);
+typedef void (GLAPIENTRY *PFNGLINDEXMATERIALEXTPROC)(GLenum face, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLINDEXPOINTERPROC)(GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLINDEXPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLINDEXPOINTERLISTIBMPROC)(GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY *PFNGLINDEXDPROC)(GLdouble c);
+typedef void (GLAPIENTRY *PFNGLINDEXDVPROC)(const GLdouble * c);
+typedef void (GLAPIENTRY *PFNGLINDEXFPROC)(GLfloat c);
+typedef void (GLAPIENTRY *PFNGLINDEXFVPROC)(const GLfloat * c);
+typedef void (GLAPIENTRY *PFNGLINDEXIPROC)(GLint c);
+typedef void (GLAPIENTRY *PFNGLINDEXIVPROC)(const GLint * c);
+typedef void (GLAPIENTRY *PFNGLINDEXSPROC)(GLshort c);
+typedef void (GLAPIENTRY *PFNGLINDEXSVPROC)(const GLshort * c);
+typedef void (GLAPIENTRY *PFNGLINDEXUBPROC)(GLubyte c);
+typedef void (GLAPIENTRY *PFNGLINDEXUBVPROC)(const GLubyte * c);
+typedef void (GLAPIENTRY *PFNGLINDEXXOESPROC)(GLfixed component);
+typedef void (GLAPIENTRY *PFNGLINDEXXVOESPROC)(const GLfixed * component);
+typedef void (GLAPIENTRY *PFNGLINITNAMESPROC)(void);
+typedef void (GLAPIENTRY *PFNGLINSERTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num);
+typedef void (GLAPIENTRY *PFNGLINSERTEVENTMARKEREXTPROC)(GLsizei length, const GLchar * marker);
+typedef void (GLAPIENTRY *PFNGLINSTRUMENTSBUFFERSGIXPROC)(GLsizei size, GLint * buffer);
+typedef void (GLAPIENTRY *PFNGLINTERLEAVEDARRAYSPROC)(GLenum format, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLINTERPOLATEPATHSNVPROC)(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
+typedef void (GLAPIENTRY *PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLINVALIDATEBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (GLAPIENTRY *PFNGLINVALIDATEFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum * attachments);
+typedef void (GLAPIENTRY *PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)(GLuint framebuffer, GLsizei numAttachments, const GLenum * attachments);
+typedef void (GLAPIENTRY *PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)(GLuint framebuffer, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLINVALIDATESUBFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLINVALIDATETEXIMAGEPROC)(GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLINVALIDATETEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
+typedef GLboolean (GLAPIENTRY *PFNGLISASYNCMARKERSGIXPROC)(GLuint marker);
+typedef GLboolean (GLAPIENTRY *PFNGLISBUFFERPROC)(GLuint buffer);
+typedef GLboolean (GLAPIENTRY *PFNGLISBUFFERARBPROC)(GLuint buffer);
+typedef GLboolean (GLAPIENTRY *PFNGLISBUFFERRESIDENTNVPROC)(GLenum target);
+typedef GLboolean (GLAPIENTRY *PFNGLISCOMMANDLISTNVPROC)(GLuint list);
+typedef GLboolean (GLAPIENTRY *PFNGLISENABLEDPROC)(GLenum cap);
+typedef GLboolean (GLAPIENTRY *PFNGLISENABLEDINDEXEDEXTPROC)(GLenum target, GLuint index);
+typedef GLboolean (GLAPIENTRY *PFNGLISENABLEDIPROC)(GLenum target, GLuint index);
+typedef GLboolean (GLAPIENTRY *PFNGLISENABLEDIEXTPROC)(GLenum target, GLuint index);
+typedef GLboolean (GLAPIENTRY *PFNGLISENABLEDINVPROC)(GLenum target, GLuint index);
+typedef GLboolean (GLAPIENTRY *PFNGLISENABLEDIOESPROC)(GLenum target, GLuint index);
+typedef GLboolean (GLAPIENTRY *PFNGLISFENCEAPPLEPROC)(GLuint fence);
+typedef GLboolean (GLAPIENTRY *PFNGLISFENCENVPROC)(GLuint fence);
+typedef GLboolean (GLAPIENTRY *PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer);
+typedef GLboolean (GLAPIENTRY *PFNGLISFRAMEBUFFEREXTPROC)(GLuint framebuffer);
+typedef GLboolean (GLAPIENTRY *PFNGLISFRAMEBUFFEROESPROC)(GLuint framebuffer);
+typedef GLboolean (GLAPIENTRY *PFNGLISIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle);
+typedef GLboolean (GLAPIENTRY *PFNGLISIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle);
+typedef GLboolean (GLAPIENTRY *PFNGLISLISTPROC)(GLuint list);
+typedef GLboolean (GLAPIENTRY *PFNGLISMEMORYOBJECTEXTPROC)(GLuint memoryObject);
+typedef GLboolean (GLAPIENTRY *PFNGLISNAMEAMDPROC)(GLenum identifier, GLuint name);
+typedef GLboolean (GLAPIENTRY *PFNGLISNAMEDBUFFERRESIDENTNVPROC)(GLuint buffer);
+typedef GLboolean (GLAPIENTRY *PFNGLISNAMEDSTRINGARBPROC)(GLint namelen, const GLchar * name);
+typedef GLboolean (GLAPIENTRY *PFNGLISOBJECTBUFFERATIPROC)(GLuint buffer);
+typedef GLboolean (GLAPIENTRY *PFNGLISOCCLUSIONQUERYNVPROC)(GLuint id);
+typedef GLboolean (GLAPIENTRY *PFNGLISPATHNVPROC)(GLuint path);
+typedef GLboolean (GLAPIENTRY *PFNGLISPOINTINFILLPATHNVPROC)(GLuint path, GLuint mask, GLfloat x, GLfloat y);
+typedef GLboolean (GLAPIENTRY *PFNGLISPOINTINSTROKEPATHNVPROC)(GLuint path, GLfloat x, GLfloat y);
+typedef GLboolean (GLAPIENTRY *PFNGLISPROGRAMPROC)(GLuint program);
+typedef GLboolean (GLAPIENTRY *PFNGLISPROGRAMARBPROC)(GLuint program);
+typedef GLboolean (GLAPIENTRY *PFNGLISPROGRAMNVPROC)(GLuint id);
+typedef GLboolean (GLAPIENTRY *PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline);
+typedef GLboolean (GLAPIENTRY *PFNGLISPROGRAMPIPELINEEXTPROC)(GLuint pipeline);
+typedef GLboolean (GLAPIENTRY *PFNGLISQUERYPROC)(GLuint id);
+typedef GLboolean (GLAPIENTRY *PFNGLISQUERYARBPROC)(GLuint id);
+typedef GLboolean (GLAPIENTRY *PFNGLISQUERYEXTPROC)(GLuint id);
+typedef GLboolean (GLAPIENTRY *PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer);
+typedef GLboolean (GLAPIENTRY *PFNGLISRENDERBUFFEREXTPROC)(GLuint renderbuffer);
+typedef GLboolean (GLAPIENTRY *PFNGLISRENDERBUFFEROESPROC)(GLuint renderbuffer);
+typedef GLboolean (GLAPIENTRY *PFNGLISSAMPLERPROC)(GLuint sampler);
+typedef GLboolean (GLAPIENTRY *PFNGLISSEMAPHOREEXTPROC)(GLuint semaphore);
+typedef GLboolean (GLAPIENTRY *PFNGLISSHADERPROC)(GLuint shader);
+typedef GLboolean (GLAPIENTRY *PFNGLISSTATENVPROC)(GLuint state);
+typedef GLboolean (GLAPIENTRY *PFNGLISSYNCPROC)(GLsync sync);
+typedef GLboolean (GLAPIENTRY *PFNGLISSYNCAPPLEPROC)(GLsync sync);
+typedef GLboolean (GLAPIENTRY *PFNGLISTEXTUREPROC)(GLuint texture);
+typedef GLboolean (GLAPIENTRY *PFNGLISTEXTUREEXTPROC)(GLuint texture);
+typedef GLboolean (GLAPIENTRY *PFNGLISTEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle);
+typedef GLboolean (GLAPIENTRY *PFNGLISTEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle);
+typedef GLboolean (GLAPIENTRY *PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id);
+typedef GLboolean (GLAPIENTRY *PFNGLISTRANSFORMFEEDBACKNVPROC)(GLuint id);
+typedef GLboolean (GLAPIENTRY *PFNGLISVARIANTENABLEDEXTPROC)(GLuint id, GLenum cap);
+typedef GLboolean (GLAPIENTRY *PFNGLISVERTEXARRAYPROC)(GLuint array);
+typedef GLboolean (GLAPIENTRY *PFNGLISVERTEXARRAYAPPLEPROC)(GLuint array);
+typedef GLboolean (GLAPIENTRY *PFNGLISVERTEXARRAYOESPROC)(GLuint array);
+typedef GLboolean (GLAPIENTRY *PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)(GLuint index, GLenum pname);
+typedef void (GLAPIENTRY *PFNGLLGPUCOPYIMAGESUBDATANVXPROC)(GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY *PFNGLLGPUINTERLOCKNVXPROC)(void);
+typedef void (GLAPIENTRY *PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void * data);
+typedef void (GLAPIENTRY *PFNGLLABELOBJECTEXTPROC)(GLenum type, GLuint object, GLsizei length, const GLchar * label);
+typedef void (GLAPIENTRY *PFNGLLIGHTENVISGIXPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLLIGHTMODELFPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLLIGHTMODELFVPROC)(GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLLIGHTMODELIPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLLIGHTMODELIVPROC)(GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLLIGHTMODELXPROC)(GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLLIGHTMODELXOESPROC)(GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLLIGHTMODELXVPROC)(GLenum pname, const GLfixed * param);
+typedef void (GLAPIENTRY *PFNGLLIGHTMODELXVOESPROC)(GLenum pname, const GLfixed * param);
+typedef void (GLAPIENTRY *PFNGLLIGHTFPROC)(GLenum light, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLLIGHTFVPROC)(GLenum light, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLLIGHTIPROC)(GLenum light, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLLIGHTIVPROC)(GLenum light, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLLIGHTXPROC)(GLenum light, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLLIGHTXVPROC)(GLenum light, GLenum pname, const GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLLIGHTXVOESPROC)(GLenum light, GLenum pname, const GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLLINESTIPPLEPROC)(GLint factor, GLushort pattern);
+typedef void (GLAPIENTRY *PFNGLLINEWIDTHPROC)(GLfloat width);
+typedef void (GLAPIENTRY *PFNGLLINEWIDTHXPROC)(GLfixed width);
+typedef void (GLAPIENTRY *PFNGLLINEWIDTHXOESPROC)(GLfixed width);
+typedef void (GLAPIENTRY *PFNGLLINKPROGRAMPROC)(GLuint program);
+typedef void (GLAPIENTRY *PFNGLLINKPROGRAMARBPROC)(GLhandleARB programObj);
+typedef void (GLAPIENTRY *PFNGLLISTBASEPROC)(GLuint base);
+typedef void (GLAPIENTRY *PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)(GLuint list, GLuint segment, const void ** indirects, const GLsizei * sizes, const GLuint * states, const GLuint * fbos, GLuint count);
+typedef void (GLAPIENTRY *PFNGLLISTPARAMETERFSGIXPROC)(GLuint list, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLLISTPARAMETERISGIXPROC)(GLuint list, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLLOADIDENTITYPROC)(void);
+typedef void (GLAPIENTRY *PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)(GLbitfield mask);
+typedef void (GLAPIENTRY *PFNGLLOADMATRIXDPROC)(const GLdouble * m);
+typedef void (GLAPIENTRY *PFNGLLOADMATRIXFPROC)(const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLLOADMATRIXXPROC)(const GLfixed * m);
+typedef void (GLAPIENTRY *PFNGLLOADMATRIXXOESPROC)(const GLfixed * m);
+typedef void (GLAPIENTRY *PFNGLLOADNAMEPROC)(GLuint name);
+typedef void (GLAPIENTRY *PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC)(void);
+typedef void (GLAPIENTRY *PFNGLLOADPROGRAMNVPROC)(GLenum target, GLuint id, GLsizei len, const GLubyte * program);
+typedef void (GLAPIENTRY *PFNGLLOADTRANSPOSEMATRIXDPROC)(const GLdouble * m);
+typedef void (GLAPIENTRY *PFNGLLOADTRANSPOSEMATRIXDARBPROC)(const GLdouble * m);
+typedef void (GLAPIENTRY *PFNGLLOADTRANSPOSEMATRIXFPROC)(const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLLOADTRANSPOSEMATRIXFARBPROC)(const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLLOADTRANSPOSEMATRIXXOESPROC)(const GLfixed * m);
+typedef void (GLAPIENTRY *PFNGLLOCKARRAYSEXTPROC)(GLint first, GLsizei count);
+typedef void (GLAPIENTRY *PFNGLLOGICOPPROC)(GLenum opcode);
+typedef void (GLAPIENTRY *PFNGLMAKEBUFFERNONRESIDENTNVPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLMAKEBUFFERRESIDENTNVPROC)(GLenum target, GLenum access);
+typedef void (GLAPIENTRY *PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)(GLuint64 handle);
+typedef void (GLAPIENTRY *PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)(GLuint64 handle);
+typedef void (GLAPIENTRY *PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle, GLenum access);
+typedef void (GLAPIENTRY *PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle, GLenum access);
+typedef void (GLAPIENTRY *PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)(GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)(GLuint buffer, GLenum access);
+typedef void (GLAPIENTRY *PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)(GLuint64 handle);
+typedef void (GLAPIENTRY *PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)(GLuint64 handle);
+typedef void (GLAPIENTRY *PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle);
+typedef void (GLAPIENTRY *PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle);
+typedef void (GLAPIENTRY *PFNGLMAP1DPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points);
+typedef void (GLAPIENTRY *PFNGLMAP1FPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points);
+typedef void (GLAPIENTRY *PFNGLMAP1XOESPROC)(GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);
+typedef void (GLAPIENTRY *PFNGLMAP2DPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points);
+typedef void (GLAPIENTRY *PFNGLMAP2FPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points);
+typedef void (GLAPIENTRY *PFNGLMAP2XOESPROC)(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);
+typedef void * (GLAPIENTRY *PFNGLMAPBUFFERPROC)(GLenum target, GLenum access);
+typedef void * (GLAPIENTRY *PFNGLMAPBUFFERARBPROC)(GLenum target, GLenum access);
+typedef void * (GLAPIENTRY *PFNGLMAPBUFFEROESPROC)(GLenum target, GLenum access);
+typedef void * (GLAPIENTRY *PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void * (GLAPIENTRY *PFNGLMAPBUFFERRANGEEXTPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void (GLAPIENTRY *PFNGLMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void * points);
+typedef void (GLAPIENTRY *PFNGLMAPGRID1DPROC)(GLint un, GLdouble u1, GLdouble u2);
+typedef void (GLAPIENTRY *PFNGLMAPGRID1FPROC)(GLint un, GLfloat u1, GLfloat u2);
+typedef void (GLAPIENTRY *PFNGLMAPGRID1XOESPROC)(GLint n, GLfixed u1, GLfixed u2);
+typedef void (GLAPIENTRY *PFNGLMAPGRID2DPROC)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
+typedef void (GLAPIENTRY *PFNGLMAPGRID2FPROC)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
+typedef void (GLAPIENTRY *PFNGLMAPGRID2XOESPROC)(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);
+typedef void * (GLAPIENTRY *PFNGLMAPNAMEDBUFFERPROC)(GLuint buffer, GLenum access);
+typedef void * (GLAPIENTRY *PFNGLMAPNAMEDBUFFEREXTPROC)(GLuint buffer, GLenum access);
+typedef void * (GLAPIENTRY *PFNGLMAPNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void * (GLAPIENTRY *PFNGLMAPNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void * (GLAPIENTRY *PFNGLMAPOBJECTBUFFERATIPROC)(GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, const GLint * params);
+typedef void * (GLAPIENTRY *PFNGLMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level, GLbitfield access, GLint * stride, GLenum * layout);
+typedef void (GLAPIENTRY *PFNGLMAPVERTEXATTRIB1DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points);
+typedef void (GLAPIENTRY *PFNGLMAPVERTEXATTRIB1FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points);
+typedef void (GLAPIENTRY *PFNGLMAPVERTEXATTRIB2DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points);
+typedef void (GLAPIENTRY *PFNGLMAPVERTEXATTRIB2FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points);
+typedef void (GLAPIENTRY *PFNGLMATERIALFPROC)(GLenum face, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLMATERIALFVPROC)(GLenum face, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLMATERIALIPROC)(GLenum face, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLMATERIALIVPROC)(GLenum face, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLMATERIALXPROC)(GLenum face, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLMATERIALXVPROC)(GLenum face, GLenum pname, const GLfixed * param);
+typedef void (GLAPIENTRY *PFNGLMATERIALXVOESPROC)(GLenum face, GLenum pname, const GLfixed * param);
+typedef void (GLAPIENTRY *PFNGLMATRIXFRUSTUMEXTPROC)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+typedef void (GLAPIENTRY *PFNGLMATRIXINDEXPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLMATRIXINDEXPOINTEROESPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLMATRIXINDEXUBVARBPROC)(GLint size, const GLubyte * indices);
+typedef void (GLAPIENTRY *PFNGLMATRIXINDEXUIVARBPROC)(GLint size, const GLuint * indices);
+typedef void (GLAPIENTRY *PFNGLMATRIXINDEXUSVARBPROC)(GLint size, const GLushort * indices);
+typedef void (GLAPIENTRY *PFNGLMATRIXLOAD3X2FNVPROC)(GLenum matrixMode, const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXLOAD3X3FNVPROC)(GLenum matrixMode, const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXLOADIDENTITYEXTPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXLOADTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXLOADTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXLOADDEXTPROC)(GLenum mode, const GLdouble * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXLOADFEXTPROC)(GLenum mode, const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXMODEPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLMATRIXMULT3X2FNVPROC)(GLenum matrixMode, const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXMULT3X3FNVPROC)(GLenum matrixMode, const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXMULTTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXMULTTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXMULTDEXTPROC)(GLenum mode, const GLdouble * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXMULTFEXTPROC)(GLenum mode, const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMATRIXORTHOEXTPROC)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+typedef void (GLAPIENTRY *PFNGLMATRIXPOPEXTPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLMATRIXPUSHEXTPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLMATRIXROTATEDEXTPROC)(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLMATRIXROTATEFEXTPROC)(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLMATRIXSCALEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLMATRIXSCALEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLMATRIXTRANSLATEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLMATRIXTRANSLATEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLMAXSHADERCOMPILERTHREADSARBPROC)(GLuint count);
+typedef void (GLAPIENTRY *PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)(GLuint count);
+typedef void (GLAPIENTRY *PFNGLMEMORYBARRIERPROC)(GLbitfield barriers);
+typedef void (GLAPIENTRY *PFNGLMEMORYBARRIERBYREGIONPROC)(GLbitfield barriers);
+typedef void (GLAPIENTRY *PFNGLMEMORYBARRIEREXTPROC)(GLbitfield barriers);
+typedef void (GLAPIENTRY *PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLMINSAMPLESHADINGPROC)(GLfloat value);
+typedef void (GLAPIENTRY *PFNGLMINSAMPLESHADINGARBPROC)(GLfloat value);
+typedef void (GLAPIENTRY *PFNGLMINSAMPLESHADINGOESPROC)(GLfloat value);
+typedef void (GLAPIENTRY *PFNGLMINMAXPROC)(GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (GLAPIENTRY *PFNGLMINMAXEXTPROC)(GLenum target, GLenum internalformat, GLboolean sink);
+typedef void (GLAPIENTRY *PFNGLMULTMATRIXDPROC)(const GLdouble * m);
+typedef void (GLAPIENTRY *PFNGLMULTMATRIXFPROC)(const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMULTMATRIXXPROC)(const GLfixed * m);
+typedef void (GLAPIENTRY *PFNGLMULTMATRIXXOESPROC)(const GLfixed * m);
+typedef void (GLAPIENTRY *PFNGLMULTTRANSPOSEMATRIXDPROC)(const GLdouble * m);
+typedef void (GLAPIENTRY *PFNGLMULTTRANSPOSEMATRIXDARBPROC)(const GLdouble * m);
+typedef void (GLAPIENTRY *PFNGLMULTTRANSPOSEMATRIXFPROC)(const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMULTTRANSPOSEMATRIXFARBPROC)(const GLfloat * m);
+typedef void (GLAPIENTRY *PFNGLMULTTRANSPOSEMATRIXXOESPROC)(const GLfixed * m);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei drawcount);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWARRAYSEXTPROC)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWARRAYSINDIRECTPROC)(GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)(GLenum mode, const void * indirect, GLsizei primcount, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)(GLenum mode, const void * indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)(GLenum mode, const void * indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)(GLenum mode, const void * indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)(GLenum mode, const void * indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC)(GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount, const GLint * basevertex);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei primcount, const GLint * basevertex);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWELEMENTSEXTPROC)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei primcount);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void * indirect, GLsizei drawcount, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)(GLenum mode, GLenum type, const void * indirect, GLsizei primcount, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)(GLenum mode, GLenum type, const void * indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)(GLenum mode, GLenum type, const void * indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)(GLenum mode, GLenum type, const void * indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)(GLenum mode, GLenum type, const void * indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC)(GLenum mode, GLenum type, const void * indirect, GLsizei drawcount, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)(GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect, GLsizei drawcount, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, GLuint end, const GLint * first, const GLsizei * count, GLsizei primcount);
+typedef void (GLAPIENTRY *PFNGLMULTIMODEDRAWARRAYSIBMPROC)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
+typedef void (GLAPIENTRY *PFNGLMULTIMODEDRAWELEMENTSIBMPROC)(const GLenum * mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei primcount, GLint modestride);
+typedef void (GLAPIENTRY *PFNGLMULTITEXBUFFEREXTPROC)(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1BOESPROC)(GLenum texture, GLbyte s);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1BVOESPROC)(GLenum texture, const GLbyte * coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1DPROC)(GLenum target, GLdouble s);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1DARBPROC)(GLenum target, GLdouble s);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1DVPROC)(GLenum target, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1DVARBPROC)(GLenum target, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1FPROC)(GLenum target, GLfloat s);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1FARBPROC)(GLenum target, GLfloat s);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1FVPROC)(GLenum target, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1FVARBPROC)(GLenum target, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1HNVPROC)(GLenum target, GLhalfNV s);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1HVNVPROC)(GLenum target, const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1IPROC)(GLenum target, GLint s);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1IARBPROC)(GLenum target, GLint s);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1IVPROC)(GLenum target, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1IVARBPROC)(GLenum target, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1SPROC)(GLenum target, GLshort s);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1SARBPROC)(GLenum target, GLshort s);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1SVPROC)(GLenum target, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1SVARBPROC)(GLenum target, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1XOESPROC)(GLenum texture, GLfixed s);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD1XVOESPROC)(GLenum texture, const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2BOESPROC)(GLenum texture, GLbyte s, GLbyte t);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2BVOESPROC)(GLenum texture, const GLbyte * coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2DPROC)(GLenum target, GLdouble s, GLdouble t);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2DARBPROC)(GLenum target, GLdouble s, GLdouble t);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2DVPROC)(GLenum target, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2DVARBPROC)(GLenum target, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2FPROC)(GLenum target, GLfloat s, GLfloat t);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2FARBPROC)(GLenum target, GLfloat s, GLfloat t);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2FVPROC)(GLenum target, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2FVARBPROC)(GLenum target, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2HVNVPROC)(GLenum target, const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2IPROC)(GLenum target, GLint s, GLint t);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2IARBPROC)(GLenum target, GLint s, GLint t);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2IVPROC)(GLenum target, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2IVARBPROC)(GLenum target, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2SPROC)(GLenum target, GLshort s, GLshort t);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2SARBPROC)(GLenum target, GLshort s, GLshort t);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2SVPROC)(GLenum target, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2SVARBPROC)(GLenum target, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2XOESPROC)(GLenum texture, GLfixed s, GLfixed t);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD2XVOESPROC)(GLenum texture, const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3BOESPROC)(GLenum texture, GLbyte s, GLbyte t, GLbyte r);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3BVOESPROC)(GLenum texture, const GLbyte * coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3DPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3DARBPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3DVPROC)(GLenum target, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3DVARBPROC)(GLenum target, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3FPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3FARBPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3FVPROC)(GLenum target, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3FVARBPROC)(GLenum target, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3HVNVPROC)(GLenum target, const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3IPROC)(GLenum target, GLint s, GLint t, GLint r);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3IARBPROC)(GLenum target, GLint s, GLint t, GLint r);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3IVPROC)(GLenum target, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3IVARBPROC)(GLenum target, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3SPROC)(GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3SARBPROC)(GLenum target, GLshort s, GLshort t, GLshort r);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3SVPROC)(GLenum target, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3SVARBPROC)(GLenum target, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3XOESPROC)(GLenum texture, GLfixed s, GLfixed t, GLfixed r);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD3XVOESPROC)(GLenum texture, const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4BOESPROC)(GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4BVOESPROC)(GLenum texture, const GLbyte * coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4DPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4DARBPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4DVPROC)(GLenum target, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4DVARBPROC)(GLenum target, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4FPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4FARBPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4FVPROC)(GLenum target, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4FVARBPROC)(GLenum target, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4HVNVPROC)(GLenum target, const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4IPROC)(GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4IARBPROC)(GLenum target, GLint s, GLint t, GLint r, GLint q);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4IVPROC)(GLenum target, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4IVARBPROC)(GLenum target, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4SPROC)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4SARBPROC)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4SVPROC)(GLenum target, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4SVARBPROC)(GLenum target, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4XPROC)(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4XOESPROC)(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORD4XVOESPROC)(GLenum texture, const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint * coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint * coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint * coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint * coords);
+typedef void (GLAPIENTRY *PFNGLMULTITEXCOORDPOINTEREXTPROC)(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLMULTITEXENVFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLMULTITEXENVIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLMULTITEXGENDEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
+typedef void (GLAPIENTRY *PFNGLMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLMULTITEXGENFEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLMULTITEXGENIEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLMULTITEXIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLMULTITEXPARAMETERFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLMULTITEXPARAMETERIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLMULTITEXRENDERBUFFEREXTPROC)(GLenum texunit, GLenum target, GLuint renderbuffer);
+typedef void (GLAPIENTRY *PFNGLMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLMULTICASTBARRIERNVPROC)(void);
+typedef void (GLAPIENTRY *PFNGLMULTICASTBLITFRAMEBUFFERNVPROC)(GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef void (GLAPIENTRY *PFNGLMULTICASTBUFFERSUBDATANVPROC)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void * data);
+typedef void (GLAPIENTRY *PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC)(GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLMULTICASTCOPYIMAGESUBDATANVPROC)(GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+typedef void (GLAPIENTRY *PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLint64 * params);
+typedef void (GLAPIENTRY *PFNGLMULTICASTGETQUERYOBJECTIVNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLint * params);
+typedef void (GLAPIENTRY *PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLuint64 * params);
+typedef void (GLAPIENTRY *PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLuint * params);
+typedef void (GLAPIENTRY *PFNGLMULTICASTSCISSORARRAYVNVXPROC)(GLuint gpu, GLuint first, GLsizei count, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLMULTICASTVIEWPORTARRAYVNVXPROC)(GLuint gpu, GLuint first, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC)(GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff);
+typedef void (GLAPIENTRY *PFNGLMULTICASTWAITSYNCNVPROC)(GLuint signalGpu, GLbitfield waitGpuMask);
+typedef void (GLAPIENTRY *PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)(GLuint buffer, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLNAMEDBUFFERDATAPROC)(GLuint buffer, GLsizeiptr size, const void * data, GLenum usage);
+typedef void (GLAPIENTRY *PFNGLNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLsizeiptr size, const void * data, GLenum usage);
+typedef void (GLAPIENTRY *PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
+typedef void (GLAPIENTRY *PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
+typedef void (GLAPIENTRY *PFNGLNAMEDBUFFERSTORAGEPROC)(GLuint buffer, GLsizeiptr size, const void * data, GLbitfield flags);
+typedef void (GLAPIENTRY *PFNGLNAMEDBUFFERSTORAGEEXTPROC)(GLuint buffer, GLsizeiptr size, const void * data, GLbitfield flags);
+typedef void (GLAPIENTRY *PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
+typedef void (GLAPIENTRY *PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void * data);
+typedef void (GLAPIENTRY *PFNGLNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void * data);
+typedef void (GLAPIENTRY *PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)(GLuint framebuffer, GLenum buf);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)(GLuint framebuffer, GLsizei n, const GLenum * bufs);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)(GLuint framebuffer, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)(GLuint framebuffer, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)(GLuint framebuffer, GLenum src);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)(GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat * values);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY *PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (GLAPIENTRY *PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)(GLuint program, GLenum target, GLuint index, const GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)(GLuint program, GLenum target, GLuint index, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY *PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)(GLuint program, GLenum target, GLuint index, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY *PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)(GLuint program, GLenum target, GLuint index, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, GLenum format, GLsizei len, const void * string);
+typedef void (GLAPIENTRY *PFNGLNAMEDRENDERBUFFERSTORAGEPROC)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)(GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLNAMEDSTRINGARBPROC)(GLenum type, GLint namelen, const GLchar * name, GLint stringlen, const GLchar * string);
+typedef void (GLAPIENTRY *PFNGLNEWLISTPROC)(GLuint list, GLenum mode);
+typedef GLuint (GLAPIENTRY *PFNGLNEWOBJECTBUFFERATIPROC)(GLsizei size, const void * pointer, GLenum usage);
+typedef void (GLAPIENTRY *PFNGLNORMAL3BPROC)(GLbyte nx, GLbyte ny, GLbyte nz);
+typedef void (GLAPIENTRY *PFNGLNORMAL3BVPROC)(const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLNORMAL3DPROC)(GLdouble nx, GLdouble ny, GLdouble nz);
+typedef void (GLAPIENTRY *PFNGLNORMAL3DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLNORMAL3FPROC)(GLfloat nx, GLfloat ny, GLfloat nz);
+typedef void (GLAPIENTRY *PFNGLNORMAL3FVERTEX3FSUNPROC)(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLNORMAL3FVERTEX3FVSUNPROC)(const GLfloat * n, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLNORMAL3FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLNORMAL3HNVPROC)(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
+typedef void (GLAPIENTRY *PFNGLNORMAL3HVNVPROC)(const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLNORMAL3IPROC)(GLint nx, GLint ny, GLint nz);
+typedef void (GLAPIENTRY *PFNGLNORMAL3IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLNORMAL3SPROC)(GLshort nx, GLshort ny, GLshort nz);
+typedef void (GLAPIENTRY *PFNGLNORMAL3SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLNORMAL3XPROC)(GLfixed nx, GLfixed ny, GLfixed nz);
+typedef void (GLAPIENTRY *PFNGLNORMAL3XOESPROC)(GLfixed nx, GLfixed ny, GLfixed nz);
+typedef void (GLAPIENTRY *PFNGLNORMAL3XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLNORMALFORMATNVPROC)(GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords);
+typedef void (GLAPIENTRY *PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint * coords);
+typedef void (GLAPIENTRY *PFNGLNORMALPOINTERPROC)(GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLNORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLNORMALPOINTERLISTIBMPROC)(GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY *PFNGLNORMALPOINTERVINTELPROC)(GLenum type, const void ** pointer);
+typedef void (GLAPIENTRY *PFNGLNORMALSTREAM3BATIPROC)(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
+typedef void (GLAPIENTRY *PFNGLNORMALSTREAM3BVATIPROC)(GLenum stream, const GLbyte * coords);
+typedef void (GLAPIENTRY *PFNGLNORMALSTREAM3DATIPROC)(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
+typedef void (GLAPIENTRY *PFNGLNORMALSTREAM3DVATIPROC)(GLenum stream, const GLdouble * coords);
+typedef void (GLAPIENTRY *PFNGLNORMALSTREAM3FATIPROC)(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
+typedef void (GLAPIENTRY *PFNGLNORMALSTREAM3FVATIPROC)(GLenum stream, const GLfloat * coords);
+typedef void (GLAPIENTRY *PFNGLNORMALSTREAM3IATIPROC)(GLenum stream, GLint nx, GLint ny, GLint nz);
+typedef void (GLAPIENTRY *PFNGLNORMALSTREAM3IVATIPROC)(GLenum stream, const GLint * coords);
+typedef void (GLAPIENTRY *PFNGLNORMALSTREAM3SATIPROC)(GLenum stream, GLshort nx, GLshort ny, GLshort nz);
+typedef void (GLAPIENTRY *PFNGLNORMALSTREAM3SVATIPROC)(GLenum stream, const GLshort * coords);
+typedef void (GLAPIENTRY *PFNGLOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei length, const GLchar * label);
+typedef void (GLAPIENTRY *PFNGLOBJECTLABELKHRPROC)(GLenum identifier, GLuint name, GLsizei length, const GLchar * label);
+typedef void (GLAPIENTRY *PFNGLOBJECTPTRLABELPROC)(const void * ptr, GLsizei length, const GLchar * label);
+typedef void (GLAPIENTRY *PFNGLOBJECTPTRLABELKHRPROC)(const void * ptr, GLsizei length, const GLchar * label);
+typedef GLenum (GLAPIENTRY *PFNGLOBJECTPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, GLenum option);
+typedef GLenum (GLAPIENTRY *PFNGLOBJECTUNPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, GLenum option);
+typedef void (GLAPIENTRY *PFNGLORTHOPROC)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+typedef void (GLAPIENTRY *PFNGLORTHOFPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+typedef void (GLAPIENTRY *PFNGLORTHOFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+typedef void (GLAPIENTRY *PFNGLORTHOXPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
+typedef void (GLAPIENTRY *PFNGLORTHOXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
+typedef void (GLAPIENTRY *PFNGLPNTRIANGLESFATIPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLPNTRIANGLESIATIPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLPASSTEXCOORDATIPROC)(GLuint dst, GLuint coord, GLenum swizzle);
+typedef void (GLAPIENTRY *PFNGLPASSTHROUGHPROC)(GLfloat token);
+typedef void (GLAPIENTRY *PFNGLPASSTHROUGHXOESPROC)(GLfixed token);
+typedef void (GLAPIENTRY *PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat * values);
+typedef void (GLAPIENTRY *PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value);
+typedef void (GLAPIENTRY *PFNGLPATCHPARAMETERIEXTPROC)(GLenum pname, GLint value);
+typedef void (GLAPIENTRY *PFNGLPATCHPARAMETERIOESPROC)(GLenum pname, GLint value);
+typedef void (GLAPIENTRY *PFNGLPATHCOLORGENNVPROC)(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat * coeffs);
+typedef void (GLAPIENTRY *PFNGLPATHCOMMANDSNVPROC)(GLuint path, GLsizei numCommands, const GLubyte * commands, GLsizei numCoords, GLenum coordType, const void * coords);
+typedef void (GLAPIENTRY *PFNGLPATHCOORDSNVPROC)(GLuint path, GLsizei numCoords, GLenum coordType, const void * coords);
+typedef void (GLAPIENTRY *PFNGLPATHCOVERDEPTHFUNCNVPROC)(GLenum func);
+typedef void (GLAPIENTRY *PFNGLPATHDASHARRAYNVPROC)(GLuint path, GLsizei dashCount, const GLfloat * dashArray);
+typedef void (GLAPIENTRY *PFNGLPATHFOGGENNVPROC)(GLenum genMode);
+typedef GLenum (GLAPIENTRY *PFNGLPATHGLYPHINDEXARRAYNVPROC)(GLuint firstPathName, GLenum fontTarget, const void * fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef GLenum (GLAPIENTRY *PFNGLPATHGLYPHINDEXRANGENVPROC)(GLenum fontTarget, const void * fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount);
+typedef void (GLAPIENTRY *PFNGLPATHGLYPHRANGENVPROC)(GLuint firstPathName, GLenum fontTarget, const void * fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef void (GLAPIENTRY *PFNGLPATHGLYPHSNVPROC)(GLuint firstPathName, GLenum fontTarget, const void * fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void * charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef GLenum (GLAPIENTRY *PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void * fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+typedef void (GLAPIENTRY *PFNGLPATHPARAMETERFNVPROC)(GLuint path, GLenum pname, GLfloat value);
+typedef void (GLAPIENTRY *PFNGLPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPATHPARAMETERINVPROC)(GLuint path, GLenum pname, GLint value);
+typedef void (GLAPIENTRY *PFNGLPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLPATHSTENCILDEPTHOFFSETNVPROC)(GLfloat factor, GLfloat units);
+typedef void (GLAPIENTRY *PFNGLPATHSTENCILFUNCNVPROC)(GLenum func, GLint ref, GLuint mask);
+typedef void (GLAPIENTRY *PFNGLPATHSTRINGNVPROC)(GLuint path, GLenum format, GLsizei length, const void * pathString);
+typedef void (GLAPIENTRY *PFNGLPATHSUBCOMMANDSNVPROC)(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte * commands, GLsizei numCoords, GLenum coordType, const void * coords);
+typedef void (GLAPIENTRY *PFNGLPATHSUBCOORDSNVPROC)(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void * coords);
+typedef void (GLAPIENTRY *PFNGLPATHTEXGENNVPROC)(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat * coeffs);
+typedef void (GLAPIENTRY *PFNGLPAUSETRANSFORMFEEDBACKPROC)(void);
+typedef void (GLAPIENTRY *PFNGLPAUSETRANSFORMFEEDBACKNVPROC)(void);
+typedef void (GLAPIENTRY *PFNGLPIXELDATARANGENVPROC)(GLenum target, GLsizei length, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLPIXELMAPFVPROC)(GLenum map, GLsizei mapsize, const GLfloat * values);
+typedef void (GLAPIENTRY *PFNGLPIXELMAPUIVPROC)(GLenum map, GLsizei mapsize, const GLuint * values);
+typedef void (GLAPIENTRY *PFNGLPIXELMAPUSVPROC)(GLenum map, GLsizei mapsize, const GLushort * values);
+typedef void (GLAPIENTRY *PFNGLPIXELMAPXPROC)(GLenum map, GLint size, const GLfixed * values);
+typedef void (GLAPIENTRY *PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLPIXELSTOREXPROC)(GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLPIXELTEXGENPARAMETERFSGISPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLPIXELTEXGENPARAMETERISGISPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLPIXELTEXGENSGIXPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLPIXELTRANSFERFPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLPIXELTRANSFERIPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLPIXELTRANSFERXOESPROC)(GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)(GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)(GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLPIXELZOOMPROC)(GLfloat xfactor, GLfloat yfactor);
+typedef void (GLAPIENTRY *PFNGLPIXELZOOMXOESPROC)(GLfixed xfactor, GLfixed yfactor);
+typedef GLboolean (GLAPIENTRY *PFNGLPOINTALONGPATHNVPROC)(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat * x, GLfloat * y, GLfloat * tangentX, GLfloat * tangentY);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERFARBPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERFEXTPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERFSGISPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERFVARBPROC)(GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERFVEXTPROC)(GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERFVSGISPROC)(GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERINVPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERIVNVPROC)(GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERXPROC)(GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERXOESPROC)(GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERXVPROC)(GLenum pname, const GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLPOINTPARAMETERXVOESPROC)(GLenum pname, const GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLPOINTSIZEPROC)(GLfloat size);
+typedef void (GLAPIENTRY *PFNGLPOINTSIZEPOINTEROESPROC)(GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLPOINTSIZEXPROC)(GLfixed size);
+typedef void (GLAPIENTRY *PFNGLPOINTSIZEXOESPROC)(GLfixed size);
+typedef GLint (GLAPIENTRY *PFNGLPOLLASYNCSGIXPROC)(GLuint * markerp);
+typedef GLint (GLAPIENTRY *PFNGLPOLLINSTRUMENTSSGIXPROC)(GLint * marker_p);
+typedef void (GLAPIENTRY *PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLPOLYGONMODENVPROC)(GLenum face, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units);
+typedef void (GLAPIENTRY *PFNGLPOLYGONOFFSETCLAMPPROC)(GLfloat factor, GLfloat units, GLfloat clamp);
+typedef void (GLAPIENTRY *PFNGLPOLYGONOFFSETCLAMPEXTPROC)(GLfloat factor, GLfloat units, GLfloat clamp);
+typedef void (GLAPIENTRY *PFNGLPOLYGONOFFSETEXTPROC)(GLfloat factor, GLfloat bias);
+typedef void (GLAPIENTRY *PFNGLPOLYGONOFFSETXPROC)(GLfixed factor, GLfixed units);
+typedef void (GLAPIENTRY *PFNGLPOLYGONOFFSETXOESPROC)(GLfixed factor, GLfixed units);
+typedef void (GLAPIENTRY *PFNGLPOLYGONSTIPPLEPROC)(const GLubyte * mask);
+typedef void (GLAPIENTRY *PFNGLPOPATTRIBPROC)(void);
+typedef void (GLAPIENTRY *PFNGLPOPCLIENTATTRIBPROC)(void);
+typedef void (GLAPIENTRY *PFNGLPOPDEBUGGROUPPROC)(void);
+typedef void (GLAPIENTRY *PFNGLPOPDEBUGGROUPKHRPROC)(void);
+typedef void (GLAPIENTRY *PFNGLPOPGROUPMARKEREXTPROC)(void);
+typedef void (GLAPIENTRY *PFNGLPOPMATRIXPROC)(void);
+typedef void (GLAPIENTRY *PFNGLPOPNAMEPROC)(void);
+typedef void (GLAPIENTRY *PFNGLPRESENTFRAMEDUALFILLNVPROC)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
+typedef void (GLAPIENTRY *PFNGLPRESENTFRAMEKEYEDNVPROC)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
+typedef void (GLAPIENTRY *PFNGLPRIMITIVEBOUNDINGBOXPROC)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+typedef void (GLAPIENTRY *PFNGLPRIMITIVEBOUNDINGBOXARBPROC)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+typedef void (GLAPIENTRY *PFNGLPRIMITIVEBOUNDINGBOXEXTPROC)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+typedef void (GLAPIENTRY *PFNGLPRIMITIVEBOUNDINGBOXOESPROC)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+typedef void (GLAPIENTRY *PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index);
+typedef void (GLAPIENTRY *PFNGLPRIMITIVERESTARTINDEXNVPROC)(GLuint index);
+typedef void (GLAPIENTRY *PFNGLPRIMITIVERESTARTNVPROC)(void);
+typedef void (GLAPIENTRY *PFNGLPRIORITIZETEXTURESPROC)(GLsizei n, const GLuint * textures, const GLfloat * priorities);
+typedef void (GLAPIENTRY *PFNGLPRIORITIZETEXTURESEXTPROC)(GLsizei n, const GLuint * textures, const GLclampf * priorities);
+typedef void (GLAPIENTRY *PFNGLPRIORITIZETEXTURESXOESPROC)(GLsizei n, const GLuint * textures, const GLfixed * priorities);
+typedef void (GLAPIENTRY *PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length);
+typedef void (GLAPIENTRY *PFNGLPROGRAMBINARYOESPROC)(GLuint program, GLenum binaryFormat, const void * binary, GLint length);
+typedef void (GLAPIENTRY *PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMENVPARAMETER4DARBPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMENVPARAMETER4DVARBPROC)(GLenum target, GLuint index, const GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMENVPARAMETER4FARBPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMENVPARAMETER4FVARBPROC)(GLenum target, GLuint index, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMENVPARAMETERI4INVPROC)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMENVPARAMETERI4IVNVPROC)(GLenum target, GLuint index, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMENVPARAMETERI4UINVPROC)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMLOCALPARAMETER4DARBPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)(GLenum target, GLuint index, const GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMLOCALPARAMETER4FARBPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)(GLenum target, GLuint index, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMLOCALPARAMETERI4INVPROC)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)(GLenum target, GLuint index, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLPROGRAMPARAMETER4DNVPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMPARAMETER4DVNVPROC)(GLenum target, GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLPROGRAMPARAMETER4FNVPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMPARAMETER4FVNVPROC)(GLenum target, GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMPARAMETERIARBPROC)(GLuint program, GLenum pname, GLint value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMPARAMETERIEXTPROC)(GLuint program, GLenum pname, GLint value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMPARAMETERS4DVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLPROGRAMPARAMETERS4FVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat * coeffs);
+typedef void (GLAPIENTRY *PFNGLPROGRAMSTRINGARBPROC)(GLenum target, GLenum format, GLsizei len, const void * string);
+typedef void (GLAPIENTRY *PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)(GLenum target, GLsizei count, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1DEXTPROC)(GLuint program, GLint location, GLdouble x);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1DVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1FPROC)(GLuint program, GLint location, GLfloat v0);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1FEXTPROC)(GLuint program, GLint location, GLfloat v0);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1FVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint v0);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1I64ARBPROC)(GLuint program, GLint location, GLint64 x);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1I64NVPROC)(GLuint program, GLint location, GLint64EXT x);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1I64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLint64 * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1I64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1IEXTPROC)(GLuint program, GLint location, GLint v0);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1IVPROC)(GLuint program, GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1UIPROC)(GLuint program, GLint location, GLuint v0);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1UI64ARBPROC)(GLuint program, GLint location, GLuint64 x);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1UI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1UI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1UIEXTPROC)(GLuint program, GLint location, GLuint v0);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM1UIVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2DVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2FVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2IPROC)(GLuint program, GLint location, GLint v0, GLint v1);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2I64NVPROC)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2I64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLint64 * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2I64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2IVPROC)(GLuint program, GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2UI64ARBPROC)(GLuint program, GLint location, GLuint64 x, GLuint64 y);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2UI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2UI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM2UIVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3DVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3FVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3I64NVPROC)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3I64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLint64 * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3I64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3IVPROC)(GLuint program, GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3UI64ARBPROC)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3UI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3UI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM3UIVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4DVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4FVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4I64NVPROC)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4I64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLint64 * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4I64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4IVPROC)(GLuint program, GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4UI64ARBPROC)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4UI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4UI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORM4UIVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)(GLuint program, GLint location, GLuint64 value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC)(GLuint program, GLint location, GLuint64 value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)(GLuint program, GLint location, GLuint64 value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 * values);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 * values);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64 * values);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMUI64NVPROC)(GLuint program, GLint location, GLuint64EXT value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMUNIFORMUI64VNVPROC)(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLPROGRAMVERTEXLIMITNVPROC)(GLenum target, GLint limit);
+typedef void (GLAPIENTRY *PFNGLPROVOKINGVERTEXPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLPROVOKINGVERTEXEXTPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLPUSHATTRIBPROC)(GLbitfield mask);
+typedef void (GLAPIENTRY *PFNGLPUSHCLIENTATTRIBPROC)(GLbitfield mask);
+typedef void (GLAPIENTRY *PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask);
+typedef void (GLAPIENTRY *PFNGLPUSHDEBUGGROUPPROC)(GLenum source, GLuint id, GLsizei length, const GLchar * message);
+typedef void (GLAPIENTRY *PFNGLPUSHDEBUGGROUPKHRPROC)(GLenum source, GLuint id, GLsizei length, const GLchar * message);
+typedef void (GLAPIENTRY *PFNGLPUSHGROUPMARKEREXTPROC)(GLsizei length, const GLchar * marker);
+typedef void (GLAPIENTRY *PFNGLPUSHMATRIXPROC)(void);
+typedef void (GLAPIENTRY *PFNGLPUSHNAMEPROC)(GLuint name);
+typedef void (GLAPIENTRY *PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target);
+typedef void (GLAPIENTRY *PFNGLQUERYCOUNTEREXTPROC)(GLuint id, GLenum target);
+typedef GLbitfield (GLAPIENTRY *PFNGLQUERYMATRIXXOESPROC)(GLfixed * mantissa, GLint * exponent);
+typedef void (GLAPIENTRY *PFNGLQUERYOBJECTPARAMETERUIAMDPROC)(GLenum target, GLuint id, GLenum pname, GLuint param);
+typedef GLint (GLAPIENTRY *PFNGLQUERYRESOURCENVPROC)(GLenum queryType, GLint tagId, GLuint bufSize, GLint * buffer);
+typedef void (GLAPIENTRY *PFNGLQUERYRESOURCETAGNVPROC)(GLint tagId, const GLchar * tagString);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS2DPROC)(GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS2DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS2FPROC)(GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS2FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS2IPROC)(GLint x, GLint y);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS2IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS2SPROC)(GLshort x, GLshort y);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS2SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS2XOESPROC)(GLfixed x, GLfixed y);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS2XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS3DPROC)(GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS3DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS3FPROC)(GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS3FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS3IPROC)(GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS3IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS3SPROC)(GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS3SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS3XOESPROC)(GLfixed x, GLfixed y, GLfixed z);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS3XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS4DPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS4DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS4FPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS4FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS4IPROC)(GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS4IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS4SPROC)(GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS4SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS4XOESPROC)(GLfixed x, GLfixed y, GLfixed z, GLfixed w);
+typedef void (GLAPIENTRY *PFNGLRASTERPOS4XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLRASTERSAMPLESEXTPROC)(GLuint samples, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY *PFNGLREADBUFFERPROC)(GLenum src);
+typedef void (GLAPIENTRY *PFNGLREADBUFFERINDEXEDEXTPROC)(GLenum src, GLint index);
+typedef void (GLAPIENTRY *PFNGLREADBUFFERNVPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLREADINSTRUMENTSSGIXPROC)(GLint marker);
+typedef void (GLAPIENTRY *PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels);
+typedef void (GLAPIENTRY *PFNGLREADNPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data);
+typedef void (GLAPIENTRY *PFNGLREADNPIXELSARBPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data);
+typedef void (GLAPIENTRY *PFNGLREADNPIXELSEXTPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data);
+typedef void (GLAPIENTRY *PFNGLREADNPIXELSKHRPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data);
+typedef void (GLAPIENTRY *PFNGLRECTDPROC)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
+typedef void (GLAPIENTRY *PFNGLRECTDVPROC)(const GLdouble * v1, const GLdouble * v2);
+typedef void (GLAPIENTRY *PFNGLRECTFPROC)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
+typedef void (GLAPIENTRY *PFNGLRECTFVPROC)(const GLfloat * v1, const GLfloat * v2);
+typedef void (GLAPIENTRY *PFNGLRECTIPROC)(GLint x1, GLint y1, GLint x2, GLint y2);
+typedef void (GLAPIENTRY *PFNGLRECTIVPROC)(const GLint * v1, const GLint * v2);
+typedef void (GLAPIENTRY *PFNGLRECTSPROC)(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
+typedef void (GLAPIENTRY *PFNGLRECTSVPROC)(const GLshort * v1, const GLshort * v2);
+typedef void (GLAPIENTRY *PFNGLRECTXOESPROC)(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);
+typedef void (GLAPIENTRY *PFNGLRECTXVOESPROC)(const GLfixed * v1, const GLfixed * v2);
+typedef void (GLAPIENTRY *PFNGLREFERENCEPLANESGIXPROC)(const GLdouble * equation);
+typedef GLboolean (GLAPIENTRY *PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key);
+typedef void (GLAPIENTRY *PFNGLRELEASESHADERCOMPILERPROC)(void);
+typedef void (GLAPIENTRY *PFNGLRENDERGPUMASKNVPROC)(GLbitfield mask);
+typedef GLint (GLAPIENTRY *PFNGLRENDERMODEPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLRENDERBUFFERSTORAGEEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)(GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLRENDERBUFFERSTORAGEOESPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEPOINTERSUNPROC)(GLenum type, GLsizei stride, const void ** pointer);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUBSUNPROC)(GLubyte code);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUBVSUNPROC)(const GLubyte * code);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)(const GLuint * rc, const GLfloat * c, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLuint * rc, const GLfloat * c, const GLfloat * n, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)(GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)(const GLuint * rc, const GLubyte * c, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)(const GLuint * rc, const GLfloat * n, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUISUNPROC)(GLuint code);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLuint * rc, const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)(const GLuint * rc, const GLfloat * tc, const GLfloat * n, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)(const GLuint * rc, const GLfloat * tc, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)(GLuint rc, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)(const GLuint * rc, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUIVSUNPROC)(const GLuint * code);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUSSUNPROC)(GLushort code);
+typedef void (GLAPIENTRY *PFNGLREPLACEMENTCODEUSVSUNPROC)(const GLushort * code);
+typedef void (GLAPIENTRY *PFNGLREQUESTRESIDENTPROGRAMSNVPROC)(GLsizei n, const GLuint * programs);
+typedef void (GLAPIENTRY *PFNGLRESETHISTOGRAMPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLRESETHISTOGRAMEXTPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)(GLuint memory, GLenum pname);
+typedef void (GLAPIENTRY *PFNGLRESETMINMAXPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLRESETMINMAXEXTPROC)(GLenum target);
+typedef void (GLAPIENTRY *PFNGLRESIZEBUFFERSMESAPROC)(void);
+typedef void (GLAPIENTRY *PFNGLRESOLVEDEPTHVALUESNVPROC)(void);
+typedef void (GLAPIENTRY *PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC)(void);
+typedef void (GLAPIENTRY *PFNGLRESUMETRANSFORMFEEDBACKPROC)(void);
+typedef void (GLAPIENTRY *PFNGLRESUMETRANSFORMFEEDBACKNVPROC)(void);
+typedef void (GLAPIENTRY *PFNGLROTATEDPROC)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLROTATEFPROC)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLROTATEXPROC)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+typedef void (GLAPIENTRY *PFNGLROTATEXOESPROC)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+typedef void (GLAPIENTRY *PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert);
+typedef void (GLAPIENTRY *PFNGLSAMPLECOVERAGEARBPROC)(GLfloat value, GLboolean invert);
+typedef void (GLAPIENTRY *PFNGLSAMPLECOVERAGEXPROC)(GLclampx value, GLboolean invert);
+typedef void (GLAPIENTRY *PFNGLSAMPLECOVERAGEXOESPROC)(GLclampx value, GLboolean invert);
+typedef void (GLAPIENTRY *PFNGLSAMPLEMAPATIPROC)(GLuint dst, GLuint interp, GLenum swizzle);
+typedef void (GLAPIENTRY *PFNGLSAMPLEMASKEXTPROC)(GLclampf value, GLboolean invert);
+typedef void (GLAPIENTRY *PFNGLSAMPLEMASKINDEXEDNVPROC)(GLuint index, GLbitfield mask);
+typedef void (GLAPIENTRY *PFNGLSAMPLEMASKSGISPROC)(GLclampf value, GLboolean invert);
+typedef void (GLAPIENTRY *PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask);
+typedef void (GLAPIENTRY *PFNGLSAMPLEPATTERNEXTPROC)(GLenum pattern);
+typedef void (GLAPIENTRY *PFNGLSAMPLEPATTERNSGISPROC)(GLenum pattern);
+typedef void (GLAPIENTRY *PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint * param);
+typedef void (GLAPIENTRY *PFNGLSAMPLERPARAMETERIIVEXTPROC)(GLuint sampler, GLenum pname, const GLint * param);
+typedef void (GLAPIENTRY *PFNGLSAMPLERPARAMETERIIVOESPROC)(GLuint sampler, GLenum pname, const GLint * param);
+typedef void (GLAPIENTRY *PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint * param);
+typedef void (GLAPIENTRY *PFNGLSAMPLERPARAMETERIUIVEXTPROC)(GLuint sampler, GLenum pname, const GLuint * param);
+typedef void (GLAPIENTRY *PFNGLSAMPLERPARAMETERIUIVOESPROC)(GLuint sampler, GLenum pname, const GLuint * param);
+typedef void (GLAPIENTRY *PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat * param);
+typedef void (GLAPIENTRY *PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint * param);
+typedef void (GLAPIENTRY *PFNGLSCALEDPROC)(GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLSCALEFPROC)(GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLSCALEXPROC)(GLfixed x, GLfixed y, GLfixed z);
+typedef void (GLAPIENTRY *PFNGLSCALEXOESPROC)(GLfixed x, GLfixed y, GLfixed z);
+typedef void (GLAPIENTRY *PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLSCISSORARRAYVPROC)(GLuint first, GLsizei count, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLSCISSORARRAYVNVPROC)(GLuint first, GLsizei count, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLSCISSORARRAYVOESPROC)(GLuint first, GLsizei count, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)(GLuint first, GLsizei count, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLSCISSOREXCLUSIVENVPROC)(GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLSCISSORINDEXEDNVPROC)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLSCISSORINDEXEDOESPROC)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLSCISSORINDEXEDVPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLSCISSORINDEXEDVNVPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLSCISSORINDEXEDVOESPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3BPROC)(GLbyte red, GLbyte green, GLbyte blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3BEXTPROC)(GLbyte red, GLbyte green, GLbyte blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3BVPROC)(const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3BVEXTPROC)(const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3DPROC)(GLdouble red, GLdouble green, GLdouble blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3DEXTPROC)(GLdouble red, GLdouble green, GLdouble blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3DVEXTPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3FPROC)(GLfloat red, GLfloat green, GLfloat blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3FEXTPROC)(GLfloat red, GLfloat green, GLfloat blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3FVEXTPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3HVNVPROC)(const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3IPROC)(GLint red, GLint green, GLint blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3IEXTPROC)(GLint red, GLint green, GLint blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3IVEXTPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3SPROC)(GLshort red, GLshort green, GLshort blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3SEXTPROC)(GLshort red, GLshort green, GLshort blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3SVEXTPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3UBPROC)(GLubyte red, GLubyte green, GLubyte blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3UBEXTPROC)(GLubyte red, GLubyte green, GLubyte blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3UBVPROC)(const GLubyte * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3UBVEXTPROC)(const GLubyte * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3UIPROC)(GLuint red, GLuint green, GLuint blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3UIEXTPROC)(GLuint red, GLuint green, GLuint blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3UIVPROC)(const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3UIVEXTPROC)(const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3USPROC)(GLushort red, GLushort green, GLushort blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3USEXTPROC)(GLushort red, GLushort green, GLushort blue);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3USVPROC)(const GLushort * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLOR3USVEXTPROC)(const GLushort * v);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint * color);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLORPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLORPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY *PFNGLSELECTBUFFERPROC)(GLsizei size, GLuint * buffer);
+typedef void (GLAPIENTRY *PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint * counterList);
+typedef void (GLAPIENTRY *PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, const GLuint64 * params);
+typedef void (GLAPIENTRY *PFNGLSEPARABLEFILTER2DPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * row, const void * column);
+typedef void (GLAPIENTRY *PFNGLSEPARABLEFILTER2DEXTPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * row, const void * column);
+typedef void (GLAPIENTRY *PFNGLSETFENCEAPPLEPROC)(GLuint fence);
+typedef void (GLAPIENTRY *PFNGLSETFENCENVPROC)(GLuint fence, GLenum condition);
+typedef void (GLAPIENTRY *PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)(GLuint dst, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLSETINVARIANTEXTPROC)(GLuint id, GLenum type, const void * addr);
+typedef void (GLAPIENTRY *PFNGLSETLOCALCONSTANTEXTPROC)(GLuint id, GLenum type, const void * addr);
+typedef void (GLAPIENTRY *PFNGLSETMULTISAMPLEFVAMDPROC)(GLenum pname, GLuint index, const GLfloat * val);
+typedef void (GLAPIENTRY *PFNGLSHADEMODELPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint * shaders, GLenum binaryformat, const void * binary, GLsizei length);
+typedef void (GLAPIENTRY *PFNGLSHADEROP1EXTPROC)(GLenum op, GLuint res, GLuint arg1);
+typedef void (GLAPIENTRY *PFNGLSHADEROP2EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2);
+typedef void (GLAPIENTRY *PFNGLSHADEROP3EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
+typedef void (GLAPIENTRY *PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length);
+typedef void (GLAPIENTRY *PFNGLSHADERSOURCEARBPROC)(GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint * length);
+typedef void (GLAPIENTRY *PFNGLSHADERSTORAGEBLOCKBINDINGPROC)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
+typedef void (GLAPIENTRY *PFNGLSHADINGRATEIMAGEBARRIERNVPROC)(GLboolean synchronize);
+typedef void (GLAPIENTRY *PFNGLSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint first, GLsizei count, const GLenum * rates);
+typedef void (GLAPIENTRY *PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)(GLenum rate, GLuint samples, const GLint * locations);
+typedef void (GLAPIENTRY *PFNGLSHADINGRATESAMPLEORDERNVPROC)(GLenum order);
+typedef void (GLAPIENTRY *PFNGLSHARPENTEXFUNCSGISPROC)(GLenum target, GLsizei n, const GLfloat * points);
+typedef void (GLAPIENTRY *PFNGLSIGNALSEMAPHOREEXTPROC)(GLuint semaphore, GLuint numBufferBarriers, const GLuint * buffers, GLuint numTextureBarriers, const GLuint * textures, const GLenum * dstLayouts);
+typedef void (GLAPIENTRY *PFNGLSIGNALSEMAPHOREUI64NVXPROC)(GLuint signalGpu, GLsizei fenceObjectCount, const GLuint * semaphoreArray, const GLuint64 * fenceValueArray);
+typedef void (GLAPIENTRY *PFNGLSIGNALVKFENCENVPROC)(GLuint64 vkFence);
+typedef void (GLAPIENTRY *PFNGLSIGNALVKSEMAPHORENVPROC)(GLuint64 vkSemaphore);
+typedef void (GLAPIENTRY *PFNGLSPECIALIZESHADERPROC)(GLuint shader, const GLchar * pEntryPoint, GLuint numSpecializationConstants, const GLuint * pConstantIndex, const GLuint * pConstantValue);
+typedef void (GLAPIENTRY *PFNGLSPECIALIZESHADERARBPROC)(GLuint shader, const GLchar * pEntryPoint, GLuint numSpecializationConstants, const GLuint * pConstantIndex, const GLuint * pConstantValue);
+typedef void (GLAPIENTRY *PFNGLSPRITEPARAMETERFSGIXPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLSPRITEPARAMETERFVSGIXPROC)(GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLSPRITEPARAMETERISGIXPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLSPRITEPARAMETERIVSGIXPROC)(GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLSTARTINSTRUMENTSSGIXPROC)(void);
+typedef void (GLAPIENTRY *PFNGLSTARTTILINGQCOMPROC)(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
+typedef void (GLAPIENTRY *PFNGLSTATECAPTURENVPROC)(GLuint state, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLSTENCILCLEARTAGEXTPROC)(GLsizei stencilTagBits, GLuint stencilClearTag);
+typedef void (GLAPIENTRY *PFNGLSTENCILFILLPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat * transformValues);
+typedef void (GLAPIENTRY *PFNGLSTENCILFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask);
+typedef void (GLAPIENTRY *PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask);
+typedef void (GLAPIENTRY *PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask);
+typedef void (GLAPIENTRY *PFNGLSTENCILFUNCSEPARATEATIPROC)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+typedef void (GLAPIENTRY *PFNGLSTENCILMASKPROC)(GLuint mask);
+typedef void (GLAPIENTRY *PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask);
+typedef void (GLAPIENTRY *PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass);
+typedef void (GLAPIENTRY *PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (GLAPIENTRY *PFNGLSTENCILOPSEPARATEATIPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (GLAPIENTRY *PFNGLSTENCILOPVALUEAMDPROC)(GLenum face, GLuint value);
+typedef void (GLAPIENTRY *PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat * transformValues);
+typedef void (GLAPIENTRY *PFNGLSTENCILSTROKEPATHNVPROC)(GLuint path, GLint reference, GLuint mask);
+typedef void (GLAPIENTRY *PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat * transformValues);
+typedef void (GLAPIENTRY *PFNGLSTENCILTHENCOVERFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
+typedef void (GLAPIENTRY *PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat * transformValues);
+typedef void (GLAPIENTRY *PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)(GLuint path, GLint reference, GLuint mask, GLenum coverMode);
+typedef void (GLAPIENTRY *PFNGLSTOPINSTRUMENTSSGIXPROC)(GLint marker);
+typedef void (GLAPIENTRY *PFNGLSTRINGMARKERGREMEDYPROC)(GLsizei len, const void * string);
+typedef void (GLAPIENTRY *PFNGLSUBPIXELPRECISIONBIASNVPROC)(GLuint xbits, GLuint ybits);
+typedef void (GLAPIENTRY *PFNGLSWIZZLEEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+typedef void (GLAPIENTRY *PFNGLSYNCTEXTUREINTELPROC)(GLuint texture);
+typedef void (GLAPIENTRY *PFNGLTAGSAMPLEBUFFERSGIXPROC)(void);
+typedef void (GLAPIENTRY *PFNGLTANGENT3BEXTPROC)(GLbyte tx, GLbyte ty, GLbyte tz);
+typedef void (GLAPIENTRY *PFNGLTANGENT3BVEXTPROC)(const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLTANGENT3DEXTPROC)(GLdouble tx, GLdouble ty, GLdouble tz);
+typedef void (GLAPIENTRY *PFNGLTANGENT3DVEXTPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLTANGENT3FEXTPROC)(GLfloat tx, GLfloat ty, GLfloat tz);
+typedef void (GLAPIENTRY *PFNGLTANGENT3FVEXTPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLTANGENT3IEXTPROC)(GLint tx, GLint ty, GLint tz);
+typedef void (GLAPIENTRY *PFNGLTANGENT3IVEXTPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLTANGENT3SEXTPROC)(GLshort tx, GLshort ty, GLshort tz);
+typedef void (GLAPIENTRY *PFNGLTANGENT3SVEXTPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLTANGENTPOINTEREXTPROC)(GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLTBUFFERMASK3DFXPROC)(GLuint mask);
+typedef void (GLAPIENTRY *PFNGLTESSELLATIONFACTORAMDPROC)(GLfloat factor);
+typedef void (GLAPIENTRY *PFNGLTESSELLATIONMODEAMDPROC)(GLenum mode);
+typedef GLboolean (GLAPIENTRY *PFNGLTESTFENCEAPPLEPROC)(GLuint fence);
+typedef GLboolean (GLAPIENTRY *PFNGLTESTFENCENVPROC)(GLuint fence);
+typedef GLboolean (GLAPIENTRY *PFNGLTESTOBJECTAPPLEPROC)(GLenum object, GLuint name);
+typedef void (GLAPIENTRY *PFNGLTEXATTACHMEMORYNVPROC)(GLenum target, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLTEXBUFFERARBPROC)(GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLTEXBUFFEREXTPROC)(GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLTEXBUFFEROESPROC)(GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLTEXBUFFERRANGEPROC)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLTEXBUFFERRANGEEXTPROC)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLTEXBUFFERRANGEOESPROC)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLTEXBUMPPARAMETERFVATIPROC)(GLenum pname, const GLfloat * param);
+typedef void (GLAPIENTRY *PFNGLTEXBUMPPARAMETERIVATIPROC)(GLenum pname, const GLint * param);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1BOESPROC)(GLbyte s);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1BVOESPROC)(const GLbyte * coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1DPROC)(GLdouble s);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1FPROC)(GLfloat s);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1HNVPROC)(GLhalfNV s);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1HVNVPROC)(const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1IPROC)(GLint s);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1SPROC)(GLshort s);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1XOESPROC)(GLfixed s);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD1XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2BOESPROC)(GLbyte s, GLbyte t);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2BVOESPROC)(const GLbyte * coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2DPROC)(GLdouble s, GLdouble t);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2FPROC)(GLfloat s, GLfloat t);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)(const GLfloat * tc, const GLfloat * c, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)(const GLfloat * tc, const GLubyte * c, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat * tc, const GLfloat * n, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2FVERTEX3FVSUNPROC)(const GLfloat * tc, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2HNVPROC)(GLhalfNV s, GLhalfNV t);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2HVNVPROC)(const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2IPROC)(GLint s, GLint t);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2SPROC)(GLshort s, GLshort t);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2XOESPROC)(GLfixed s, GLfixed t);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD2XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3BOESPROC)(GLbyte s, GLbyte t, GLbyte r);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3BVOESPROC)(const GLbyte * coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3DPROC)(GLdouble s, GLdouble t, GLdouble r);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3FPROC)(GLfloat s, GLfloat t, GLfloat r);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3HVNVPROC)(const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3IPROC)(GLint s, GLint t, GLint r);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3SPROC)(GLshort s, GLshort t, GLshort r);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3XOESPROC)(GLfixed s, GLfixed t, GLfixed r);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD3XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4BOESPROC)(GLbyte s, GLbyte t, GLbyte r, GLbyte q);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4BVOESPROC)(const GLbyte * coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4DPROC)(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4FPROC)(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)(const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4FVERTEX4FSUNPROC)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4FVERTEX4FVSUNPROC)(const GLfloat * tc, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4HVNVPROC)(const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4IPROC)(GLint s, GLint t, GLint r, GLint q);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4SPROC)(GLshort s, GLshort t, GLshort r, GLshort q);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4XOESPROC)(GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+typedef void (GLAPIENTRY *PFNGLTEXCOORD4XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDFORMATNVPROC)(GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint * coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint * coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint * coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint * coords);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY *PFNGLTEXCOORDPOINTERVINTELPROC)(GLint size, GLenum type, const void ** pointer);
+typedef void (GLAPIENTRY *PFNGLTEXENVFPROC)(GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLTEXENVFVPROC)(GLenum target, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLTEXENVIPROC)(GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLTEXENVIVPROC)(GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLTEXENVXPROC)(GLenum target, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLTEXENVXOESPROC)(GLenum target, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLTEXENVXVPROC)(GLenum target, GLenum pname, const GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLTEXENVXVOESPROC)(GLenum target, GLenum pname, const GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, GLsizei n, const GLfloat * weights);
+typedef void (GLAPIENTRY *PFNGLTEXGENDPROC)(GLenum coord, GLenum pname, GLdouble param);
+typedef void (GLAPIENTRY *PFNGLTEXGENDVPROC)(GLenum coord, GLenum pname, const GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLTEXGENFPROC)(GLenum coord, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLTEXGENFOESPROC)(GLenum coord, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLTEXGENFVPROC)(GLenum coord, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLTEXGENFVOESPROC)(GLenum coord, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLTEXGENIPROC)(GLenum coord, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLTEXGENIOESPROC)(GLenum coord, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLTEXGENIVPROC)(GLenum coord, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLTEXGENIVOESPROC)(GLenum coord, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLTEXGENXOESPROC)(GLenum coord, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLTEXGENXVOESPROC)(GLenum coord, GLenum pname, const GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY *PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY *PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXIMAGE3DEXTPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY *PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY *PFNGLTEXIMAGE3DOESPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXIMAGE4DSGISPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXPAGECOMMITMENTARBPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+typedef void (GLAPIENTRY *PFNGLTEXPAGECOMMITMENTEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERIIVOESPROC)(GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERIUIVOESPROC)(GLenum target, GLenum pname, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERXPROC)(GLenum target, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERXOESPROC)(GLenum target, GLenum pname, GLfixed param);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERXVPROC)(GLenum target, GLenum pname, const GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, const GLfixed * params);
+typedef void (GLAPIENTRY *PFNGLTEXRENDERBUFFERNVPROC)(GLenum target, GLuint renderbuffer);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGE1DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGE1DEXTPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGE2DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGE2DEXTPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGE3DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGE3DEXTPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGEMEM1DEXTPROC)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGEMEM2DEXTPROC)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGEMEM3DEXTPROC)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLTEXSTORAGESPARSEAMDPROC)(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
+typedef void (GLAPIENTRY *PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXSUBIMAGE3DOESPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXSUBIMAGE4DSGISPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXTUREATTACHMEMORYNVPROC)(GLuint texture, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLTEXTUREBARRIERPROC)(void);
+typedef void (GLAPIENTRY *PFNGLTEXTUREBARRIERNVPROC)(void);
+typedef void (GLAPIENTRY *PFNGLTEXTUREBUFFERPROC)(GLuint texture, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLTEXTUREBUFFEREXTPROC)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLTEXTUREBUFFERRANGEPROC)(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLTEXTUREBUFFERRANGEEXTPROC)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLTEXTURECOLORMASKSGISPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+typedef void (GLAPIENTRY *PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC)(GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);
+typedef void (GLAPIENTRY *PFNGLTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY *PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY *PFNGLTEXTUREIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY *PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
+typedef void (GLAPIENTRY *PFNGLTEXTURELIGHTEXTPROC)(GLenum pname);
+typedef void (GLAPIENTRY *PFNGLTEXTUREMATERIALEXTPROC)(GLenum face, GLenum mode);
+typedef void (GLAPIENTRY *PFNGLTEXTURENORMALEXTPROC)(GLenum mode);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPAGECOMMITMENTEXTPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLuint * params);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPARAMETERFPROC)(GLuint texture, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPARAMETERFEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, const GLfloat * param);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPARAMETERIPROC)(GLuint texture, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPARAMETERIEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, const GLint * param);
+typedef void (GLAPIENTRY *PFNGLTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLTEXTURERANGEAPPLEPROC)(GLenum target, GLsizei length, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLTEXTURERENDERBUFFEREXTPROC)(GLuint texture, GLenum target, GLuint renderbuffer);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGE1DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGE1DEXTPROC)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGE2DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGE2DEXTPROC)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGE3DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGE3DEXTPROC)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGEMEM1DEXTPROC)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGEMEM2DEXTPROC)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGEMEM3DEXTPROC)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+typedef void (GLAPIENTRY *PFNGLTEXTURESTORAGESPARSEAMDPROC)(GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
+typedef void (GLAPIENTRY *PFNGLTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels);
+typedef void (GLAPIENTRY *PFNGLTEXTUREVIEWPROC)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+typedef void (GLAPIENTRY *PFNGLTEXTUREVIEWEXTPROC)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+typedef void (GLAPIENTRY *PFNGLTEXTUREVIEWOESPROC)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+typedef void (GLAPIENTRY *PFNGLTRACKMATRIXNVPROC)(GLenum target, GLuint address, GLenum matrix, GLenum transform);
+typedef void (GLAPIENTRY *PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)(GLsizei count, const GLint * attribs, GLenum bufferMode);
+typedef void (GLAPIENTRY *PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)(GLuint xfb, GLuint index, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)(GLsizei count, const GLint * attribs, GLsizei nbuffers, const GLint * bufstreams, GLenum bufferMode);
+typedef void (GLAPIENTRY *PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode);
+typedef void (GLAPIENTRY *PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode);
+typedef void (GLAPIENTRY *PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)(GLuint program, GLsizei count, const GLint * locations, GLenum bufferMode);
+typedef void (GLAPIENTRY *PFNGLTRANSFORMPATHNVPROC)(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat * transformValues);
+typedef void (GLAPIENTRY *PFNGLTRANSLATEDPROC)(GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLTRANSLATEFPROC)(GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLTRANSLATEXPROC)(GLfixed x, GLfixed y, GLfixed z);
+typedef void (GLAPIENTRY *PFNGLTRANSLATEXOESPROC)(GLfixed x, GLfixed y, GLfixed z);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1DPROC)(GLint location, GLdouble x);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1FARBPROC)(GLint location, GLfloat v0);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1FVARBPROC)(GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1IPROC)(GLint location, GLint v0);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1I64ARBPROC)(GLint location, GLint64 x);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1I64NVPROC)(GLint location, GLint64EXT x);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1I64VARBPROC)(GLint location, GLsizei count, const GLint64 * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1IARBPROC)(GLint location, GLint v0);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1IVARBPROC)(GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1UI64ARBPROC)(GLint location, GLuint64 x);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1UI64NVPROC)(GLint location, GLuint64EXT x);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1UI64VARBPROC)(GLint location, GLsizei count, const GLuint64 * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1UIEXTPROC)(GLint location, GLuint v0);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM1UIVEXTPROC)(GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2FARBPROC)(GLint location, GLfloat v0, GLfloat v1);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2FVARBPROC)(GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2I64ARBPROC)(GLint location, GLint64 x, GLint64 y);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2I64VARBPROC)(GLint location, GLsizei count, const GLint64 * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2IARBPROC)(GLint location, GLint v0, GLint v1);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2IVARBPROC)(GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2UI64VARBPROC)(GLint location, GLsizei count, const GLuint64 * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2UIEXTPROC)(GLint location, GLuint v0, GLuint v1);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM2UIVEXTPROC)(GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3FARBPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3FVARBPROC)(GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3I64VARBPROC)(GLint location, GLsizei count, const GLint64 * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3IVARBPROC)(GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3UI64VARBPROC)(GLint location, GLsizei count, const GLuint64 * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM3UIVEXTPROC)(GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4FARBPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4FVARBPROC)(GLint location, GLsizei count, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4I64VARBPROC)(GLint location, GLsizei count, const GLint64 * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4IVARBPROC)(GLint location, GLsizei count, const GLint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4UI64VARBPROC)(GLint location, GLsizei count, const GLuint64 * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORM4UIVEXTPROC)(GLint location, GLsizei count, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
+typedef void (GLAPIENTRY *PFNGLUNIFORMBUFFEREXTPROC)(GLuint program, GLint location, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLUNIFORMHANDLEUI64ARBPROC)(GLint location, GLuint64 value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMHANDLEUI64IMGPROC)(GLint location, GLuint64 value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMHANDLEUI64NVPROC)(GLint location, GLuint64 value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMHANDLEUI64VARBPROC)(GLint location, GLsizei count, const GLuint64 * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMHANDLEUI64VIMGPROC)(GLint location, GLsizei count, const GLuint64 * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMHANDLEUI64VNVPROC)(GLint location, GLsizei count, const GLuint64 * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX2FVARBPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX2X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX2X3FVNVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX2X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX2X4FVNVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX3FVARBPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX3X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX3X2FVNVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX3X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX3X4FVNVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX4FVARBPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX4X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX4X2FVNVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX4X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMMATRIX4X3FVNVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, const GLuint * indices);
+typedef void (GLAPIENTRY *PFNGLUNIFORMUI64NVPROC)(GLint location, GLuint64EXT value);
+typedef void (GLAPIENTRY *PFNGLUNIFORMUI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT * value);
+typedef void (GLAPIENTRY *PFNGLUNLOCKARRAYSEXTPROC)(void);
+typedef GLboolean (GLAPIENTRY *PFNGLUNMAPBUFFERPROC)(GLenum target);
+typedef GLboolean (GLAPIENTRY *PFNGLUNMAPBUFFERARBPROC)(GLenum target);
+typedef GLboolean (GLAPIENTRY *PFNGLUNMAPBUFFEROESPROC)(GLenum target);
+typedef GLboolean (GLAPIENTRY *PFNGLUNMAPNAMEDBUFFERPROC)(GLuint buffer);
+typedef GLboolean (GLAPIENTRY *PFNGLUNMAPNAMEDBUFFEREXTPROC)(GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLUNMAPOBJECTBUFFERATIPROC)(GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLUNMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level);
+typedef void (GLAPIENTRY *PFNGLUPDATEOBJECTBUFFERATIPROC)(GLuint buffer, GLuint offset, GLsizei size, const void * pointer, GLenum preserve);
+typedef void (GLAPIENTRY *PFNGLUPLOADGPUMASKNVXPROC)(GLbitfield mask);
+typedef void (GLAPIENTRY *PFNGLUSEPROGRAMPROC)(GLuint program);
+typedef void (GLAPIENTRY *PFNGLUSEPROGRAMOBJECTARBPROC)(GLhandleARB programObj);
+typedef void (GLAPIENTRY *PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, GLuint program);
+typedef void (GLAPIENTRY *PFNGLUSEPROGRAMSTAGESEXTPROC)(GLuint pipeline, GLbitfield stages, GLuint program);
+typedef void (GLAPIENTRY *PFNGLUSESHADERPROGRAMEXTPROC)(GLenum type, GLuint program);
+typedef void (GLAPIENTRY *PFNGLVDPAUFININVPROC)(void);
+typedef void (GLAPIENTRY *PFNGLVDPAUGETSURFACEIVNVPROC)(GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values);
+typedef void (GLAPIENTRY *PFNGLVDPAUINITNVPROC)(const void * vdpDevice, const void * getProcAddress);
+typedef GLboolean (GLAPIENTRY *PFNGLVDPAUISSURFACENVPROC)(GLvdpauSurfaceNV surface);
+typedef void (GLAPIENTRY *PFNGLVDPAUMAPSURFACESNVPROC)(GLsizei numSurfaces, const GLvdpauSurfaceNV * surfaces);
+typedef GLvdpauSurfaceNV (GLAPIENTRY *PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)(const void * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames);
+typedef GLvdpauSurfaceNV (GLAPIENTRY *PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)(const void * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames);
+typedef GLvdpauSurfaceNV (GLAPIENTRY *PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC)(const void * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames, GLboolean isFrameStructure);
+typedef void (GLAPIENTRY *PFNGLVDPAUSURFACEACCESSNVPROC)(GLvdpauSurfaceNV surface, GLenum access);
+typedef void (GLAPIENTRY *PFNGLVDPAUUNMAPSURFACESNVPROC)(GLsizei numSurface, const GLvdpauSurfaceNV * surfaces);
+typedef void (GLAPIENTRY *PFNGLVDPAUUNREGISTERSURFACENVPROC)(GLvdpauSurfaceNV surface);
+typedef void (GLAPIENTRY *PFNGLVALIDATEPROGRAMPROC)(GLuint program);
+typedef void (GLAPIENTRY *PFNGLVALIDATEPROGRAMARBPROC)(GLhandleARB programObj);
+typedef void (GLAPIENTRY *PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline);
+typedef void (GLAPIENTRY *PFNGLVALIDATEPROGRAMPIPELINEEXTPROC)(GLuint pipeline);
+typedef void (GLAPIENTRY *PFNGLVARIANTARRAYOBJECTATIPROC)(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (GLAPIENTRY *PFNGLVARIANTPOINTEREXTPROC)(GLuint id, GLenum type, GLuint stride, const void * addr);
+typedef void (GLAPIENTRY *PFNGLVARIANTBVEXTPROC)(GLuint id, const GLbyte * addr);
+typedef void (GLAPIENTRY *PFNGLVARIANTDVEXTPROC)(GLuint id, const GLdouble * addr);
+typedef void (GLAPIENTRY *PFNGLVARIANTFVEXTPROC)(GLuint id, const GLfloat * addr);
+typedef void (GLAPIENTRY *PFNGLVARIANTIVEXTPROC)(GLuint id, const GLint * addr);
+typedef void (GLAPIENTRY *PFNGLVARIANTSVEXTPROC)(GLuint id, const GLshort * addr);
+typedef void (GLAPIENTRY *PFNGLVARIANTUBVEXTPROC)(GLuint id, const GLubyte * addr);
+typedef void (GLAPIENTRY *PFNGLVARIANTUIVEXTPROC)(GLuint id, const GLuint * addr);
+typedef void (GLAPIENTRY *PFNGLVARIANTUSVEXTPROC)(GLuint id, const GLushort * addr);
+typedef void (GLAPIENTRY *PFNGLVERTEX2BOESPROC)(GLbyte x, GLbyte y);
+typedef void (GLAPIENTRY *PFNGLVERTEX2BVOESPROC)(const GLbyte * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEX2DPROC)(GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLVERTEX2DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX2FPROC)(GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY *PFNGLVERTEX2FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX2HNVPROC)(GLhalfNV x, GLhalfNV y);
+typedef void (GLAPIENTRY *PFNGLVERTEX2HVNVPROC)(const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX2IPROC)(GLint x, GLint y);
+typedef void (GLAPIENTRY *PFNGLVERTEX2IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX2SPROC)(GLshort x, GLshort y);
+typedef void (GLAPIENTRY *PFNGLVERTEX2SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX2XOESPROC)(GLfixed x);
+typedef void (GLAPIENTRY *PFNGLVERTEX2XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEX3BOESPROC)(GLbyte x, GLbyte y, GLbyte z);
+typedef void (GLAPIENTRY *PFNGLVERTEX3BVOESPROC)(const GLbyte * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEX3DPROC)(GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLVERTEX3DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX3FPROC)(GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLVERTEX3FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX3HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z);
+typedef void (GLAPIENTRY *PFNGLVERTEX3HVNVPROC)(const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX3IPROC)(GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY *PFNGLVERTEX3IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX3SPROC)(GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY *PFNGLVERTEX3SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX3XOESPROC)(GLfixed x, GLfixed y);
+typedef void (GLAPIENTRY *PFNGLVERTEX3XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEX4BOESPROC)(GLbyte x, GLbyte y, GLbyte z, GLbyte w);
+typedef void (GLAPIENTRY *PFNGLVERTEX4BVOESPROC)(const GLbyte * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEX4DPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLVERTEX4DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX4FPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLVERTEX4FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX4HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+typedef void (GLAPIENTRY *PFNGLVERTEX4HVNVPROC)(const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX4IPROC)(GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY *PFNGLVERTEX4IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX4SPROC)(GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY *PFNGLVERTEX4SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEX4XOESPROC)(GLfixed x, GLfixed y, GLfixed z);
+typedef void (GLAPIENTRY *PFNGLVERTEX4XVOESPROC)(const GLfixed * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYATTRIBBINDINGPROC)(GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYATTRIBFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYATTRIBIFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYATTRIBLFORMATPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYBINDINGDIVISORPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint vaobj, GLuint buffer);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void * pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYRANGENVPROC)(GLsizei length, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)(GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)(GLuint vaobj, GLuint index, GLuint divisor);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYVERTEXBUFFERPROC)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYVERTEXBUFFERSPROC)(GLuint vaobj, GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides);
+typedef void (GLAPIENTRY *PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1DARBPROC)(GLuint index, GLdouble x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1DNVPROC)(GLuint index, GLdouble x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1DVARBPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1DVNVPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1FARBPROC)(GLuint index, GLfloat x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1FNVPROC)(GLuint index, GLfloat x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1FVARBPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1FVNVPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1HNVPROC)(GLuint index, GLhalfNV x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1HVNVPROC)(GLuint index, const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1SARBPROC)(GLuint index, GLshort x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1SNVPROC)(GLuint index, GLshort x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1SVARBPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB1SVNVPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2DARBPROC)(GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2DNVPROC)(GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2DVARBPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2DVNVPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2FARBPROC)(GLuint index, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2FNVPROC)(GLuint index, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2FVARBPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2FVNVPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2HVNVPROC)(GLuint index, const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2SARBPROC)(GLuint index, GLshort x, GLshort y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2SNVPROC)(GLuint index, GLshort x, GLshort y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2SVARBPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB2SVNVPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3DARBPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3DNVPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3DVARBPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3DVNVPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3FARBPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3FVARBPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3FVNVPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3HVNVPROC)(GLuint index, const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3SARBPROC)(GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3SVARBPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB3SVNVPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NBVARBPROC)(GLuint index, const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NIVARBPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NSVARBPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NUBARBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NUBVARBPROC)(GLuint index, const GLubyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NUIVARBPROC)(GLuint index, const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4NUSVARBPROC)(GLuint index, const GLushort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4BVARBPROC)(GLuint index, const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4DARBPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4DNVPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4DVARBPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4DVNVPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4FARBPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4FVARBPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4FVNVPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4HVNVPROC)(GLuint index, const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4IVARBPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4SARBPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4SVARBPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4SVNVPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4UBNVPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4UBVARBPROC)(GLuint index, const GLubyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4UBVNVPROC)(GLuint index, const GLubyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4UIVARBPROC)(GLuint index, const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIB4USVARBPROC)(GLuint index, const GLushort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBBINDINGPROC)(GLuint attribindex, GLuint bindingindex);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBDIVISORANGLEPROC)(GLuint index, GLuint divisor);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBDIVISORARBPROC)(GLuint index, GLuint divisor);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBDIVISOREXTPROC)(GLuint index, GLuint divisor);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBDIVISORNVPROC)(GLuint index, GLuint divisor);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI1IEXTPROC)(GLuint index, GLint x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI1IVEXTPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI1UIEXTPROC)(GLuint index, GLuint x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI1UIVEXTPROC)(GLuint index, const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI2IEXTPROC)(GLuint index, GLint x, GLint y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI2IVEXTPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI2UIEXTPROC)(GLuint index, GLuint x, GLuint y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI2UIVEXTPROC)(GLuint index, const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI3IEXTPROC)(GLuint index, GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI3IVEXTPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI3UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI3UIVEXTPROC)(GLuint index, const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4BVEXTPROC)(GLuint index, const GLbyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4IEXTPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4IVEXTPROC)(GLuint index, const GLint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4SVEXTPROC)(GLuint index, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4UBVEXTPROC)(GLuint index, const GLubyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4UIVEXTPROC)(GLuint index, const GLuint * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBI4USVEXTPROC)(GLuint index, const GLushort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBIFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBIFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBIPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL1DPROC)(GLuint index, GLdouble x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL1DEXTPROC)(GLuint index, GLdouble x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL1DVEXTPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL1I64NVPROC)(GLuint index, GLint64EXT x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL1I64VNVPROC)(GLuint index, const GLint64EXT * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL1UI64ARBPROC)(GLuint index, GLuint64EXT x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL1UI64NVPROC)(GLuint index, GLuint64EXT x);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL1UI64VARBPROC)(GLuint index, const GLuint64EXT * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL1UI64VNVPROC)(GLuint index, const GLuint64EXT * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL2DEXTPROC)(GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL2DVEXTPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL2I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL2I64VNVPROC)(GLuint index, const GLint64EXT * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL2UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL2UI64VNVPROC)(GLuint index, const GLuint64EXT * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL3DEXTPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL3DVEXTPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL3I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL3I64VNVPROC)(GLuint index, const GLint64EXT * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL3UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL3UI64VNVPROC)(GLuint index, const GLuint64EXT * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL4DEXTPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL4DVPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL4DVEXTPROC)(GLuint index, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL4I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL4I64VNVPROC)(GLuint index, const GLint64EXT * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL4UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBL4UI64VNVPROC)(GLuint index, const GLuint64EXT * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBLFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBLFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBLPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBLPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBPARAMETERIAMDPROC)(GLuint index, GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBPOINTERARBPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBPOINTERNVPROC)(GLuint index, GLint fsize, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS1DVNVPROC)(GLuint index, GLsizei count, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS1FVNVPROC)(GLuint index, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS1HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS1SVNVPROC)(GLuint index, GLsizei count, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS2DVNVPROC)(GLuint index, GLsizei count, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS2FVNVPROC)(GLuint index, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS2HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS2SVNVPROC)(GLuint index, GLsizei count, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS3DVNVPROC)(GLuint index, GLsizei count, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS3FVNVPROC)(GLuint index, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS3HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS3SVNVPROC)(GLuint index, GLsizei count, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS4DVNVPROC)(GLuint index, GLsizei count, const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS4FVNVPROC)(GLuint index, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS4HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS4SVNVPROC)(GLuint index, GLsizei count, const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXATTRIBS4UBVNVPROC)(GLuint index, GLsizei count, const GLubyte * v);
+typedef void (GLAPIENTRY *PFNGLVERTEXBINDINGDIVISORPROC)(GLuint bindingindex, GLuint divisor);
+typedef void (GLAPIENTRY *PFNGLVERTEXBLENDARBPROC)(GLint count);
+typedef void (GLAPIENTRY *PFNGLVERTEXBLENDENVFATIPROC)(GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY *PFNGLVERTEXBLENDENVIATIPROC)(GLenum pname, GLint param);
+typedef void (GLAPIENTRY *PFNGLVERTEXFORMATNVPROC)(GLint size, GLenum type, GLsizei stride);
+typedef void (GLAPIENTRY *PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value);
+typedef void (GLAPIENTRY *PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value);
+typedef void (GLAPIENTRY *PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value);
+typedef void (GLAPIENTRY *PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint * value);
+typedef void (GLAPIENTRY *PFNGLVERTEXPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+typedef void (GLAPIENTRY *PFNGLVERTEXPOINTERVINTELPROC)(GLint size, GLenum type, const void ** pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM1DATIPROC)(GLenum stream, GLdouble x);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM1DVATIPROC)(GLenum stream, const GLdouble * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM1FATIPROC)(GLenum stream, GLfloat x);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM1FVATIPROC)(GLenum stream, const GLfloat * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM1IATIPROC)(GLenum stream, GLint x);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM1IVATIPROC)(GLenum stream, const GLint * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM1SATIPROC)(GLenum stream, GLshort x);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM1SVATIPROC)(GLenum stream, const GLshort * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM2DATIPROC)(GLenum stream, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM2DVATIPROC)(GLenum stream, const GLdouble * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM2FATIPROC)(GLenum stream, GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM2FVATIPROC)(GLenum stream, const GLfloat * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM2IATIPROC)(GLenum stream, GLint x, GLint y);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM2IVATIPROC)(GLenum stream, const GLint * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM2SATIPROC)(GLenum stream, GLshort x, GLshort y);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM2SVATIPROC)(GLenum stream, const GLshort * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM3DATIPROC)(GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM3DVATIPROC)(GLenum stream, const GLdouble * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM3FATIPROC)(GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM3FVATIPROC)(GLenum stream, const GLfloat * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM3IATIPROC)(GLenum stream, GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM3IVATIPROC)(GLenum stream, const GLint * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM3SATIPROC)(GLenum stream, GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM3SVATIPROC)(GLenum stream, const GLshort * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM4DATIPROC)(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM4DVATIPROC)(GLenum stream, const GLdouble * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM4FATIPROC)(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM4FVATIPROC)(GLenum stream, const GLfloat * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM4IATIPROC)(GLenum stream, GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM4IVATIPROC)(GLenum stream, const GLint * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM4SATIPROC)(GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY *PFNGLVERTEXSTREAM4SVATIPROC)(GLenum stream, const GLshort * coords);
+typedef void (GLAPIENTRY *PFNGLVERTEXWEIGHTPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLVERTEXWEIGHTFEXTPROC)(GLfloat weight);
+typedef void (GLAPIENTRY *PFNGLVERTEXWEIGHTFVEXTPROC)(const GLfloat * weight);
+typedef void (GLAPIENTRY *PFNGLVERTEXWEIGHTHNVPROC)(GLhalfNV weight);
+typedef void (GLAPIENTRY *PFNGLVERTEXWEIGHTHVNVPROC)(const GLhalfNV * weight);
+typedef GLenum (GLAPIENTRY *PFNGLVIDEOCAPTURENVPROC)(GLuint video_capture_slot, GLuint * sequence_num, GLuint64EXT * capture_time);
+typedef void (GLAPIENTRY *PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble * params);
+typedef void (GLAPIENTRY *PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat * params);
+typedef void (GLAPIENTRY *PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint * params);
+typedef void (GLAPIENTRY *PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (GLAPIENTRY *PFNGLVIEWPORTARRAYVPROC)(GLuint first, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVIEWPORTARRAYVNVPROC)(GLuint first, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVIEWPORTARRAYVOESPROC)(GLuint first, GLsizei count, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+typedef void (GLAPIENTRY *PFNGLVIEWPORTINDEXEDFNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+typedef void (GLAPIENTRY *PFNGLVIEWPORTINDEXEDFOESPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+typedef void (GLAPIENTRY *PFNGLVIEWPORTINDEXEDFVPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVIEWPORTINDEXEDFVNVPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVIEWPORTINDEXEDFVOESPROC)(GLuint index, const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLVIEWPORTPOSITIONWSCALENVPROC)(GLuint index, GLfloat xcoeff, GLfloat ycoeff);
+typedef void (GLAPIENTRY *PFNGLVIEWPORTSWIZZLENVPROC)(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
+typedef void (GLAPIENTRY *PFNGLWAITSEMAPHOREEXTPROC)(GLuint semaphore, GLuint numBufferBarriers, const GLuint * buffers, GLuint numTextureBarriers, const GLuint * textures, const GLenum * srcLayouts);
+typedef void (GLAPIENTRY *PFNGLWAITSEMAPHOREUI64NVXPROC)(GLuint waitGpu, GLsizei fenceObjectCount, const GLuint * semaphoreArray, const GLuint64 * fenceValueArray);
+typedef void (GLAPIENTRY *PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout);
+typedef void (GLAPIENTRY *PFNGLWAITSYNCAPPLEPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout);
+typedef void (GLAPIENTRY *PFNGLWAITVKSEMAPHORENVPROC)(GLuint64 vkSemaphore);
+typedef void (GLAPIENTRY *PFNGLWEIGHTPATHSNVPROC)(GLuint resultPath, GLsizei numPaths, const GLuint * paths, const GLfloat * weights);
+typedef void (GLAPIENTRY *PFNGLWEIGHTPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLWEIGHTPOINTEROESPROC)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+typedef void (GLAPIENTRY *PFNGLWEIGHTBVARBPROC)(GLint size, const GLbyte * weights);
+typedef void (GLAPIENTRY *PFNGLWEIGHTDVARBPROC)(GLint size, const GLdouble * weights);
+typedef void (GLAPIENTRY *PFNGLWEIGHTFVARBPROC)(GLint size, const GLfloat * weights);
+typedef void (GLAPIENTRY *PFNGLWEIGHTIVARBPROC)(GLint size, const GLint * weights);
+typedef void (GLAPIENTRY *PFNGLWEIGHTSVARBPROC)(GLint size, const GLshort * weights);
+typedef void (GLAPIENTRY *PFNGLWEIGHTUBVARBPROC)(GLint size, const GLubyte * weights);
+typedef void (GLAPIENTRY *PFNGLWEIGHTUIVARBPROC)(GLint size, const GLuint * weights);
+typedef void (GLAPIENTRY *PFNGLWEIGHTUSVARBPROC)(GLint size, const GLushort * weights);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2DPROC)(GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2DARBPROC)(GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2DMESAPROC)(GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2DVARBPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2DVMESAPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2FPROC)(GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2FARBPROC)(GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2FMESAPROC)(GLfloat x, GLfloat y);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2FVARBPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2FVMESAPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2IPROC)(GLint x, GLint y);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2IARBPROC)(GLint x, GLint y);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2IMESAPROC)(GLint x, GLint y);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2IVARBPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2IVMESAPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2SPROC)(GLshort x, GLshort y);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2SARBPROC)(GLshort x, GLshort y);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2SMESAPROC)(GLshort x, GLshort y);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2SVARBPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS2SVMESAPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3DPROC)(GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3DARBPROC)(GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3DMESAPROC)(GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3DVPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3DVARBPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3DVMESAPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3FPROC)(GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3FARBPROC)(GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3FMESAPROC)(GLfloat x, GLfloat y, GLfloat z);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3FVPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3FVARBPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3FVMESAPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3IPROC)(GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3IARBPROC)(GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3IMESAPROC)(GLint x, GLint y, GLint z);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3IVPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3IVARBPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3IVMESAPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3SPROC)(GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3SARBPROC)(GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3SMESAPROC)(GLshort x, GLshort y, GLshort z);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3SVPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3SVARBPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS3SVMESAPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS4DMESAPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS4DVMESAPROC)(const GLdouble * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS4FMESAPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS4FVMESAPROC)(const GLfloat * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS4IMESAPROC)(GLint x, GLint y, GLint z, GLint w);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS4IVMESAPROC)(const GLint * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS4SMESAPROC)(GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (GLAPIENTRY *PFNGLWINDOWPOS4SVMESAPROC)(const GLshort * v);
+typedef void (GLAPIENTRY *PFNGLWINDOWRECTANGLESEXTPROC)(GLenum mode, GLsizei count, const GLint * box);
+typedef void (GLAPIENTRY *PFNGLWRITEMASKEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAccum)(GLenum op, GLfloat value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAccumxOES)(GLenum op, GLfixed value);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glAcquireKeyedMutexWin32EXT)(GLuint memory, GLuint64 key, GLuint timeout);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glActiveProgramEXT)(GLuint program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glActiveShaderProgram)(GLuint pipeline, GLuint program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glActiveShaderProgramEXT)(GLuint pipeline, GLuint program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glActiveStencilFaceEXT)(GLenum face);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glActiveTexture)(GLenum texture);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glActiveTextureARB)(GLenum texture);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glActiveVaryingNV)(GLuint program, const GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAlphaFunc)(GLenum func, GLfloat ref);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAlphaFuncQCOM)(GLenum func, GLclampf ref);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAlphaFuncx)(GLenum func, GLfixed ref);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAlphaFuncxOES)(GLenum func, GLfixed ref);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAlphaToCoverageDitherControlNV)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glApplyFramebufferAttachmentCMAAINTEL)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glApplyTextureEXT)(GLenum mode);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glAreProgramsResidentNV)(GLsizei n, const GLuint * programs, GLboolean * residences);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glAreTexturesResident)(GLsizei n, const GLuint * textures, GLboolean * residences);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glAreTexturesResidentEXT)(GLsizei n, const GLuint * textures, GLboolean * residences);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glArrayElement)(GLint i);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glArrayElementEXT)(GLint i);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glArrayObjectATI)(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glAsyncCopyBufferSubDataNVX)(GLsizei waitSemaphoreCount, const GLuint * waitSemaphoreArray, const GLuint64 * fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint * signalSemaphoreArray, const GLuint64 * signalValueArray);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glAsyncCopyImageSubDataNVX)(GLsizei waitSemaphoreCount, const GLuint * waitSemaphoreArray, const GLuint64 * waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, const GLuint * signalSemaphoreArray, const GLuint64 * signalValueArray);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAsyncMarkerSGIX)(GLuint marker);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glAttachShader)(GLuint program, GLuint shader);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBegin)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginConditionalRender)(GLuint id, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginConditionalRenderNV)(GLuint id, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginConditionalRenderNVX)(GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginFragmentShaderATI)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginOcclusionQueryNV)(GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginPerfMonitorAMD)(GLuint monitor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginPerfQueryINTEL)(GLuint queryHandle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginQuery)(GLenum target, GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginQueryARB)(GLenum target, GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginQueryEXT)(GLenum target, GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginQueryIndexed)(GLenum target, GLuint index, GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginTransformFeedback)(GLenum primitiveMode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginTransformFeedbackEXT)(GLenum primitiveMode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginTransformFeedbackNV)(GLenum primitiveMode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginVertexShaderEXT)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBeginVideoCaptureNV)(GLuint video_capture_slot);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindAttribLocation)(GLuint program, GLuint index, const GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindAttribLocationARB)(GLhandleARB programObj, GLuint index, const GLcharARB * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindBuffer)(GLenum target, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindBufferARB)(GLenum target, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindBufferBase)(GLenum target, GLuint index, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindBufferBaseNV)(GLenum target, GLuint index, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindBufferOffsetNV)(GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindBufferRangeNV)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindBuffersBase)(GLenum target, GLuint first, GLsizei count, const GLuint * buffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindBuffersRange)(GLenum target, GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizeiptr * sizes);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindFragDataLocation)(GLuint program, GLuint color, const GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindFragDataLocationEXT)(GLuint program, GLuint color, const GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindFragDataLocationIndexed)(GLuint program, GLuint colorNumber, GLuint index, const GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindFragDataLocationIndexedEXT)(GLuint program, GLuint colorNumber, GLuint index, const GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindFragmentShaderATI)(GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindFramebuffer)(GLenum target, GLuint framebuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindFramebufferEXT)(GLenum target, GLuint framebuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindFramebufferOES)(GLenum target, GLuint framebuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindImageTexture)(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindImageTextureEXT)(GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindImageTextures)(GLuint first, GLsizei count, const GLuint * textures);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glBindLightParameterEXT)(GLenum light, GLenum value);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glBindMaterialParameterEXT)(GLenum face, GLenum value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindMultiTextureEXT)(GLenum texunit, GLenum target, GLuint texture);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glBindParameterEXT)(GLenum value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindProgramARB)(GLenum target, GLuint program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindProgramNV)(GLenum target, GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindProgramPipeline)(GLuint pipeline);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindProgramPipelineEXT)(GLuint pipeline);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindRenderbuffer)(GLenum target, GLuint renderbuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindRenderbufferEXT)(GLenum target, GLuint renderbuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindRenderbufferOES)(GLenum target, GLuint renderbuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindSampler)(GLuint unit, GLuint sampler);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindSamplers)(GLuint first, GLsizei count, const GLuint * samplers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindShadingRateImageNV)(GLuint texture);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glBindTexGenParameterEXT)(GLenum unit, GLenum coord, GLenum value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindTexture)(GLenum target, GLuint texture);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindTextureEXT)(GLenum target, GLuint texture);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindTextureUnit)(GLuint unit, GLuint texture);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glBindTextureUnitParameterEXT)(GLenum unit, GLenum value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindTextures)(GLuint first, GLsizei count, const GLuint * textures);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindTransformFeedback)(GLenum target, GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindTransformFeedbackNV)(GLenum target, GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindVertexArray)(GLuint array);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindVertexArrayAPPLE)(GLuint array);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindVertexArrayOES)(GLuint array);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindVertexBuffer)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindVertexBuffers)(GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindVertexShaderEXT)(GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindVideoCaptureStreamBufferNV)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBindVideoCaptureStreamTextureNV)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBinormal3bEXT)(GLbyte bx, GLbyte by, GLbyte bz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBinormal3bvEXT)(const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBinormal3dEXT)(GLdouble bx, GLdouble by, GLdouble bz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBinormal3dvEXT)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBinormal3fEXT)(GLfloat bx, GLfloat by, GLfloat bz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBinormal3fvEXT)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBinormal3iEXT)(GLint bx, GLint by, GLint bz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBinormal3ivEXT)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBinormal3sEXT)(GLshort bx, GLshort by, GLshort bz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBinormal3svEXT)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBinormalPointerEXT)(GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBitmapxOES)(GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte * bitmap);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendBarrier)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendBarrierKHR)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendBarrierNV)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendColorEXT)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendColorxOES)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquation)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationEXT)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationIndexedAMD)(GLuint buf, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationOES)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationSeparateIndexedAMD)(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationSeparateOES)(GLenum modeRGB, GLenum modeAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationSeparatei)(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationSeparateiARB)(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationSeparateiEXT)(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationSeparateiOES)(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationi)(GLuint buf, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationiARB)(GLuint buf, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationiEXT)(GLuint buf, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendEquationiOES)(GLuint buf, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFunc)(GLenum sfactor, GLenum dfactor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFuncIndexedAMD)(GLuint buf, GLenum src, GLenum dst);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFuncSeparateINGR)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFuncSeparateIndexedAMD)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFuncSeparateOES)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFuncSeparatei)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFuncSeparateiARB)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFuncSeparateiEXT)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFuncSeparateiOES)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFunci)(GLuint buf, GLenum src, GLenum dst);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFunciARB)(GLuint buf, GLenum src, GLenum dst);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFunciEXT)(GLuint buf, GLenum src, GLenum dst);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendFunciOES)(GLuint buf, GLenum src, GLenum dst);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlendParameteriNV)(GLenum pname, GLint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlitFramebufferANGLE)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlitFramebufferNV)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBlitNamedFramebuffer)(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBufferAddressRangeNV)(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBufferAttachMemoryNV)(GLenum target, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBufferData)(GLenum target, GLsizeiptr size, const void * data, GLenum usage);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBufferDataARB)(GLenum target, GLsizeiptrARB size, const void * data, GLenum usage);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBufferPageCommitmentARB)(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBufferStorage)(GLenum target, GLsizeiptr size, const void * data, GLbitfield flags);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBufferStorageEXT)(GLenum target, GLsizeiptr size, const void * data, GLbitfield flags);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBufferStorageExternalEXT)(GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBufferStorageMemEXT)(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCallCommandListNV)(GLuint list);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCallList)(GLuint list);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCallLists)(GLsizei n, GLenum type, const void * lists);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glCheckFramebufferStatus)(GLenum target);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glCheckFramebufferStatusEXT)(GLenum target);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glCheckFramebufferStatusOES)(GLenum target);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glCheckNamedFramebufferStatus)(GLuint framebuffer, GLenum target);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glCheckNamedFramebufferStatusEXT)(GLuint framebuffer, GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClampColor)(GLenum target, GLenum clamp);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClampColorARB)(GLenum target, GLenum clamp);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClear)(GLbitfield mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearAccumxOES)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearBufferData)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearBufferSubData)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearColorIiEXT)(GLint red, GLint green, GLint blue, GLint alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearColorIuiEXT)(GLuint red, GLuint green, GLuint blue, GLuint alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearColorx)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearColorxOES)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearDepth)(GLdouble depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearDepthdNV)(GLdouble depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearDepthf)(GLfloat d);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearDepthfOES)(GLclampf depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearDepthx)(GLfixed depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearDepthxOES)(GLfixed depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearIndex)(GLfloat c);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearNamedBufferData)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearNamedBufferDataEXT)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearNamedBufferSubData)(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearNamedBufferSubDataEXT)(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearNamedFramebufferfi)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearNamedFramebufferfv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearNamedFramebufferiv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearNamedFramebufferuiv)(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearPixelLocalStorageuiEXT)(GLsizei offset, GLsizei n, const GLuint * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearStencil)(GLint s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearTexImage)(GLuint texture, GLint level, GLenum format, GLenum type, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearTexImageEXT)(GLuint texture, GLint level, GLenum format, GLenum type, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClearTexSubImageEXT)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClientActiveTexture)(GLenum texture);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClientActiveTextureARB)(GLenum texture);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClientActiveVertexStreamATI)(GLenum stream);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClientAttribDefaultEXT)(GLbitfield mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClientWaitSemaphoreui64NVX)(GLsizei fenceObjectCount, const GLuint * semaphoreArray, const GLuint64 * fenceValueArray);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glClientWaitSyncAPPLE)(GLsync sync, GLbitfield flags, GLuint64 timeout);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClipControl)(GLenum origin, GLenum depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClipControlEXT)(GLenum origin, GLenum depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClipPlane)(GLenum plane, const GLdouble * equation);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClipPlanef)(GLenum p, const GLfloat * eqn);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClipPlanefIMG)(GLenum p, const GLfloat * eqn);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClipPlanefOES)(GLenum plane, const GLfloat * equation);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClipPlanex)(GLenum plane, const GLfixed * equation);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClipPlanexIMG)(GLenum p, const GLfixed * eqn);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glClipPlanexOES)(GLenum plane, const GLfixed * equation);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3b)(GLbyte red, GLbyte green, GLbyte blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3bv)(const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3d)(GLdouble red, GLdouble green, GLdouble blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3f)(GLfloat red, GLfloat green, GLfloat blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3fVertex3fSUN)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3fVertex3fvSUN)(const GLfloat * c, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3hNV)(GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3hvNV)(const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3i)(GLint red, GLint green, GLint blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3s)(GLshort red, GLshort green, GLshort blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3ub)(GLubyte red, GLubyte green, GLubyte blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3ubv)(const GLubyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3ui)(GLuint red, GLuint green, GLuint blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3uiv)(const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3us)(GLushort red, GLushort green, GLushort blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3usv)(const GLushort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3xOES)(GLfixed red, GLfixed green, GLfixed blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor3xvOES)(const GLfixed * components);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4bv)(const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4fNormal3fVertex3fSUN)(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4fNormal3fVertex3fvSUN)(const GLfloat * c, const GLfloat * n, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4hNV)(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4hvNV)(const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4i)(GLint red, GLint green, GLint blue, GLint alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4ubVertex2fSUN)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4ubVertex2fvSUN)(const GLubyte * c, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4ubVertex3fSUN)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4ubVertex3fvSUN)(const GLubyte * c, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4ubv)(const GLubyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4uiv)(const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4usv)(const GLushort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4x)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4xOES)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColor4xvOES)(const GLfixed * components);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorFormatNV)(GLint size, GLenum type, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorFragmentOp3ATI)(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);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorMaskIndexedEXT)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorMaski)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorMaskiEXT)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorMaskiOES)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorMaterial)(GLenum face, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorP3ui)(GLenum type, GLuint color);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorP3uiv)(GLenum type, const GLuint * color);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorP4ui)(GLenum type, GLuint color);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorP4uiv)(GLenum type, const GLuint * color);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorPointerListIBM)(GLint size, GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorPointervINTEL)(GLint size, GLenum type, const void ** pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorSubTableEXT)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void * table);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorTableEXT)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void * table);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorTableParameterfvSGI)(GLenum target, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorTableParameteriv)(GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorTableParameterivSGI)(GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glColorTableSGI)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void * table);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCombinerParameterfNV)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCombinerParameterfvNV)(GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCombinerParameteriNV)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCombinerParameterivNV)(GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCombinerStageParameterfvNV)(GLenum stage, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCommandListSegmentsNV)(GLuint list, GLuint segments);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompileCommandListNV)(GLuint list);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompileShader)(GLuint shader);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompileShaderARB)(GLhandleARB shaderObj);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompileShaderIncludeARB)(GLuint shader, GLsizei count, const GLchar *const* path, const GLint * length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedMultiTexImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * bits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedMultiTexImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * bits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedMultiTexImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * bits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedMultiTexSubImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * bits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedMultiTexSubImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * bits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedMultiTexSubImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * bits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexImage3DOES)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTexSubImage3DOES)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTextureImage1DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void * bits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTextureImage2DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * bits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTextureImage3DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * bits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTextureSubImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void * bits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTextureSubImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * bits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCompressedTextureSubImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * bits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConservativeRasterParameterfNV)(GLenum pname, GLfloat value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConservativeRasterParameteriNV)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void * image);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void * image);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * image);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * image);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionParameterfEXT)(GLenum target, GLenum pname, GLfloat params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionParameterfvEXT)(GLenum target, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionParameteri)(GLenum target, GLenum pname, GLint params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionParameteriEXT)(GLenum target, GLenum pname, GLint params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionParameteriv)(GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionParameterivEXT)(GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionParameterxOES)(GLenum target, GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glConvolutionParameterxvOES)(GLenum target, GLenum pname, const GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyBufferSubDataNV)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyColorSubTableEXT)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyColorTableSGI)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyImageSubData)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyImageSubDataEXT)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyImageSubDataNV)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyImageSubDataOES)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyMultiTexImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyMultiTexImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyMultiTexSubImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyMultiTexSubImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyMultiTexSubImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyNamedBufferSubData)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyPathNV)(GLuint resultPath, GLuint srcPath);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTexSubImage3DOES)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTextureImage1DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTextureImage2DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTextureLevelsAPPLE)(GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTextureSubImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTextureSubImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCopyTextureSubImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCoverFillPathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat * transformValues);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCoverFillPathNV)(GLuint path, GLenum coverMode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCoverStrokePathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat * transformValues);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCoverStrokePathNV)(GLuint path, GLenum coverMode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCoverageMaskNV)(GLboolean mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCoverageModulationNV)(GLenum components);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCoverageModulationTableNV)(GLsizei n, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCoverageOperationNV)(GLenum operation);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreateBuffers)(GLsizei n, GLuint * buffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreateCommandListsNV)(GLsizei n, GLuint * lists);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreateFramebuffers)(GLsizei n, GLuint * framebuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreateMemoryObjectsEXT)(GLsizei n, GLuint * memoryObjects);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreatePerfQueryINTEL)(GLuint queryId, GLuint * queryHandle);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glCreateProgram)(void);
+
+EPOXY_PUBLIC GLhandleARB (EPOXY_CALLSPEC *epoxy_glCreateProgramObjectARB)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreateProgramPipelines)(GLsizei n, GLuint * pipelines);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glCreateProgressFenceNVX)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreateQueries)(GLenum target, GLsizei n, GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreateRenderbuffers)(GLsizei n, GLuint * renderbuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreateSamplers)(GLsizei n, GLuint * samplers);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glCreateShader)(GLenum type);
+
+EPOXY_PUBLIC GLhandleARB (EPOXY_CALLSPEC *epoxy_glCreateShaderObjectARB)(GLenum shaderType);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glCreateShaderProgramEXT)(GLenum type, const GLchar * string);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glCreateShaderProgramv)(GLenum type, GLsizei count, const GLchar *const* strings);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glCreateShaderProgramvEXT)(GLenum type, GLsizei count, const GLchar ** strings);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreateStatesNV)(GLsizei n, GLuint * states);
+
+EPOXY_PUBLIC GLsync (EPOXY_CALLSPEC *epoxy_glCreateSyncFromCLeventARB)(struct _cl_context * context, struct _cl_event * event, GLbitfield flags);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreateTextures)(GLenum target, GLsizei n, GLuint * textures);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreateTransformFeedbacks)(GLsizei n, GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCreateVertexArrays)(GLsizei n, GLuint * arrays);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCullFace)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCullParameterdvEXT)(GLenum pname, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCullParameterfvEXT)(GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCurrentPaletteMatrixARB)(GLint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glCurrentPaletteMatrixOES)(GLuint matrixpaletteindex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDebugMessageCallback)(GLDEBUGPROC callback, const void * userParam);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDebugMessageCallbackAMD)(GLDEBUGPROCAMD callback, void * userParam);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDebugMessageCallbackARB)(GLDEBUGPROCARB callback, const void * userParam);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDebugMessageCallbackKHR)(GLDEBUGPROCKHR callback, const void * userParam);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDebugMessageControl)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDebugMessageControlARB)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDebugMessageControlKHR)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDebugMessageEnableAMD)(GLenum category, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDebugMessageInsert)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDebugMessageInsertAMD)(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar * buf);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDebugMessageInsertARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDebugMessageInsertKHR)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeformSGIX)(GLbitfield mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeformationMap3dSGIX)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeformationMap3fSGIX)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteAsyncMarkersSGIX)(GLuint marker, GLsizei range);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteBuffers)(GLsizei n, const GLuint * buffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteBuffersARB)(GLsizei n, const GLuint * buffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteCommandListsNV)(GLsizei n, const GLuint * lists);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteFencesAPPLE)(GLsizei n, const GLuint * fences);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteFencesNV)(GLsizei n, const GLuint * fences);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteFragmentShaderATI)(GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteFramebuffers)(GLsizei n, const GLuint * framebuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteFramebuffersOES)(GLsizei n, const GLuint * framebuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteLists)(GLuint list, GLsizei range);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteMemoryObjectsEXT)(GLsizei n, const GLuint * memoryObjects);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteNamedStringARB)(GLint namelen, const GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteNamesAMD)(GLenum identifier, GLuint num, const GLuint * names);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteObjectARB)(GLhandleARB obj);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteOcclusionQueriesNV)(GLsizei n, const GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeletePathsNV)(GLuint path, GLsizei range);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeletePerfMonitorsAMD)(GLsizei n, GLuint * monitors);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeletePerfQueryINTEL)(GLuint queryHandle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteProgram)(GLuint program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteProgramPipelines)(GLsizei n, const GLuint * pipelines);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteProgramPipelinesEXT)(GLsizei n, const GLuint * pipelines);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteProgramsARB)(GLsizei n, const GLuint * programs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteProgramsNV)(GLsizei n, const GLuint * programs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteQueries)(GLsizei n, const GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteQueriesARB)(GLsizei n, const GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteQueriesEXT)(GLsizei n, const GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteQueryResourceTagNV)(GLsizei n, const GLint * tagIds);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteRenderbuffers)(GLsizei n, const GLuint * renderbuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteRenderbuffersOES)(GLsizei n, const GLuint * renderbuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteSamplers)(GLsizei count, const GLuint * samplers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteSemaphoresEXT)(GLsizei n, const GLuint * semaphores);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteShader)(GLuint shader);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteStatesNV)(GLsizei n, const GLuint * states);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteSync)(GLsync sync);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteSyncAPPLE)(GLsync sync);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteTextures)(GLsizei n, const GLuint * textures);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteTexturesEXT)(GLsizei n, const GLuint * textures);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteTransformFeedbacks)(GLsizei n, const GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteTransformFeedbacksNV)(GLsizei n, const GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteVertexArrays)(GLsizei n, const GLuint * arrays);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteVertexArraysAPPLE)(GLsizei n, const GLuint * arrays);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteVertexArraysOES)(GLsizei n, const GLuint * arrays);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDeleteVertexShaderEXT)(GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthBoundsEXT)(GLclampd zmin, GLclampd zmax);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthBoundsdNV)(GLdouble zmin, GLdouble zmax);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthFunc)(GLenum func);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthMask)(GLboolean flag);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthRange)(GLdouble n, GLdouble f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthRangeArrayfvNV)(GLuint first, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthRangeArrayfvOES)(GLuint first, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthRangeArrayv)(GLuint first, GLsizei count, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthRangeIndexed)(GLuint index, GLdouble n, GLdouble f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthRangeIndexedfNV)(GLuint index, GLfloat n, GLfloat f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthRangeIndexedfOES)(GLuint index, GLfloat n, GLfloat f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthRangedNV)(GLdouble zNear, GLdouble zFar);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthRangef)(GLfloat n, GLfloat f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthRangefOES)(GLclampf n, GLclampf f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthRangex)(GLfixed n, GLfixed f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDepthRangexOES)(GLfixed n, GLfixed f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDetachShader)(GLuint program, GLuint shader);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDetailTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisable)(GLenum cap);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableClientState)(GLenum array);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableClientStateIndexedEXT)(GLenum array, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableClientStateiEXT)(GLenum array, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableDriverControlQCOM)(GLuint driverControl);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableIndexedEXT)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableVariantClientStateEXT)(GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableVertexArrayAttrib)(GLuint vaobj, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableVertexArrayAttribEXT)(GLuint vaobj, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableVertexArrayEXT)(GLuint vaobj, GLenum array);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableVertexAttribAPPLE)(GLuint index, GLenum pname);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableVertexAttribArray)(GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableVertexAttribArrayARB)(GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisablei)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableiEXT)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableiNV)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDisableiOES)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDiscardFramebufferEXT)(GLenum target, GLsizei numAttachments, const GLenum * attachments);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDispatchCompute)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDispatchComputeGroupSizeARB)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDispatchComputeIndirect)(GLintptr indirect);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawArrays)(GLenum mode, GLint first, GLsizei count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawArraysEXT)(GLenum mode, GLint first, GLsizei count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawArraysIndirect)(GLenum mode, const void * indirect);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawArraysInstancedANGLE)(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawArraysInstancedBaseInstance)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawArraysInstancedBaseInstanceEXT)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawArraysInstancedEXT)(GLenum mode, GLint start, GLsizei count, GLsizei primcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawArraysInstancedNV)(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawBuffer)(GLenum buf);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawBuffers)(GLsizei n, const GLenum * bufs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawBuffersARB)(GLsizei n, const GLenum * bufs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawBuffersATI)(GLsizei n, const GLenum * bufs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawBuffersEXT)(GLsizei n, const GLenum * bufs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawBuffersIndexedEXT)(GLint n, const GLenum * location, const GLint * indices);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawBuffersNV)(GLsizei n, const GLenum * bufs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawCommandsAddressNV)(GLenum primitiveMode, const GLuint64 * indirects, const GLsizei * sizes, GLuint count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawCommandsNV)(GLenum primitiveMode, GLuint buffer, const GLintptr * indirects, const GLsizei * sizes, GLuint count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawCommandsStatesAddressNV)(const GLuint64 * indirects, const GLsizei * sizes, const GLuint * states, const GLuint * fbos, GLuint count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawCommandsStatesNV)(GLuint buffer, const GLintptr * indirects, const GLsizei * sizes, const GLuint * states, const GLuint * fbos, GLuint count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementArrayAPPLE)(GLenum mode, GLint first, GLsizei count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementArrayATI)(GLenum mode, GLsizei count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElements)(GLenum mode, GLsizei count, GLenum type, const void * indices);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsBaseVertexEXT)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsBaseVertexOES)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsIndirect)(GLenum mode, GLenum type, const void * indirect);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsInstancedANGLE)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsInstancedBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLuint baseinstance);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsInstancedBaseInstanceEXT)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLuint baseinstance);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsInstancedBaseVertexBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsInstancedBaseVertexBaseInstanceEXT)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsInstancedBaseVertexEXT)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsInstancedBaseVertexOES)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawElementsInstancedNV)(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawMeshArraysSUN)(GLenum mode, GLint first, GLsizei count, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawMeshTasksIndirectNV)(GLintptr indirect);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawMeshTasksNV)(GLuint first, GLuint count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawRangeElementArrayAPPLE)(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawRangeElementArrayATI)(GLenum mode, GLuint start, GLuint end, GLsizei count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawRangeElementsBaseVertexEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawRangeElementsBaseVertexOES)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTexfOES)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTexfvOES)(const GLfloat * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTexiOES)(GLint x, GLint y, GLint z, GLint width, GLint height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTexivOES)(const GLint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTexsOES)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTexsvOES)(const GLshort * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTextureNV)(GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTexxOES)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTexxvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTransformFeedback)(GLenum mode, GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTransformFeedbackEXT)(GLenum mode, GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTransformFeedbackInstanced)(GLenum mode, GLuint id, GLsizei instancecount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTransformFeedbackInstancedEXT)(GLenum mode, GLuint id, GLsizei instancecount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTransformFeedbackNV)(GLenum mode, GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTransformFeedbackStream)(GLenum mode, GLuint id, GLuint stream);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawTransformFeedbackStreamInstanced)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glDrawVkImageNV)(GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEGLImageTargetRenderbufferStorageOES)(GLenum target, GLeglImageOES image);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEGLImageTargetTexStorageEXT)(GLenum target, GLeglImageOES image, const GLint* attrib_list);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEGLImageTargetTexture2DOES)(GLenum target, GLeglImageOES image);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEGLImageTargetTextureStorageEXT)(GLuint texture, GLeglImageOES image, const GLint* attrib_list);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEdgeFlag)(GLboolean flag);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEdgeFlagFormatNV)(GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEdgeFlagPointer)(GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEdgeFlagPointerListIBM)(GLint stride, const GLboolean ** pointer, GLint ptrstride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEdgeFlagv)(const GLboolean * flag);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glElementPointerAPPLE)(GLenum type, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glElementPointerATI)(GLenum type, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnable)(GLenum cap);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableClientState)(GLenum array);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableClientStateIndexedEXT)(GLenum array, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableClientStateiEXT)(GLenum array, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableDriverControlQCOM)(GLuint driverControl);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableIndexedEXT)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableVariantClientStateEXT)(GLuint id);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableVertexArrayAttrib)(GLuint vaobj, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableVertexArrayAttribEXT)(GLuint vaobj, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableVertexArrayEXT)(GLuint vaobj, GLenum array);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableVertexAttribAPPLE)(GLuint index, GLenum pname);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableVertexAttribArray)(GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableVertexAttribArrayARB)(GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnablei)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableiEXT)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableiNV)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnableiOES)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEnd)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndConditionalRender)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndConditionalRenderNV)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndConditionalRenderNVX)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndFragmentShaderATI)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndList)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndOcclusionQueryNV)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndPerfMonitorAMD)(GLuint monitor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndPerfQueryINTEL)(GLuint queryHandle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndQuery)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndQueryARB)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndQueryEXT)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndQueryIndexed)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndTilingQCOM)(GLbitfield preserveMask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndTransformFeedback)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndTransformFeedbackEXT)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndTransformFeedbackNV)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndVertexShaderEXT)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEndVideoCaptureNV)(GLuint video_capture_slot);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalCoord1d)(GLdouble u);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalCoord1dv)(const GLdouble * u);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalCoord1f)(GLfloat u);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalCoord1fv)(const GLfloat * u);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalCoord1xOES)(GLfixed u);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalCoord1xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalCoord2d)(GLdouble u, GLdouble v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalCoord2dv)(const GLdouble * u);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalCoord2f)(GLfloat u, GLfloat v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalCoord2fv)(const GLfloat * u);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalCoord2xOES)(GLfixed u, GLfixed v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalCoord2xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalMapsNV)(GLenum target, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalMesh1)(GLenum mode, GLint i1, GLint i2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalPoint1)(GLint i);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvalPoint2)(GLint i, GLint j);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glEvaluateDepthValuesARB)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExtGetBufferPointervQCOM)(GLenum target, void ** params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExtGetBuffersQCOM)(GLuint * buffers, GLint maxBuffers, GLint * numBuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExtGetFramebuffersQCOM)(GLuint * framebuffers, GLint maxFramebuffers, GLint * numFramebuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExtGetProgramBinarySourceQCOM)(GLuint program, GLenum shadertype, GLchar * source, GLint * length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExtGetProgramsQCOM)(GLuint * programs, GLint maxPrograms, GLint * numPrograms);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExtGetRenderbuffersQCOM)(GLuint * renderbuffers, GLint maxRenderbuffers, GLint * numRenderbuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExtGetShadersQCOM)(GLuint * shaders, GLint maxShaders, GLint * numShaders);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExtGetTexLevelParameterivQCOM)(GLuint texture, GLenum face, GLint level, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExtGetTexSubImageQCOM)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void * texels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExtGetTexturesQCOM)(GLuint * textures, GLint maxTextures, GLint * numTextures);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glExtIsProgramBinaryQCOM)(GLuint program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExtTexObjectStateOverrideiQCOM)(GLenum target, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glExtractComponentEXT)(GLuint res, GLuint src, GLuint num);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFeedbackBuffer)(GLsizei size, GLenum type, GLfloat * buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFeedbackBufferxOES)(GLsizei n, GLenum type, const GLfixed * buffer);
+
+EPOXY_PUBLIC GLsync (EPOXY_CALLSPEC *epoxy_glFenceSync)(GLenum condition, GLbitfield flags);
+
+EPOXY_PUBLIC GLsync (EPOXY_CALLSPEC *epoxy_glFenceSyncAPPLE)(GLenum condition, GLbitfield flags);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFinish)(void);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glFinishAsyncSGIX)(GLuint * markerp);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFinishFenceAPPLE)(GLuint fence);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFinishFenceNV)(GLuint fence);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFinishObjectAPPLE)(GLenum object, GLint name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFinishTextureSUNX)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFlush)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFlushMappedBufferRangeEXT)(GLenum target, GLintptr offset, GLsizeiptr length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFlushMappedNamedBufferRange)(GLuint buffer, GLintptr offset, GLsizeiptr length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFlushMappedNamedBufferRangeEXT)(GLuint buffer, GLintptr offset, GLsizeiptr length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFlushPixelDataRangeNV)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFlushRasterSGIX)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFlushStaticDataIBM)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFlushVertexArrayRangeAPPLE)(GLsizei length, void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFlushVertexArrayRangeNV)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoordFormatNV)(GLenum type, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoordPointer)(GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoordPointerEXT)(GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoordPointerListIBM)(GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoordd)(GLdouble coord);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoorddEXT)(GLdouble coord);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoorddv)(const GLdouble * coord);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoorddvEXT)(const GLdouble * coord);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoordf)(GLfloat coord);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoordfEXT)(GLfloat coord);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoordfv)(const GLfloat * coord);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoordfvEXT)(const GLfloat * coord);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoordhNV)(GLhalfNV fog);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogCoordhvNV)(const GLhalfNV * fog);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogFuncSGIS)(GLsizei n, const GLfloat * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogf)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogfv)(GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogi)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogiv)(GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogx)(GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogxOES)(GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogxv)(GLenum pname, const GLfixed * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFogxvOES)(GLenum pname, const GLfixed * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentColorMaterialSGIX)(GLenum face, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentCoverageColorNV)(GLuint color);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentLightModelfSGIX)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentLightModelfvSGIX)(GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentLightModeliSGIX)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentLightModelivSGIX)(GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentLightfSGIX)(GLenum light, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentLightfvSGIX)(GLenum light, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentLightiSGIX)(GLenum light, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentLightivSGIX)(GLenum light, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentMaterialfSGIX)(GLenum face, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentMaterialfvSGIX)(GLenum face, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentMaterialiSGIX)(GLenum face, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFragmentMaterialivSGIX)(GLenum face, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFrameTerminatorGREMEDY)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFrameZoomSGIX)(GLint factor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferDrawBufferEXT)(GLuint framebuffer, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferDrawBuffersEXT)(GLuint framebuffer, GLsizei n, const GLenum * bufs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferFetchBarrierEXT)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferFetchBarrierQCOM)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferFoveationConfigQCOM)(GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint * providedFeatures);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferFoveationParametersQCOM)(GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferParameteri)(GLenum target, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferParameteriMESA)(GLenum target, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferPixelLocalStorageSizeEXT)(GLuint target, GLsizei size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferReadBufferEXT)(GLuint framebuffer, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferRenderbufferOES)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferSampleLocationsfvARB)(GLenum target, GLuint start, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferSampleLocationsfvNV)(GLenum target, GLuint start, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferSamplePositionsfvAMD)(GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTexture2DDownsampleIMG)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTexture2DMultisampleEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTexture2DMultisampleIMG)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTexture2DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTexture3DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTextureEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTextureFaceEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTextureLayerARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTextureLayerDownsampleIMG)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTextureMultisampleMultiviewOVR)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTextureMultiviewOVR)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFramebufferTextureOES)(GLenum target, GLenum attachment, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFreeObjectBufferATI)(GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFrontFace)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFrustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFrustumf)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFrustumfOES)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFrustumx)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glFrustumxOES)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGenAsyncMarkersSGIX)(GLsizei range);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenBuffers)(GLsizei n, GLuint * buffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenBuffersARB)(GLsizei n, GLuint * buffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenFencesAPPLE)(GLsizei n, GLuint * fences);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenFencesNV)(GLsizei n, GLuint * fences);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGenFragmentShadersATI)(GLuint range);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenFramebuffers)(GLsizei n, GLuint * framebuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenFramebuffersEXT)(GLsizei n, GLuint * framebuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenFramebuffersOES)(GLsizei n, GLuint * framebuffers);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGenLists)(GLsizei range);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenNamesAMD)(GLenum identifier, GLuint num, GLuint * names);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenOcclusionQueriesNV)(GLsizei n, GLuint * ids);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGenPathsNV)(GLsizei range);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenPerfMonitorsAMD)(GLsizei n, GLuint * monitors);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenProgramPipelines)(GLsizei n, GLuint * pipelines);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenProgramPipelinesEXT)(GLsizei n, GLuint * pipelines);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenProgramsARB)(GLsizei n, GLuint * programs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenProgramsNV)(GLsizei n, GLuint * programs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenQueries)(GLsizei n, GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenQueriesARB)(GLsizei n, GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenQueriesEXT)(GLsizei n, GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenQueryResourceTagNV)(GLsizei n, GLint * tagIds);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenRenderbuffers)(GLsizei n, GLuint * renderbuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenRenderbuffersOES)(GLsizei n, GLuint * renderbuffers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenSamplers)(GLsizei count, GLuint * samplers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenSemaphoresEXT)(GLsizei n, GLuint * semaphores);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGenSymbolsEXT)(GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenTextures)(GLsizei n, GLuint * textures);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenTexturesEXT)(GLsizei n, GLuint * textures);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenTransformFeedbacks)(GLsizei n, GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenTransformFeedbacksNV)(GLsizei n, GLuint * ids);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenVertexArrays)(GLsizei n, GLuint * arrays);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenVertexArraysAPPLE)(GLsizei n, GLuint * arrays);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenVertexArraysOES)(GLsizei n, GLuint * arrays);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGenVertexShadersEXT)(GLuint range);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenerateMipmap)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenerateMipmapEXT)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenerateMipmapOES)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenerateMultiTexMipmapEXT)(GLenum texunit, GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenerateTextureMipmap)(GLuint texture);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGenerateTextureMipmapEXT)(GLuint texture, GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveAtomicCounterBufferiv)(GLuint program, GLuint bufferIndex, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveAttribARB)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveSubroutineName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei * length, GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveSubroutineUniformName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei * length, GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveSubroutineUniformiv)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveUniformARB)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformBlockName);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformName);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetActiveVaryingNV)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetArrayObjectfvATI)(GLenum array, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetArrayObjectivATI)(GLenum array, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxCount, GLsizei * count, GLhandleARB * obj);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetAttribLocation)(GLuint program, const GLchar * name);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetAttribLocationARB)(GLhandleARB programObj, const GLcharARB * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetBooleanIndexedvEXT)(GLenum target, GLuint index, GLboolean * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetBooleani_v)(GLenum target, GLuint index, GLboolean * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetBooleanv)(GLenum pname, GLboolean * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetBufferParameteriv)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetBufferParameterui64vNV)(GLenum target, GLenum pname, GLuint64EXT * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetBufferPointerv)(GLenum target, GLenum pname, void ** params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetBufferPointervARB)(GLenum target, GLenum pname, void ** params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetBufferPointervOES)(GLenum target, GLenum pname, void ** params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetClipPlane)(GLenum plane, GLdouble * equation);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetClipPlanef)(GLenum plane, GLfloat * equation);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetClipPlanefOES)(GLenum plane, GLfloat * equation);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetClipPlanex)(GLenum plane, GLfixed * equation);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetClipPlanexOES)(GLenum plane, GLfixed * equation);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetColorTable)(GLenum target, GLenum format, GLenum type, void * table);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetColorTableEXT)(GLenum target, GLenum format, GLenum type, void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetColorTableParameterfvSGI)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetColorTableParameteriv)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetColorTableParameterivSGI)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetColorTableSGI)(GLenum target, GLenum format, GLenum type, void * table);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetCombinerStageParameterfvNV)(GLenum stage, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGetCommandHeaderNV)(GLenum tokenID, GLuint size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetCompressedMultiTexImageEXT)(GLenum texunit, GLenum target, GLint lod, void * img);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetCompressedTexImage)(GLenum target, GLint level, void * img);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetCompressedTexImageARB)(GLenum target, GLint level, void * img);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetCompressedTextureImage)(GLuint texture, GLint level, GLsizei bufSize, void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetCompressedTextureImageEXT)(GLuint texture, GLenum target, GLint lod, void * img);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetCompressedTextureSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetConvolutionFilter)(GLenum target, GLenum format, GLenum type, void * image);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetConvolutionFilterEXT)(GLenum target, GLenum format, GLenum type, void * image);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetConvolutionParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetConvolutionParameteriv)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetConvolutionParameterivEXT)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetConvolutionParameterxvOES)(GLenum target, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetCoverageModulationTableNV)(GLsizei bufsize, GLfloat * v);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGetDebugMessageLog)(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGetDebugMessageLogAMD)(GLuint count, GLsizei bufsize, GLenum * categories, GLuint * severities, GLuint * ids, GLsizei * lengths, GLchar * message);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGetDebugMessageLogARB)(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGetDebugMessageLogKHR)(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetDetailTexFuncSGIS)(GLenum target, GLfloat * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetDoubleIndexedvEXT)(GLenum target, GLuint index, GLdouble * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetDoublei_v)(GLenum target, GLuint index, GLdouble * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetDoublei_vEXT)(GLenum pname, GLuint index, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetDoublev)(GLenum pname, GLdouble * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetDriverControlStringQCOM)(GLuint driverControl, GLsizei bufSize, GLsizei * length, GLchar * driverControlString);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetDriverControlsQCOM)(GLint * num, GLsizei size, GLuint * driverControls);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glGetError)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFenceivNV)(GLuint fence, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFirstPerfQueryIdINTEL)(GLuint * queryId);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFixedv)(GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFixedvOES)(GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFloatIndexedvEXT)(GLenum target, GLuint index, GLfloat * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFloati_v)(GLenum target, GLuint index, GLfloat * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFloati_vEXT)(GLenum pname, GLuint index, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFloati_vNV)(GLenum target, GLuint index, GLfloat * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFloati_vOES)(GLenum target, GLuint index, GLfloat * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFloatv)(GLenum pname, GLfloat * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFogFuncSGIS)(GLfloat * points);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetFragDataIndex)(GLuint program, const GLchar * name);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetFragDataIndexEXT)(GLuint program, const GLchar * name);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetFragDataLocation)(GLuint program, const GLchar * name);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetFragDataLocationEXT)(GLuint program, const GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFragmentLightfvSGIX)(GLenum light, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFragmentLightivSGIX)(GLenum light, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFragmentMaterialfvSGIX)(GLenum face, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFragmentMaterialivSGIX)(GLenum face, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFramebufferAttachmentParameterivOES)(GLenum target, GLenum attachment, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFramebufferParameterfvAMD)(GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFramebufferParameteriv)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFramebufferParameterivEXT)(GLuint framebuffer, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetFramebufferParameterivMESA)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC GLsizei (EPOXY_CALLSPEC *epoxy_glGetFramebufferPixelLocalStorageSizeEXT)(GLuint target);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glGetGraphicsResetStatus)(void);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glGetGraphicsResetStatusARB)(void);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glGetGraphicsResetStatusEXT)(void);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glGetGraphicsResetStatusKHR)(void);
+
+EPOXY_PUBLIC GLhandleARB (EPOXY_CALLSPEC *epoxy_glGetHandleARB)(GLenum pname);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, void * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetHistogramEXT)(GLenum target, GLboolean reset, GLenum format, GLenum type, void * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetHistogramParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetHistogramParameteriv)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetHistogramParameterivEXT)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetHistogramParameterxvOES)(GLenum target, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC GLuint64 (EPOXY_CALLSPEC *epoxy_glGetImageHandleARB)(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
+
+EPOXY_PUBLIC GLuint64 (EPOXY_CALLSPEC *epoxy_glGetImageHandleNV)(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetImageTransformParameterfvHP)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetImageTransformParameterivHP)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetInstrumentsSGIX)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetInteger64i_v)(GLenum target, GLuint index, GLint64 * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetInteger64v)(GLenum pname, GLint64 * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetInteger64vAPPLE)(GLenum pname, GLint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetIntegerIndexedvEXT)(GLenum target, GLuint index, GLint * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetIntegeri_v)(GLenum target, GLuint index, GLint * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetIntegeri_vEXT)(GLenum target, GLuint index, GLint * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetIntegerui64i_vNV)(GLenum value, GLuint index, GLuint64EXT * result);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetIntegerui64vNV)(GLenum value, GLuint64EXT * result);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetIntegerv)(GLenum pname, GLint * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetInternalformatSampleivNV)(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetInternalformati64v)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetInternalformativ)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetInvariantBooleanvEXT)(GLuint id, GLenum value, GLboolean * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetInvariantFloatvEXT)(GLuint id, GLenum value, GLfloat * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetInvariantIntegervEXT)(GLuint id, GLenum value, GLint * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetLightfv)(GLenum light, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetLightiv)(GLenum light, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetLightxOES)(GLenum light, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetLightxv)(GLenum light, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetLightxvOES)(GLenum light, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetListParameterfvSGIX)(GLuint list, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetListParameterivSGIX)(GLuint list, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetLocalConstantBooleanvEXT)(GLuint id, GLenum value, GLboolean * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetLocalConstantFloatvEXT)(GLuint id, GLenum value, GLfloat * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetLocalConstantIntegervEXT)(GLuint id, GLenum value, GLint * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMapAttribParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMapAttribParameterivNV)(GLenum target, GLuint index, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMapControlPointsNV)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMapParameterfvNV)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMapParameterivNV)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMapdv)(GLenum target, GLenum query, GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMapfv)(GLenum target, GLenum query, GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMapiv)(GLenum target, GLenum query, GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMapxvOES)(GLenum target, GLenum query, GLfixed * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMaterialfv)(GLenum face, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMaterialiv)(GLenum face, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMaterialxOES)(GLenum face, GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMaterialxv)(GLenum face, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMaterialxvOES)(GLenum face, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMemoryObjectDetachedResourcesuivNV)(GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMemoryObjectParameterivEXT)(GLuint memoryObject, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMinmax)(GLenum target, GLboolean reset, GLenum format, GLenum type, void * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMinmaxEXT)(GLenum target, GLboolean reset, GLenum format, GLenum type, void * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMinmaxParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMinmaxParameteriv)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMinmaxParameterivEXT)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultiTexEnvfvEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultiTexEnvivEXT)(GLenum texunit, GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultiTexGendvEXT)(GLenum texunit, GLenum coord, GLenum pname, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultiTexGenfvEXT)(GLenum texunit, GLenum coord, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultiTexGenivEXT)(GLenum texunit, GLenum coord, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultiTexImageEXT)(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultiTexLevelParameterfvEXT)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultiTexLevelParameterivEXT)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultiTexParameterIivEXT)(GLenum texunit, GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultiTexParameterIuivEXT)(GLenum texunit, GLenum target, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultiTexParameterfvEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultiTexParameterivEXT)(GLenum texunit, GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultisamplefv)(GLenum pname, GLuint index, GLfloat * val);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetMultisamplefvNV)(GLenum pname, GLuint index, GLfloat * val);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedBufferParameteri64v)(GLuint buffer, GLenum pname, GLint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedBufferParameteriv)(GLuint buffer, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedBufferParameterivEXT)(GLuint buffer, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedBufferParameterui64vNV)(GLuint buffer, GLenum pname, GLuint64EXT * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedBufferPointerv)(GLuint buffer, GLenum pname, void ** params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedBufferPointervEXT)(GLuint buffer, GLenum pname, void ** params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr size, void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedBufferSubDataEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedFramebufferAttachmentParameteriv)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedFramebufferAttachmentParameterivEXT)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedFramebufferParameterfvAMD)(GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedFramebufferParameteriv)(GLuint framebuffer, GLenum pname, GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedFramebufferParameterivEXT)(GLuint framebuffer, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedProgramLocalParameterIivEXT)(GLuint program, GLenum target, GLuint index, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedProgramLocalParameterIuivEXT)(GLuint program, GLenum target, GLuint index, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedProgramLocalParameterdvEXT)(GLuint program, GLenum target, GLuint index, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedProgramLocalParameterfvEXT)(GLuint program, GLenum target, GLuint index, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedProgramStringEXT)(GLuint program, GLenum target, GLenum pname, void * string);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedProgramivEXT)(GLuint program, GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedRenderbufferParameteriv)(GLuint renderbuffer, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedRenderbufferParameterivEXT)(GLuint renderbuffer, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedStringARB)(GLint namelen, const GLchar * name, GLsizei bufSize, GLint * stringlen, GLchar * string);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNamedStringivARB)(GLint namelen, const GLchar * name, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetNextPerfQueryIdINTEL)(GLuint queryId, GLuint * nextQueryId);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetObjectBufferfvATI)(GLuint buffer, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetObjectBufferivATI)(GLuint buffer, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetObjectLabel)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetObjectLabelEXT)(GLenum type, GLuint object, GLsizei bufSize, GLsizei * length, GLchar * label);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetObjectLabelKHR)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetObjectPtrLabel)(const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetObjectPtrLabelKHR)(const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetOcclusionQueryivNV)(GLuint id, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetOcclusionQueryuivNV)(GLuint id, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPathColorGenfvNV)(GLenum color, GLenum pname, GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPathColorGenivNV)(GLenum color, GLenum pname, GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPathCommandsNV)(GLuint path, GLubyte * commands);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPathCoordsNV)(GLuint path, GLfloat * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPathDashArrayNV)(GLuint path, GLfloat * dashArray);
+
+EPOXY_PUBLIC GLfloat (EPOXY_CALLSPEC *epoxy_glGetPathLengthNV)(GLuint path, GLsizei startSegment, GLsizei numSegments);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPathMetricRangeNV)(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat * metrics);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPathMetricsNV)(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLsizei stride, GLfloat * metrics);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPathParameterfvNV)(GLuint path, GLenum pname, GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPathParameterivNV)(GLuint path, GLenum pname, GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPathSpacingNV)(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat * returnedSpacing);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPathTexGenfvNV)(GLenum texCoordSet, GLenum pname, GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPathTexGenivNV)(GLenum texCoordSet, GLenum pname, GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPerfCounterInfoINTEL)(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar * counterName, GLuint counterDescLength, GLchar * counterDesc, GLuint * counterOffset, GLuint * counterDataSize, GLuint * counterTypeEnum, GLuint * counterDataTypeEnum, GLuint64 * rawCounterMaxValue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPerfMonitorCounterDataAMD)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint * data, GLint * bytesWritten);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPerfMonitorCounterInfoAMD)(GLuint group, GLuint counter, GLenum pname, void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPerfMonitorCounterStringAMD)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei * length, GLchar * counterString);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPerfMonitorCountersAMD)(GLuint group, GLint * numCounters, GLint * maxActiveCounters, GLsizei counterSize, GLuint * counters);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPerfMonitorGroupStringAMD)(GLuint group, GLsizei bufSize, GLsizei * length, GLchar * groupString);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPerfMonitorGroupsAMD)(GLint * numGroups, GLsizei groupsSize, GLuint * groups);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPerfQueryDataINTEL)(GLuint queryHandle, GLuint flags, GLsizei dataSize, void * data, GLuint * bytesWritten);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPerfQueryIdByNameINTEL)(GLchar * queryName, GLuint * queryId);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPerfQueryInfoINTEL)(GLuint queryId, GLuint queryNameLength, GLchar * queryName, GLuint * dataSize, GLuint * noCounters, GLuint * noInstances, GLuint * capsMask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPixelMapfv)(GLenum map, GLfloat * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPixelMapuiv)(GLenum map, GLuint * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPixelMapusv)(GLenum map, GLushort * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPixelMapxv)(GLenum map, GLint size, GLfixed * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPixelTransformParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPixelTransformParameterivEXT)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPointerIndexedvEXT)(GLenum target, GLuint index, void ** data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPointeri_vEXT)(GLenum pname, GLuint index, void ** params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPointerv)(GLenum pname, void ** params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPointervEXT)(GLenum pname, void ** params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPointervKHR)(GLenum pname, void ** params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetPolygonStipple)(GLubyte * mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramBinary)(GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, void * binary);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramBinaryOES)(GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, void * binary);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramEnvParameterIivNV)(GLenum target, GLuint index, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramEnvParameterIuivNV)(GLenum target, GLuint index, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramInterfaceiv)(GLuint program, GLenum programInterface, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramLocalParameterIivNV)(GLenum target, GLuint index, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramLocalParameterIuivNV)(GLenum target, GLuint index, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramPipelineInfoLog)(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramPipelineInfoLogEXT)(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramPipelineiv)(GLuint pipeline, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramPipelineivEXT)(GLuint pipeline, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGetProgramResourceIndex)(GLuint program, GLenum programInterface, const GLchar * name);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetProgramResourceLocation)(GLuint program, GLenum programInterface, const GLchar * name);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetProgramResourceLocationIndex)(GLuint program, GLenum programInterface, const GLchar * name);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetProgramResourceLocationIndexEXT)(GLuint program, GLenum programInterface, const GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramResourceName)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei * length, GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramResourcefvNV)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei * length, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramResourceiv)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei * length, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramStageiv)(GLuint program, GLenum shadertype, GLenum pname, GLint * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramStringARB)(GLenum target, GLenum pname, void * string);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramSubroutineParameteruivNV)(GLenum target, GLuint index, GLuint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramiv)(GLuint program, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramivARB)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetProgramivNV)(GLuint id, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryBufferObjecti64v)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryBufferObjectiv)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryBufferObjectui64v)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryBufferObjectuiv)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryIndexediv)(GLenum target, GLuint index, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryObjectiv)(GLuint id, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryObjectivEXT)(GLuint id, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryObjectuiv)(GLuint id, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryObjectuivEXT)(GLuint id, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryiv)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryivARB)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetQueryivEXT)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetRenderbufferParameterivOES)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSamplerParameterIivEXT)(GLuint sampler, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSamplerParameterIivOES)(GLuint sampler, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSamplerParameterIuivEXT)(GLuint sampler, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSamplerParameterIuivOES)(GLuint sampler, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSemaphoreParameterui64vEXT)(GLuint semaphore, GLenum pname, GLuint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSeparableFilter)(GLenum target, GLenum format, GLenum type, void * row, void * column, void * span);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSeparableFilterEXT)(GLenum target, GLenum format, GLenum type, void * row, void * column, void * span);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetShaderSourceARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * source);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetShaderiv)(GLuint shader, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetShadingRateImagePaletteNV)(GLuint viewport, GLuint entry, GLenum * rate);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetShadingRateSampleLocationivNV)(GLenum rate, GLuint samples, GLuint index, GLint * location);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSharpenTexFuncSGIS)(GLenum target, GLfloat * points);
+
+EPOXY_PUBLIC GLushort (EPOXY_CALLSPEC *epoxy_glGetStageIndexNV)(GLenum shadertype);
+
+EPOXY_PUBLIC const GLubyte * (EPOXY_CALLSPEC *epoxy_glGetString)(GLenum name);
+
+EPOXY_PUBLIC const GLubyte * (EPOXY_CALLSPEC *epoxy_glGetStringi)(GLenum name, GLuint index);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGetSubroutineIndex)(GLuint program, GLenum shadertype, const GLchar * name);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetSubroutineUniformLocation)(GLuint program, GLenum shadertype, const GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetSyncivAPPLE)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexBumpParameterfvATI)(GLenum pname, GLfloat * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexBumpParameterivATI)(GLenum pname, GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexEnvfv)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexEnviv)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexEnvxv)(GLenum target, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexEnvxvOES)(GLenum target, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexFilterFuncSGIS)(GLenum target, GLenum filter, GLfloat * weights);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexGendv)(GLenum coord, GLenum pname, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexGenfv)(GLenum coord, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexGenfvOES)(GLenum coord, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexGeniv)(GLenum coord, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexGenivOES)(GLenum coord, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexGenxvOES)(GLenum coord, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexLevelParameterxvOES)(GLenum target, GLint level, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexParameterIiv)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexParameterIivEXT)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexParameterIivOES)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexParameterIuiv)(GLenum target, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexParameterIuivOES)(GLenum target, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexParameterPointervAPPLE)(GLenum target, GLenum pname, void ** params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexParameterfv)(GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexParameteriv)(GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexParameterxv)(GLenum target, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTexParameterxvOES)(GLenum target, GLenum pname, GLfixed * params);
+
+EPOXY_PUBLIC GLuint64 (EPOXY_CALLSPEC *epoxy_glGetTextureHandleARB)(GLuint texture);
+
+EPOXY_PUBLIC GLuint64 (EPOXY_CALLSPEC *epoxy_glGetTextureHandleIMG)(GLuint texture);
+
+EPOXY_PUBLIC GLuint64 (EPOXY_CALLSPEC *epoxy_glGetTextureHandleNV)(GLuint texture);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureImage)(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureImageEXT)(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureLevelParameterfv)(GLuint texture, GLint level, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureLevelParameterfvEXT)(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureLevelParameteriv)(GLuint texture, GLint level, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureLevelParameterivEXT)(GLuint texture, GLenum target, GLint level, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureParameterIiv)(GLuint texture, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureParameterIivEXT)(GLuint texture, GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureParameterIuiv)(GLuint texture, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureParameterIuivEXT)(GLuint texture, GLenum target, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureParameterfv)(GLuint texture, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureParameterfvEXT)(GLuint texture, GLenum target, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureParameteriv)(GLuint texture, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureParameterivEXT)(GLuint texture, GLenum target, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC GLuint64 (EPOXY_CALLSPEC *epoxy_glGetTextureSamplerHandleARB)(GLuint texture, GLuint sampler);
+
+EPOXY_PUBLIC GLuint64 (EPOXY_CALLSPEC *epoxy_glGetTextureSamplerHandleIMG)(GLuint texture, GLuint sampler);
+
+EPOXY_PUBLIC GLuint64 (EPOXY_CALLSPEC *epoxy_glGetTextureSamplerHandleNV)(GLuint texture, GLuint sampler);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTextureSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTransformFeedbackVaryingNV)(GLuint program, GLuint index, GLint * location);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTransformFeedbacki64_v)(GLuint xfb, GLenum pname, GLuint index, GLint64 * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTransformFeedbacki_v)(GLuint xfb, GLenum pname, GLuint index, GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTransformFeedbackiv)(GLuint xfb, GLenum pname, GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetTranslatedShaderSourceANGLE)(GLuint shader, GLsizei bufsize, GLsizei * length, GLchar * source);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glGetUniformBlockIndex)(GLuint program, const GLchar * uniformBlockName);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetUniformBufferSizeEXT)(GLuint program, GLint location);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint * uniformIndices);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetUniformLocation)(GLuint program, const GLchar * name);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetUniformLocationARB)(GLhandleARB programObj, const GLcharARB * name);
+
+EPOXY_PUBLIC GLintptr (EPOXY_CALLSPEC *epoxy_glGetUniformOffsetEXT)(GLuint program, GLint location);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformSubroutineuiv)(GLenum shadertype, GLint location, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformdv)(GLuint program, GLint location, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformfv)(GLuint program, GLint location, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformfvARB)(GLhandleARB programObj, GLint location, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformi64vARB)(GLuint program, GLint location, GLint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformi64vNV)(GLuint program, GLint location, GLint64EXT * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformiv)(GLuint program, GLint location, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformivARB)(GLhandleARB programObj, GLint location, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformui64vARB)(GLuint program, GLint location, GLuint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformui64vNV)(GLuint program, GLint location, GLuint64EXT * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformuiv)(GLuint program, GLint location, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUniformuivEXT)(GLuint program, GLint location, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUnsignedBytei_vEXT)(GLenum target, GLuint index, GLubyte * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetUnsignedBytevEXT)(GLenum pname, GLubyte * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVariantArrayObjectfvATI)(GLuint id, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVariantArrayObjectivATI)(GLuint id, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVariantBooleanvEXT)(GLuint id, GLenum value, GLboolean * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVariantFloatvEXT)(GLuint id, GLenum value, GLfloat * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVariantIntegervEXT)(GLuint id, GLenum value, GLint * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVariantPointervEXT)(GLuint id, GLenum value, void ** data);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glGetVaryingLocationNV)(GLuint program, const GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexArrayIndexed64iv)(GLuint vaobj, GLuint index, GLenum pname, GLint64 * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexArrayIndexediv)(GLuint vaobj, GLuint index, GLenum pname, GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexArrayIntegeri_vEXT)(GLuint vaobj, GLuint index, GLenum pname, GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexArrayIntegervEXT)(GLuint vaobj, GLenum pname, GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexArrayPointeri_vEXT)(GLuint vaobj, GLuint index, GLenum pname, void ** param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexArrayPointervEXT)(GLuint vaobj, GLenum pname, void ** param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexArrayiv)(GLuint vaobj, GLenum pname, GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribArrayObjectfvATI)(GLuint index, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribArrayObjectivATI)(GLuint index, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribIiv)(GLuint index, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribLdv)(GLuint index, GLenum pname, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribLdvEXT)(GLuint index, GLenum pname, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribLi64vNV)(GLuint index, GLenum pname, GLint64EXT * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribLui64vARB)(GLuint index, GLenum pname, GLuint64EXT * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribLui64vNV)(GLuint index, GLenum pname, GLuint64EXT * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribPointerv)(GLuint index, GLenum pname, void ** pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribPointervARB)(GLuint index, GLenum pname, void ** pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribPointervNV)(GLuint index, GLenum pname, void ** pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribdv)(GLuint index, GLenum pname, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribiv)(GLuint index, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVideoCaptureStreamdvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVideoCaptureStreamfvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVideoCaptureStreamivNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVideoCaptureivNV)(GLuint video_capture_slot, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVideoi64vNV)(GLuint video_slot, GLenum pname, GLint64EXT * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVideoivNV)(GLuint video_slot, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVideoui64vNV)(GLuint video_slot, GLenum pname, GLuint64EXT * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetVideouivNV)(GLuint video_slot, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC GLVULKANPROCNV (EPOXY_CALLSPEC *epoxy_glGetVkProcAddrNV)(const GLchar * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnColorTable)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void * table);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnColorTableARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void * table);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnCompressedTexImage)(GLenum target, GLint lod, GLsizei bufSize, void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnCompressedTexImageARB)(GLenum target, GLint lod, GLsizei bufSize, void * img);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void * image);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnConvolutionFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void * image);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnHistogramARB)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnMapdv)(GLenum target, GLenum query, GLsizei bufSize, GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnMapdvARB)(GLenum target, GLenum query, GLsizei bufSize, GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnMapfv)(GLenum target, GLenum query, GLsizei bufSize, GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnMapfvARB)(GLenum target, GLenum query, GLsizei bufSize, GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnMapiv)(GLenum target, GLenum query, GLsizei bufSize, GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnMapivARB)(GLenum target, GLenum query, GLsizei bufSize, GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnMinmax)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnMinmaxARB)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnPixelMapfv)(GLenum map, GLsizei bufSize, GLfloat * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnPixelMapfvARB)(GLenum map, GLsizei bufSize, GLfloat * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnPixelMapuiv)(GLenum map, GLsizei bufSize, GLuint * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnPixelMapuivARB)(GLenum map, GLsizei bufSize, GLuint * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnPixelMapusv)(GLenum map, GLsizei bufSize, GLushort * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnPixelMapusvARB)(GLenum map, GLsizei bufSize, GLushort * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnPolygonStipple)(GLsizei bufSize, GLubyte * pattern);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnPolygonStippleARB)(GLsizei bufSize, GLubyte * pattern);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnSeparableFilter)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void * row, GLsizei columnBufSize, void * column, void * span);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnSeparableFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void * row, GLsizei columnBufSize, void * column, void * span);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnTexImageARB)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void * img);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformdv)(GLuint program, GLint location, GLsizei bufSize, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformdvARB)(GLuint program, GLint location, GLsizei bufSize, GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformfv)(GLuint program, GLint location, GLsizei bufSize, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformfvARB)(GLuint program, GLint location, GLsizei bufSize, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformfvEXT)(GLuint program, GLint location, GLsizei bufSize, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformfvKHR)(GLuint program, GLint location, GLsizei bufSize, GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformi64vARB)(GLuint program, GLint location, GLsizei bufSize, GLint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformiv)(GLuint program, GLint location, GLsizei bufSize, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformivARB)(GLuint program, GLint location, GLsizei bufSize, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformivEXT)(GLuint program, GLint location, GLsizei bufSize, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformivKHR)(GLuint program, GLint location, GLsizei bufSize, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformui64vARB)(GLuint program, GLint location, GLsizei bufSize, GLuint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformuiv)(GLuint program, GLint location, GLsizei bufSize, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformuivARB)(GLuint program, GLint location, GLsizei bufSize, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGetnUniformuivKHR)(GLuint program, GLint location, GLsizei bufSize, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGlobalAlphaFactorbSUN)(GLbyte factor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGlobalAlphaFactordSUN)(GLdouble factor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGlobalAlphaFactorfSUN)(GLfloat factor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGlobalAlphaFactoriSUN)(GLint factor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGlobalAlphaFactorsSUN)(GLshort factor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGlobalAlphaFactorubSUN)(GLubyte factor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGlobalAlphaFactoruiSUN)(GLuint factor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glGlobalAlphaFactorusSUN)(GLushort factor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glHint)(GLenum target, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glHintPGI)(GLenum target, GLint mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glHistogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glHistogramEXT)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIglooInterfaceSGIX)(GLenum pname, const void * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glImageTransformParameterfHP)(GLenum target, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glImageTransformParameterfvHP)(GLenum target, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glImageTransformParameteriHP)(GLenum target, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glImageTransformParameterivHP)(GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glImportMemoryFdEXT)(GLuint memory, GLuint64 size, GLenum handleType, GLint fd);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glImportMemoryWin32HandleEXT)(GLuint memory, GLuint64 size, GLenum handleType, void * handle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glImportMemoryWin32NameEXT)(GLuint memory, GLuint64 size, GLenum handleType, const void * name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glImportSemaphoreFdEXT)(GLuint semaphore, GLenum handleType, GLint fd);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glImportSemaphoreWin32HandleEXT)(GLuint semaphore, GLenum handleType, void * handle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glImportSemaphoreWin32NameEXT)(GLuint semaphore, GLenum handleType, const void * name);
+
+EPOXY_PUBLIC GLsync (EPOXY_CALLSPEC *epoxy_glImportSyncEXT)(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexFormatNV)(GLenum type, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexFuncEXT)(GLenum func, GLclampf ref);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexMask)(GLuint mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexMaterialEXT)(GLenum face, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexPointer)(GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexPointerListIBM)(GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexd)(GLdouble c);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexdv)(const GLdouble * c);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexf)(GLfloat c);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexfv)(const GLfloat * c);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexi)(GLint c);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexiv)(const GLint * c);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexs)(GLshort c);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexsv)(const GLshort * c);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexub)(GLubyte c);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexubv)(const GLubyte * c);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexxOES)(GLfixed component);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glIndexxvOES)(const GLfixed * component);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInitNames)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInsertComponentEXT)(GLuint res, GLuint src, GLuint num);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInsertEventMarkerEXT)(GLsizei length, const GLchar * marker);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInstrumentsBufferSGIX)(GLsizei size, GLint * buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInterleavedArrays)(GLenum format, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInterpolatePathsNV)(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInvalidateBufferData)(GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInvalidateNamedFramebufferData)(GLuint framebuffer, GLsizei numAttachments, const GLenum * attachments);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInvalidateNamedFramebufferSubData)(GLuint framebuffer, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInvalidateTexImage)(GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glInvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsAsyncMarkerSGIX)(GLuint marker);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsBuffer)(GLuint buffer);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsBufferARB)(GLuint buffer);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsBufferResidentNV)(GLenum target);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsCommandListNV)(GLuint list);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsEnabled)(GLenum cap);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsEnabledIndexedEXT)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsEnabledi)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsEnablediEXT)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsEnablediNV)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsEnablediOES)(GLenum target, GLuint index);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsFenceAPPLE)(GLuint fence);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsFenceNV)(GLuint fence);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsFramebuffer)(GLuint framebuffer);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsFramebufferEXT)(GLuint framebuffer);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsFramebufferOES)(GLuint framebuffer);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsImageHandleResidentARB)(GLuint64 handle);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsImageHandleResidentNV)(GLuint64 handle);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsList)(GLuint list);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsMemoryObjectEXT)(GLuint memoryObject);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsNameAMD)(GLenum identifier, GLuint name);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsNamedBufferResidentNV)(GLuint buffer);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsNamedStringARB)(GLint namelen, const GLchar * name);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsObjectBufferATI)(GLuint buffer);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsOcclusionQueryNV)(GLuint id);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsPathNV)(GLuint path);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsPointInFillPathNV)(GLuint path, GLuint mask, GLfloat x, GLfloat y);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsPointInStrokePathNV)(GLuint path, GLfloat x, GLfloat y);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsProgram)(GLuint program);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsProgramARB)(GLuint program);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsProgramNV)(GLuint id);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsProgramPipeline)(GLuint pipeline);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsProgramPipelineEXT)(GLuint pipeline);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsQuery)(GLuint id);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsQueryARB)(GLuint id);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsQueryEXT)(GLuint id);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsRenderbuffer)(GLuint renderbuffer);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsRenderbufferEXT)(GLuint renderbuffer);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsRenderbufferOES)(GLuint renderbuffer);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsSampler)(GLuint sampler);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsSemaphoreEXT)(GLuint semaphore);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsShader)(GLuint shader);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsStateNV)(GLuint state);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsSync)(GLsync sync);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsSyncAPPLE)(GLsync sync);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsTexture)(GLuint texture);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsTextureEXT)(GLuint texture);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsTextureHandleResidentARB)(GLuint64 handle);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsTextureHandleResidentNV)(GLuint64 handle);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsTransformFeedback)(GLuint id);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsTransformFeedbackNV)(GLuint id);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsVariantEnabledEXT)(GLuint id, GLenum cap);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsVertexArray)(GLuint array);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsVertexArrayAPPLE)(GLuint array);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsVertexArrayOES)(GLuint array);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glIsVertexAttribEnabledAPPLE)(GLuint index, GLenum pname);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLGPUCopyImageSubDataNVX)(GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLGPUInterlockNVX)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLGPUNamedBufferSubDataNVX)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLabelObjectEXT)(GLenum type, GLuint object, GLsizei length, const GLchar * label);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightEnviSGIX)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightModelf)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightModelfv)(GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightModeli)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightModeliv)(GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightModelx)(GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightModelxOES)(GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightModelxv)(GLenum pname, const GLfixed * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightModelxvOES)(GLenum pname, const GLfixed * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightf)(GLenum light, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightfv)(GLenum light, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLighti)(GLenum light, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightiv)(GLenum light, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightx)(GLenum light, GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightxOES)(GLenum light, GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightxv)(GLenum light, GLenum pname, const GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLightxvOES)(GLenum light, GLenum pname, const GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLineStipple)(GLint factor, GLushort pattern);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLineWidth)(GLfloat width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLineWidthx)(GLfixed width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLineWidthxOES)(GLfixed width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLinkProgram)(GLuint program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLinkProgramARB)(GLhandleARB programObj);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glListBase)(GLuint base);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glListDrawCommandsStatesClientNV)(GLuint list, GLuint segment, const void ** indirects, const GLsizei * sizes, const GLuint * states, const GLuint * fbos, GLuint count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glListParameterfSGIX)(GLuint list, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glListParameterfvSGIX)(GLuint list, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glListParameteriSGIX)(GLuint list, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glListParameterivSGIX)(GLuint list, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadIdentity)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadIdentityDeformationMapSGIX)(GLbitfield mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadMatrixd)(const GLdouble * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadMatrixf)(const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadMatrixx)(const GLfixed * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadMatrixxOES)(const GLfixed * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadName)(GLuint name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadPaletteFromModelViewMatrixOES)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadTransposeMatrixd)(const GLdouble * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadTransposeMatrixdARB)(const GLdouble * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadTransposeMatrixf)(const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadTransposeMatrixfARB)(const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLoadTransposeMatrixxOES)(const GLfixed * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLockArraysEXT)(GLint first, GLsizei count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glLogicOp)(GLenum opcode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMakeBufferNonResidentNV)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMakeBufferResidentNV)(GLenum target, GLenum access);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMakeImageHandleNonResidentARB)(GLuint64 handle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMakeImageHandleNonResidentNV)(GLuint64 handle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMakeImageHandleResidentARB)(GLuint64 handle, GLenum access);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMakeImageHandleResidentNV)(GLuint64 handle, GLenum access);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMakeNamedBufferNonResidentNV)(GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMakeNamedBufferResidentNV)(GLuint buffer, GLenum access);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMakeTextureHandleNonResidentARB)(GLuint64 handle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMakeTextureHandleNonResidentNV)(GLuint64 handle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMakeTextureHandleResidentARB)(GLuint64 handle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMakeTextureHandleResidentNV)(GLuint64 handle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMap1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMap1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMap1xOES)(GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMap2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMap2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMap2xOES)(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);
+
+EPOXY_PUBLIC void * (EPOXY_CALLSPEC *epoxy_glMapBuffer)(GLenum target, GLenum access);
+
+EPOXY_PUBLIC void * (EPOXY_CALLSPEC *epoxy_glMapBufferARB)(GLenum target, GLenum access);
+
+EPOXY_PUBLIC void * (EPOXY_CALLSPEC *epoxy_glMapBufferOES)(GLenum target, GLenum access);
+
+EPOXY_PUBLIC void * (EPOXY_CALLSPEC *epoxy_glMapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+
+EPOXY_PUBLIC void * (EPOXY_CALLSPEC *epoxy_glMapBufferRangeEXT)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapControlPointsNV)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapGrid1d)(GLint un, GLdouble u1, GLdouble u2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapGrid1f)(GLint un, GLfloat u1, GLfloat u2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapGrid1xOES)(GLint n, GLfixed u1, GLfixed u2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapGrid2xOES)(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);
+
+EPOXY_PUBLIC void * (EPOXY_CALLSPEC *epoxy_glMapNamedBuffer)(GLuint buffer, GLenum access);
+
+EPOXY_PUBLIC void * (EPOXY_CALLSPEC *epoxy_glMapNamedBufferEXT)(GLuint buffer, GLenum access);
+
+EPOXY_PUBLIC void * (EPOXY_CALLSPEC *epoxy_glMapNamedBufferRange)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+
+EPOXY_PUBLIC void * (EPOXY_CALLSPEC *epoxy_glMapNamedBufferRangeEXT)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+
+EPOXY_PUBLIC void * (EPOXY_CALLSPEC *epoxy_glMapObjectBufferATI)(GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapParameterfvNV)(GLenum target, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapParameterivNV)(GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void * (EPOXY_CALLSPEC *epoxy_glMapTexture2DINTEL)(GLuint texture, GLint level, GLbitfield access, GLint * stride, GLenum * layout);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapVertexAttrib1dAPPLE)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapVertexAttrib1fAPPLE)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapVertexAttrib2dAPPLE)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMapVertexAttrib2fAPPLE)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMaterialf)(GLenum face, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMaterialfv)(GLenum face, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMateriali)(GLenum face, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMaterialiv)(GLenum face, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMaterialx)(GLenum face, GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMaterialxOES)(GLenum face, GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMaterialxv)(GLenum face, GLenum pname, const GLfixed * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMaterialxvOES)(GLenum face, GLenum pname, const GLfixed * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixFrustumEXT)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixIndexPointerARB)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixIndexPointerOES)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixIndexubvARB)(GLint size, const GLubyte * indices);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixIndexuivARB)(GLint size, const GLuint * indices);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixIndexusvARB)(GLint size, const GLushort * indices);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixLoad3x2fNV)(GLenum matrixMode, const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixLoad3x3fNV)(GLenum matrixMode, const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixLoadIdentityEXT)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixLoadTranspose3x3fNV)(GLenum matrixMode, const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixLoadTransposedEXT)(GLenum mode, const GLdouble * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixLoadTransposefEXT)(GLenum mode, const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixLoaddEXT)(GLenum mode, const GLdouble * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixLoadfEXT)(GLenum mode, const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixMode)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixMult3x2fNV)(GLenum matrixMode, const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixMult3x3fNV)(GLenum matrixMode, const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixMultTranspose3x3fNV)(GLenum matrixMode, const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixMultTransposedEXT)(GLenum mode, const GLdouble * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixMultTransposefEXT)(GLenum mode, const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixMultdEXT)(GLenum mode, const GLdouble * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixMultfEXT)(GLenum mode, const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixOrthoEXT)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixPopEXT)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixPushEXT)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixRotatedEXT)(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixRotatefEXT)(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixScaledEXT)(GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixScalefEXT)(GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixTranslatedEXT)(GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMatrixTranslatefEXT)(GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMaxShaderCompilerThreadsARB)(GLuint count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMaxShaderCompilerThreadsKHR)(GLuint count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMemoryBarrier)(GLbitfield barriers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMemoryBarrierByRegion)(GLbitfield barriers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMemoryBarrierEXT)(GLbitfield barriers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMemoryObjectParameterivEXT)(GLuint memoryObject, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMinSampleShading)(GLfloat value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMinSampleShadingARB)(GLfloat value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMinSampleShadingOES)(GLfloat value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMinmax)(GLenum target, GLenum internalformat, GLboolean sink);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMinmaxEXT)(GLenum target, GLenum internalformat, GLboolean sink);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultMatrixd)(const GLdouble * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultMatrixf)(const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultMatrixx)(const GLfixed * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultMatrixxOES)(const GLfixed * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultTransposeMatrixd)(const GLdouble * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultTransposeMatrixdARB)(const GLdouble * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultTransposeMatrixf)(const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultTransposeMatrixfARB)(const GLfloat * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultTransposeMatrixxOES)(const GLfixed * m);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawArrays)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei drawcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawArraysEXT)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawArraysIndirect)(GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawArraysIndirectAMD)(GLenum mode, const void * indirect, GLsizei primcount, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawArraysIndirectBindlessCountNV)(GLenum mode, const void * indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawArraysIndirectBindlessNV)(GLenum mode, const void * indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawArraysIndirectCount)(GLenum mode, const void * indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawArraysIndirectCountARB)(GLenum mode, const void * indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawArraysIndirectEXT)(GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawElementArrayAPPLE)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawElements)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei drawcount, const GLint * basevertex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawElementsBaseVertexEXT)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei primcount, const GLint * basevertex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei primcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawElementsIndirect)(GLenum mode, GLenum type, const void * indirect, GLsizei drawcount, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawElementsIndirectAMD)(GLenum mode, GLenum type, const void * indirect, GLsizei primcount, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawElementsIndirectBindlessCountNV)(GLenum mode, GLenum type, const void * indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawElementsIndirectBindlessNV)(GLenum mode, GLenum type, const void * indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawElementsIndirectCount)(GLenum mode, GLenum type, const void * indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawElementsIndirectCountARB)(GLenum mode, GLenum type, const void * indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawElementsIndirectEXT)(GLenum mode, GLenum type, const void * indirect, GLsizei drawcount, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawMeshTasksIndirectCountNV)(GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawMeshTasksIndirectNV)(GLintptr indirect, GLsizei drawcount, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiDrawRangeElementArrayAPPLE)(GLenum mode, GLuint start, GLuint end, const GLint * first, const GLsizei * count, GLsizei primcount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei primcount, GLint modestride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexBufferEXT)(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1bOES)(GLenum texture, GLbyte s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1bvOES)(GLenum texture, const GLbyte * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1d)(GLenum target, GLdouble s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1dARB)(GLenum target, GLdouble s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1dv)(GLenum target, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1dvARB)(GLenum target, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1f)(GLenum target, GLfloat s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1fARB)(GLenum target, GLfloat s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1fv)(GLenum target, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1fvARB)(GLenum target, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1hNV)(GLenum target, GLhalfNV s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1hvNV)(GLenum target, const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1i)(GLenum target, GLint s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1iARB)(GLenum target, GLint s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1iv)(GLenum target, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1ivARB)(GLenum target, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1s)(GLenum target, GLshort s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1sARB)(GLenum target, GLshort s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1sv)(GLenum target, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1svARB)(GLenum target, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1xOES)(GLenum texture, GLfixed s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord1xvOES)(GLenum texture, const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2bOES)(GLenum texture, GLbyte s, GLbyte t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2bvOES)(GLenum texture, const GLbyte * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2dv)(GLenum target, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2dvARB)(GLenum target, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2fv)(GLenum target, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2fvARB)(GLenum target, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2hNV)(GLenum target, GLhalfNV s, GLhalfNV t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2hvNV)(GLenum target, const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2i)(GLenum target, GLint s, GLint t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2iARB)(GLenum target, GLint s, GLint t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2iv)(GLenum target, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2ivARB)(GLenum target, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2s)(GLenum target, GLshort s, GLshort t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2sARB)(GLenum target, GLshort s, GLshort t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2sv)(GLenum target, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2svARB)(GLenum target, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2xOES)(GLenum texture, GLfixed s, GLfixed t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord2xvOES)(GLenum texture, const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3bOES)(GLenum texture, GLbyte s, GLbyte t, GLbyte r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3bvOES)(GLenum texture, const GLbyte * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3dv)(GLenum target, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3dvARB)(GLenum target, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3fv)(GLenum target, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3fvARB)(GLenum target, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3hNV)(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3hvNV)(GLenum target, const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3iv)(GLenum target, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3ivARB)(GLenum target, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3sARB)(GLenum target, GLshort s, GLshort t, GLshort r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3sv)(GLenum target, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3svARB)(GLenum target, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3xOES)(GLenum texture, GLfixed s, GLfixed t, GLfixed r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord3xvOES)(GLenum texture, const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4bOES)(GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4bvOES)(GLenum texture, const GLbyte * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4dv)(GLenum target, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4dvARB)(GLenum target, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4fv)(GLenum target, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4fvARB)(GLenum target, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4hNV)(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4hvNV)(GLenum target, const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4iv)(GLenum target, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4ivARB)(GLenum target, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4sARB)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4sv)(GLenum target, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4svARB)(GLenum target, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4x)(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4xOES)(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoord4xvOES)(GLenum texture, const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoordP1ui)(GLenum texture, GLenum type, GLuint coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoordP1uiv)(GLenum texture, GLenum type, const GLuint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoordP2ui)(GLenum texture, GLenum type, GLuint coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoordP2uiv)(GLenum texture, GLenum type, const GLuint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoordP3ui)(GLenum texture, GLenum type, GLuint coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoordP3uiv)(GLenum texture, GLenum type, const GLuint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoordP4ui)(GLenum texture, GLenum type, GLuint coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoordP4uiv)(GLenum texture, GLenum type, const GLuint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexCoordPointerEXT)(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexEnvfEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexEnvfvEXT)(GLenum texunit, GLenum target, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexEnviEXT)(GLenum texunit, GLenum target, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexEnvivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexGendEXT)(GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexGendvEXT)(GLenum texunit, GLenum coord, GLenum pname, const GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexGenfEXT)(GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexGenfvEXT)(GLenum texunit, GLenum coord, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexGeniEXT)(GLenum texunit, GLenum coord, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexGenivEXT)(GLenum texunit, GLenum coord, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexParameterIivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexParameterIuivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexParameterfEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexParameterfvEXT)(GLenum texunit, GLenum target, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexParameteriEXT)(GLenum texunit, GLenum target, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexParameterivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexRenderbufferEXT)(GLenum texunit, GLenum target, GLuint renderbuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexSubImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexSubImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMultiTexSubImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastBarrierNV)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastBlitFramebufferNV)(GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastBufferSubDataNV)(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastCopyBufferSubDataNV)(GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastCopyImageSubDataNV)(GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastFramebufferSampleLocationsfvNV)(GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastGetQueryObjecti64vNV)(GLuint gpu, GLuint id, GLenum pname, GLint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastGetQueryObjectivNV)(GLuint gpu, GLuint id, GLenum pname, GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastGetQueryObjectui64vNV)(GLuint gpu, GLuint id, GLenum pname, GLuint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastGetQueryObjectuivNV)(GLuint gpu, GLuint id, GLenum pname, GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastScissorArrayvNVX)(GLuint gpu, GLuint first, GLsizei count, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastViewportArrayvNVX)(GLuint gpu, GLuint first, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastViewportPositionWScaleNVX)(GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glMulticastWaitSyncNV)(GLuint signalGpu, GLbitfield waitGpuMask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedBufferAttachMemoryNV)(GLuint buffer, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedBufferData)(GLuint buffer, GLsizeiptr size, const void * data, GLenum usage);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedBufferDataEXT)(GLuint buffer, GLsizeiptr size, const void * data, GLenum usage);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedBufferPageCommitmentARB)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedBufferPageCommitmentEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedBufferStorage)(GLuint buffer, GLsizeiptr size, const void * data, GLbitfield flags);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedBufferStorageEXT)(GLuint buffer, GLsizeiptr size, const void * data, GLbitfield flags);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedBufferStorageExternalEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedBufferStorageMemEXT)(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedBufferSubDataEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedCopyBufferSubDataEXT)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferDrawBuffer)(GLuint framebuffer, GLenum buf);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferDrawBuffers)(GLuint framebuffer, GLsizei n, const GLenum * bufs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferParameteri)(GLuint framebuffer, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferParameteriEXT)(GLuint framebuffer, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferReadBuffer)(GLuint framebuffer, GLenum src);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferRenderbuffer)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferRenderbufferEXT)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferSampleLocationsfvARB)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferSampleLocationsfvNV)(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferSamplePositionsfvAMD)(GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferTexture)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferTexture1DEXT)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferTexture2DEXT)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferTexture3DEXT)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferTextureEXT)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferTextureFaceEXT)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferTextureLayer)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedFramebufferTextureLayerEXT)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedProgramLocalParameter4dEXT)(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedProgramLocalParameter4dvEXT)(GLuint program, GLenum target, GLuint index, const GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedProgramLocalParameter4fEXT)(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedProgramLocalParameter4fvEXT)(GLuint program, GLenum target, GLuint index, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedProgramLocalParameterI4iEXT)(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedProgramLocalParameterI4ivEXT)(GLuint program, GLenum target, GLuint index, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedProgramLocalParameterI4uiEXT)(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedProgramLocalParameterI4uivEXT)(GLuint program, GLenum target, GLuint index, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedProgramLocalParameters4fvEXT)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedProgramLocalParametersI4ivEXT)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedProgramLocalParametersI4uivEXT)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedProgramStringEXT)(GLuint program, GLenum target, GLenum format, GLsizei len, const void * string);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedRenderbufferStorage)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedRenderbufferStorageEXT)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedRenderbufferStorageMultisample)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedRenderbufferStorageMultisampleAdvancedAMD)(GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedRenderbufferStorageMultisampleCoverageEXT)(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedRenderbufferStorageMultisampleEXT)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNamedStringARB)(GLenum type, GLint namelen, const GLchar * name, GLint stringlen, const GLchar * string);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNewList)(GLuint list, GLenum mode);
+
+EPOXY_PUBLIC GLuint (EPOXY_CALLSPEC *epoxy_glNewObjectBufferATI)(GLsizei size, const void * pointer, GLenum usage);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3b)(GLbyte nx, GLbyte ny, GLbyte nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3bv)(const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3d)(GLdouble nx, GLdouble ny, GLdouble nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3f)(GLfloat nx, GLfloat ny, GLfloat nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3fVertex3fSUN)(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3fVertex3fvSUN)(const GLfloat * n, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3hNV)(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3hvNV)(const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3i)(GLint nx, GLint ny, GLint nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3s)(GLshort nx, GLshort ny, GLshort nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3x)(GLfixed nx, GLfixed ny, GLfixed nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3xOES)(GLfixed nx, GLfixed ny, GLfixed nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormal3xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalFormatNV)(GLenum type, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalP3ui)(GLenum type, GLuint coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalP3uiv)(GLenum type, const GLuint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalPointer)(GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalPointerListIBM)(GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalPointervINTEL)(GLenum type, const void ** pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalStream3bATI)(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalStream3bvATI)(GLenum stream, const GLbyte * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalStream3dATI)(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalStream3dvATI)(GLenum stream, const GLdouble * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalStream3fATI)(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalStream3fvATI)(GLenum stream, const GLfloat * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalStream3iATI)(GLenum stream, GLint nx, GLint ny, GLint nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalStream3ivATI)(GLenum stream, const GLint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalStream3sATI)(GLenum stream, GLshort nx, GLshort ny, GLshort nz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glNormalStream3svATI)(GLenum stream, const GLshort * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glObjectLabel)(GLenum identifier, GLuint name, GLsizei length, const GLchar * label);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glObjectLabelKHR)(GLenum identifier, GLuint name, GLsizei length, const GLchar * label);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glObjectPtrLabel)(const void * ptr, GLsizei length, const GLchar * label);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glObjectPtrLabelKHR)(const void * ptr, GLsizei length, const GLchar * label);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glOrtho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glOrthof)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glOrthofOES)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glOrthox)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glOrthoxOES)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPNTrianglesfATI)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPNTrianglesiATI)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPassThrough)(GLfloat token);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPassThroughxOES)(GLfixed token);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPatchParameterfv)(GLenum pname, const GLfloat * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPatchParameteri)(GLenum pname, GLint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPatchParameteriEXT)(GLenum pname, GLint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPatchParameteriOES)(GLenum pname, GLint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathColorGenNV)(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat * coeffs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathCommandsNV)(GLuint path, GLsizei numCommands, const GLubyte * commands, GLsizei numCoords, GLenum coordType, const void * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathCoordsNV)(GLuint path, GLsizei numCoords, GLenum coordType, const void * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathCoverDepthFuncNV)(GLenum func);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathDashArrayNV)(GLuint path, GLsizei dashCount, const GLfloat * dashArray);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathFogGenNV)(GLenum genMode);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glPathGlyphIndexArrayNV)(GLuint firstPathName, GLenum fontTarget, const void * fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glPathGlyphIndexRangeNV)(GLenum fontTarget, const void * fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint baseAndCount);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathGlyphRangeNV)(GLuint firstPathName, GLenum fontTarget, const void * fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathGlyphsNV)(GLuint firstPathName, GLenum fontTarget, const void * fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void * charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glPathMemoryGlyphIndexArrayNV)(GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void * fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathParameterfNV)(GLuint path, GLenum pname, GLfloat value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathParameterfvNV)(GLuint path, GLenum pname, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathParameteriNV)(GLuint path, GLenum pname, GLint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathParameterivNV)(GLuint path, GLenum pname, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathStencilDepthOffsetNV)(GLfloat factor, GLfloat units);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathStencilFuncNV)(GLenum func, GLint ref, GLuint mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathStringNV)(GLuint path, GLenum format, GLsizei length, const void * pathString);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathSubCommandsNV)(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte * commands, GLsizei numCoords, GLenum coordType, const void * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathSubCoordsNV)(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPathTexGenNV)(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat * coeffs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPauseTransformFeedback)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPauseTransformFeedbackNV)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelDataRangeNV)(GLenum target, GLsizei length, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelMapfv)(GLenum map, GLsizei mapsize, const GLfloat * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelMapuiv)(GLenum map, GLsizei mapsize, const GLuint * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelMapusv)(GLenum map, GLsizei mapsize, const GLushort * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelMapx)(GLenum map, GLint size, const GLfixed * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelStoref)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelStorei)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelStorex)(GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelTexGenParameterfSGIS)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelTexGenParameteriSGIS)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelTexGenParameterivSGIS)(GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelTexGenSGIX)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelTransferf)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelTransferi)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelTransferxOES)(GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelTransformParameterfEXT)(GLenum target, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelTransformParameterfvEXT)(GLenum target, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelTransformParameteriEXT)(GLenum target, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelTransformParameterivEXT)(GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelZoom)(GLfloat xfactor, GLfloat yfactor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPixelZoomxOES)(GLfixed xfactor, GLfixed yfactor);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glPointAlongPathNV)(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat * x, GLfloat * y, GLfloat * tangentX, GLfloat * tangentY);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterf)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterfARB)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterfEXT)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterfSGIS)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterfv)(GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterfvARB)(GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterfvEXT)(GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterfvSGIS)(GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameteri)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameteriNV)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameteriv)(GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterivNV)(GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterx)(GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterxOES)(GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterxv)(GLenum pname, const GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointParameterxvOES)(GLenum pname, const GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointSize)(GLfloat size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointSizePointerOES)(GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointSizex)(GLfixed size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPointSizexOES)(GLfixed size);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glPollAsyncSGIX)(GLuint * markerp);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glPollInstrumentsSGIX)(GLint * marker_p);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPolygonMode)(GLenum face, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPolygonModeNV)(GLenum face, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPolygonOffset)(GLfloat factor, GLfloat units);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPolygonOffsetClamp)(GLfloat factor, GLfloat units, GLfloat clamp);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPolygonOffsetClampEXT)(GLfloat factor, GLfloat units, GLfloat clamp);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPolygonOffsetEXT)(GLfloat factor, GLfloat bias);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPolygonOffsetx)(GLfixed factor, GLfixed units);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPolygonOffsetxOES)(GLfixed factor, GLfixed units);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPolygonStipple)(const GLubyte * mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPopAttrib)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPopClientAttrib)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPopDebugGroup)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPopDebugGroupKHR)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPopGroupMarkerEXT)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPopMatrix)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPopName)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPresentFrameDualFillNV)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPresentFrameKeyedNV)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPrimitiveBoundingBox)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPrimitiveBoundingBoxARB)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPrimitiveBoundingBoxEXT)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPrimitiveBoundingBoxOES)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPrimitiveRestartIndex)(GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPrimitiveRestartIndexNV)(GLuint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPrimitiveRestartNV)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPrioritizeTextures)(GLsizei n, const GLuint * textures, const GLfloat * priorities);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPrioritizeTexturesEXT)(GLsizei n, const GLuint * textures, const GLclampf * priorities);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPrioritizeTexturesxOES)(GLsizei n, const GLuint * textures, const GLfixed * priorities);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramBinary)(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramBinaryOES)(GLuint program, GLenum binaryFormat, const void * binary, GLint length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramBufferParametersIivNV)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramBufferParametersIuivNV)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramBufferParametersfvNV)(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramEnvParameterI4iNV)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramEnvParameterI4ivNV)(GLenum target, GLuint index, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramEnvParameterI4uiNV)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramEnvParameterI4uivNV)(GLenum target, GLuint index, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramEnvParametersI4ivNV)(GLenum target, GLuint index, GLsizei count, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramEnvParametersI4uivNV)(GLenum target, GLuint index, GLsizei count, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramLocalParameterI4iNV)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramLocalParameterI4ivNV)(GLenum target, GLuint index, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramLocalParameterI4uiNV)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramLocalParameterI4uivNV)(GLenum target, GLuint index, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramLocalParametersI4ivNV)(GLenum target, GLuint index, GLsizei count, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramLocalParametersI4uivNV)(GLenum target, GLuint index, GLsizei count, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramParameteri)(GLuint program, GLenum pname, GLint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramParameteriARB)(GLuint program, GLenum pname, GLint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramParameteriEXT)(GLuint program, GLenum pname, GLint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei count, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramPathFragmentInputGenNV)(GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat * coeffs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramStringARB)(GLenum target, GLenum format, GLsizei len, const void * string);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramSubroutineParametersuivNV)(GLenum target, GLsizei count, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1d)(GLuint program, GLint location, GLdouble v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1dEXT)(GLuint program, GLint location, GLdouble x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1dv)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1f)(GLuint program, GLint location, GLfloat v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1fEXT)(GLuint program, GLint location, GLfloat v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1i)(GLuint program, GLint location, GLint v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1i64ARB)(GLuint program, GLint location, GLint64 x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1i64NV)(GLuint program, GLint location, GLint64EXT x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1i64vARB)(GLuint program, GLint location, GLsizei count, const GLint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1iEXT)(GLuint program, GLint location, GLint v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1iv)(GLuint program, GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1ivEXT)(GLuint program, GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1ui)(GLuint program, GLint location, GLuint v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1ui64ARB)(GLuint program, GLint location, GLuint64 x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1ui64NV)(GLuint program, GLint location, GLuint64EXT x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1ui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1uiEXT)(GLuint program, GLint location, GLuint v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform1uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2d)(GLuint program, GLint location, GLdouble v0, GLdouble v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2dEXT)(GLuint program, GLint location, GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2dv)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2f)(GLuint program, GLint location, GLfloat v0, GLfloat v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2fEXT)(GLuint program, GLint location, GLfloat v0, GLfloat v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2i)(GLuint program, GLint location, GLint v0, GLint v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2i64ARB)(GLuint program, GLint location, GLint64 x, GLint64 y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2i64vARB)(GLuint program, GLint location, GLsizei count, const GLint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2iEXT)(GLuint program, GLint location, GLint v0, GLint v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2iv)(GLuint program, GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2ivEXT)(GLuint program, GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2ui)(GLuint program, GLint location, GLuint v0, GLuint v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2ui64ARB)(GLuint program, GLint location, GLuint64 x, GLuint64 y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2ui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2uiEXT)(GLuint program, GLint location, GLuint v0, GLuint v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform2uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3dEXT)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3dv)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3fEXT)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3i64ARB)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3i64vARB)(GLuint program, GLint location, GLsizei count, const GLint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3iEXT)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3iv)(GLuint program, GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3ivEXT)(GLuint program, GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3ui64ARB)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3ui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3uiEXT)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform3uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4dEXT)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4dv)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4fEXT)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4i64ARB)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4i64vARB)(GLuint program, GLint location, GLsizei count, const GLint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4iEXT)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4iv)(GLuint program, GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4ivEXT)(GLuint program, GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4ui64ARB)(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4ui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4uiEXT)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniform4uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformHandleui64ARB)(GLuint program, GLint location, GLuint64 value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformHandleui64IMG)(GLuint program, GLint location, GLuint64 value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformHandleui64NV)(GLuint program, GLint location, GLuint64 value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformHandleui64vARB)(GLuint program, GLint location, GLsizei count, const GLuint64 * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformHandleui64vIMG)(GLuint program, GLint location, GLsizei count, const GLuint64 * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformHandleui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64 * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix2dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix2x3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix2x3dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix2x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix2x3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix2x4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix2x4dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix2x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix2x4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix3dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix3x2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix3x2dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix3x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix3x2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix3x4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix3x4dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix3x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix3x4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix4dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix4x2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix4x2dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix4x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix4x2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix4x3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix4x3dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix4x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformMatrix4x3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformui64NV)(GLuint program, GLint location, GLuint64EXT value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramUniformui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProgramVertexLimitNV)(GLenum target, GLint limit);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProvokingVertex)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glProvokingVertexEXT)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPushAttrib)(GLbitfield mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPushClientAttrib)(GLbitfield mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPushClientAttribDefaultEXT)(GLbitfield mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPushDebugGroup)(GLenum source, GLuint id, GLsizei length, const GLchar * message);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPushDebugGroupKHR)(GLenum source, GLuint id, GLsizei length, const GLchar * message);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPushGroupMarkerEXT)(GLsizei length, const GLchar * marker);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPushMatrix)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glPushName)(GLuint name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glQueryCounter)(GLuint id, GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glQueryCounterEXT)(GLuint id, GLenum target);
+
+EPOXY_PUBLIC GLbitfield (EPOXY_CALLSPEC *epoxy_glQueryMatrixxOES)(GLfixed * mantissa, GLint * exponent);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glQueryObjectParameteruiAMD)(GLenum target, GLuint id, GLenum pname, GLuint param);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glQueryResourceNV)(GLenum queryType, GLint tagId, GLuint bufSize, GLint * buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glQueryResourceTagNV)(GLint tagId, const GLchar * tagString);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos2d)(GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos2dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos2f)(GLfloat x, GLfloat y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos2fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos2i)(GLint x, GLint y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos2iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos2s)(GLshort x, GLshort y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos2sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos2xOES)(GLfixed x, GLfixed y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos2xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos3d)(GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos3dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos3f)(GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos3fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos3i)(GLint x, GLint y, GLint z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos3iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos3s)(GLshort x, GLshort y, GLshort z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos3sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos3xOES)(GLfixed x, GLfixed y, GLfixed z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos3xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos4dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos4fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos4i)(GLint x, GLint y, GLint z, GLint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos4iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos4sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos4xOES)(GLfixed x, GLfixed y, GLfixed z, GLfixed w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterPos4xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRasterSamplesEXT)(GLuint samples, GLboolean fixedsamplelocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReadBuffer)(GLenum src);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReadBufferIndexedEXT)(GLenum src, GLint index);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReadBufferNV)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReadInstrumentsSGIX)(GLint marker);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReadnPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReadnPixelsARB)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReadnPixelsEXT)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReadnPixelsKHR)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRectdv)(const GLdouble * v1, const GLdouble * v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRectfv)(const GLfloat * v1, const GLfloat * v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRecti)(GLint x1, GLint y1, GLint x2, GLint y2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRectiv)(const GLint * v1, const GLint * v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRectsv)(const GLshort * v1, const GLshort * v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRectxOES)(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRectxvOES)(const GLfixed * v1, const GLfixed * v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReferencePlaneSGIX)(const GLdouble * equation);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glReleaseKeyedMutexWin32EXT)(GLuint memory, GLuint64 key);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReleaseShaderCompiler)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRenderGpuMaskNV)(GLbitfield mask);
+
+EPOXY_PUBLIC GLint (EPOXY_CALLSPEC *epoxy_glRenderMode)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRenderbufferStorageMultisampleANGLE)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRenderbufferStorageMultisampleAPPLE)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRenderbufferStorageMultisampleAdvancedAMD)(GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRenderbufferStorageMultisampleCoverageNV)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRenderbufferStorageMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRenderbufferStorageMultisampleIMG)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRenderbufferStorageMultisampleNV)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRenderbufferStorageOES)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodePointerSUN)(GLenum type, GLsizei stride, const void ** pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeubSUN)(GLubyte code);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeubvSUN)(const GLubyte * code);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiColor3fVertex3fSUN)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiColor3fVertex3fvSUN)(const GLuint * rc, const GLfloat * c, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiColor4fNormal3fVertex3fSUN)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiColor4fNormal3fVertex3fvSUN)(const GLuint * rc, const GLfloat * c, const GLfloat * n, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiColor4ubVertex3fSUN)(GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiColor4ubVertex3fvSUN)(const GLuint * rc, const GLubyte * c, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiNormal3fVertex3fSUN)(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiNormal3fVertex3fvSUN)(const GLuint * rc, const GLfloat * n, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiSUN)(GLuint code);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN)(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN)(const GLuint * rc, const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN)(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN)(const GLuint * rc, const GLfloat * tc, const GLfloat * n, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiTexCoord2fVertex3fSUN)(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiTexCoord2fVertex3fvSUN)(const GLuint * rc, const GLfloat * tc, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiVertex3fSUN)(GLuint rc, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuiVertex3fvSUN)(const GLuint * rc, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeuivSUN)(const GLuint * code);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeusSUN)(GLushort code);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glReplacementCodeusvSUN)(const GLushort * code);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRequestResidentProgramsNV)(GLsizei n, const GLuint * programs);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glResetHistogram)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glResetHistogramEXT)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glResetMemoryObjectParameterNV)(GLuint memory, GLenum pname);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glResetMinmax)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glResetMinmaxEXT)(GLenum target);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glResizeBuffersMESA)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glResolveDepthValuesNV)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glResolveMultisampleFramebufferAPPLE)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glResumeTransformFeedback)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glResumeTransformFeedbackNV)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRotatex)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glRotatexOES)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSampleCoverage)(GLfloat value, GLboolean invert);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSampleCoverageARB)(GLfloat value, GLboolean invert);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSampleCoveragex)(GLclampx value, GLboolean invert);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSampleCoveragexOES)(GLclampx value, GLboolean invert);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSampleMaskEXT)(GLclampf value, GLboolean invert);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSampleMaskIndexedNV)(GLuint index, GLbitfield mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSampleMaskSGIS)(GLclampf value, GLboolean invert);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSampleMaski)(GLuint maskNumber, GLbitfield mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSamplePatternEXT)(GLenum pattern);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSamplePatternSGIS)(GLenum pattern);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSamplerParameterIivEXT)(GLuint sampler, GLenum pname, const GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSamplerParameterIivOES)(GLuint sampler, GLenum pname, const GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSamplerParameterIuivEXT)(GLuint sampler, GLenum pname, const GLuint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSamplerParameterIuivOES)(GLuint sampler, GLenum pname, const GLuint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSamplerParameteri)(GLuint sampler, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSamplerParameteriv)(GLuint sampler, GLenum pname, const GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScaled)(GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScalef)(GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScalex)(GLfixed x, GLfixed y, GLfixed z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScalexOES)(GLfixed x, GLfixed y, GLfixed z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScissor)(GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScissorArrayv)(GLuint first, GLsizei count, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScissorArrayvNV)(GLuint first, GLsizei count, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScissorArrayvOES)(GLuint first, GLsizei count, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScissorExclusiveArrayvNV)(GLuint first, GLsizei count, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScissorExclusiveNV)(GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScissorIndexed)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScissorIndexedNV)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScissorIndexedOES)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScissorIndexedv)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScissorIndexedvNV)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glScissorIndexedvOES)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3bv)(const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3bvEXT)(const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3dvEXT)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3fvEXT)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3hNV)(GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3hvNV)(const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3i)(GLint red, GLint green, GLint blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3iEXT)(GLint red, GLint green, GLint blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3ivEXT)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3s)(GLshort red, GLshort green, GLshort blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3svEXT)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3ubv)(const GLubyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3ubvEXT)(const GLubyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3ui)(GLuint red, GLuint green, GLuint blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3uiv)(const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3uivEXT)(const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3us)(GLushort red, GLushort green, GLushort blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3usv)(const GLushort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColor3usvEXT)(const GLushort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColorFormatNV)(GLint size, GLenum type, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColorP3ui)(GLenum type, GLuint color);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColorP3uiv)(GLenum type, const GLuint * color);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSecondaryColorPointerListIBM)(GLint size, GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSelectBuffer)(GLsizei size, GLuint * buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSelectPerfMonitorCountersAMD)(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint * counterList);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSemaphoreParameterui64vEXT)(GLuint semaphore, GLenum pname, const GLuint64 * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * row, const void * column);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSeparableFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * row, const void * column);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSetFenceAPPLE)(GLuint fence);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSetFenceNV)(GLuint fence, GLenum condition);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSetInvariantEXT)(GLuint id, GLenum type, const void * addr);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSetLocalConstantEXT)(GLuint id, GLenum type, const void * addr);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSetMultisamplefvAMD)(GLenum pname, GLuint index, const GLfloat * val);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glShadeModel)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glShaderBinary)(GLsizei count, const GLuint * shaders, GLenum binaryformat, const void * binary, GLsizei length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glShaderOp1EXT)(GLenum op, GLuint res, GLuint arg1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glShaderOp2EXT)(GLenum op, GLuint res, GLuint arg1, GLuint arg2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glShaderOp3EXT)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glShaderSource)(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glShaderSourceARB)(GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint * length);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glShaderStorageBlockBinding)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glShadingRateImageBarrierNV)(GLboolean synchronize);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glShadingRateImagePaletteNV)(GLuint viewport, GLuint first, GLsizei count, const GLenum * rates);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glShadingRateSampleOrderCustomNV)(GLenum rate, GLuint samples, const GLint * locations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glShadingRateSampleOrderNV)(GLenum order);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSharpenTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat * points);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSignalSemaphoreEXT)(GLuint semaphore, GLuint numBufferBarriers, const GLuint * buffers, GLuint numTextureBarriers, const GLuint * textures, const GLenum * dstLayouts);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSignalSemaphoreui64NVX)(GLuint signalGpu, GLsizei fenceObjectCount, const GLuint * semaphoreArray, const GLuint64 * fenceValueArray);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSignalVkFenceNV)(GLuint64 vkFence);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSignalVkSemaphoreNV)(GLuint64 vkSemaphore);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSpecializeShader)(GLuint shader, const GLchar * pEntryPoint, GLuint numSpecializationConstants, const GLuint * pConstantIndex, const GLuint * pConstantValue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSpecializeShaderARB)(GLuint shader, const GLchar * pEntryPoint, GLuint numSpecializationConstants, const GLuint * pConstantIndex, const GLuint * pConstantValue);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSpriteParameterfSGIX)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSpriteParameterfvSGIX)(GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSpriteParameteriSGIX)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSpriteParameterivSGIX)(GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStartInstrumentsSGIX)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStartTilingQCOM)(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStateCaptureNV)(GLuint state, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilClearTagEXT)(GLsizei stencilTagBits, GLuint stencilClearTag);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilFillPathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat * transformValues);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilFillPathNV)(GLuint path, GLenum fillMode, GLuint mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilFunc)(GLenum func, GLint ref, GLuint mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilMask)(GLuint mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilMaskSeparate)(GLenum face, GLuint mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilOp)(GLenum fail, GLenum zfail, GLenum zpass);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilOpSeparate)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilOpSeparateATI)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilOpValueAMD)(GLenum face, GLuint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilStrokePathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat * transformValues);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilStrokePathNV)(GLuint path, GLint reference, GLuint mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilThenCoverFillPathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat * transformValues);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilThenCoverFillPathNV)(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilThenCoverStrokePathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const void * paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat * transformValues);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStencilThenCoverStrokePathNV)(GLuint path, GLint reference, GLuint mask, GLenum coverMode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStopInstrumentsSGIX)(GLint marker);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glStringMarkerGREMEDY)(GLsizei len, const void * string);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSubpixelPrecisionBiasNV)(GLuint xbits, GLuint ybits);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSwizzleEXT)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glSyncTextureINTEL)(GLuint texture);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTagSampleBufferSGIX)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTangent3bEXT)(GLbyte tx, GLbyte ty, GLbyte tz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTangent3bvEXT)(const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTangent3dEXT)(GLdouble tx, GLdouble ty, GLdouble tz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTangent3dvEXT)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTangent3fEXT)(GLfloat tx, GLfloat ty, GLfloat tz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTangent3fvEXT)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTangent3iEXT)(GLint tx, GLint ty, GLint tz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTangent3ivEXT)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTangent3sEXT)(GLshort tx, GLshort ty, GLshort tz);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTangent3svEXT)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTangentPointerEXT)(GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTbufferMask3DFX)(GLuint mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTessellationFactorAMD)(GLfloat factor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTessellationModeAMD)(GLenum mode);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glTestFenceAPPLE)(GLuint fence);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glTestFenceNV)(GLuint fence);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glTestObjectAPPLE)(GLenum object, GLuint name);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexAttachMemoryNV)(GLenum target, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexBuffer)(GLenum target, GLenum internalformat, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexBufferARB)(GLenum target, GLenum internalformat, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexBufferEXT)(GLenum target, GLenum internalformat, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexBufferOES)(GLenum target, GLenum internalformat, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexBufferRange)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexBufferRangeEXT)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexBufferRangeOES)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexBumpParameterfvATI)(GLenum pname, const GLfloat * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexBumpParameterivATI)(GLenum pname, const GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1bOES)(GLbyte s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1bvOES)(const GLbyte * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1d)(GLdouble s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1f)(GLfloat s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1hNV)(GLhalfNV s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1hvNV)(const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1i)(GLint s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1s)(GLshort s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1xOES)(GLfixed s);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord1xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2bOES)(GLbyte s, GLbyte t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2bvOES)(const GLbyte * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2d)(GLdouble s, GLdouble t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2f)(GLfloat s, GLfloat t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2fColor3fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2fColor3fVertex3fvSUN)(const GLfloat * tc, const GLfloat * c, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2fColor4fNormal3fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2fColor4fNormal3fVertex3fvSUN)(const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2fColor4ubVertex3fSUN)(GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2fColor4ubVertex3fvSUN)(const GLfloat * tc, const GLubyte * c, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2fNormal3fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2fNormal3fVertex3fvSUN)(const GLfloat * tc, const GLfloat * n, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2fVertex3fvSUN)(const GLfloat * tc, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2hNV)(GLhalfNV s, GLhalfNV t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2hvNV)(const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2i)(GLint s, GLint t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2s)(GLshort s, GLshort t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2xOES)(GLfixed s, GLfixed t);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord2xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3bOES)(GLbyte s, GLbyte t, GLbyte r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3bvOES)(const GLbyte * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3d)(GLdouble s, GLdouble t, GLdouble r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3f)(GLfloat s, GLfloat t, GLfloat r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3hNV)(GLhalfNV s, GLhalfNV t, GLhalfNV r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3hvNV)(const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3i)(GLint s, GLint t, GLint r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3s)(GLshort s, GLshort t, GLshort r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3xOES)(GLfixed s, GLfixed t, GLfixed r);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord3xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4bOES)(GLbyte s, GLbyte t, GLbyte r, GLbyte q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4bvOES)(const GLbyte * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4fColor4fNormal3fVertex4fSUN)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4fColor4fNormal3fVertex4fvSUN)(const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4fVertex4fSUN)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4fVertex4fvSUN)(const GLfloat * tc, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4hNV)(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4hvNV)(const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4i)(GLint s, GLint t, GLint r, GLint q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4xOES)(GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoord4xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordFormatNV)(GLint size, GLenum type, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordP1ui)(GLenum type, GLuint coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordP1uiv)(GLenum type, const GLuint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordP2ui)(GLenum type, GLuint coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordP2uiv)(GLenum type, const GLuint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordP3ui)(GLenum type, GLuint coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordP3uiv)(GLenum type, const GLuint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordP4ui)(GLenum type, GLuint coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordP4uiv)(GLenum type, const GLuint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordPointerListIBM)(GLint size, GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexCoordPointervINTEL)(GLint size, GLenum type, const void ** pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexEnvf)(GLenum target, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexEnvfv)(GLenum target, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexEnvi)(GLenum target, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexEnviv)(GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexEnvx)(GLenum target, GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexEnvxOES)(GLenum target, GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexEnvxv)(GLenum target, GLenum pname, const GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexEnvxvOES)(GLenum target, GLenum pname, const GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexFilterFuncSGIS)(GLenum target, GLenum filter, GLsizei n, const GLfloat * weights);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexGend)(GLenum coord, GLenum pname, GLdouble param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexGendv)(GLenum coord, GLenum pname, const GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexGenf)(GLenum coord, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexGenfOES)(GLenum coord, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexGenfv)(GLenum coord, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexGenfvOES)(GLenum coord, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexGeni)(GLenum coord, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexGeniOES)(GLenum coord, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexGeniv)(GLenum coord, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexGenivOES)(GLenum coord, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexGenxOES)(GLenum coord, GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexGenxvOES)(GLenum coord, GLenum pname, const GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexImage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexImage2DMultisampleCoverageNV)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexImage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexImage3DMultisampleCoverageNV)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexImage3DOES)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexImage4DSGIS)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexPageCommitmentARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexPageCommitmentEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameterIiv)(GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameterIivEXT)(GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameterIivOES)(GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameterIuiv)(GLenum target, GLenum pname, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameterIuivOES)(GLenum target, GLenum pname, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameterf)(GLenum target, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameterfv)(GLenum target, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameteri)(GLenum target, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameteriv)(GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameterx)(GLenum target, GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameterxOES)(GLenum target, GLenum pname, GLfixed param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameterxv)(GLenum target, GLenum pname, const GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexParameterxvOES)(GLenum target, GLenum pname, const GLfixed * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexRenderbufferNV)(GLenum target, GLuint renderbuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorage1D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorage1DEXT)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorage2D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorage2DEXT)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorage3D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorage3DEXT)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorage3DMultisampleOES)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorageMem1DEXT)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorageMem2DEXT)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorageMem2DMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorageMem3DEXT)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorageMem3DMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexStorageSparseAMD)(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexSubImage3DOES)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexSubImage4DSGIS)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureAttachMemoryNV)(GLuint texture, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureBarrier)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureBarrierNV)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureBuffer)(GLuint texture, GLenum internalformat, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureBufferEXT)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureBufferRange)(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureBufferRangeEXT)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureColorMaskSGIS)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureFoveationParametersQCOM)(GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureImage2DMultisampleCoverageNV)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureImage2DMultisampleNV)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureImage3DMultisampleCoverageNV)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureImage3DMultisampleNV)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureLightEXT)(GLenum pname);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureMaterialEXT)(GLenum face, GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureNormalEXT)(GLenum mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTexturePageCommitmentEXT)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureParameterIiv)(GLuint texture, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureParameterIivEXT)(GLuint texture, GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureParameterIuiv)(GLuint texture, GLenum pname, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureParameterIuivEXT)(GLuint texture, GLenum target, GLenum pname, const GLuint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureParameterf)(GLuint texture, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureParameterfEXT)(GLuint texture, GLenum target, GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureParameterfv)(GLuint texture, GLenum pname, const GLfloat * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureParameterfvEXT)(GLuint texture, GLenum target, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureParameteri)(GLuint texture, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureParameteriEXT)(GLuint texture, GLenum target, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureParameteriv)(GLuint texture, GLenum pname, const GLint * param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureParameterivEXT)(GLuint texture, GLenum target, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureRangeAPPLE)(GLenum target, GLsizei length, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureRenderbufferEXT)(GLuint texture, GLenum target, GLuint renderbuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorage1D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorage1DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorage2D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorage2DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorage2DMultisample)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorage2DMultisampleEXT)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorage3D)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorage3DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorage3DMultisample)(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorage3DMultisampleEXT)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorageMem1DEXT)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorageMem2DEXT)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorageMem2DMultisampleEXT)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorageMem3DEXT)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorageMem3DMultisampleEXT)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureStorageSparseAMD)(GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureSubImage1D)(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureSubImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureSubImage2D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureSubImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureSubImage3D)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureSubImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureView)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureViewEXT)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTextureViewOES)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTransformFeedbackAttribsNV)(GLsizei count, const GLint * attribs, GLenum bufferMode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTransformFeedbackBufferBase)(GLuint xfb, GLuint index, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTransformFeedbackBufferRange)(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTransformFeedbackStreamAttribsNV)(GLsizei count, const GLint * attribs, GLsizei nbuffers, const GLint * bufstreams, GLenum bufferMode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTransformFeedbackVaryingsNV)(GLuint program, GLsizei count, const GLint * locations, GLenum bufferMode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTransformPathNV)(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat * transformValues);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTranslated)(GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTranslatef)(GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTranslatex)(GLfixed x, GLfixed y, GLfixed z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glTranslatexOES)(GLfixed x, GLfixed y, GLfixed z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1d)(GLint location, GLdouble x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1dv)(GLint location, GLsizei count, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1f)(GLint location, GLfloat v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1fARB)(GLint location, GLfloat v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1fv)(GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1fvARB)(GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1i)(GLint location, GLint v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1i64ARB)(GLint location, GLint64 x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1i64NV)(GLint location, GLint64EXT x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1i64vARB)(GLint location, GLsizei count, const GLint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1i64vNV)(GLint location, GLsizei count, const GLint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1iARB)(GLint location, GLint v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1iv)(GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1ivARB)(GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1ui)(GLint location, GLuint v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1ui64ARB)(GLint location, GLuint64 x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1ui64NV)(GLint location, GLuint64EXT x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1ui64vARB)(GLint location, GLsizei count, const GLuint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1ui64vNV)(GLint location, GLsizei count, const GLuint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1uiEXT)(GLint location, GLuint v0);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1uiv)(GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform1uivEXT)(GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2d)(GLint location, GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2dv)(GLint location, GLsizei count, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2f)(GLint location, GLfloat v0, GLfloat v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2fARB)(GLint location, GLfloat v0, GLfloat v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2fv)(GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2fvARB)(GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2i)(GLint location, GLint v0, GLint v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2i64ARB)(GLint location, GLint64 x, GLint64 y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2i64NV)(GLint location, GLint64EXT x, GLint64EXT y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2i64vARB)(GLint location, GLsizei count, const GLint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2i64vNV)(GLint location, GLsizei count, const GLint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2iARB)(GLint location, GLint v0, GLint v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2iv)(GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2ivARB)(GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2ui)(GLint location, GLuint v0, GLuint v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2ui64ARB)(GLint location, GLuint64 x, GLuint64 y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2ui64vARB)(GLint location, GLsizei count, const GLuint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2ui64vNV)(GLint location, GLsizei count, const GLuint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2uiEXT)(GLint location, GLuint v0, GLuint v1);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2uiv)(GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform2uivEXT)(GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3d)(GLint location, GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3dv)(GLint location, GLsizei count, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3fv)(GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3fvARB)(GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3i)(GLint location, GLint v0, GLint v1, GLint v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3i64ARB)(GLint location, GLint64 x, GLint64 y, GLint64 z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3i64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3i64vARB)(GLint location, GLsizei count, const GLint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3i64vNV)(GLint location, GLsizei count, const GLint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3iv)(GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3ivARB)(GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3ui)(GLint location, GLuint v0, GLuint v1, GLuint v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3ui64ARB)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3ui64vARB)(GLint location, GLsizei count, const GLuint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3ui64vNV)(GLint location, GLsizei count, const GLuint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3uiEXT)(GLint location, GLuint v0, GLuint v1, GLuint v2);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3uiv)(GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform3uivEXT)(GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4d)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4dv)(GLint location, GLsizei count, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4fv)(GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4fvARB)(GLint location, GLsizei count, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4i64ARB)(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4i64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4i64vARB)(GLint location, GLsizei count, const GLint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4i64vNV)(GLint location, GLsizei count, const GLint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4iv)(GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4ivARB)(GLint location, GLsizei count, const GLint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4ui)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4ui64ARB)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4ui64vARB)(GLint location, GLsizei count, const GLuint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4ui64vNV)(GLint location, GLsizei count, const GLuint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4uiEXT)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4uiv)(GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniform4uivEXT)(GLint location, GLsizei count, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformBufferEXT)(GLuint program, GLint location, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformHandleui64ARB)(GLint location, GLuint64 value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformHandleui64IMG)(GLint location, GLuint64 value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformHandleui64NV)(GLint location, GLuint64 value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformHandleui64vARB)(GLint location, GLsizei count, const GLuint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformHandleui64vIMG)(GLint location, GLsizei count, const GLuint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformHandleui64vNV)(GLint location, GLsizei count, const GLuint64 * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix2x3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix2x3fvNV)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix2x4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix2x4fvNV)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix3x2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix3x2fvNV)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix3x4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix3x4fvNV)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix4x2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix4x2fvNV)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix4x3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformMatrix4x3fvNV)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformSubroutinesuiv)(GLenum shadertype, GLsizei count, const GLuint * indices);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformui64NV)(GLint location, GLuint64EXT value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUniformui64vNV)(GLint location, GLsizei count, const GLuint64EXT * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUnlockArraysEXT)(void);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glUnmapBuffer)(GLenum target);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glUnmapBufferARB)(GLenum target);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glUnmapBufferOES)(GLenum target);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glUnmapNamedBuffer)(GLuint buffer);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glUnmapNamedBufferEXT)(GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUnmapObjectBufferATI)(GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUnmapTexture2DINTEL)(GLuint texture, GLint level);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUpdateObjectBufferATI)(GLuint buffer, GLuint offset, GLsizei size, const void * pointer, GLenum preserve);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUploadGpuMaskNVX)(GLbitfield mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUseProgram)(GLuint program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUseProgramObjectARB)(GLhandleARB programObj);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUseProgramStages)(GLuint pipeline, GLbitfield stages, GLuint program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUseProgramStagesEXT)(GLuint pipeline, GLbitfield stages, GLuint program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glUseShaderProgramEXT)(GLenum type, GLuint program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVDPAUFiniNV)(void);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVDPAUGetSurfaceivNV)(GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVDPAUInitNV)(const void * vdpDevice, const void * getProcAddress);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glVDPAUIsSurfaceNV)(GLvdpauSurfaceNV surface);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVDPAUMapSurfacesNV)(GLsizei numSurfaces, const GLvdpauSurfaceNV * surfaces);
+
+EPOXY_PUBLIC GLvdpauSurfaceNV (EPOXY_CALLSPEC *epoxy_glVDPAURegisterOutputSurfaceNV)(const void * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames);
+
+EPOXY_PUBLIC GLvdpauSurfaceNV (EPOXY_CALLSPEC *epoxy_glVDPAURegisterVideoSurfaceNV)(const void * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames);
+
+EPOXY_PUBLIC GLvdpauSurfaceNV (EPOXY_CALLSPEC *epoxy_glVDPAURegisterVideoSurfaceWithPictureStructureNV)(const void * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames, GLboolean isFrameStructure);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVDPAUSurfaceAccessNV)(GLvdpauSurfaceNV surface, GLenum access);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVDPAUUnmapSurfacesNV)(GLsizei numSurface, const GLvdpauSurfaceNV * surfaces);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVDPAUUnregisterSurfaceNV)(GLvdpauSurfaceNV surface);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glValidateProgram)(GLuint program);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glValidateProgramARB)(GLhandleARB programObj);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glValidateProgramPipeline)(GLuint pipeline);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glValidateProgramPipelineEXT)(GLuint pipeline);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVariantArrayObjectATI)(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVariantPointerEXT)(GLuint id, GLenum type, GLuint stride, const void * addr);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVariantbvEXT)(GLuint id, const GLbyte * addr);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVariantdvEXT)(GLuint id, const GLdouble * addr);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVariantfvEXT)(GLuint id, const GLfloat * addr);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVariantivEXT)(GLuint id, const GLint * addr);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVariantsvEXT)(GLuint id, const GLshort * addr);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVariantubvEXT)(GLuint id, const GLubyte * addr);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVariantuivEXT)(GLuint id, const GLuint * addr);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVariantusvEXT)(GLuint id, const GLushort * addr);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2bOES)(GLbyte x, GLbyte y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2bvOES)(const GLbyte * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2d)(GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2f)(GLfloat x, GLfloat y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2hNV)(GLhalfNV x, GLhalfNV y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2hvNV)(const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2i)(GLint x, GLint y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2s)(GLshort x, GLshort y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2xOES)(GLfixed x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex2xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3bOES)(GLbyte x, GLbyte y, GLbyte z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3bvOES)(const GLbyte * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3d)(GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3f)(GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3hvNV)(const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3i)(GLint x, GLint y, GLint z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3s)(GLshort x, GLshort y, GLshort z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3xOES)(GLfixed x, GLfixed y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex3xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4bOES)(GLbyte x, GLbyte y, GLbyte z, GLbyte w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4bvOES)(const GLbyte * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4hvNV)(const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4i)(GLint x, GLint y, GLint z, GLint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4s)(GLshort x, GLshort y, GLshort z, GLshort w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4xOES)(GLfixed x, GLfixed y, GLfixed z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertex4xvOES)(const GLfixed * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayAttribBinding)(GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayAttribFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayAttribIFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayAttribLFormat)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayBindVertexBufferEXT)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayBindingDivisor)(GLuint vaobj, GLuint bindingindex, GLuint divisor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayColorOffsetEXT)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayEdgeFlagOffsetEXT)(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayElementBuffer)(GLuint vaobj, GLuint buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayFogCoordOffsetEXT)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayIndexOffsetEXT)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayMultiTexCoordOffsetEXT)(GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayNormalOffsetEXT)(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayParameteriAPPLE)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayRangeAPPLE)(GLsizei length, void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayRangeNV)(GLsizei length, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArraySecondaryColorOffsetEXT)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayTexCoordOffsetEXT)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayVertexAttribBindingEXT)(GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayVertexAttribDivisorEXT)(GLuint vaobj, GLuint index, GLuint divisor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayVertexAttribFormatEXT)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayVertexAttribIFormatEXT)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayVertexAttribIOffsetEXT)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayVertexAttribLFormatEXT)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayVertexAttribLOffsetEXT)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayVertexAttribOffsetEXT)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayVertexBindingDivisorEXT)(GLuint vaobj, GLuint bindingindex, GLuint divisor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayVertexBuffer)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayVertexBuffers)(GLuint vaobj, GLuint first, GLsizei count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexArrayVertexOffsetEXT)(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1d)(GLuint index, GLdouble x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1dARB)(GLuint index, GLdouble x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1dNV)(GLuint index, GLdouble x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1dv)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1dvARB)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1dvNV)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1f)(GLuint index, GLfloat x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1fARB)(GLuint index, GLfloat x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1fNV)(GLuint index, GLfloat x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1fv)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1fvARB)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1fvNV)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1hNV)(GLuint index, GLhalfNV x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1hvNV)(GLuint index, const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1s)(GLuint index, GLshort x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1sARB)(GLuint index, GLshort x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1sNV)(GLuint index, GLshort x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1sv)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1svARB)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib1svNV)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2d)(GLuint index, GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2dv)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2dvARB)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2dvNV)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2f)(GLuint index, GLfloat x, GLfloat y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2fv)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2fvARB)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2fvNV)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2hNV)(GLuint index, GLhalfNV x, GLhalfNV y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2hvNV)(GLuint index, const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2s)(GLuint index, GLshort x, GLshort y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2sARB)(GLuint index, GLshort x, GLshort y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2sNV)(GLuint index, GLshort x, GLshort y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2sv)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2svARB)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib2svNV)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3dv)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3dvARB)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3dvNV)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3fv)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3fvARB)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3fvNV)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3hNV)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3hvNV)(GLuint index, const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3sv)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3svARB)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib3svNV)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4Nbv)(GLuint index, const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4NbvARB)(GLuint index, const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4Niv)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4NivARB)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4Nsv)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4NsvARB)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4Nubv)(GLuint index, const GLubyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4NubvARB)(GLuint index, const GLubyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4Nuiv)(GLuint index, const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4NuivARB)(GLuint index, const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4Nusv)(GLuint index, const GLushort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4NusvARB)(GLuint index, const GLushort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4bv)(GLuint index, const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4bvARB)(GLuint index, const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4dv)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4dvARB)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4dvNV)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4fv)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4fvARB)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4fvNV)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4hNV)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4hvNV)(GLuint index, const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4iv)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4ivARB)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4sv)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4svARB)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4svNV)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4ubv)(GLuint index, const GLubyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4ubvARB)(GLuint index, const GLubyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4ubvNV)(GLuint index, const GLubyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4uiv)(GLuint index, const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4uivARB)(GLuint index, const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4usv)(GLuint index, const GLushort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttrib4usvARB)(GLuint index, const GLushort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribArrayObjectATI)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribBinding)(GLuint attribindex, GLuint bindingindex);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribDivisor)(GLuint index, GLuint divisor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribDivisorANGLE)(GLuint index, GLuint divisor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribDivisorARB)(GLuint index, GLuint divisor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribDivisorEXT)(GLuint index, GLuint divisor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribDivisorNV)(GLuint index, GLuint divisor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribFormat)(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribFormatNV)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI1i)(GLuint index, GLint x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI1iEXT)(GLuint index, GLint x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI1iv)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI1ivEXT)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI1ui)(GLuint index, GLuint x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI1uiEXT)(GLuint index, GLuint x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI1uiv)(GLuint index, const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI1uivEXT)(GLuint index, const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI2i)(GLuint index, GLint x, GLint y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI2iEXT)(GLuint index, GLint x, GLint y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI2iv)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI2ivEXT)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI2ui)(GLuint index, GLuint x, GLuint y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI2uiv)(GLuint index, const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI2uivEXT)(GLuint index, const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI3iv)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI3ivEXT)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI3uiv)(GLuint index, const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI3uivEXT)(GLuint index, const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4bv)(GLuint index, const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4bvEXT)(GLuint index, const GLbyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4iv)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4ivEXT)(GLuint index, const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4sv)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4svEXT)(GLuint index, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4ubv)(GLuint index, const GLubyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4ubvEXT)(GLuint index, const GLubyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4uiv)(GLuint index, const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4uivEXT)(GLuint index, const GLuint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4usv)(GLuint index, const GLushort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribI4usvEXT)(GLuint index, const GLushort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribIFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribIFormatNV)(GLuint index, GLint size, GLenum type, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL1d)(GLuint index, GLdouble x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL1dEXT)(GLuint index, GLdouble x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL1dv)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL1dvEXT)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL1i64NV)(GLuint index, GLint64EXT x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL1i64vNV)(GLuint index, const GLint64EXT * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL1ui64ARB)(GLuint index, GLuint64EXT x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL1ui64NV)(GLuint index, GLuint64EXT x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL1ui64vARB)(GLuint index, const GLuint64EXT * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL1ui64vNV)(GLuint index, const GLuint64EXT * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL2d)(GLuint index, GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL2dEXT)(GLuint index, GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL2dv)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL2dvEXT)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL2i64NV)(GLuint index, GLint64EXT x, GLint64EXT y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL2i64vNV)(GLuint index, const GLint64EXT * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL2ui64NV)(GLuint index, GLuint64EXT x, GLuint64EXT y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL2ui64vNV)(GLuint index, const GLuint64EXT * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL3dEXT)(GLuint index, GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL3dv)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL3dvEXT)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL3i64NV)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL3i64vNV)(GLuint index, const GLint64EXT * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL3ui64NV)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL3ui64vNV)(GLuint index, const GLuint64EXT * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL4dEXT)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL4dv)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL4dvEXT)(GLuint index, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL4i64NV)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL4i64vNV)(GLuint index, const GLint64EXT * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL4ui64NV)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribL4ui64vNV)(GLuint index, const GLuint64EXT * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribLFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribLFormatNV)(GLuint index, GLint size, GLenum type, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribLPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribLPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribParameteriAMD)(GLuint index, GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribPointerNV)(GLuint index, GLint fsize, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs1dvNV)(GLuint index, GLsizei count, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs1fvNV)(GLuint index, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs1hvNV)(GLuint index, GLsizei n, const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs1svNV)(GLuint index, GLsizei count, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs2dvNV)(GLuint index, GLsizei count, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs2fvNV)(GLuint index, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs2hvNV)(GLuint index, GLsizei n, const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs2svNV)(GLuint index, GLsizei count, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs3dvNV)(GLuint index, GLsizei count, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs3fvNV)(GLuint index, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs3hvNV)(GLuint index, GLsizei n, const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs3svNV)(GLuint index, GLsizei count, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs4dvNV)(GLuint index, GLsizei count, const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs4fvNV)(GLuint index, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs4hvNV)(GLuint index, GLsizei n, const GLhalfNV * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs4svNV)(GLuint index, GLsizei count, const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexAttribs4ubvNV)(GLuint index, GLsizei count, const GLubyte * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexBindingDivisor)(GLuint bindingindex, GLuint divisor);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexBlendARB)(GLint count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexBlendEnvfATI)(GLenum pname, GLfloat param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexBlendEnviATI)(GLenum pname, GLint param);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexFormatNV)(GLint size, GLenum type, GLsizei stride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexP2ui)(GLenum type, GLuint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexP2uiv)(GLenum type, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexP3ui)(GLenum type, GLuint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexP3uiv)(GLenum type, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexP4ui)(GLenum type, GLuint value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexP4uiv)(GLenum type, const GLuint * value);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexPointerListIBM)(GLint size, GLenum type, GLint stride, const void ** pointer, GLint ptrstride);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexPointervINTEL)(GLint size, GLenum type, const void ** pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream1dATI)(GLenum stream, GLdouble x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream1dvATI)(GLenum stream, const GLdouble * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream1fATI)(GLenum stream, GLfloat x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream1fvATI)(GLenum stream, const GLfloat * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream1iATI)(GLenum stream, GLint x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream1ivATI)(GLenum stream, const GLint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream1sATI)(GLenum stream, GLshort x);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream1svATI)(GLenum stream, const GLshort * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream2dATI)(GLenum stream, GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream2dvATI)(GLenum stream, const GLdouble * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream2fATI)(GLenum stream, GLfloat x, GLfloat y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream2fvATI)(GLenum stream, const GLfloat * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream2iATI)(GLenum stream, GLint x, GLint y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream2ivATI)(GLenum stream, const GLint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream2sATI)(GLenum stream, GLshort x, GLshort y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream2svATI)(GLenum stream, const GLshort * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream3dATI)(GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream3dvATI)(GLenum stream, const GLdouble * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream3fATI)(GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream3fvATI)(GLenum stream, const GLfloat * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream3iATI)(GLenum stream, GLint x, GLint y, GLint z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream3ivATI)(GLenum stream, const GLint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream3sATI)(GLenum stream, GLshort x, GLshort y, GLshort z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream3svATI)(GLenum stream, const GLshort * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream4dATI)(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream4dvATI)(GLenum stream, const GLdouble * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream4fATI)(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream4fvATI)(GLenum stream, const GLfloat * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream4iATI)(GLenum stream, GLint x, GLint y, GLint z, GLint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream4ivATI)(GLenum stream, const GLint * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream4sATI)(GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexStream4svATI)(GLenum stream, const GLshort * coords);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexWeightPointerEXT)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexWeightfEXT)(GLfloat weight);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexWeightfvEXT)(const GLfloat * weight);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexWeighthNV)(GLhalfNV weight);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVertexWeighthvNV)(const GLhalfNV * weight);
+
+EPOXY_PUBLIC GLenum (EPOXY_CALLSPEC *epoxy_glVideoCaptureNV)(GLuint video_capture_slot, GLuint * sequence_num, GLuint64EXT * capture_time);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVideoCaptureStreamParameterdvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVideoCaptureStreamParameterfvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glVideoCaptureStreamParameterivNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint * params);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glViewport)(GLint x, GLint y, GLsizei width, GLsizei height);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glViewportArrayv)(GLuint first, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glViewportArrayvNV)(GLuint first, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glViewportArrayvOES)(GLuint first, GLsizei count, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glViewportIndexedf)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glViewportIndexedfNV)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glViewportIndexedfOES)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glViewportIndexedfv)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glViewportIndexedfvNV)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glViewportIndexedfvOES)(GLuint index, const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glViewportPositionWScaleNV)(GLuint index, GLfloat xcoeff, GLfloat ycoeff);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glViewportSwizzleNV)(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWaitSemaphoreEXT)(GLuint semaphore, GLuint numBufferBarriers, const GLuint * buffers, GLuint numTextureBarriers, const GLuint * textures, const GLenum * srcLayouts);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWaitSemaphoreui64NVX)(GLuint waitGpu, GLsizei fenceObjectCount, const GLuint * semaphoreArray, const GLuint64 * fenceValueArray);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWaitSyncAPPLE)(GLsync sync, GLbitfield flags, GLuint64 timeout);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWaitVkSemaphoreNV)(GLuint64 vkSemaphore);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWeightPathsNV)(GLuint resultPath, GLsizei numPaths, const GLuint * paths, const GLfloat * weights);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWeightPointerARB)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWeightPointerOES)(GLint size, GLenum type, GLsizei stride, const void * pointer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWeightbvARB)(GLint size, const GLbyte * weights);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWeightdvARB)(GLint size, const GLdouble * weights);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWeightfvARB)(GLint size, const GLfloat * weights);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWeightivARB)(GLint size, const GLint * weights);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWeightsvARB)(GLint size, const GLshort * weights);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWeightubvARB)(GLint size, const GLubyte * weights);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWeightuivARB)(GLint size, const GLuint * weights);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWeightusvARB)(GLint size, const GLushort * weights);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2d)(GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2dARB)(GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2dMESA)(GLdouble x, GLdouble y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2dvARB)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2dvMESA)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2f)(GLfloat x, GLfloat y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2fARB)(GLfloat x, GLfloat y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2fMESA)(GLfloat x, GLfloat y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2fvARB)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2fvMESA)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2i)(GLint x, GLint y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2iARB)(GLint x, GLint y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2iMESA)(GLint x, GLint y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2ivARB)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2ivMESA)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2s)(GLshort x, GLshort y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2sARB)(GLshort x, GLshort y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2sMESA)(GLshort x, GLshort y);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2svARB)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos2svMESA)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3d)(GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3dv)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3dvARB)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3dvMESA)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3f)(GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3fv)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3fvARB)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3fvMESA)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3i)(GLint x, GLint y, GLint z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3iARB)(GLint x, GLint y, GLint z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3iMESA)(GLint x, GLint y, GLint z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3iv)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3ivARB)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3ivMESA)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3s)(GLshort x, GLshort y, GLshort z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3sARB)(GLshort x, GLshort y, GLshort z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3sMESA)(GLshort x, GLshort y, GLshort z);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3sv)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3svARB)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos3svMESA)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos4dvMESA)(const GLdouble * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos4fvMESA)(const GLfloat * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos4ivMESA)(const GLint * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowPos4svMESA)(const GLshort * v);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWindowRectanglesEXT)(GLenum mode, GLsizei count, const GLint * box);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glWriteMaskEXT)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+
+#define glAccum epoxy_glAccum
+#define glAccumxOES epoxy_glAccumxOES
+#define glAcquireKeyedMutexWin32EXT epoxy_glAcquireKeyedMutexWin32EXT
+#define glActiveProgramEXT epoxy_glActiveProgramEXT
+#define glActiveShaderProgram epoxy_glActiveShaderProgram
+#define glActiveShaderProgramEXT epoxy_glActiveShaderProgramEXT
+#define glActiveStencilFaceEXT epoxy_glActiveStencilFaceEXT
+#define glActiveTexture epoxy_glActiveTexture
+#define glActiveTextureARB epoxy_glActiveTextureARB
+#define glActiveVaryingNV epoxy_glActiveVaryingNV
+#define glAlphaFragmentOp1ATI epoxy_glAlphaFragmentOp1ATI
+#define glAlphaFragmentOp2ATI epoxy_glAlphaFragmentOp2ATI
+#define glAlphaFragmentOp3ATI epoxy_glAlphaFragmentOp3ATI
+#define glAlphaFunc epoxy_glAlphaFunc
+#define glAlphaFuncQCOM epoxy_glAlphaFuncQCOM
+#define glAlphaFuncx epoxy_glAlphaFuncx
+#define glAlphaFuncxOES epoxy_glAlphaFuncxOES
+#define glAlphaToCoverageDitherControlNV epoxy_glAlphaToCoverageDitherControlNV
+#define glApplyFramebufferAttachmentCMAAINTEL epoxy_glApplyFramebufferAttachmentCMAAINTEL
+#define glApplyTextureEXT epoxy_glApplyTextureEXT
+#define glAreProgramsResidentNV epoxy_glAreProgramsResidentNV
+#define glAreTexturesResident epoxy_glAreTexturesResident
+#define glAreTexturesResidentEXT epoxy_glAreTexturesResidentEXT
+#define glArrayElement epoxy_glArrayElement
+#define glArrayElementEXT epoxy_glArrayElementEXT
+#define glArrayObjectATI epoxy_glArrayObjectATI
+#define glAsyncCopyBufferSubDataNVX epoxy_glAsyncCopyBufferSubDataNVX
+#define glAsyncCopyImageSubDataNVX epoxy_glAsyncCopyImageSubDataNVX
+#define glAsyncMarkerSGIX epoxy_glAsyncMarkerSGIX
+#define glAttachObjectARB epoxy_glAttachObjectARB
+#define glAttachShader epoxy_glAttachShader
+#define glBegin epoxy_glBegin
+#define glBeginConditionalRender epoxy_glBeginConditionalRender
+#define glBeginConditionalRenderNV epoxy_glBeginConditionalRenderNV
+#define glBeginConditionalRenderNVX epoxy_glBeginConditionalRenderNVX
+#define glBeginFragmentShaderATI epoxy_glBeginFragmentShaderATI
+#define glBeginOcclusionQueryNV epoxy_glBeginOcclusionQueryNV
+#define glBeginPerfMonitorAMD epoxy_glBeginPerfMonitorAMD
+#define glBeginPerfQueryINTEL epoxy_glBeginPerfQueryINTEL
+#define glBeginQuery epoxy_glBeginQuery
+#define glBeginQueryARB epoxy_glBeginQueryARB
+#define glBeginQueryEXT epoxy_glBeginQueryEXT
+#define glBeginQueryIndexed epoxy_glBeginQueryIndexed
+#define glBeginTransformFeedback epoxy_glBeginTransformFeedback
+#define glBeginTransformFeedbackEXT epoxy_glBeginTransformFeedbackEXT
+#define glBeginTransformFeedbackNV epoxy_glBeginTransformFeedbackNV
+#define glBeginVertexShaderEXT epoxy_glBeginVertexShaderEXT
+#define glBeginVideoCaptureNV epoxy_glBeginVideoCaptureNV
+#define glBindAttribLocation epoxy_glBindAttribLocation
+#define glBindAttribLocationARB epoxy_glBindAttribLocationARB
+#define glBindBuffer epoxy_glBindBuffer
+#define glBindBufferARB epoxy_glBindBufferARB
+#define glBindBufferBase epoxy_glBindBufferBase
+#define glBindBufferBaseEXT epoxy_glBindBufferBaseEXT
+#define glBindBufferBaseNV epoxy_glBindBufferBaseNV
+#define glBindBufferOffsetEXT epoxy_glBindBufferOffsetEXT
+#define glBindBufferOffsetNV epoxy_glBindBufferOffsetNV
+#define glBindBufferRange epoxy_glBindBufferRange
+#define glBindBufferRangeEXT epoxy_glBindBufferRangeEXT
+#define glBindBufferRangeNV epoxy_glBindBufferRangeNV
+#define glBindBuffersBase epoxy_glBindBuffersBase
+#define glBindBuffersRange epoxy_glBindBuffersRange
+#define glBindFragDataLocation epoxy_glBindFragDataLocation
+#define glBindFragDataLocationEXT epoxy_glBindFragDataLocationEXT
+#define glBindFragDataLocationIndexed epoxy_glBindFragDataLocationIndexed
+#define glBindFragDataLocationIndexedEXT epoxy_glBindFragDataLocationIndexedEXT
+#define glBindFragmentShaderATI epoxy_glBindFragmentShaderATI
+#define glBindFramebuffer epoxy_glBindFramebuffer
+#define glBindFramebufferEXT epoxy_glBindFramebufferEXT
+#define glBindFramebufferOES epoxy_glBindFramebufferOES
+#define glBindImageTexture epoxy_glBindImageTexture
+#define glBindImageTextureEXT epoxy_glBindImageTextureEXT
+#define glBindImageTextures epoxy_glBindImageTextures
+#define glBindLightParameterEXT epoxy_glBindLightParameterEXT
+#define glBindMaterialParameterEXT epoxy_glBindMaterialParameterEXT
+#define glBindMultiTextureEXT epoxy_glBindMultiTextureEXT
+#define glBindParameterEXT epoxy_glBindParameterEXT
+#define glBindProgramARB epoxy_glBindProgramARB
+#define glBindProgramNV epoxy_glBindProgramNV
+#define glBindProgramPipeline epoxy_glBindProgramPipeline
+#define glBindProgramPipelineEXT epoxy_glBindProgramPipelineEXT
+#define glBindRenderbuffer epoxy_glBindRenderbuffer
+#define glBindRenderbufferEXT epoxy_glBindRenderbufferEXT
+#define glBindRenderbufferOES epoxy_glBindRenderbufferOES
+#define glBindSampler epoxy_glBindSampler
+#define glBindSamplers epoxy_glBindSamplers
+#define glBindShadingRateImageNV epoxy_glBindShadingRateImageNV
+#define glBindTexGenParameterEXT epoxy_glBindTexGenParameterEXT
+#define glBindTexture epoxy_glBindTexture
+#define glBindTextureEXT epoxy_glBindTextureEXT
+#define glBindTextureUnit epoxy_glBindTextureUnit
+#define glBindTextureUnitParameterEXT epoxy_glBindTextureUnitParameterEXT
+#define glBindTextures epoxy_glBindTextures
+#define glBindTransformFeedback epoxy_glBindTransformFeedback
+#define glBindTransformFeedbackNV epoxy_glBindTransformFeedbackNV
+#define glBindVertexArray epoxy_glBindVertexArray
+#define glBindVertexArrayAPPLE epoxy_glBindVertexArrayAPPLE
+#define glBindVertexArrayOES epoxy_glBindVertexArrayOES
+#define glBindVertexBuffer epoxy_glBindVertexBuffer
+#define glBindVertexBuffers epoxy_glBindVertexBuffers
+#define glBindVertexShaderEXT epoxy_glBindVertexShaderEXT
+#define glBindVideoCaptureStreamBufferNV epoxy_glBindVideoCaptureStreamBufferNV
+#define glBindVideoCaptureStreamTextureNV epoxy_glBindVideoCaptureStreamTextureNV
+#define glBinormal3bEXT epoxy_glBinormal3bEXT
+#define glBinormal3bvEXT epoxy_glBinormal3bvEXT
+#define glBinormal3dEXT epoxy_glBinormal3dEXT
+#define glBinormal3dvEXT epoxy_glBinormal3dvEXT
+#define glBinormal3fEXT epoxy_glBinormal3fEXT
+#define glBinormal3fvEXT epoxy_glBinormal3fvEXT
+#define glBinormal3iEXT epoxy_glBinormal3iEXT
+#define glBinormal3ivEXT epoxy_glBinormal3ivEXT
+#define glBinormal3sEXT epoxy_glBinormal3sEXT
+#define glBinormal3svEXT epoxy_glBinormal3svEXT
+#define glBinormalPointerEXT epoxy_glBinormalPointerEXT
+#define glBitmap epoxy_glBitmap
+#define glBitmapxOES epoxy_glBitmapxOES
+#define glBlendBarrier epoxy_glBlendBarrier
+#define glBlendBarrierKHR epoxy_glBlendBarrierKHR
+#define glBlendBarrierNV epoxy_glBlendBarrierNV
+#define glBlendColor epoxy_glBlendColor
+#define glBlendColorEXT epoxy_glBlendColorEXT
+#define glBlendColorxOES epoxy_glBlendColorxOES
+#define glBlendEquation epoxy_glBlendEquation
+#define glBlendEquationEXT epoxy_glBlendEquationEXT
+#define glBlendEquationIndexedAMD epoxy_glBlendEquationIndexedAMD
+#define glBlendEquationOES epoxy_glBlendEquationOES
+#define glBlendEquationSeparate epoxy_glBlendEquationSeparate
+#define glBlendEquationSeparateEXT epoxy_glBlendEquationSeparateEXT
+#define glBlendEquationSeparateIndexedAMD epoxy_glBlendEquationSeparateIndexedAMD
+#define glBlendEquationSeparateOES epoxy_glBlendEquationSeparateOES
+#define glBlendEquationSeparatei epoxy_glBlendEquationSeparatei
+#define glBlendEquationSeparateiARB epoxy_glBlendEquationSeparateiARB
+#define glBlendEquationSeparateiEXT epoxy_glBlendEquationSeparateiEXT
+#define glBlendEquationSeparateiOES epoxy_glBlendEquationSeparateiOES
+#define glBlendEquationi epoxy_glBlendEquationi
+#define glBlendEquationiARB epoxy_glBlendEquationiARB
+#define glBlendEquationiEXT epoxy_glBlendEquationiEXT
+#define glBlendEquationiOES epoxy_glBlendEquationiOES
+#define glBlendFunc epoxy_glBlendFunc
+#define glBlendFuncIndexedAMD epoxy_glBlendFuncIndexedAMD
+#define glBlendFuncSeparate epoxy_glBlendFuncSeparate
+#define glBlendFuncSeparateEXT epoxy_glBlendFuncSeparateEXT
+#define glBlendFuncSeparateINGR epoxy_glBlendFuncSeparateINGR
+#define glBlendFuncSeparateIndexedAMD epoxy_glBlendFuncSeparateIndexedAMD
+#define glBlendFuncSeparateOES epoxy_glBlendFuncSeparateOES
+#define glBlendFuncSeparatei epoxy_glBlendFuncSeparatei
+#define glBlendFuncSeparateiARB epoxy_glBlendFuncSeparateiARB
+#define glBlendFuncSeparateiEXT epoxy_glBlendFuncSeparateiEXT
+#define glBlendFuncSeparateiOES epoxy_glBlendFuncSeparateiOES
+#define glBlendFunci epoxy_glBlendFunci
+#define glBlendFunciARB epoxy_glBlendFunciARB
+#define glBlendFunciEXT epoxy_glBlendFunciEXT
+#define glBlendFunciOES epoxy_glBlendFunciOES
+#define glBlendParameteriNV epoxy_glBlendParameteriNV
+#define glBlitFramebuffer epoxy_glBlitFramebuffer
+#define glBlitFramebufferANGLE epoxy_glBlitFramebufferANGLE
+#define glBlitFramebufferEXT epoxy_glBlitFramebufferEXT
+#define glBlitFramebufferNV epoxy_glBlitFramebufferNV
+#define glBlitNamedFramebuffer epoxy_glBlitNamedFramebuffer
+#define glBufferAddressRangeNV epoxy_glBufferAddressRangeNV
+#define glBufferAttachMemoryNV epoxy_glBufferAttachMemoryNV
+#define glBufferData epoxy_glBufferData
+#define glBufferDataARB epoxy_glBufferDataARB
+#define glBufferPageCommitmentARB epoxy_glBufferPageCommitmentARB
+#define glBufferParameteriAPPLE epoxy_glBufferParameteriAPPLE
+#define glBufferStorage epoxy_glBufferStorage
+#define glBufferStorageEXT epoxy_glBufferStorageEXT
+#define glBufferStorageExternalEXT epoxy_glBufferStorageExternalEXT
+#define glBufferStorageMemEXT epoxy_glBufferStorageMemEXT
+#define glBufferSubData epoxy_glBufferSubData
+#define glBufferSubDataARB epoxy_glBufferSubDataARB
+#define glCallCommandListNV epoxy_glCallCommandListNV
+#define glCallList epoxy_glCallList
+#define glCallLists epoxy_glCallLists
+#define glCheckFramebufferStatus epoxy_glCheckFramebufferStatus
+#define glCheckFramebufferStatusEXT epoxy_glCheckFramebufferStatusEXT
+#define glCheckFramebufferStatusOES epoxy_glCheckFramebufferStatusOES
+#define glCheckNamedFramebufferStatus epoxy_glCheckNamedFramebufferStatus
+#define glCheckNamedFramebufferStatusEXT epoxy_glCheckNamedFramebufferStatusEXT
+#define glClampColor epoxy_glClampColor
+#define glClampColorARB epoxy_glClampColorARB
+#define glClear epoxy_glClear
+#define glClearAccum epoxy_glClearAccum
+#define glClearAccumxOES epoxy_glClearAccumxOES
+#define glClearBufferData epoxy_glClearBufferData
+#define glClearBufferSubData epoxy_glClearBufferSubData
+#define glClearBufferfi epoxy_glClearBufferfi
+#define glClearBufferfv epoxy_glClearBufferfv
+#define glClearBufferiv epoxy_glClearBufferiv
+#define glClearBufferuiv epoxy_glClearBufferuiv
+#define glClearColor epoxy_glClearColor
+#define glClearColorIiEXT epoxy_glClearColorIiEXT
+#define glClearColorIuiEXT epoxy_glClearColorIuiEXT
+#define glClearColorx epoxy_glClearColorx
+#define glClearColorxOES epoxy_glClearColorxOES
+#define glClearDepth epoxy_glClearDepth
+#define glClearDepthdNV epoxy_glClearDepthdNV
+#define glClearDepthf epoxy_glClearDepthf
+#define glClearDepthfOES epoxy_glClearDepthfOES
+#define glClearDepthx epoxy_glClearDepthx
+#define glClearDepthxOES epoxy_glClearDepthxOES
+#define glClearIndex epoxy_glClearIndex
+#define glClearNamedBufferData epoxy_glClearNamedBufferData
+#define glClearNamedBufferDataEXT epoxy_glClearNamedBufferDataEXT
+#define glClearNamedBufferSubData epoxy_glClearNamedBufferSubData
+#define glClearNamedBufferSubDataEXT epoxy_glClearNamedBufferSubDataEXT
+#define glClearNamedFramebufferfi epoxy_glClearNamedFramebufferfi
+#define glClearNamedFramebufferfv epoxy_glClearNamedFramebufferfv
+#define glClearNamedFramebufferiv epoxy_glClearNamedFramebufferiv
+#define glClearNamedFramebufferuiv epoxy_glClearNamedFramebufferuiv
+#define glClearPixelLocalStorageuiEXT epoxy_glClearPixelLocalStorageuiEXT
+#define glClearStencil epoxy_glClearStencil
+#define glClearTexImage epoxy_glClearTexImage
+#define glClearTexImageEXT epoxy_glClearTexImageEXT
+#define glClearTexSubImage epoxy_glClearTexSubImage
+#define glClearTexSubImageEXT epoxy_glClearTexSubImageEXT
+#define glClientActiveTexture epoxy_glClientActiveTexture
+#define glClientActiveTextureARB epoxy_glClientActiveTextureARB
+#define glClientActiveVertexStreamATI epoxy_glClientActiveVertexStreamATI
+#define glClientAttribDefaultEXT epoxy_glClientAttribDefaultEXT
+#define glClientWaitSemaphoreui64NVX epoxy_glClientWaitSemaphoreui64NVX
+#define glClientWaitSync epoxy_glClientWaitSync
+#define glClientWaitSyncAPPLE epoxy_glClientWaitSyncAPPLE
+#define glClipControl epoxy_glClipControl
+#define glClipControlEXT epoxy_glClipControlEXT
+#define glClipPlane epoxy_glClipPlane
+#define glClipPlanef epoxy_glClipPlanef
+#define glClipPlanefIMG epoxy_glClipPlanefIMG
+#define glClipPlanefOES epoxy_glClipPlanefOES
+#define glClipPlanex epoxy_glClipPlanex
+#define glClipPlanexIMG epoxy_glClipPlanexIMG
+#define glClipPlanexOES epoxy_glClipPlanexOES
+#define glColor3b epoxy_glColor3b
+#define glColor3bv epoxy_glColor3bv
+#define glColor3d epoxy_glColor3d
+#define glColor3dv epoxy_glColor3dv
+#define glColor3f epoxy_glColor3f
+#define glColor3fVertex3fSUN epoxy_glColor3fVertex3fSUN
+#define glColor3fVertex3fvSUN epoxy_glColor3fVertex3fvSUN
+#define glColor3fv epoxy_glColor3fv
+#define glColor3hNV epoxy_glColor3hNV
+#define glColor3hvNV epoxy_glColor3hvNV
+#define glColor3i epoxy_glColor3i
+#define glColor3iv epoxy_glColor3iv
+#define glColor3s epoxy_glColor3s
+#define glColor3sv epoxy_glColor3sv
+#define glColor3ub epoxy_glColor3ub
+#define glColor3ubv epoxy_glColor3ubv
+#define glColor3ui epoxy_glColor3ui
+#define glColor3uiv epoxy_glColor3uiv
+#define glColor3us epoxy_glColor3us
+#define glColor3usv epoxy_glColor3usv
+#define glColor3xOES epoxy_glColor3xOES
+#define glColor3xvOES epoxy_glColor3xvOES
+#define glColor4b epoxy_glColor4b
+#define glColor4bv epoxy_glColor4bv
+#define glColor4d epoxy_glColor4d
+#define glColor4dv epoxy_glColor4dv
+#define glColor4f epoxy_glColor4f
+#define glColor4fNormal3fVertex3fSUN epoxy_glColor4fNormal3fVertex3fSUN
+#define glColor4fNormal3fVertex3fvSUN epoxy_glColor4fNormal3fVertex3fvSUN
+#define glColor4fv epoxy_glColor4fv
+#define glColor4hNV epoxy_glColor4hNV
+#define glColor4hvNV epoxy_glColor4hvNV
+#define glColor4i epoxy_glColor4i
+#define glColor4iv epoxy_glColor4iv
+#define glColor4s epoxy_glColor4s
+#define glColor4sv epoxy_glColor4sv
+#define glColor4ub epoxy_glColor4ub
+#define glColor4ubVertex2fSUN epoxy_glColor4ubVertex2fSUN
+#define glColor4ubVertex2fvSUN epoxy_glColor4ubVertex2fvSUN
+#define glColor4ubVertex3fSUN epoxy_glColor4ubVertex3fSUN
+#define glColor4ubVertex3fvSUN epoxy_glColor4ubVertex3fvSUN
+#define glColor4ubv epoxy_glColor4ubv
+#define glColor4ui epoxy_glColor4ui
+#define glColor4uiv epoxy_glColor4uiv
+#define glColor4us epoxy_glColor4us
+#define glColor4usv epoxy_glColor4usv
+#define glColor4x epoxy_glColor4x
+#define glColor4xOES epoxy_glColor4xOES
+#define glColor4xvOES epoxy_glColor4xvOES
+#define glColorFormatNV epoxy_glColorFormatNV
+#define glColorFragmentOp1ATI epoxy_glColorFragmentOp1ATI
+#define glColorFragmentOp2ATI epoxy_glColorFragmentOp2ATI
+#define glColorFragmentOp3ATI epoxy_glColorFragmentOp3ATI
+#define glColorMask epoxy_glColorMask
+#define glColorMaskIndexedEXT epoxy_glColorMaskIndexedEXT
+#define glColorMaski epoxy_glColorMaski
+#define glColorMaskiEXT epoxy_glColorMaskiEXT
+#define glColorMaskiOES epoxy_glColorMaskiOES
+#define glColorMaterial epoxy_glColorMaterial
+#define glColorP3ui epoxy_glColorP3ui
+#define glColorP3uiv epoxy_glColorP3uiv
+#define glColorP4ui epoxy_glColorP4ui
+#define glColorP4uiv epoxy_glColorP4uiv
+#define glColorPointer epoxy_glColorPointer
+#define glColorPointerEXT epoxy_glColorPointerEXT
+#define glColorPointerListIBM epoxy_glColorPointerListIBM
+#define glColorPointervINTEL epoxy_glColorPointervINTEL
+#define glColorSubTable epoxy_glColorSubTable
+#define glColorSubTableEXT epoxy_glColorSubTableEXT
+#define glColorTable epoxy_glColorTable
+#define glColorTableEXT epoxy_glColorTableEXT
+#define glColorTableParameterfv epoxy_glColorTableParameterfv
+#define glColorTableParameterfvSGI epoxy_glColorTableParameterfvSGI
+#define glColorTableParameteriv epoxy_glColorTableParameteriv
+#define glColorTableParameterivSGI epoxy_glColorTableParameterivSGI
+#define glColorTableSGI epoxy_glColorTableSGI
+#define glCombinerInputNV epoxy_glCombinerInputNV
+#define glCombinerOutputNV epoxy_glCombinerOutputNV
+#define glCombinerParameterfNV epoxy_glCombinerParameterfNV
+#define glCombinerParameterfvNV epoxy_glCombinerParameterfvNV
+#define glCombinerParameteriNV epoxy_glCombinerParameteriNV
+#define glCombinerParameterivNV epoxy_glCombinerParameterivNV
+#define glCombinerStageParameterfvNV epoxy_glCombinerStageParameterfvNV
+#define glCommandListSegmentsNV epoxy_glCommandListSegmentsNV
+#define glCompileCommandListNV epoxy_glCompileCommandListNV
+#define glCompileShader epoxy_glCompileShader
+#define glCompileShaderARB epoxy_glCompileShaderARB
+#define glCompileShaderIncludeARB epoxy_glCompileShaderIncludeARB
+#define glCompressedMultiTexImage1DEXT epoxy_glCompressedMultiTexImage1DEXT
+#define glCompressedMultiTexImage2DEXT epoxy_glCompressedMultiTexImage2DEXT
+#define glCompressedMultiTexImage3DEXT epoxy_glCompressedMultiTexImage3DEXT
+#define glCompressedMultiTexSubImage1DEXT epoxy_glCompressedMultiTexSubImage1DEXT
+#define glCompressedMultiTexSubImage2DEXT epoxy_glCompressedMultiTexSubImage2DEXT
+#define glCompressedMultiTexSubImage3DEXT epoxy_glCompressedMultiTexSubImage3DEXT
+#define glCompressedTexImage1D epoxy_glCompressedTexImage1D
+#define glCompressedTexImage1DARB epoxy_glCompressedTexImage1DARB
+#define glCompressedTexImage2D epoxy_glCompressedTexImage2D
+#define glCompressedTexImage2DARB epoxy_glCompressedTexImage2DARB
+#define glCompressedTexImage3D epoxy_glCompressedTexImage3D
+#define glCompressedTexImage3DARB epoxy_glCompressedTexImage3DARB
+#define glCompressedTexImage3DOES epoxy_glCompressedTexImage3DOES
+#define glCompressedTexSubImage1D epoxy_glCompressedTexSubImage1D
+#define glCompressedTexSubImage1DARB epoxy_glCompressedTexSubImage1DARB
+#define glCompressedTexSubImage2D epoxy_glCompressedTexSubImage2D
+#define glCompressedTexSubImage2DARB epoxy_glCompressedTexSubImage2DARB
+#define glCompressedTexSubImage3D epoxy_glCompressedTexSubImage3D
+#define glCompressedTexSubImage3DARB epoxy_glCompressedTexSubImage3DARB
+#define glCompressedTexSubImage3DOES epoxy_glCompressedTexSubImage3DOES
+#define glCompressedTextureImage1DEXT epoxy_glCompressedTextureImage1DEXT
+#define glCompressedTextureImage2DEXT epoxy_glCompressedTextureImage2DEXT
+#define glCompressedTextureImage3DEXT epoxy_glCompressedTextureImage3DEXT
+#define glCompressedTextureSubImage1D epoxy_glCompressedTextureSubImage1D
+#define glCompressedTextureSubImage1DEXT epoxy_glCompressedTextureSubImage1DEXT
+#define glCompressedTextureSubImage2D epoxy_glCompressedTextureSubImage2D
+#define glCompressedTextureSubImage2DEXT epoxy_glCompressedTextureSubImage2DEXT
+#define glCompressedTextureSubImage3D epoxy_glCompressedTextureSubImage3D
+#define glCompressedTextureSubImage3DEXT epoxy_glCompressedTextureSubImage3DEXT
+#define glConservativeRasterParameterfNV epoxy_glConservativeRasterParameterfNV
+#define glConservativeRasterParameteriNV epoxy_glConservativeRasterParameteriNV
+#define glConvolutionFilter1D epoxy_glConvolutionFilter1D
+#define glConvolutionFilter1DEXT epoxy_glConvolutionFilter1DEXT
+#define glConvolutionFilter2D epoxy_glConvolutionFilter2D
+#define glConvolutionFilter2DEXT epoxy_glConvolutionFilter2DEXT
+#define glConvolutionParameterf epoxy_glConvolutionParameterf
+#define glConvolutionParameterfEXT epoxy_glConvolutionParameterfEXT
+#define glConvolutionParameterfv epoxy_glConvolutionParameterfv
+#define glConvolutionParameterfvEXT epoxy_glConvolutionParameterfvEXT
+#define glConvolutionParameteri epoxy_glConvolutionParameteri
+#define glConvolutionParameteriEXT epoxy_glConvolutionParameteriEXT
+#define glConvolutionParameteriv epoxy_glConvolutionParameteriv
+#define glConvolutionParameterivEXT epoxy_glConvolutionParameterivEXT
+#define glConvolutionParameterxOES epoxy_glConvolutionParameterxOES
+#define glConvolutionParameterxvOES epoxy_glConvolutionParameterxvOES
+#define glCopyBufferSubData epoxy_glCopyBufferSubData
+#define glCopyBufferSubDataNV epoxy_glCopyBufferSubDataNV
+#define glCopyColorSubTable epoxy_glCopyColorSubTable
+#define glCopyColorSubTableEXT epoxy_glCopyColorSubTableEXT
+#define glCopyColorTable epoxy_glCopyColorTable
+#define glCopyColorTableSGI epoxy_glCopyColorTableSGI
+#define glCopyConvolutionFilter1D epoxy_glCopyConvolutionFilter1D
+#define glCopyConvolutionFilter1DEXT epoxy_glCopyConvolutionFilter1DEXT
+#define glCopyConvolutionFilter2D epoxy_glCopyConvolutionFilter2D
+#define glCopyConvolutionFilter2DEXT epoxy_glCopyConvolutionFilter2DEXT
+#define glCopyImageSubData epoxy_glCopyImageSubData
+#define glCopyImageSubDataEXT epoxy_glCopyImageSubDataEXT
+#define glCopyImageSubDataNV epoxy_glCopyImageSubDataNV
+#define glCopyImageSubDataOES epoxy_glCopyImageSubDataOES
+#define glCopyMultiTexImage1DEXT epoxy_glCopyMultiTexImage1DEXT
+#define glCopyMultiTexImage2DEXT epoxy_glCopyMultiTexImage2DEXT
+#define glCopyMultiTexSubImage1DEXT epoxy_glCopyMultiTexSubImage1DEXT
+#define glCopyMultiTexSubImage2DEXT epoxy_glCopyMultiTexSubImage2DEXT
+#define glCopyMultiTexSubImage3DEXT epoxy_glCopyMultiTexSubImage3DEXT
+#define glCopyNamedBufferSubData epoxy_glCopyNamedBufferSubData
+#define glCopyPathNV epoxy_glCopyPathNV
+#define glCopyPixels epoxy_glCopyPixels
+#define glCopyTexImage1D epoxy_glCopyTexImage1D
+#define glCopyTexImage1DEXT epoxy_glCopyTexImage1DEXT
+#define glCopyTexImage2D epoxy_glCopyTexImage2D
+#define glCopyTexImage2DEXT epoxy_glCopyTexImage2DEXT
+#define glCopyTexSubImage1D epoxy_glCopyTexSubImage1D
+#define glCopyTexSubImage1DEXT epoxy_glCopyTexSubImage1DEXT
+#define glCopyTexSubImage2D epoxy_glCopyTexSubImage2D
+#define glCopyTexSubImage2DEXT epoxy_glCopyTexSubImage2DEXT
+#define glCopyTexSubImage3D epoxy_glCopyTexSubImage3D
+#define glCopyTexSubImage3DEXT epoxy_glCopyTexSubImage3DEXT
+#define glCopyTexSubImage3DOES epoxy_glCopyTexSubImage3DOES
+#define glCopyTextureImage1DEXT epoxy_glCopyTextureImage1DEXT
+#define glCopyTextureImage2DEXT epoxy_glCopyTextureImage2DEXT
+#define glCopyTextureLevelsAPPLE epoxy_glCopyTextureLevelsAPPLE
+#define glCopyTextureSubImage1D epoxy_glCopyTextureSubImage1D
+#define glCopyTextureSubImage1DEXT epoxy_glCopyTextureSubImage1DEXT
+#define glCopyTextureSubImage2D epoxy_glCopyTextureSubImage2D
+#define glCopyTextureSubImage2DEXT epoxy_glCopyTextureSubImage2DEXT
+#define glCopyTextureSubImage3D epoxy_glCopyTextureSubImage3D
+#define glCopyTextureSubImage3DEXT epoxy_glCopyTextureSubImage3DEXT
+#define glCoverFillPathInstancedNV epoxy_glCoverFillPathInstancedNV
+#define glCoverFillPathNV epoxy_glCoverFillPathNV
+#define glCoverStrokePathInstancedNV epoxy_glCoverStrokePathInstancedNV
+#define glCoverStrokePathNV epoxy_glCoverStrokePathNV
+#define glCoverageMaskNV epoxy_glCoverageMaskNV
+#define glCoverageModulationNV epoxy_glCoverageModulationNV
+#define glCoverageModulationTableNV epoxy_glCoverageModulationTableNV
+#define glCoverageOperationNV epoxy_glCoverageOperationNV
+#define glCreateBuffers epoxy_glCreateBuffers
+#define glCreateCommandListsNV epoxy_glCreateCommandListsNV
+#define glCreateFramebuffers epoxy_glCreateFramebuffers
+#define glCreateMemoryObjectsEXT epoxy_glCreateMemoryObjectsEXT
+#define glCreatePerfQueryINTEL epoxy_glCreatePerfQueryINTEL
+#define glCreateProgram epoxy_glCreateProgram
+#define glCreateProgramObjectARB epoxy_glCreateProgramObjectARB
+#define glCreateProgramPipelines epoxy_glCreateProgramPipelines
+#define glCreateProgressFenceNVX epoxy_glCreateProgressFenceNVX
+#define glCreateQueries epoxy_glCreateQueries
+#define glCreateRenderbuffers epoxy_glCreateRenderbuffers
+#define glCreateSamplers epoxy_glCreateSamplers
+#define glCreateShader epoxy_glCreateShader
+#define glCreateShaderObjectARB epoxy_glCreateShaderObjectARB
+#define glCreateShaderProgramEXT epoxy_glCreateShaderProgramEXT
+#define glCreateShaderProgramv epoxy_glCreateShaderProgramv
+#define glCreateShaderProgramvEXT epoxy_glCreateShaderProgramvEXT
+#define glCreateStatesNV epoxy_glCreateStatesNV
+#define glCreateSyncFromCLeventARB epoxy_glCreateSyncFromCLeventARB
+#define glCreateTextures epoxy_glCreateTextures
+#define glCreateTransformFeedbacks epoxy_glCreateTransformFeedbacks
+#define glCreateVertexArrays epoxy_glCreateVertexArrays
+#define glCullFace epoxy_glCullFace
+#define glCullParameterdvEXT epoxy_glCullParameterdvEXT
+#define glCullParameterfvEXT epoxy_glCullParameterfvEXT
+#define glCurrentPaletteMatrixARB epoxy_glCurrentPaletteMatrixARB
+#define glCurrentPaletteMatrixOES epoxy_glCurrentPaletteMatrixOES
+#define glDebugMessageCallback epoxy_glDebugMessageCallback
+#define glDebugMessageCallbackAMD epoxy_glDebugMessageCallbackAMD
+#define glDebugMessageCallbackARB epoxy_glDebugMessageCallbackARB
+#define glDebugMessageCallbackKHR epoxy_glDebugMessageCallbackKHR
+#define glDebugMessageControl epoxy_glDebugMessageControl
+#define glDebugMessageControlARB epoxy_glDebugMessageControlARB
+#define glDebugMessageControlKHR epoxy_glDebugMessageControlKHR
+#define glDebugMessageEnableAMD epoxy_glDebugMessageEnableAMD
+#define glDebugMessageInsert epoxy_glDebugMessageInsert
+#define glDebugMessageInsertAMD epoxy_glDebugMessageInsertAMD
+#define glDebugMessageInsertARB epoxy_glDebugMessageInsertARB
+#define glDebugMessageInsertKHR epoxy_glDebugMessageInsertKHR
+#define glDeformSGIX epoxy_glDeformSGIX
+#define glDeformationMap3dSGIX epoxy_glDeformationMap3dSGIX
+#define glDeformationMap3fSGIX epoxy_glDeformationMap3fSGIX
+#define glDeleteAsyncMarkersSGIX epoxy_glDeleteAsyncMarkersSGIX
+#define glDeleteBuffers epoxy_glDeleteBuffers
+#define glDeleteBuffersARB epoxy_glDeleteBuffersARB
+#define glDeleteCommandListsNV epoxy_glDeleteCommandListsNV
+#define glDeleteFencesAPPLE epoxy_glDeleteFencesAPPLE
+#define glDeleteFencesNV epoxy_glDeleteFencesNV
+#define glDeleteFragmentShaderATI epoxy_glDeleteFragmentShaderATI
+#define glDeleteFramebuffers epoxy_glDeleteFramebuffers
+#define glDeleteFramebuffersEXT epoxy_glDeleteFramebuffersEXT
+#define glDeleteFramebuffersOES epoxy_glDeleteFramebuffersOES
+#define glDeleteLists epoxy_glDeleteLists
+#define glDeleteMemoryObjectsEXT epoxy_glDeleteMemoryObjectsEXT
+#define glDeleteNamedStringARB epoxy_glDeleteNamedStringARB
+#define glDeleteNamesAMD epoxy_glDeleteNamesAMD
+#define glDeleteObjectARB epoxy_glDeleteObjectARB
+#define glDeleteOcclusionQueriesNV epoxy_glDeleteOcclusionQueriesNV
+#define glDeletePathsNV epoxy_glDeletePathsNV
+#define glDeletePerfMonitorsAMD epoxy_glDeletePerfMonitorsAMD
+#define glDeletePerfQueryINTEL epoxy_glDeletePerfQueryINTEL
+#define glDeleteProgram epoxy_glDeleteProgram
+#define glDeleteProgramPipelines epoxy_glDeleteProgramPipelines
+#define glDeleteProgramPipelinesEXT epoxy_glDeleteProgramPipelinesEXT
+#define glDeleteProgramsARB epoxy_glDeleteProgramsARB
+#define glDeleteProgramsNV epoxy_glDeleteProgramsNV
+#define glDeleteQueries epoxy_glDeleteQueries
+#define glDeleteQueriesARB epoxy_glDeleteQueriesARB
+#define glDeleteQueriesEXT epoxy_glDeleteQueriesEXT
+#define glDeleteQueryResourceTagNV epoxy_glDeleteQueryResourceTagNV
+#define glDeleteRenderbuffers epoxy_glDeleteRenderbuffers
+#define glDeleteRenderbuffersEXT epoxy_glDeleteRenderbuffersEXT
+#define glDeleteRenderbuffersOES epoxy_glDeleteRenderbuffersOES
+#define glDeleteSamplers epoxy_glDeleteSamplers
+#define glDeleteSemaphoresEXT epoxy_glDeleteSemaphoresEXT
+#define glDeleteShader epoxy_glDeleteShader
+#define glDeleteStatesNV epoxy_glDeleteStatesNV
+#define glDeleteSync epoxy_glDeleteSync
+#define glDeleteSyncAPPLE epoxy_glDeleteSyncAPPLE
+#define glDeleteTextures epoxy_glDeleteTextures
+#define glDeleteTexturesEXT epoxy_glDeleteTexturesEXT
+#define glDeleteTransformFeedbacks epoxy_glDeleteTransformFeedbacks
+#define glDeleteTransformFeedbacksNV epoxy_glDeleteTransformFeedbacksNV
+#define glDeleteVertexArrays epoxy_glDeleteVertexArrays
+#define glDeleteVertexArraysAPPLE epoxy_glDeleteVertexArraysAPPLE
+#define glDeleteVertexArraysOES epoxy_glDeleteVertexArraysOES
+#define glDeleteVertexShaderEXT epoxy_glDeleteVertexShaderEXT
+#define glDepthBoundsEXT epoxy_glDepthBoundsEXT
+#define glDepthBoundsdNV epoxy_glDepthBoundsdNV
+#define glDepthFunc epoxy_glDepthFunc
+#define glDepthMask epoxy_glDepthMask
+#define glDepthRange epoxy_glDepthRange
+#define glDepthRangeArrayfvNV epoxy_glDepthRangeArrayfvNV
+#define glDepthRangeArrayfvOES epoxy_glDepthRangeArrayfvOES
+#define glDepthRangeArrayv epoxy_glDepthRangeArrayv
+#define glDepthRangeIndexed epoxy_glDepthRangeIndexed
+#define glDepthRangeIndexedfNV epoxy_glDepthRangeIndexedfNV
+#define glDepthRangeIndexedfOES epoxy_glDepthRangeIndexedfOES
+#define glDepthRangedNV epoxy_glDepthRangedNV
+#define glDepthRangef epoxy_glDepthRangef
+#define glDepthRangefOES epoxy_glDepthRangefOES
+#define glDepthRangex epoxy_glDepthRangex
+#define glDepthRangexOES epoxy_glDepthRangexOES
+#define glDetachObjectARB epoxy_glDetachObjectARB
+#define glDetachShader epoxy_glDetachShader
+#define glDetailTexFuncSGIS epoxy_glDetailTexFuncSGIS
+#define glDisable epoxy_glDisable
+#define glDisableClientState epoxy_glDisableClientState
+#define glDisableClientStateIndexedEXT epoxy_glDisableClientStateIndexedEXT
+#define glDisableClientStateiEXT epoxy_glDisableClientStateiEXT
+#define glDisableDriverControlQCOM epoxy_glDisableDriverControlQCOM
+#define glDisableIndexedEXT epoxy_glDisableIndexedEXT
+#define glDisableVariantClientStateEXT epoxy_glDisableVariantClientStateEXT
+#define glDisableVertexArrayAttrib epoxy_glDisableVertexArrayAttrib
+#define glDisableVertexArrayAttribEXT epoxy_glDisableVertexArrayAttribEXT
+#define glDisableVertexArrayEXT epoxy_glDisableVertexArrayEXT
+#define glDisableVertexAttribAPPLE epoxy_glDisableVertexAttribAPPLE
+#define glDisableVertexAttribArray epoxy_glDisableVertexAttribArray
+#define glDisableVertexAttribArrayARB epoxy_glDisableVertexAttribArrayARB
+#define glDisablei epoxy_glDisablei
+#define glDisableiEXT epoxy_glDisableiEXT
+#define glDisableiNV epoxy_glDisableiNV
+#define glDisableiOES epoxy_glDisableiOES
+#define glDiscardFramebufferEXT epoxy_glDiscardFramebufferEXT
+#define glDispatchCompute epoxy_glDispatchCompute
+#define glDispatchComputeGroupSizeARB epoxy_glDispatchComputeGroupSizeARB
+#define glDispatchComputeIndirect epoxy_glDispatchComputeIndirect
+#define glDrawArrays epoxy_glDrawArrays
+#define glDrawArraysEXT epoxy_glDrawArraysEXT
+#define glDrawArraysIndirect epoxy_glDrawArraysIndirect
+#define glDrawArraysInstanced epoxy_glDrawArraysInstanced
+#define glDrawArraysInstancedANGLE epoxy_glDrawArraysInstancedANGLE
+#define glDrawArraysInstancedARB epoxy_glDrawArraysInstancedARB
+#define glDrawArraysInstancedBaseInstance epoxy_glDrawArraysInstancedBaseInstance
+#define glDrawArraysInstancedBaseInstanceEXT epoxy_glDrawArraysInstancedBaseInstanceEXT
+#define glDrawArraysInstancedEXT epoxy_glDrawArraysInstancedEXT
+#define glDrawArraysInstancedNV epoxy_glDrawArraysInstancedNV
+#define glDrawBuffer epoxy_glDrawBuffer
+#define glDrawBuffers epoxy_glDrawBuffers
+#define glDrawBuffersARB epoxy_glDrawBuffersARB
+#define glDrawBuffersATI epoxy_glDrawBuffersATI
+#define glDrawBuffersEXT epoxy_glDrawBuffersEXT
+#define glDrawBuffersIndexedEXT epoxy_glDrawBuffersIndexedEXT
+#define glDrawBuffersNV epoxy_glDrawBuffersNV
+#define glDrawCommandsAddressNV epoxy_glDrawCommandsAddressNV
+#define glDrawCommandsNV epoxy_glDrawCommandsNV
+#define glDrawCommandsStatesAddressNV epoxy_glDrawCommandsStatesAddressNV
+#define glDrawCommandsStatesNV epoxy_glDrawCommandsStatesNV
+#define glDrawElementArrayAPPLE epoxy_glDrawElementArrayAPPLE
+#define glDrawElementArrayATI epoxy_glDrawElementArrayATI
+#define glDrawElements epoxy_glDrawElements
+#define glDrawElementsBaseVertex epoxy_glDrawElementsBaseVertex
+#define glDrawElementsBaseVertexEXT epoxy_glDrawElementsBaseVertexEXT
+#define glDrawElementsBaseVertexOES epoxy_glDrawElementsBaseVertexOES
+#define glDrawElementsIndirect epoxy_glDrawElementsIndirect
+#define glDrawElementsInstanced epoxy_glDrawElementsInstanced
+#define glDrawElementsInstancedANGLE epoxy_glDrawElementsInstancedANGLE
+#define glDrawElementsInstancedARB epoxy_glDrawElementsInstancedARB
+#define glDrawElementsInstancedBaseInstance epoxy_glDrawElementsInstancedBaseInstance
+#define glDrawElementsInstancedBaseInstanceEXT epoxy_glDrawElementsInstancedBaseInstanceEXT
+#define glDrawElementsInstancedBaseVertex epoxy_glDrawElementsInstancedBaseVertex
+#define glDrawElementsInstancedBaseVertexBaseInstance epoxy_glDrawElementsInstancedBaseVertexBaseInstance
+#define glDrawElementsInstancedBaseVertexBaseInstanceEXT epoxy_glDrawElementsInstancedBaseVertexBaseInstanceEXT
+#define glDrawElementsInstancedBaseVertexEXT epoxy_glDrawElementsInstancedBaseVertexEXT
+#define glDrawElementsInstancedBaseVertexOES epoxy_glDrawElementsInstancedBaseVertexOES
+#define glDrawElementsInstancedEXT epoxy_glDrawElementsInstancedEXT
+#define glDrawElementsInstancedNV epoxy_glDrawElementsInstancedNV
+#define glDrawMeshArraysSUN epoxy_glDrawMeshArraysSUN
+#define glDrawMeshTasksIndirectNV epoxy_glDrawMeshTasksIndirectNV
+#define glDrawMeshTasksNV epoxy_glDrawMeshTasksNV
+#define glDrawPixels epoxy_glDrawPixels
+#define glDrawRangeElementArrayAPPLE epoxy_glDrawRangeElementArrayAPPLE
+#define glDrawRangeElementArrayATI epoxy_glDrawRangeElementArrayATI
+#define glDrawRangeElements epoxy_glDrawRangeElements
+#define glDrawRangeElementsBaseVertex epoxy_glDrawRangeElementsBaseVertex
+#define glDrawRangeElementsBaseVertexEXT epoxy_glDrawRangeElementsBaseVertexEXT
+#define glDrawRangeElementsBaseVertexOES epoxy_glDrawRangeElementsBaseVertexOES
+#define glDrawRangeElementsEXT epoxy_glDrawRangeElementsEXT
+#define glDrawTexfOES epoxy_glDrawTexfOES
+#define glDrawTexfvOES epoxy_glDrawTexfvOES
+#define glDrawTexiOES epoxy_glDrawTexiOES
+#define glDrawTexivOES epoxy_glDrawTexivOES
+#define glDrawTexsOES epoxy_glDrawTexsOES
+#define glDrawTexsvOES epoxy_glDrawTexsvOES
+#define glDrawTextureNV epoxy_glDrawTextureNV
+#define glDrawTexxOES epoxy_glDrawTexxOES
+#define glDrawTexxvOES epoxy_glDrawTexxvOES
+#define glDrawTransformFeedback epoxy_glDrawTransformFeedback
+#define glDrawTransformFeedbackEXT epoxy_glDrawTransformFeedbackEXT
+#define glDrawTransformFeedbackInstanced epoxy_glDrawTransformFeedbackInstanced
+#define glDrawTransformFeedbackInstancedEXT epoxy_glDrawTransformFeedbackInstancedEXT
+#define glDrawTransformFeedbackNV epoxy_glDrawTransformFeedbackNV
+#define glDrawTransformFeedbackStream epoxy_glDrawTransformFeedbackStream
+#define glDrawTransformFeedbackStreamInstanced epoxy_glDrawTransformFeedbackStreamInstanced
+#define glDrawVkImageNV epoxy_glDrawVkImageNV
+#define glEGLImageTargetRenderbufferStorageOES epoxy_glEGLImageTargetRenderbufferStorageOES
+#define glEGLImageTargetTexStorageEXT epoxy_glEGLImageTargetTexStorageEXT
+#define glEGLImageTargetTexture2DOES epoxy_glEGLImageTargetTexture2DOES
+#define glEGLImageTargetTextureStorageEXT epoxy_glEGLImageTargetTextureStorageEXT
+#define glEdgeFlag epoxy_glEdgeFlag
+#define glEdgeFlagFormatNV epoxy_glEdgeFlagFormatNV
+#define glEdgeFlagPointer epoxy_glEdgeFlagPointer
+#define glEdgeFlagPointerEXT epoxy_glEdgeFlagPointerEXT
+#define glEdgeFlagPointerListIBM epoxy_glEdgeFlagPointerListIBM
+#define glEdgeFlagv epoxy_glEdgeFlagv
+#define glElementPointerAPPLE epoxy_glElementPointerAPPLE
+#define glElementPointerATI epoxy_glElementPointerATI
+#define glEnable epoxy_glEnable
+#define glEnableClientState epoxy_glEnableClientState
+#define glEnableClientStateIndexedEXT epoxy_glEnableClientStateIndexedEXT
+#define glEnableClientStateiEXT epoxy_glEnableClientStateiEXT
+#define glEnableDriverControlQCOM epoxy_glEnableDriverControlQCOM
+#define glEnableIndexedEXT epoxy_glEnableIndexedEXT
+#define glEnableVariantClientStateEXT epoxy_glEnableVariantClientStateEXT
+#define glEnableVertexArrayAttrib epoxy_glEnableVertexArrayAttrib
+#define glEnableVertexArrayAttribEXT epoxy_glEnableVertexArrayAttribEXT
+#define glEnableVertexArrayEXT epoxy_glEnableVertexArrayEXT
+#define glEnableVertexAttribAPPLE epoxy_glEnableVertexAttribAPPLE
+#define glEnableVertexAttribArray epoxy_glEnableVertexAttribArray
+#define glEnableVertexAttribArrayARB epoxy_glEnableVertexAttribArrayARB
+#define glEnablei epoxy_glEnablei
+#define glEnableiEXT epoxy_glEnableiEXT
+#define glEnableiNV epoxy_glEnableiNV
+#define glEnableiOES epoxy_glEnableiOES
+#define glEnd epoxy_glEnd
+#define glEndConditionalRender epoxy_glEndConditionalRender
+#define glEndConditionalRenderNV epoxy_glEndConditionalRenderNV
+#define glEndConditionalRenderNVX epoxy_glEndConditionalRenderNVX
+#define glEndFragmentShaderATI epoxy_glEndFragmentShaderATI
+#define glEndList epoxy_glEndList
+#define glEndOcclusionQueryNV epoxy_glEndOcclusionQueryNV
+#define glEndPerfMonitorAMD epoxy_glEndPerfMonitorAMD
+#define glEndPerfQueryINTEL epoxy_glEndPerfQueryINTEL
+#define glEndQuery epoxy_glEndQuery
+#define glEndQueryARB epoxy_glEndQueryARB
+#define glEndQueryEXT epoxy_glEndQueryEXT
+#define glEndQueryIndexed epoxy_glEndQueryIndexed
+#define glEndTilingQCOM epoxy_glEndTilingQCOM
+#define glEndTransformFeedback epoxy_glEndTransformFeedback
+#define glEndTransformFeedbackEXT epoxy_glEndTransformFeedbackEXT
+#define glEndTransformFeedbackNV epoxy_glEndTransformFeedbackNV
+#define glEndVertexShaderEXT epoxy_glEndVertexShaderEXT
+#define glEndVideoCaptureNV epoxy_glEndVideoCaptureNV
+#define glEvalCoord1d epoxy_glEvalCoord1d
+#define glEvalCoord1dv epoxy_glEvalCoord1dv
+#define glEvalCoord1f epoxy_glEvalCoord1f
+#define glEvalCoord1fv epoxy_glEvalCoord1fv
+#define glEvalCoord1xOES epoxy_glEvalCoord1xOES
+#define glEvalCoord1xvOES epoxy_glEvalCoord1xvOES
+#define glEvalCoord2d epoxy_glEvalCoord2d
+#define glEvalCoord2dv epoxy_glEvalCoord2dv
+#define glEvalCoord2f epoxy_glEvalCoord2f
+#define glEvalCoord2fv epoxy_glEvalCoord2fv
+#define glEvalCoord2xOES epoxy_glEvalCoord2xOES
+#define glEvalCoord2xvOES epoxy_glEvalCoord2xvOES
+#define glEvalMapsNV epoxy_glEvalMapsNV
+#define glEvalMesh1 epoxy_glEvalMesh1
+#define glEvalMesh2 epoxy_glEvalMesh2
+#define glEvalPoint1 epoxy_glEvalPoint1
+#define glEvalPoint2 epoxy_glEvalPoint2
+#define glEvaluateDepthValuesARB epoxy_glEvaluateDepthValuesARB
+#define glExecuteProgramNV epoxy_glExecuteProgramNV
+#define glExtGetBufferPointervQCOM epoxy_glExtGetBufferPointervQCOM
+#define glExtGetBuffersQCOM epoxy_glExtGetBuffersQCOM
+#define glExtGetFramebuffersQCOM epoxy_glExtGetFramebuffersQCOM
+#define glExtGetProgramBinarySourceQCOM epoxy_glExtGetProgramBinarySourceQCOM
+#define glExtGetProgramsQCOM epoxy_glExtGetProgramsQCOM
+#define glExtGetRenderbuffersQCOM epoxy_glExtGetRenderbuffersQCOM
+#define glExtGetShadersQCOM epoxy_glExtGetShadersQCOM
+#define glExtGetTexLevelParameterivQCOM epoxy_glExtGetTexLevelParameterivQCOM
+#define glExtGetTexSubImageQCOM epoxy_glExtGetTexSubImageQCOM
+#define glExtGetTexturesQCOM epoxy_glExtGetTexturesQCOM
+#define glExtIsProgramBinaryQCOM epoxy_glExtIsProgramBinaryQCOM
+#define glExtTexObjectStateOverrideiQCOM epoxy_glExtTexObjectStateOverrideiQCOM
+#define glExtractComponentEXT epoxy_glExtractComponentEXT
+#define glFeedbackBuffer epoxy_glFeedbackBuffer
+#define glFeedbackBufferxOES epoxy_glFeedbackBufferxOES
+#define glFenceSync epoxy_glFenceSync
+#define glFenceSyncAPPLE epoxy_glFenceSyncAPPLE
+#define glFinalCombinerInputNV epoxy_glFinalCombinerInputNV
+#define glFinish epoxy_glFinish
+#define glFinishAsyncSGIX epoxy_glFinishAsyncSGIX
+#define glFinishFenceAPPLE epoxy_glFinishFenceAPPLE
+#define glFinishFenceNV epoxy_glFinishFenceNV
+#define glFinishObjectAPPLE epoxy_glFinishObjectAPPLE
+#define glFinishTextureSUNX epoxy_glFinishTextureSUNX
+#define glFlush epoxy_glFlush
+#define glFlushMappedBufferRange epoxy_glFlushMappedBufferRange
+#define glFlushMappedBufferRangeAPPLE epoxy_glFlushMappedBufferRangeAPPLE
+#define glFlushMappedBufferRangeEXT epoxy_glFlushMappedBufferRangeEXT
+#define glFlushMappedNamedBufferRange epoxy_glFlushMappedNamedBufferRange
+#define glFlushMappedNamedBufferRangeEXT epoxy_glFlushMappedNamedBufferRangeEXT
+#define glFlushPixelDataRangeNV epoxy_glFlushPixelDataRangeNV
+#define glFlushRasterSGIX epoxy_glFlushRasterSGIX
+#define glFlushStaticDataIBM epoxy_glFlushStaticDataIBM
+#define glFlushVertexArrayRangeAPPLE epoxy_glFlushVertexArrayRangeAPPLE
+#define glFlushVertexArrayRangeNV epoxy_glFlushVertexArrayRangeNV
+#define glFogCoordFormatNV epoxy_glFogCoordFormatNV
+#define glFogCoordPointer epoxy_glFogCoordPointer
+#define glFogCoordPointerEXT epoxy_glFogCoordPointerEXT
+#define glFogCoordPointerListIBM epoxy_glFogCoordPointerListIBM
+#define glFogCoordd epoxy_glFogCoordd
+#define glFogCoorddEXT epoxy_glFogCoorddEXT
+#define glFogCoorddv epoxy_glFogCoorddv
+#define glFogCoorddvEXT epoxy_glFogCoorddvEXT
+#define glFogCoordf epoxy_glFogCoordf
+#define glFogCoordfEXT epoxy_glFogCoordfEXT
+#define glFogCoordfv epoxy_glFogCoordfv
+#define glFogCoordfvEXT epoxy_glFogCoordfvEXT
+#define glFogCoordhNV epoxy_glFogCoordhNV
+#define glFogCoordhvNV epoxy_glFogCoordhvNV
+#define glFogFuncSGIS epoxy_glFogFuncSGIS
+#define glFogf epoxy_glFogf
+#define glFogfv epoxy_glFogfv
+#define glFogi epoxy_glFogi
+#define glFogiv epoxy_glFogiv
+#define glFogx epoxy_glFogx
+#define glFogxOES epoxy_glFogxOES
+#define glFogxv epoxy_glFogxv
+#define glFogxvOES epoxy_glFogxvOES
+#define glFragmentColorMaterialSGIX epoxy_glFragmentColorMaterialSGIX
+#define glFragmentCoverageColorNV epoxy_glFragmentCoverageColorNV
+#define glFragmentLightModelfSGIX epoxy_glFragmentLightModelfSGIX
+#define glFragmentLightModelfvSGIX epoxy_glFragmentLightModelfvSGIX
+#define glFragmentLightModeliSGIX epoxy_glFragmentLightModeliSGIX
+#define glFragmentLightModelivSGIX epoxy_glFragmentLightModelivSGIX
+#define glFragmentLightfSGIX epoxy_glFragmentLightfSGIX
+#define glFragmentLightfvSGIX epoxy_glFragmentLightfvSGIX
+#define glFragmentLightiSGIX epoxy_glFragmentLightiSGIX
+#define glFragmentLightivSGIX epoxy_glFragmentLightivSGIX
+#define glFragmentMaterialfSGIX epoxy_glFragmentMaterialfSGIX
+#define glFragmentMaterialfvSGIX epoxy_glFragmentMaterialfvSGIX
+#define glFragmentMaterialiSGIX epoxy_glFragmentMaterialiSGIX
+#define glFragmentMaterialivSGIX epoxy_glFragmentMaterialivSGIX
+#define glFrameTerminatorGREMEDY epoxy_glFrameTerminatorGREMEDY
+#define glFrameZoomSGIX epoxy_glFrameZoomSGIX
+#define glFramebufferDrawBufferEXT epoxy_glFramebufferDrawBufferEXT
+#define glFramebufferDrawBuffersEXT epoxy_glFramebufferDrawBuffersEXT
+#define glFramebufferFetchBarrierEXT epoxy_glFramebufferFetchBarrierEXT
+#define glFramebufferFetchBarrierQCOM epoxy_glFramebufferFetchBarrierQCOM
+#define glFramebufferFoveationConfigQCOM epoxy_glFramebufferFoveationConfigQCOM
+#define glFramebufferFoveationParametersQCOM epoxy_glFramebufferFoveationParametersQCOM
+#define glFramebufferParameteri epoxy_glFramebufferParameteri
+#define glFramebufferParameteriMESA epoxy_glFramebufferParameteriMESA
+#define glFramebufferPixelLocalStorageSizeEXT epoxy_glFramebufferPixelLocalStorageSizeEXT
+#define glFramebufferReadBufferEXT epoxy_glFramebufferReadBufferEXT
+#define glFramebufferRenderbuffer epoxy_glFramebufferRenderbuffer
+#define glFramebufferRenderbufferEXT epoxy_glFramebufferRenderbufferEXT
+#define glFramebufferRenderbufferOES epoxy_glFramebufferRenderbufferOES
+#define glFramebufferSampleLocationsfvARB epoxy_glFramebufferSampleLocationsfvARB
+#define glFramebufferSampleLocationsfvNV epoxy_glFramebufferSampleLocationsfvNV
+#define glFramebufferSamplePositionsfvAMD epoxy_glFramebufferSamplePositionsfvAMD
+#define glFramebufferTexture epoxy_glFramebufferTexture
+#define glFramebufferTexture1D epoxy_glFramebufferTexture1D
+#define glFramebufferTexture1DEXT epoxy_glFramebufferTexture1DEXT
+#define glFramebufferTexture2D epoxy_glFramebufferTexture2D
+#define glFramebufferTexture2DDownsampleIMG epoxy_glFramebufferTexture2DDownsampleIMG
+#define glFramebufferTexture2DEXT epoxy_glFramebufferTexture2DEXT
+#define glFramebufferTexture2DMultisampleEXT epoxy_glFramebufferTexture2DMultisampleEXT
+#define glFramebufferTexture2DMultisampleIMG epoxy_glFramebufferTexture2DMultisampleIMG
+#define glFramebufferTexture2DOES epoxy_glFramebufferTexture2DOES
+#define glFramebufferTexture3D epoxy_glFramebufferTexture3D
+#define glFramebufferTexture3DEXT epoxy_glFramebufferTexture3DEXT
+#define glFramebufferTexture3DOES epoxy_glFramebufferTexture3DOES
+#define glFramebufferTextureARB epoxy_glFramebufferTextureARB
+#define glFramebufferTextureEXT epoxy_glFramebufferTextureEXT
+#define glFramebufferTextureFaceARB epoxy_glFramebufferTextureFaceARB
+#define glFramebufferTextureFaceEXT epoxy_glFramebufferTextureFaceEXT
+#define glFramebufferTextureLayer epoxy_glFramebufferTextureLayer
+#define glFramebufferTextureLayerARB epoxy_glFramebufferTextureLayerARB
+#define glFramebufferTextureLayerDownsampleIMG epoxy_glFramebufferTextureLayerDownsampleIMG
+#define glFramebufferTextureLayerEXT epoxy_glFramebufferTextureLayerEXT
+#define glFramebufferTextureMultisampleMultiviewOVR epoxy_glFramebufferTextureMultisampleMultiviewOVR
+#define glFramebufferTextureMultiviewOVR epoxy_glFramebufferTextureMultiviewOVR
+#define glFramebufferTextureOES epoxy_glFramebufferTextureOES
+#define glFreeObjectBufferATI epoxy_glFreeObjectBufferATI
+#define glFrontFace epoxy_glFrontFace
+#define glFrustum epoxy_glFrustum
+#define glFrustumf epoxy_glFrustumf
+#define glFrustumfOES epoxy_glFrustumfOES
+#define glFrustumx epoxy_glFrustumx
+#define glFrustumxOES epoxy_glFrustumxOES
+#define glGenAsyncMarkersSGIX epoxy_glGenAsyncMarkersSGIX
+#define glGenBuffers epoxy_glGenBuffers
+#define glGenBuffersARB epoxy_glGenBuffersARB
+#define glGenFencesAPPLE epoxy_glGenFencesAPPLE
+#define glGenFencesNV epoxy_glGenFencesNV
+#define glGenFragmentShadersATI epoxy_glGenFragmentShadersATI
+#define glGenFramebuffers epoxy_glGenFramebuffers
+#define glGenFramebuffersEXT epoxy_glGenFramebuffersEXT
+#define glGenFramebuffersOES epoxy_glGenFramebuffersOES
+#define glGenLists epoxy_glGenLists
+#define glGenNamesAMD epoxy_glGenNamesAMD
+#define glGenOcclusionQueriesNV epoxy_glGenOcclusionQueriesNV
+#define glGenPathsNV epoxy_glGenPathsNV
+#define glGenPerfMonitorsAMD epoxy_glGenPerfMonitorsAMD
+#define glGenProgramPipelines epoxy_glGenProgramPipelines
+#define glGenProgramPipelinesEXT epoxy_glGenProgramPipelinesEXT
+#define glGenProgramsARB epoxy_glGenProgramsARB
+#define glGenProgramsNV epoxy_glGenProgramsNV
+#define glGenQueries epoxy_glGenQueries
+#define glGenQueriesARB epoxy_glGenQueriesARB
+#define glGenQueriesEXT epoxy_glGenQueriesEXT
+#define glGenQueryResourceTagNV epoxy_glGenQueryResourceTagNV
+#define glGenRenderbuffers epoxy_glGenRenderbuffers
+#define glGenRenderbuffersEXT epoxy_glGenRenderbuffersEXT
+#define glGenRenderbuffersOES epoxy_glGenRenderbuffersOES
+#define glGenSamplers epoxy_glGenSamplers
+#define glGenSemaphoresEXT epoxy_glGenSemaphoresEXT
+#define glGenSymbolsEXT epoxy_glGenSymbolsEXT
+#define glGenTextures epoxy_glGenTextures
+#define glGenTexturesEXT epoxy_glGenTexturesEXT
+#define glGenTransformFeedbacks epoxy_glGenTransformFeedbacks
+#define glGenTransformFeedbacksNV epoxy_glGenTransformFeedbacksNV
+#define glGenVertexArrays epoxy_glGenVertexArrays
+#define glGenVertexArraysAPPLE epoxy_glGenVertexArraysAPPLE
+#define glGenVertexArraysOES epoxy_glGenVertexArraysOES
+#define glGenVertexShadersEXT epoxy_glGenVertexShadersEXT
+#define glGenerateMipmap epoxy_glGenerateMipmap
+#define glGenerateMipmapEXT epoxy_glGenerateMipmapEXT
+#define glGenerateMipmapOES epoxy_glGenerateMipmapOES
+#define glGenerateMultiTexMipmapEXT epoxy_glGenerateMultiTexMipmapEXT
+#define glGenerateTextureMipmap epoxy_glGenerateTextureMipmap
+#define glGenerateTextureMipmapEXT epoxy_glGenerateTextureMipmapEXT
+#define glGetActiveAtomicCounterBufferiv epoxy_glGetActiveAtomicCounterBufferiv
+#define glGetActiveAttrib epoxy_glGetActiveAttrib
+#define glGetActiveAttribARB epoxy_glGetActiveAttribARB
+#define glGetActiveSubroutineName epoxy_glGetActiveSubroutineName
+#define glGetActiveSubroutineUniformName epoxy_glGetActiveSubroutineUniformName
+#define glGetActiveSubroutineUniformiv epoxy_glGetActiveSubroutineUniformiv
+#define glGetActiveUniform epoxy_glGetActiveUniform
+#define glGetActiveUniformARB epoxy_glGetActiveUniformARB
+#define glGetActiveUniformBlockName epoxy_glGetActiveUniformBlockName
+#define glGetActiveUniformBlockiv epoxy_glGetActiveUniformBlockiv
+#define glGetActiveUniformName epoxy_glGetActiveUniformName
+#define glGetActiveUniformsiv epoxy_glGetActiveUniformsiv
+#define glGetActiveVaryingNV epoxy_glGetActiveVaryingNV
+#define glGetArrayObjectfvATI epoxy_glGetArrayObjectfvATI
+#define glGetArrayObjectivATI epoxy_glGetArrayObjectivATI
+#define glGetAttachedObjectsARB epoxy_glGetAttachedObjectsARB
+#define glGetAttachedShaders epoxy_glGetAttachedShaders
+#define glGetAttribLocation epoxy_glGetAttribLocation
+#define glGetAttribLocationARB epoxy_glGetAttribLocationARB
+#define glGetBooleanIndexedvEXT epoxy_glGetBooleanIndexedvEXT
+#define glGetBooleani_v epoxy_glGetBooleani_v
+#define glGetBooleanv epoxy_glGetBooleanv
+#define glGetBufferParameteri64v epoxy_glGetBufferParameteri64v
+#define glGetBufferParameteriv epoxy_glGetBufferParameteriv
+#define glGetBufferParameterivARB epoxy_glGetBufferParameterivARB
+#define glGetBufferParameterui64vNV epoxy_glGetBufferParameterui64vNV
+#define glGetBufferPointerv epoxy_glGetBufferPointerv
+#define glGetBufferPointervARB epoxy_glGetBufferPointervARB
+#define glGetBufferPointervOES epoxy_glGetBufferPointervOES
+#define glGetBufferSubData epoxy_glGetBufferSubData
+#define glGetBufferSubDataARB epoxy_glGetBufferSubDataARB
+#define glGetClipPlane epoxy_glGetClipPlane
+#define glGetClipPlanef epoxy_glGetClipPlanef
+#define glGetClipPlanefOES epoxy_glGetClipPlanefOES
+#define glGetClipPlanex epoxy_glGetClipPlanex
+#define glGetClipPlanexOES epoxy_glGetClipPlanexOES
+#define glGetColorTable epoxy_glGetColorTable
+#define glGetColorTableEXT epoxy_glGetColorTableEXT
+#define glGetColorTableParameterfv epoxy_glGetColorTableParameterfv
+#define glGetColorTableParameterfvEXT epoxy_glGetColorTableParameterfvEXT
+#define glGetColorTableParameterfvSGI epoxy_glGetColorTableParameterfvSGI
+#define glGetColorTableParameteriv epoxy_glGetColorTableParameteriv
+#define glGetColorTableParameterivEXT epoxy_glGetColorTableParameterivEXT
+#define glGetColorTableParameterivSGI epoxy_glGetColorTableParameterivSGI
+#define glGetColorTableSGI epoxy_glGetColorTableSGI
+#define glGetCombinerInputParameterfvNV epoxy_glGetCombinerInputParameterfvNV
+#define glGetCombinerInputParameterivNV epoxy_glGetCombinerInputParameterivNV
+#define glGetCombinerOutputParameterfvNV epoxy_glGetCombinerOutputParameterfvNV
+#define glGetCombinerOutputParameterivNV epoxy_glGetCombinerOutputParameterivNV
+#define glGetCombinerStageParameterfvNV epoxy_glGetCombinerStageParameterfvNV
+#define glGetCommandHeaderNV epoxy_glGetCommandHeaderNV
+#define glGetCompressedMultiTexImageEXT epoxy_glGetCompressedMultiTexImageEXT
+#define glGetCompressedTexImage epoxy_glGetCompressedTexImage
+#define glGetCompressedTexImageARB epoxy_glGetCompressedTexImageARB
+#define glGetCompressedTextureImage epoxy_glGetCompressedTextureImage
+#define glGetCompressedTextureImageEXT epoxy_glGetCompressedTextureImageEXT
+#define glGetCompressedTextureSubImage epoxy_glGetCompressedTextureSubImage
+#define glGetConvolutionFilter epoxy_glGetConvolutionFilter
+#define glGetConvolutionFilterEXT epoxy_glGetConvolutionFilterEXT
+#define glGetConvolutionParameterfv epoxy_glGetConvolutionParameterfv
+#define glGetConvolutionParameterfvEXT epoxy_glGetConvolutionParameterfvEXT
+#define glGetConvolutionParameteriv epoxy_glGetConvolutionParameteriv
+#define glGetConvolutionParameterivEXT epoxy_glGetConvolutionParameterivEXT
+#define glGetConvolutionParameterxvOES epoxy_glGetConvolutionParameterxvOES
+#define glGetCoverageModulationTableNV epoxy_glGetCoverageModulationTableNV
+#define glGetDebugMessageLog epoxy_glGetDebugMessageLog
+#define glGetDebugMessageLogAMD epoxy_glGetDebugMessageLogAMD
+#define glGetDebugMessageLogARB epoxy_glGetDebugMessageLogARB
+#define glGetDebugMessageLogKHR epoxy_glGetDebugMessageLogKHR
+#define glGetDetailTexFuncSGIS epoxy_glGetDetailTexFuncSGIS
+#define glGetDoubleIndexedvEXT epoxy_glGetDoubleIndexedvEXT
+#define glGetDoublei_v epoxy_glGetDoublei_v
+#define glGetDoublei_vEXT epoxy_glGetDoublei_vEXT
+#define glGetDoublev epoxy_glGetDoublev
+#define glGetDriverControlStringQCOM epoxy_glGetDriverControlStringQCOM
+#define glGetDriverControlsQCOM epoxy_glGetDriverControlsQCOM
+#define glGetError epoxy_glGetError
+#define glGetFenceivNV epoxy_glGetFenceivNV
+#define glGetFinalCombinerInputParameterfvNV epoxy_glGetFinalCombinerInputParameterfvNV
+#define glGetFinalCombinerInputParameterivNV epoxy_glGetFinalCombinerInputParameterivNV
+#define glGetFirstPerfQueryIdINTEL epoxy_glGetFirstPerfQueryIdINTEL
+#define glGetFixedv epoxy_glGetFixedv
+#define glGetFixedvOES epoxy_glGetFixedvOES
+#define glGetFloatIndexedvEXT epoxy_glGetFloatIndexedvEXT
+#define glGetFloati_v epoxy_glGetFloati_v
+#define glGetFloati_vEXT epoxy_glGetFloati_vEXT
+#define glGetFloati_vNV epoxy_glGetFloati_vNV
+#define glGetFloati_vOES epoxy_glGetFloati_vOES
+#define glGetFloatv epoxy_glGetFloatv
+#define glGetFogFuncSGIS epoxy_glGetFogFuncSGIS
+#define glGetFragDataIndex epoxy_glGetFragDataIndex
+#define glGetFragDataIndexEXT epoxy_glGetFragDataIndexEXT
+#define glGetFragDataLocation epoxy_glGetFragDataLocation
+#define glGetFragDataLocationEXT epoxy_glGetFragDataLocationEXT
+#define glGetFragmentLightfvSGIX epoxy_glGetFragmentLightfvSGIX
+#define glGetFragmentLightivSGIX epoxy_glGetFragmentLightivSGIX
+#define glGetFragmentMaterialfvSGIX epoxy_glGetFragmentMaterialfvSGIX
+#define glGetFragmentMaterialivSGIX epoxy_glGetFragmentMaterialivSGIX
+#define glGetFramebufferAttachmentParameteriv epoxy_glGetFramebufferAttachmentParameteriv
+#define glGetFramebufferAttachmentParameterivEXT epoxy_glGetFramebufferAttachmentParameterivEXT
+#define glGetFramebufferAttachmentParameterivOES epoxy_glGetFramebufferAttachmentParameterivOES
+#define glGetFramebufferParameterfvAMD epoxy_glGetFramebufferParameterfvAMD
+#define glGetFramebufferParameteriv epoxy_glGetFramebufferParameteriv
+#define glGetFramebufferParameterivEXT epoxy_glGetFramebufferParameterivEXT
+#define glGetFramebufferParameterivMESA epoxy_glGetFramebufferParameterivMESA
+#define glGetFramebufferPixelLocalStorageSizeEXT epoxy_glGetFramebufferPixelLocalStorageSizeEXT
+#define glGetGraphicsResetStatus epoxy_glGetGraphicsResetStatus
+#define glGetGraphicsResetStatusARB epoxy_glGetGraphicsResetStatusARB
+#define glGetGraphicsResetStatusEXT epoxy_glGetGraphicsResetStatusEXT
+#define glGetGraphicsResetStatusKHR epoxy_glGetGraphicsResetStatusKHR
+#define glGetHandleARB epoxy_glGetHandleARB
+#define glGetHistogram epoxy_glGetHistogram
+#define glGetHistogramEXT epoxy_glGetHistogramEXT
+#define glGetHistogramParameterfv epoxy_glGetHistogramParameterfv
+#define glGetHistogramParameterfvEXT epoxy_glGetHistogramParameterfvEXT
+#define glGetHistogramParameteriv epoxy_glGetHistogramParameteriv
+#define glGetHistogramParameterivEXT epoxy_glGetHistogramParameterivEXT
+#define glGetHistogramParameterxvOES epoxy_glGetHistogramParameterxvOES
+#define glGetImageHandleARB epoxy_glGetImageHandleARB
+#define glGetImageHandleNV epoxy_glGetImageHandleNV
+#define glGetImageTransformParameterfvHP epoxy_glGetImageTransformParameterfvHP
+#define glGetImageTransformParameterivHP epoxy_glGetImageTransformParameterivHP
+#define glGetInfoLogARB epoxy_glGetInfoLogARB
+#define glGetInstrumentsSGIX epoxy_glGetInstrumentsSGIX
+#define glGetInteger64i_v epoxy_glGetInteger64i_v
+#define glGetInteger64v epoxy_glGetInteger64v
+#define glGetInteger64vAPPLE epoxy_glGetInteger64vAPPLE
+#define glGetIntegerIndexedvEXT epoxy_glGetIntegerIndexedvEXT
+#define glGetIntegeri_v epoxy_glGetIntegeri_v
+#define glGetIntegeri_vEXT epoxy_glGetIntegeri_vEXT
+#define glGetIntegerui64i_vNV epoxy_glGetIntegerui64i_vNV
+#define glGetIntegerui64vNV epoxy_glGetIntegerui64vNV
+#define glGetIntegerv epoxy_glGetIntegerv
+#define glGetInternalformatSampleivNV epoxy_glGetInternalformatSampleivNV
+#define glGetInternalformati64v epoxy_glGetInternalformati64v
+#define glGetInternalformativ epoxy_glGetInternalformativ
+#define glGetInvariantBooleanvEXT epoxy_glGetInvariantBooleanvEXT
+#define glGetInvariantFloatvEXT epoxy_glGetInvariantFloatvEXT
+#define glGetInvariantIntegervEXT epoxy_glGetInvariantIntegervEXT
+#define glGetLightfv epoxy_glGetLightfv
+#define glGetLightiv epoxy_glGetLightiv
+#define glGetLightxOES epoxy_glGetLightxOES
+#define glGetLightxv epoxy_glGetLightxv
+#define glGetLightxvOES epoxy_glGetLightxvOES
+#define glGetListParameterfvSGIX epoxy_glGetListParameterfvSGIX
+#define glGetListParameterivSGIX epoxy_glGetListParameterivSGIX
+#define glGetLocalConstantBooleanvEXT epoxy_glGetLocalConstantBooleanvEXT
+#define glGetLocalConstantFloatvEXT epoxy_glGetLocalConstantFloatvEXT
+#define glGetLocalConstantIntegervEXT epoxy_glGetLocalConstantIntegervEXT
+#define glGetMapAttribParameterfvNV epoxy_glGetMapAttribParameterfvNV
+#define glGetMapAttribParameterivNV epoxy_glGetMapAttribParameterivNV
+#define glGetMapControlPointsNV epoxy_glGetMapControlPointsNV
+#define glGetMapParameterfvNV epoxy_glGetMapParameterfvNV
+#define glGetMapParameterivNV epoxy_glGetMapParameterivNV
+#define glGetMapdv epoxy_glGetMapdv
+#define glGetMapfv epoxy_glGetMapfv
+#define glGetMapiv epoxy_glGetMapiv
+#define glGetMapxvOES epoxy_glGetMapxvOES
+#define glGetMaterialfv epoxy_glGetMaterialfv
+#define glGetMaterialiv epoxy_glGetMaterialiv
+#define glGetMaterialxOES epoxy_glGetMaterialxOES
+#define glGetMaterialxv epoxy_glGetMaterialxv
+#define glGetMaterialxvOES epoxy_glGetMaterialxvOES
+#define glGetMemoryObjectDetachedResourcesuivNV epoxy_glGetMemoryObjectDetachedResourcesuivNV
+#define glGetMemoryObjectParameterivEXT epoxy_glGetMemoryObjectParameterivEXT
+#define glGetMinmax epoxy_glGetMinmax
+#define glGetMinmaxEXT epoxy_glGetMinmaxEXT
+#define glGetMinmaxParameterfv epoxy_glGetMinmaxParameterfv
+#define glGetMinmaxParameterfvEXT epoxy_glGetMinmaxParameterfvEXT
+#define glGetMinmaxParameteriv epoxy_glGetMinmaxParameteriv
+#define glGetMinmaxParameterivEXT epoxy_glGetMinmaxParameterivEXT
+#define glGetMultiTexEnvfvEXT epoxy_glGetMultiTexEnvfvEXT
+#define glGetMultiTexEnvivEXT epoxy_glGetMultiTexEnvivEXT
+#define glGetMultiTexGendvEXT epoxy_glGetMultiTexGendvEXT
+#define glGetMultiTexGenfvEXT epoxy_glGetMultiTexGenfvEXT
+#define glGetMultiTexGenivEXT epoxy_glGetMultiTexGenivEXT
+#define glGetMultiTexImageEXT epoxy_glGetMultiTexImageEXT
+#define glGetMultiTexLevelParameterfvEXT epoxy_glGetMultiTexLevelParameterfvEXT
+#define glGetMultiTexLevelParameterivEXT epoxy_glGetMultiTexLevelParameterivEXT
+#define glGetMultiTexParameterIivEXT epoxy_glGetMultiTexParameterIivEXT
+#define glGetMultiTexParameterIuivEXT epoxy_glGetMultiTexParameterIuivEXT
+#define glGetMultiTexParameterfvEXT epoxy_glGetMultiTexParameterfvEXT
+#define glGetMultiTexParameterivEXT epoxy_glGetMultiTexParameterivEXT
+#define glGetMultisamplefv epoxy_glGetMultisamplefv
+#define glGetMultisamplefvNV epoxy_glGetMultisamplefvNV
+#define glGetNamedBufferParameteri64v epoxy_glGetNamedBufferParameteri64v
+#define glGetNamedBufferParameteriv epoxy_glGetNamedBufferParameteriv
+#define glGetNamedBufferParameterivEXT epoxy_glGetNamedBufferParameterivEXT
+#define glGetNamedBufferParameterui64vNV epoxy_glGetNamedBufferParameterui64vNV
+#define glGetNamedBufferPointerv epoxy_glGetNamedBufferPointerv
+#define glGetNamedBufferPointervEXT epoxy_glGetNamedBufferPointervEXT
+#define glGetNamedBufferSubData epoxy_glGetNamedBufferSubData
+#define glGetNamedBufferSubDataEXT epoxy_glGetNamedBufferSubDataEXT
+#define glGetNamedFramebufferAttachmentParameteriv epoxy_glGetNamedFramebufferAttachmentParameteriv
+#define glGetNamedFramebufferAttachmentParameterivEXT epoxy_glGetNamedFramebufferAttachmentParameterivEXT
+#define glGetNamedFramebufferParameterfvAMD epoxy_glGetNamedFramebufferParameterfvAMD
+#define glGetNamedFramebufferParameteriv epoxy_glGetNamedFramebufferParameteriv
+#define glGetNamedFramebufferParameterivEXT epoxy_glGetNamedFramebufferParameterivEXT
+#define glGetNamedProgramLocalParameterIivEXT epoxy_glGetNamedProgramLocalParameterIivEXT
+#define glGetNamedProgramLocalParameterIuivEXT epoxy_glGetNamedProgramLocalParameterIuivEXT
+#define glGetNamedProgramLocalParameterdvEXT epoxy_glGetNamedProgramLocalParameterdvEXT
+#define glGetNamedProgramLocalParameterfvEXT epoxy_glGetNamedProgramLocalParameterfvEXT
+#define glGetNamedProgramStringEXT epoxy_glGetNamedProgramStringEXT
+#define glGetNamedProgramivEXT epoxy_glGetNamedProgramivEXT
+#define glGetNamedRenderbufferParameteriv epoxy_glGetNamedRenderbufferParameteriv
+#define glGetNamedRenderbufferParameterivEXT epoxy_glGetNamedRenderbufferParameterivEXT
+#define glGetNamedStringARB epoxy_glGetNamedStringARB
+#define glGetNamedStringivARB epoxy_glGetNamedStringivARB
+#define glGetNextPerfQueryIdINTEL epoxy_glGetNextPerfQueryIdINTEL
+#define glGetObjectBufferfvATI epoxy_glGetObjectBufferfvATI
+#define glGetObjectBufferivATI epoxy_glGetObjectBufferivATI
+#define glGetObjectLabel epoxy_glGetObjectLabel
+#define glGetObjectLabelEXT epoxy_glGetObjectLabelEXT
+#define glGetObjectLabelKHR epoxy_glGetObjectLabelKHR
+#define glGetObjectParameterfvARB epoxy_glGetObjectParameterfvARB
+#define glGetObjectParameterivAPPLE epoxy_glGetObjectParameterivAPPLE
+#define glGetObjectParameterivARB epoxy_glGetObjectParameterivARB
+#define glGetObjectPtrLabel epoxy_glGetObjectPtrLabel
+#define glGetObjectPtrLabelKHR epoxy_glGetObjectPtrLabelKHR
+#define glGetOcclusionQueryivNV epoxy_glGetOcclusionQueryivNV
+#define glGetOcclusionQueryuivNV epoxy_glGetOcclusionQueryuivNV
+#define glGetPathColorGenfvNV epoxy_glGetPathColorGenfvNV
+#define glGetPathColorGenivNV epoxy_glGetPathColorGenivNV
+#define glGetPathCommandsNV epoxy_glGetPathCommandsNV
+#define glGetPathCoordsNV epoxy_glGetPathCoordsNV
+#define glGetPathDashArrayNV epoxy_glGetPathDashArrayNV
+#define glGetPathLengthNV epoxy_glGetPathLengthNV
+#define glGetPathMetricRangeNV epoxy_glGetPathMetricRangeNV
+#define glGetPathMetricsNV epoxy_glGetPathMetricsNV
+#define glGetPathParameterfvNV epoxy_glGetPathParameterfvNV
+#define glGetPathParameterivNV epoxy_glGetPathParameterivNV
+#define glGetPathSpacingNV epoxy_glGetPathSpacingNV
+#define glGetPathTexGenfvNV epoxy_glGetPathTexGenfvNV
+#define glGetPathTexGenivNV epoxy_glGetPathTexGenivNV
+#define glGetPerfCounterInfoINTEL epoxy_glGetPerfCounterInfoINTEL
+#define glGetPerfMonitorCounterDataAMD epoxy_glGetPerfMonitorCounterDataAMD
+#define glGetPerfMonitorCounterInfoAMD epoxy_glGetPerfMonitorCounterInfoAMD
+#define glGetPerfMonitorCounterStringAMD epoxy_glGetPerfMonitorCounterStringAMD
+#define glGetPerfMonitorCountersAMD epoxy_glGetPerfMonitorCountersAMD
+#define glGetPerfMonitorGroupStringAMD epoxy_glGetPerfMonitorGroupStringAMD
+#define glGetPerfMonitorGroupsAMD epoxy_glGetPerfMonitorGroupsAMD
+#define glGetPerfQueryDataINTEL epoxy_glGetPerfQueryDataINTEL
+#define glGetPerfQueryIdByNameINTEL epoxy_glGetPerfQueryIdByNameINTEL
+#define glGetPerfQueryInfoINTEL epoxy_glGetPerfQueryInfoINTEL
+#define glGetPixelMapfv epoxy_glGetPixelMapfv
+#define glGetPixelMapuiv epoxy_glGetPixelMapuiv
+#define glGetPixelMapusv epoxy_glGetPixelMapusv
+#define glGetPixelMapxv epoxy_glGetPixelMapxv
+#define glGetPixelTexGenParameterfvSGIS epoxy_glGetPixelTexGenParameterfvSGIS
+#define glGetPixelTexGenParameterivSGIS epoxy_glGetPixelTexGenParameterivSGIS
+#define glGetPixelTransformParameterfvEXT epoxy_glGetPixelTransformParameterfvEXT
+#define glGetPixelTransformParameterivEXT epoxy_glGetPixelTransformParameterivEXT
+#define glGetPointerIndexedvEXT epoxy_glGetPointerIndexedvEXT
+#define glGetPointeri_vEXT epoxy_glGetPointeri_vEXT
+#define glGetPointerv epoxy_glGetPointerv
+#define glGetPointervEXT epoxy_glGetPointervEXT
+#define glGetPointervKHR epoxy_glGetPointervKHR
+#define glGetPolygonStipple epoxy_glGetPolygonStipple
+#define glGetProgramBinary epoxy_glGetProgramBinary
+#define glGetProgramBinaryOES epoxy_glGetProgramBinaryOES
+#define glGetProgramEnvParameterIivNV epoxy_glGetProgramEnvParameterIivNV
+#define glGetProgramEnvParameterIuivNV epoxy_glGetProgramEnvParameterIuivNV
+#define glGetProgramEnvParameterdvARB epoxy_glGetProgramEnvParameterdvARB
+#define glGetProgramEnvParameterfvARB epoxy_glGetProgramEnvParameterfvARB
+#define glGetProgramInfoLog epoxy_glGetProgramInfoLog
+#define glGetProgramInterfaceiv epoxy_glGetProgramInterfaceiv
+#define glGetProgramLocalParameterIivNV epoxy_glGetProgramLocalParameterIivNV
+#define glGetProgramLocalParameterIuivNV epoxy_glGetProgramLocalParameterIuivNV
+#define glGetProgramLocalParameterdvARB epoxy_glGetProgramLocalParameterdvARB
+#define glGetProgramLocalParameterfvARB epoxy_glGetProgramLocalParameterfvARB
+#define glGetProgramNamedParameterdvNV epoxy_glGetProgramNamedParameterdvNV
+#define glGetProgramNamedParameterfvNV epoxy_glGetProgramNamedParameterfvNV
+#define glGetProgramParameterdvNV epoxy_glGetProgramParameterdvNV
+#define glGetProgramParameterfvNV epoxy_glGetProgramParameterfvNV
+#define glGetProgramPipelineInfoLog epoxy_glGetProgramPipelineInfoLog
+#define glGetProgramPipelineInfoLogEXT epoxy_glGetProgramPipelineInfoLogEXT
+#define glGetProgramPipelineiv epoxy_glGetProgramPipelineiv
+#define glGetProgramPipelineivEXT epoxy_glGetProgramPipelineivEXT
+#define glGetProgramResourceIndex epoxy_glGetProgramResourceIndex
+#define glGetProgramResourceLocation epoxy_glGetProgramResourceLocation
+#define glGetProgramResourceLocationIndex epoxy_glGetProgramResourceLocationIndex
+#define glGetProgramResourceLocationIndexEXT epoxy_glGetProgramResourceLocationIndexEXT
+#define glGetProgramResourceName epoxy_glGetProgramResourceName
+#define glGetProgramResourcefvNV epoxy_glGetProgramResourcefvNV
+#define glGetProgramResourceiv epoxy_glGetProgramResourceiv
+#define glGetProgramStageiv epoxy_glGetProgramStageiv
+#define glGetProgramStringARB epoxy_glGetProgramStringARB
+#define glGetProgramStringNV epoxy_glGetProgramStringNV
+#define glGetProgramSubroutineParameteruivNV epoxy_glGetProgramSubroutineParameteruivNV
+#define glGetProgramiv epoxy_glGetProgramiv
+#define glGetProgramivARB epoxy_glGetProgramivARB
+#define glGetProgramivNV epoxy_glGetProgramivNV
+#define glGetQueryBufferObjecti64v epoxy_glGetQueryBufferObjecti64v
+#define glGetQueryBufferObjectiv epoxy_glGetQueryBufferObjectiv
+#define glGetQueryBufferObjectui64v epoxy_glGetQueryBufferObjectui64v
+#define glGetQueryBufferObjectuiv epoxy_glGetQueryBufferObjectuiv
+#define glGetQueryIndexediv epoxy_glGetQueryIndexediv
+#define glGetQueryObjecti64v epoxy_glGetQueryObjecti64v
+#define glGetQueryObjecti64vEXT epoxy_glGetQueryObjecti64vEXT
+#define glGetQueryObjectiv epoxy_glGetQueryObjectiv
+#define glGetQueryObjectivARB epoxy_glGetQueryObjectivARB
+#define glGetQueryObjectivEXT epoxy_glGetQueryObjectivEXT
+#define glGetQueryObjectui64v epoxy_glGetQueryObjectui64v
+#define glGetQueryObjectui64vEXT epoxy_glGetQueryObjectui64vEXT
+#define glGetQueryObjectuiv epoxy_glGetQueryObjectuiv
+#define glGetQueryObjectuivARB epoxy_glGetQueryObjectuivARB
+#define glGetQueryObjectuivEXT epoxy_glGetQueryObjectuivEXT
+#define glGetQueryiv epoxy_glGetQueryiv
+#define glGetQueryivARB epoxy_glGetQueryivARB
+#define glGetQueryivEXT epoxy_glGetQueryivEXT
+#define glGetRenderbufferParameteriv epoxy_glGetRenderbufferParameteriv
+#define glGetRenderbufferParameterivEXT epoxy_glGetRenderbufferParameterivEXT
+#define glGetRenderbufferParameterivOES epoxy_glGetRenderbufferParameterivOES
+#define glGetSamplerParameterIiv epoxy_glGetSamplerParameterIiv
+#define glGetSamplerParameterIivEXT epoxy_glGetSamplerParameterIivEXT
+#define glGetSamplerParameterIivOES epoxy_glGetSamplerParameterIivOES
+#define glGetSamplerParameterIuiv epoxy_glGetSamplerParameterIuiv
+#define glGetSamplerParameterIuivEXT epoxy_glGetSamplerParameterIuivEXT
+#define glGetSamplerParameterIuivOES epoxy_glGetSamplerParameterIuivOES
+#define glGetSamplerParameterfv epoxy_glGetSamplerParameterfv
+#define glGetSamplerParameteriv epoxy_glGetSamplerParameteriv
+#define glGetSemaphoreParameterui64vEXT epoxy_glGetSemaphoreParameterui64vEXT
+#define glGetSeparableFilter epoxy_glGetSeparableFilter
+#define glGetSeparableFilterEXT epoxy_glGetSeparableFilterEXT
+#define glGetShaderInfoLog epoxy_glGetShaderInfoLog
+#define glGetShaderPrecisionFormat epoxy_glGetShaderPrecisionFormat
+#define glGetShaderSource epoxy_glGetShaderSource
+#define glGetShaderSourceARB epoxy_glGetShaderSourceARB
+#define glGetShaderiv epoxy_glGetShaderiv
+#define glGetShadingRateImagePaletteNV epoxy_glGetShadingRateImagePaletteNV
+#define glGetShadingRateSampleLocationivNV epoxy_glGetShadingRateSampleLocationivNV
+#define glGetSharpenTexFuncSGIS epoxy_glGetSharpenTexFuncSGIS
+#define glGetStageIndexNV epoxy_glGetStageIndexNV
+#define glGetString epoxy_glGetString
+#define glGetStringi epoxy_glGetStringi
+#define glGetSubroutineIndex epoxy_glGetSubroutineIndex
+#define glGetSubroutineUniformLocation epoxy_glGetSubroutineUniformLocation
+#define glGetSynciv epoxy_glGetSynciv
+#define glGetSyncivAPPLE epoxy_glGetSyncivAPPLE
+#define glGetTexBumpParameterfvATI epoxy_glGetTexBumpParameterfvATI
+#define glGetTexBumpParameterivATI epoxy_glGetTexBumpParameterivATI
+#define glGetTexEnvfv epoxy_glGetTexEnvfv
+#define glGetTexEnviv epoxy_glGetTexEnviv
+#define glGetTexEnvxv epoxy_glGetTexEnvxv
+#define glGetTexEnvxvOES epoxy_glGetTexEnvxvOES
+#define glGetTexFilterFuncSGIS epoxy_glGetTexFilterFuncSGIS
+#define glGetTexGendv epoxy_glGetTexGendv
+#define glGetTexGenfv epoxy_glGetTexGenfv
+#define glGetTexGenfvOES epoxy_glGetTexGenfvOES
+#define glGetTexGeniv epoxy_glGetTexGeniv
+#define glGetTexGenivOES epoxy_glGetTexGenivOES
+#define glGetTexGenxvOES epoxy_glGetTexGenxvOES
+#define glGetTexImage epoxy_glGetTexImage
+#define glGetTexLevelParameterfv epoxy_glGetTexLevelParameterfv
+#define glGetTexLevelParameteriv epoxy_glGetTexLevelParameteriv
+#define glGetTexLevelParameterxvOES epoxy_glGetTexLevelParameterxvOES
+#define glGetTexParameterIiv epoxy_glGetTexParameterIiv
+#define glGetTexParameterIivEXT epoxy_glGetTexParameterIivEXT
+#define glGetTexParameterIivOES epoxy_glGetTexParameterIivOES
+#define glGetTexParameterIuiv epoxy_glGetTexParameterIuiv
+#define glGetTexParameterIuivEXT epoxy_glGetTexParameterIuivEXT
+#define glGetTexParameterIuivOES epoxy_glGetTexParameterIuivOES
+#define glGetTexParameterPointervAPPLE epoxy_glGetTexParameterPointervAPPLE
+#define glGetTexParameterfv epoxy_glGetTexParameterfv
+#define glGetTexParameteriv epoxy_glGetTexParameteriv
+#define glGetTexParameterxv epoxy_glGetTexParameterxv
+#define glGetTexParameterxvOES epoxy_glGetTexParameterxvOES
+#define glGetTextureHandleARB epoxy_glGetTextureHandleARB
+#define glGetTextureHandleIMG epoxy_glGetTextureHandleIMG
+#define glGetTextureHandleNV epoxy_glGetTextureHandleNV
+#define glGetTextureImage epoxy_glGetTextureImage
+#define glGetTextureImageEXT epoxy_glGetTextureImageEXT
+#define glGetTextureLevelParameterfv epoxy_glGetTextureLevelParameterfv
+#define glGetTextureLevelParameterfvEXT epoxy_glGetTextureLevelParameterfvEXT
+#define glGetTextureLevelParameteriv epoxy_glGetTextureLevelParameteriv
+#define glGetTextureLevelParameterivEXT epoxy_glGetTextureLevelParameterivEXT
+#define glGetTextureParameterIiv epoxy_glGetTextureParameterIiv
+#define glGetTextureParameterIivEXT epoxy_glGetTextureParameterIivEXT
+#define glGetTextureParameterIuiv epoxy_glGetTextureParameterIuiv
+#define glGetTextureParameterIuivEXT epoxy_glGetTextureParameterIuivEXT
+#define glGetTextureParameterfv epoxy_glGetTextureParameterfv
+#define glGetTextureParameterfvEXT epoxy_glGetTextureParameterfvEXT
+#define glGetTextureParameteriv epoxy_glGetTextureParameteriv
+#define glGetTextureParameterivEXT epoxy_glGetTextureParameterivEXT
+#define glGetTextureSamplerHandleARB epoxy_glGetTextureSamplerHandleARB
+#define glGetTextureSamplerHandleIMG epoxy_glGetTextureSamplerHandleIMG
+#define glGetTextureSamplerHandleNV epoxy_glGetTextureSamplerHandleNV
+#define glGetTextureSubImage epoxy_glGetTextureSubImage
+#define glGetTrackMatrixivNV epoxy_glGetTrackMatrixivNV
+#define glGetTransformFeedbackVarying epoxy_glGetTransformFeedbackVarying
+#define glGetTransformFeedbackVaryingEXT epoxy_glGetTransformFeedbackVaryingEXT
+#define glGetTransformFeedbackVaryingNV epoxy_glGetTransformFeedbackVaryingNV
+#define glGetTransformFeedbacki64_v epoxy_glGetTransformFeedbacki64_v
+#define glGetTransformFeedbacki_v epoxy_glGetTransformFeedbacki_v
+#define glGetTransformFeedbackiv epoxy_glGetTransformFeedbackiv
+#define glGetTranslatedShaderSourceANGLE epoxy_glGetTranslatedShaderSourceANGLE
+#define glGetUniformBlockIndex epoxy_glGetUniformBlockIndex
+#define glGetUniformBufferSizeEXT epoxy_glGetUniformBufferSizeEXT
+#define glGetUniformIndices epoxy_glGetUniformIndices
+#define glGetUniformLocation epoxy_glGetUniformLocation
+#define glGetUniformLocationARB epoxy_glGetUniformLocationARB
+#define glGetUniformOffsetEXT epoxy_glGetUniformOffsetEXT
+#define glGetUniformSubroutineuiv epoxy_glGetUniformSubroutineuiv
+#define glGetUniformdv epoxy_glGetUniformdv
+#define glGetUniformfv epoxy_glGetUniformfv
+#define glGetUniformfvARB epoxy_glGetUniformfvARB
+#define glGetUniformi64vARB epoxy_glGetUniformi64vARB
+#define glGetUniformi64vNV epoxy_glGetUniformi64vNV
+#define glGetUniformiv epoxy_glGetUniformiv
+#define glGetUniformivARB epoxy_glGetUniformivARB
+#define glGetUniformui64vARB epoxy_glGetUniformui64vARB
+#define glGetUniformui64vNV epoxy_glGetUniformui64vNV
+#define glGetUniformuiv epoxy_glGetUniformuiv
+#define glGetUniformuivEXT epoxy_glGetUniformuivEXT
+#define glGetUnsignedBytei_vEXT epoxy_glGetUnsignedBytei_vEXT
+#define glGetUnsignedBytevEXT epoxy_glGetUnsignedBytevEXT
+#define glGetVariantArrayObjectfvATI epoxy_glGetVariantArrayObjectfvATI
+#define glGetVariantArrayObjectivATI epoxy_glGetVariantArrayObjectivATI
+#define glGetVariantBooleanvEXT epoxy_glGetVariantBooleanvEXT
+#define glGetVariantFloatvEXT epoxy_glGetVariantFloatvEXT
+#define glGetVariantIntegervEXT epoxy_glGetVariantIntegervEXT
+#define glGetVariantPointervEXT epoxy_glGetVariantPointervEXT
+#define glGetVaryingLocationNV epoxy_glGetVaryingLocationNV
+#define glGetVertexArrayIndexed64iv epoxy_glGetVertexArrayIndexed64iv
+#define glGetVertexArrayIndexediv epoxy_glGetVertexArrayIndexediv
+#define glGetVertexArrayIntegeri_vEXT epoxy_glGetVertexArrayIntegeri_vEXT
+#define glGetVertexArrayIntegervEXT epoxy_glGetVertexArrayIntegervEXT
+#define glGetVertexArrayPointeri_vEXT epoxy_glGetVertexArrayPointeri_vEXT
+#define glGetVertexArrayPointervEXT epoxy_glGetVertexArrayPointervEXT
+#define glGetVertexArrayiv epoxy_glGetVertexArrayiv
+#define glGetVertexAttribArrayObjectfvATI epoxy_glGetVertexAttribArrayObjectfvATI
+#define glGetVertexAttribArrayObjectivATI epoxy_glGetVertexAttribArrayObjectivATI
+#define glGetVertexAttribIiv epoxy_glGetVertexAttribIiv
+#define glGetVertexAttribIivEXT epoxy_glGetVertexAttribIivEXT
+#define glGetVertexAttribIuiv epoxy_glGetVertexAttribIuiv
+#define glGetVertexAttribIuivEXT epoxy_glGetVertexAttribIuivEXT
+#define glGetVertexAttribLdv epoxy_glGetVertexAttribLdv
+#define glGetVertexAttribLdvEXT epoxy_glGetVertexAttribLdvEXT
+#define glGetVertexAttribLi64vNV epoxy_glGetVertexAttribLi64vNV
+#define glGetVertexAttribLui64vARB epoxy_glGetVertexAttribLui64vARB
+#define glGetVertexAttribLui64vNV epoxy_glGetVertexAttribLui64vNV
+#define glGetVertexAttribPointerv epoxy_glGetVertexAttribPointerv
+#define glGetVertexAttribPointervARB epoxy_glGetVertexAttribPointervARB
+#define glGetVertexAttribPointervNV epoxy_glGetVertexAttribPointervNV
+#define glGetVertexAttribdv epoxy_glGetVertexAttribdv
+#define glGetVertexAttribdvARB epoxy_glGetVertexAttribdvARB
+#define glGetVertexAttribdvNV epoxy_glGetVertexAttribdvNV
+#define glGetVertexAttribfv epoxy_glGetVertexAttribfv
+#define glGetVertexAttribfvARB epoxy_glGetVertexAttribfvARB
+#define glGetVertexAttribfvNV epoxy_glGetVertexAttribfvNV
+#define glGetVertexAttribiv epoxy_glGetVertexAttribiv
+#define glGetVertexAttribivARB epoxy_glGetVertexAttribivARB
+#define glGetVertexAttribivNV epoxy_glGetVertexAttribivNV
+#define glGetVideoCaptureStreamdvNV epoxy_glGetVideoCaptureStreamdvNV
+#define glGetVideoCaptureStreamfvNV epoxy_glGetVideoCaptureStreamfvNV
+#define glGetVideoCaptureStreamivNV epoxy_glGetVideoCaptureStreamivNV
+#define glGetVideoCaptureivNV epoxy_glGetVideoCaptureivNV
+#define glGetVideoi64vNV epoxy_glGetVideoi64vNV
+#define glGetVideoivNV epoxy_glGetVideoivNV
+#define glGetVideoui64vNV epoxy_glGetVideoui64vNV
+#define glGetVideouivNV epoxy_glGetVideouivNV
+#define glGetVkProcAddrNV epoxy_glGetVkProcAddrNV
+#define glGetnColorTable epoxy_glGetnColorTable
+#define glGetnColorTableARB epoxy_glGetnColorTableARB
+#define glGetnCompressedTexImage epoxy_glGetnCompressedTexImage
+#define glGetnCompressedTexImageARB epoxy_glGetnCompressedTexImageARB
+#define glGetnConvolutionFilter epoxy_glGetnConvolutionFilter
+#define glGetnConvolutionFilterARB epoxy_glGetnConvolutionFilterARB
+#define glGetnHistogram epoxy_glGetnHistogram
+#define glGetnHistogramARB epoxy_glGetnHistogramARB
+#define glGetnMapdv epoxy_glGetnMapdv
+#define glGetnMapdvARB epoxy_glGetnMapdvARB
+#define glGetnMapfv epoxy_glGetnMapfv
+#define glGetnMapfvARB epoxy_glGetnMapfvARB
+#define glGetnMapiv epoxy_glGetnMapiv
+#define glGetnMapivARB epoxy_glGetnMapivARB
+#define glGetnMinmax epoxy_glGetnMinmax
+#define glGetnMinmaxARB epoxy_glGetnMinmaxARB
+#define glGetnPixelMapfv epoxy_glGetnPixelMapfv
+#define glGetnPixelMapfvARB epoxy_glGetnPixelMapfvARB
+#define glGetnPixelMapuiv epoxy_glGetnPixelMapuiv
+#define glGetnPixelMapuivARB epoxy_glGetnPixelMapuivARB
+#define glGetnPixelMapusv epoxy_glGetnPixelMapusv
+#define glGetnPixelMapusvARB epoxy_glGetnPixelMapusvARB
+#define glGetnPolygonStipple epoxy_glGetnPolygonStipple
+#define glGetnPolygonStippleARB epoxy_glGetnPolygonStippleARB
+#define glGetnSeparableFilter epoxy_glGetnSeparableFilter
+#define glGetnSeparableFilterARB epoxy_glGetnSeparableFilterARB
+#define glGetnTexImage epoxy_glGetnTexImage
+#define glGetnTexImageARB epoxy_glGetnTexImageARB
+#define glGetnUniformdv epoxy_glGetnUniformdv
+#define glGetnUniformdvARB epoxy_glGetnUniformdvARB
+#define glGetnUniformfv epoxy_glGetnUniformfv
+#define glGetnUniformfvARB epoxy_glGetnUniformfvARB
+#define glGetnUniformfvEXT epoxy_glGetnUniformfvEXT
+#define glGetnUniformfvKHR epoxy_glGetnUniformfvKHR
+#define glGetnUniformi64vARB epoxy_glGetnUniformi64vARB
+#define glGetnUniformiv epoxy_glGetnUniformiv
+#define glGetnUniformivARB epoxy_glGetnUniformivARB
+#define glGetnUniformivEXT epoxy_glGetnUniformivEXT
+#define glGetnUniformivKHR epoxy_glGetnUniformivKHR
+#define glGetnUniformui64vARB epoxy_glGetnUniformui64vARB
+#define glGetnUniformuiv epoxy_glGetnUniformuiv
+#define glGetnUniformuivARB epoxy_glGetnUniformuivARB
+#define glGetnUniformuivKHR epoxy_glGetnUniformuivKHR
+#define glGlobalAlphaFactorbSUN epoxy_glGlobalAlphaFactorbSUN
+#define glGlobalAlphaFactordSUN epoxy_glGlobalAlphaFactordSUN
+#define glGlobalAlphaFactorfSUN epoxy_glGlobalAlphaFactorfSUN
+#define glGlobalAlphaFactoriSUN epoxy_glGlobalAlphaFactoriSUN
+#define glGlobalAlphaFactorsSUN epoxy_glGlobalAlphaFactorsSUN
+#define glGlobalAlphaFactorubSUN epoxy_glGlobalAlphaFactorubSUN
+#define glGlobalAlphaFactoruiSUN epoxy_glGlobalAlphaFactoruiSUN
+#define glGlobalAlphaFactorusSUN epoxy_glGlobalAlphaFactorusSUN
+#define glHint epoxy_glHint
+#define glHintPGI epoxy_glHintPGI
+#define glHistogram epoxy_glHistogram
+#define glHistogramEXT epoxy_glHistogramEXT
+#define glIglooInterfaceSGIX epoxy_glIglooInterfaceSGIX
+#define glImageTransformParameterfHP epoxy_glImageTransformParameterfHP
+#define glImageTransformParameterfvHP epoxy_glImageTransformParameterfvHP
+#define glImageTransformParameteriHP epoxy_glImageTransformParameteriHP
+#define glImageTransformParameterivHP epoxy_glImageTransformParameterivHP
+#define glImportMemoryFdEXT epoxy_glImportMemoryFdEXT
+#define glImportMemoryWin32HandleEXT epoxy_glImportMemoryWin32HandleEXT
+#define glImportMemoryWin32NameEXT epoxy_glImportMemoryWin32NameEXT
+#define glImportSemaphoreFdEXT epoxy_glImportSemaphoreFdEXT
+#define glImportSemaphoreWin32HandleEXT epoxy_glImportSemaphoreWin32HandleEXT
+#define glImportSemaphoreWin32NameEXT epoxy_glImportSemaphoreWin32NameEXT
+#define glImportSyncEXT epoxy_glImportSyncEXT
+#define glIndexFormatNV epoxy_glIndexFormatNV
+#define glIndexFuncEXT epoxy_glIndexFuncEXT
+#define glIndexMask epoxy_glIndexMask
+#define glIndexMaterialEXT epoxy_glIndexMaterialEXT
+#define glIndexPointer epoxy_glIndexPointer
+#define glIndexPointerEXT epoxy_glIndexPointerEXT
+#define glIndexPointerListIBM epoxy_glIndexPointerListIBM
+#define glIndexd epoxy_glIndexd
+#define glIndexdv epoxy_glIndexdv
+#define glIndexf epoxy_glIndexf
+#define glIndexfv epoxy_glIndexfv
+#define glIndexi epoxy_glIndexi
+#define glIndexiv epoxy_glIndexiv
+#define glIndexs epoxy_glIndexs
+#define glIndexsv epoxy_glIndexsv
+#define glIndexub epoxy_glIndexub
+#define glIndexubv epoxy_glIndexubv
+#define glIndexxOES epoxy_glIndexxOES
+#define glIndexxvOES epoxy_glIndexxvOES
+#define glInitNames epoxy_glInitNames
+#define glInsertComponentEXT epoxy_glInsertComponentEXT
+#define glInsertEventMarkerEXT epoxy_glInsertEventMarkerEXT
+#define glInstrumentsBufferSGIX epoxy_glInstrumentsBufferSGIX
+#define glInterleavedArrays epoxy_glInterleavedArrays
+#define glInterpolatePathsNV epoxy_glInterpolatePathsNV
+#define glInvalidateBufferData epoxy_glInvalidateBufferData
+#define glInvalidateBufferSubData epoxy_glInvalidateBufferSubData
+#define glInvalidateFramebuffer epoxy_glInvalidateFramebuffer
+#define glInvalidateNamedFramebufferData epoxy_glInvalidateNamedFramebufferData
+#define glInvalidateNamedFramebufferSubData epoxy_glInvalidateNamedFramebufferSubData
+#define glInvalidateSubFramebuffer epoxy_glInvalidateSubFramebuffer
+#define glInvalidateTexImage epoxy_glInvalidateTexImage
+#define glInvalidateTexSubImage epoxy_glInvalidateTexSubImage
+#define glIsAsyncMarkerSGIX epoxy_glIsAsyncMarkerSGIX
+#define glIsBuffer epoxy_glIsBuffer
+#define glIsBufferARB epoxy_glIsBufferARB
+#define glIsBufferResidentNV epoxy_glIsBufferResidentNV
+#define glIsCommandListNV epoxy_glIsCommandListNV
+#define glIsEnabled epoxy_glIsEnabled
+#define glIsEnabledIndexedEXT epoxy_glIsEnabledIndexedEXT
+#define glIsEnabledi epoxy_glIsEnabledi
+#define glIsEnablediEXT epoxy_glIsEnablediEXT
+#define glIsEnablediNV epoxy_glIsEnablediNV
+#define glIsEnablediOES epoxy_glIsEnablediOES
+#define glIsFenceAPPLE epoxy_glIsFenceAPPLE
+#define glIsFenceNV epoxy_glIsFenceNV
+#define glIsFramebuffer epoxy_glIsFramebuffer
+#define glIsFramebufferEXT epoxy_glIsFramebufferEXT
+#define glIsFramebufferOES epoxy_glIsFramebufferOES
+#define glIsImageHandleResidentARB epoxy_glIsImageHandleResidentARB
+#define glIsImageHandleResidentNV epoxy_glIsImageHandleResidentNV
+#define glIsList epoxy_glIsList
+#define glIsMemoryObjectEXT epoxy_glIsMemoryObjectEXT
+#define glIsNameAMD epoxy_glIsNameAMD
+#define glIsNamedBufferResidentNV epoxy_glIsNamedBufferResidentNV
+#define glIsNamedStringARB epoxy_glIsNamedStringARB
+#define glIsObjectBufferATI epoxy_glIsObjectBufferATI
+#define glIsOcclusionQueryNV epoxy_glIsOcclusionQueryNV
+#define glIsPathNV epoxy_glIsPathNV
+#define glIsPointInFillPathNV epoxy_glIsPointInFillPathNV
+#define glIsPointInStrokePathNV epoxy_glIsPointInStrokePathNV
+#define glIsProgram epoxy_glIsProgram
+#define glIsProgramARB epoxy_glIsProgramARB
+#define glIsProgramNV epoxy_glIsProgramNV
+#define glIsProgramPipeline epoxy_glIsProgramPipeline
+#define glIsProgramPipelineEXT epoxy_glIsProgramPipelineEXT
+#define glIsQuery epoxy_glIsQuery
+#define glIsQueryARB epoxy_glIsQueryARB
+#define glIsQueryEXT epoxy_glIsQueryEXT
+#define glIsRenderbuffer epoxy_glIsRenderbuffer
+#define glIsRenderbufferEXT epoxy_glIsRenderbufferEXT
+#define glIsRenderbufferOES epoxy_glIsRenderbufferOES
+#define glIsSampler epoxy_glIsSampler
+#define glIsSemaphoreEXT epoxy_glIsSemaphoreEXT
+#define glIsShader epoxy_glIsShader
+#define glIsStateNV epoxy_glIsStateNV
+#define glIsSync epoxy_glIsSync
+#define glIsSyncAPPLE epoxy_glIsSyncAPPLE
+#define glIsTexture epoxy_glIsTexture
+#define glIsTextureEXT epoxy_glIsTextureEXT
+#define glIsTextureHandleResidentARB epoxy_glIsTextureHandleResidentARB
+#define glIsTextureHandleResidentNV epoxy_glIsTextureHandleResidentNV
+#define glIsTransformFeedback epoxy_glIsTransformFeedback
+#define glIsTransformFeedbackNV epoxy_glIsTransformFeedbackNV
+#define glIsVariantEnabledEXT epoxy_glIsVariantEnabledEXT
+#define glIsVertexArray epoxy_glIsVertexArray
+#define glIsVertexArrayAPPLE epoxy_glIsVertexArrayAPPLE
+#define glIsVertexArrayOES epoxy_glIsVertexArrayOES
+#define glIsVertexAttribEnabledAPPLE epoxy_glIsVertexAttribEnabledAPPLE
+#define glLGPUCopyImageSubDataNVX epoxy_glLGPUCopyImageSubDataNVX
+#define glLGPUInterlockNVX epoxy_glLGPUInterlockNVX
+#define glLGPUNamedBufferSubDataNVX epoxy_glLGPUNamedBufferSubDataNVX
+#define glLabelObjectEXT epoxy_glLabelObjectEXT
+#define glLightEnviSGIX epoxy_glLightEnviSGIX
+#define glLightModelf epoxy_glLightModelf
+#define glLightModelfv epoxy_glLightModelfv
+#define glLightModeli epoxy_glLightModeli
+#define glLightModeliv epoxy_glLightModeliv
+#define glLightModelx epoxy_glLightModelx
+#define glLightModelxOES epoxy_glLightModelxOES
+#define glLightModelxv epoxy_glLightModelxv
+#define glLightModelxvOES epoxy_glLightModelxvOES
+#define glLightf epoxy_glLightf
+#define glLightfv epoxy_glLightfv
+#define glLighti epoxy_glLighti
+#define glLightiv epoxy_glLightiv
+#define glLightx epoxy_glLightx
+#define glLightxOES epoxy_glLightxOES
+#define glLightxv epoxy_glLightxv
+#define glLightxvOES epoxy_glLightxvOES
+#define glLineStipple epoxy_glLineStipple
+#define glLineWidth epoxy_glLineWidth
+#define glLineWidthx epoxy_glLineWidthx
+#define glLineWidthxOES epoxy_glLineWidthxOES
+#define glLinkProgram epoxy_glLinkProgram
+#define glLinkProgramARB epoxy_glLinkProgramARB
+#define glListBase epoxy_glListBase
+#define glListDrawCommandsStatesClientNV epoxy_glListDrawCommandsStatesClientNV
+#define glListParameterfSGIX epoxy_glListParameterfSGIX
+#define glListParameterfvSGIX epoxy_glListParameterfvSGIX
+#define glListParameteriSGIX epoxy_glListParameteriSGIX
+#define glListParameterivSGIX epoxy_glListParameterivSGIX
+#define glLoadIdentity epoxy_glLoadIdentity
+#define glLoadIdentityDeformationMapSGIX epoxy_glLoadIdentityDeformationMapSGIX
+#define glLoadMatrixd epoxy_glLoadMatrixd
+#define glLoadMatrixf epoxy_glLoadMatrixf
+#define glLoadMatrixx epoxy_glLoadMatrixx
+#define glLoadMatrixxOES epoxy_glLoadMatrixxOES
+#define glLoadName epoxy_glLoadName
+#define glLoadPaletteFromModelViewMatrixOES epoxy_glLoadPaletteFromModelViewMatrixOES
+#define glLoadProgramNV epoxy_glLoadProgramNV
+#define glLoadTransposeMatrixd epoxy_glLoadTransposeMatrixd
+#define glLoadTransposeMatrixdARB epoxy_glLoadTransposeMatrixdARB
+#define glLoadTransposeMatrixf epoxy_glLoadTransposeMatrixf
+#define glLoadTransposeMatrixfARB epoxy_glLoadTransposeMatrixfARB
+#define glLoadTransposeMatrixxOES epoxy_glLoadTransposeMatrixxOES
+#define glLockArraysEXT epoxy_glLockArraysEXT
+#define glLogicOp epoxy_glLogicOp
+#define glMakeBufferNonResidentNV epoxy_glMakeBufferNonResidentNV
+#define glMakeBufferResidentNV epoxy_glMakeBufferResidentNV
+#define glMakeImageHandleNonResidentARB epoxy_glMakeImageHandleNonResidentARB
+#define glMakeImageHandleNonResidentNV epoxy_glMakeImageHandleNonResidentNV
+#define glMakeImageHandleResidentARB epoxy_glMakeImageHandleResidentARB
+#define glMakeImageHandleResidentNV epoxy_glMakeImageHandleResidentNV
+#define glMakeNamedBufferNonResidentNV epoxy_glMakeNamedBufferNonResidentNV
+#define glMakeNamedBufferResidentNV epoxy_glMakeNamedBufferResidentNV
+#define glMakeTextureHandleNonResidentARB epoxy_glMakeTextureHandleNonResidentARB
+#define glMakeTextureHandleNonResidentNV epoxy_glMakeTextureHandleNonResidentNV
+#define glMakeTextureHandleResidentARB epoxy_glMakeTextureHandleResidentARB
+#define glMakeTextureHandleResidentNV epoxy_glMakeTextureHandleResidentNV
+#define glMap1d epoxy_glMap1d
+#define glMap1f epoxy_glMap1f
+#define glMap1xOES epoxy_glMap1xOES
+#define glMap2d epoxy_glMap2d
+#define glMap2f epoxy_glMap2f
+#define glMap2xOES epoxy_glMap2xOES
+#define glMapBuffer epoxy_glMapBuffer
+#define glMapBufferARB epoxy_glMapBufferARB
+#define glMapBufferOES epoxy_glMapBufferOES
+#define glMapBufferRange epoxy_glMapBufferRange
+#define glMapBufferRangeEXT epoxy_glMapBufferRangeEXT
+#define glMapControlPointsNV epoxy_glMapControlPointsNV
+#define glMapGrid1d epoxy_glMapGrid1d
+#define glMapGrid1f epoxy_glMapGrid1f
+#define glMapGrid1xOES epoxy_glMapGrid1xOES
+#define glMapGrid2d epoxy_glMapGrid2d
+#define glMapGrid2f epoxy_glMapGrid2f
+#define glMapGrid2xOES epoxy_glMapGrid2xOES
+#define glMapNamedBuffer epoxy_glMapNamedBuffer
+#define glMapNamedBufferEXT epoxy_glMapNamedBufferEXT
+#define glMapNamedBufferRange epoxy_glMapNamedBufferRange
+#define glMapNamedBufferRangeEXT epoxy_glMapNamedBufferRangeEXT
+#define glMapObjectBufferATI epoxy_glMapObjectBufferATI
+#define glMapParameterfvNV epoxy_glMapParameterfvNV
+#define glMapParameterivNV epoxy_glMapParameterivNV
+#define glMapTexture2DINTEL epoxy_glMapTexture2DINTEL
+#define glMapVertexAttrib1dAPPLE epoxy_glMapVertexAttrib1dAPPLE
+#define glMapVertexAttrib1fAPPLE epoxy_glMapVertexAttrib1fAPPLE
+#define glMapVertexAttrib2dAPPLE epoxy_glMapVertexAttrib2dAPPLE
+#define glMapVertexAttrib2fAPPLE epoxy_glMapVertexAttrib2fAPPLE
+#define glMaterialf epoxy_glMaterialf
+#define glMaterialfv epoxy_glMaterialfv
+#define glMateriali epoxy_glMateriali
+#define glMaterialiv epoxy_glMaterialiv
+#define glMaterialx epoxy_glMaterialx
+#define glMaterialxOES epoxy_glMaterialxOES
+#define glMaterialxv epoxy_glMaterialxv
+#define glMaterialxvOES epoxy_glMaterialxvOES
+#define glMatrixFrustumEXT epoxy_glMatrixFrustumEXT
+#define glMatrixIndexPointerARB epoxy_glMatrixIndexPointerARB
+#define glMatrixIndexPointerOES epoxy_glMatrixIndexPointerOES
+#define glMatrixIndexubvARB epoxy_glMatrixIndexubvARB
+#define glMatrixIndexuivARB epoxy_glMatrixIndexuivARB
+#define glMatrixIndexusvARB epoxy_glMatrixIndexusvARB
+#define glMatrixLoad3x2fNV epoxy_glMatrixLoad3x2fNV
+#define glMatrixLoad3x3fNV epoxy_glMatrixLoad3x3fNV
+#define glMatrixLoadIdentityEXT epoxy_glMatrixLoadIdentityEXT
+#define glMatrixLoadTranspose3x3fNV epoxy_glMatrixLoadTranspose3x3fNV
+#define glMatrixLoadTransposedEXT epoxy_glMatrixLoadTransposedEXT
+#define glMatrixLoadTransposefEXT epoxy_glMatrixLoadTransposefEXT
+#define glMatrixLoaddEXT epoxy_glMatrixLoaddEXT
+#define glMatrixLoadfEXT epoxy_glMatrixLoadfEXT
+#define glMatrixMode epoxy_glMatrixMode
+#define glMatrixMult3x2fNV epoxy_glMatrixMult3x2fNV
+#define glMatrixMult3x3fNV epoxy_glMatrixMult3x3fNV
+#define glMatrixMultTranspose3x3fNV epoxy_glMatrixMultTranspose3x3fNV
+#define glMatrixMultTransposedEXT epoxy_glMatrixMultTransposedEXT
+#define glMatrixMultTransposefEXT epoxy_glMatrixMultTransposefEXT
+#define glMatrixMultdEXT epoxy_glMatrixMultdEXT
+#define glMatrixMultfEXT epoxy_glMatrixMultfEXT
+#define glMatrixOrthoEXT epoxy_glMatrixOrthoEXT
+#define glMatrixPopEXT epoxy_glMatrixPopEXT
+#define glMatrixPushEXT epoxy_glMatrixPushEXT
+#define glMatrixRotatedEXT epoxy_glMatrixRotatedEXT
+#define glMatrixRotatefEXT epoxy_glMatrixRotatefEXT
+#define glMatrixScaledEXT epoxy_glMatrixScaledEXT
+#define glMatrixScalefEXT epoxy_glMatrixScalefEXT
+#define glMatrixTranslatedEXT epoxy_glMatrixTranslatedEXT
+#define glMatrixTranslatefEXT epoxy_glMatrixTranslatefEXT
+#define glMaxShaderCompilerThreadsARB epoxy_glMaxShaderCompilerThreadsARB
+#define glMaxShaderCompilerThreadsKHR epoxy_glMaxShaderCompilerThreadsKHR
+#define glMemoryBarrier epoxy_glMemoryBarrier
+#define glMemoryBarrierByRegion epoxy_glMemoryBarrierByRegion
+#define glMemoryBarrierEXT epoxy_glMemoryBarrierEXT
+#define glMemoryObjectParameterivEXT epoxy_glMemoryObjectParameterivEXT
+#define glMinSampleShading epoxy_glMinSampleShading
+#define glMinSampleShadingARB epoxy_glMinSampleShadingARB
+#define glMinSampleShadingOES epoxy_glMinSampleShadingOES
+#define glMinmax epoxy_glMinmax
+#define glMinmaxEXT epoxy_glMinmaxEXT
+#define glMultMatrixd epoxy_glMultMatrixd
+#define glMultMatrixf epoxy_glMultMatrixf
+#define glMultMatrixx epoxy_glMultMatrixx
+#define glMultMatrixxOES epoxy_glMultMatrixxOES
+#define glMultTransposeMatrixd epoxy_glMultTransposeMatrixd
+#define glMultTransposeMatrixdARB epoxy_glMultTransposeMatrixdARB
+#define glMultTransposeMatrixf epoxy_glMultTransposeMatrixf
+#define glMultTransposeMatrixfARB epoxy_glMultTransposeMatrixfARB
+#define glMultTransposeMatrixxOES epoxy_glMultTransposeMatrixxOES
+#define glMultiDrawArrays epoxy_glMultiDrawArrays
+#define glMultiDrawArraysEXT epoxy_glMultiDrawArraysEXT
+#define glMultiDrawArraysIndirect epoxy_glMultiDrawArraysIndirect
+#define glMultiDrawArraysIndirectAMD epoxy_glMultiDrawArraysIndirectAMD
+#define glMultiDrawArraysIndirectBindlessCountNV epoxy_glMultiDrawArraysIndirectBindlessCountNV
+#define glMultiDrawArraysIndirectBindlessNV epoxy_glMultiDrawArraysIndirectBindlessNV
+#define glMultiDrawArraysIndirectCount epoxy_glMultiDrawArraysIndirectCount
+#define glMultiDrawArraysIndirectCountARB epoxy_glMultiDrawArraysIndirectCountARB
+#define glMultiDrawArraysIndirectEXT epoxy_glMultiDrawArraysIndirectEXT
+#define glMultiDrawElementArrayAPPLE epoxy_glMultiDrawElementArrayAPPLE
+#define glMultiDrawElements epoxy_glMultiDrawElements
+#define glMultiDrawElementsBaseVertex epoxy_glMultiDrawElementsBaseVertex
+#define glMultiDrawElementsBaseVertexEXT epoxy_glMultiDrawElementsBaseVertexEXT
+#define glMultiDrawElementsEXT epoxy_glMultiDrawElementsEXT
+#define glMultiDrawElementsIndirect epoxy_glMultiDrawElementsIndirect
+#define glMultiDrawElementsIndirectAMD epoxy_glMultiDrawElementsIndirectAMD
+#define glMultiDrawElementsIndirectBindlessCountNV epoxy_glMultiDrawElementsIndirectBindlessCountNV
+#define glMultiDrawElementsIndirectBindlessNV epoxy_glMultiDrawElementsIndirectBindlessNV
+#define glMultiDrawElementsIndirectCount epoxy_glMultiDrawElementsIndirectCount
+#define glMultiDrawElementsIndirectCountARB epoxy_glMultiDrawElementsIndirectCountARB
+#define glMultiDrawElementsIndirectEXT epoxy_glMultiDrawElementsIndirectEXT
+#define glMultiDrawMeshTasksIndirectCountNV epoxy_glMultiDrawMeshTasksIndirectCountNV
+#define glMultiDrawMeshTasksIndirectNV epoxy_glMultiDrawMeshTasksIndirectNV
+#define glMultiDrawRangeElementArrayAPPLE epoxy_glMultiDrawRangeElementArrayAPPLE
+#define glMultiModeDrawArraysIBM epoxy_glMultiModeDrawArraysIBM
+#define glMultiModeDrawElementsIBM epoxy_glMultiModeDrawElementsIBM
+#define glMultiTexBufferEXT epoxy_glMultiTexBufferEXT
+#define glMultiTexCoord1bOES epoxy_glMultiTexCoord1bOES
+#define glMultiTexCoord1bvOES epoxy_glMultiTexCoord1bvOES
+#define glMultiTexCoord1d epoxy_glMultiTexCoord1d
+#define glMultiTexCoord1dARB epoxy_glMultiTexCoord1dARB
+#define glMultiTexCoord1dv epoxy_glMultiTexCoord1dv
+#define glMultiTexCoord1dvARB epoxy_glMultiTexCoord1dvARB
+#define glMultiTexCoord1f epoxy_glMultiTexCoord1f
+#define glMultiTexCoord1fARB epoxy_glMultiTexCoord1fARB
+#define glMultiTexCoord1fv epoxy_glMultiTexCoord1fv
+#define glMultiTexCoord1fvARB epoxy_glMultiTexCoord1fvARB
+#define glMultiTexCoord1hNV epoxy_glMultiTexCoord1hNV
+#define glMultiTexCoord1hvNV epoxy_glMultiTexCoord1hvNV
+#define glMultiTexCoord1i epoxy_glMultiTexCoord1i
+#define glMultiTexCoord1iARB epoxy_glMultiTexCoord1iARB
+#define glMultiTexCoord1iv epoxy_glMultiTexCoord1iv
+#define glMultiTexCoord1ivARB epoxy_glMultiTexCoord1ivARB
+#define glMultiTexCoord1s epoxy_glMultiTexCoord1s
+#define glMultiTexCoord1sARB epoxy_glMultiTexCoord1sARB
+#define glMultiTexCoord1sv epoxy_glMultiTexCoord1sv
+#define glMultiTexCoord1svARB epoxy_glMultiTexCoord1svARB
+#define glMultiTexCoord1xOES epoxy_glMultiTexCoord1xOES
+#define glMultiTexCoord1xvOES epoxy_glMultiTexCoord1xvOES
+#define glMultiTexCoord2bOES epoxy_glMultiTexCoord2bOES
+#define glMultiTexCoord2bvOES epoxy_glMultiTexCoord2bvOES
+#define glMultiTexCoord2d epoxy_glMultiTexCoord2d
+#define glMultiTexCoord2dARB epoxy_glMultiTexCoord2dARB
+#define glMultiTexCoord2dv epoxy_glMultiTexCoord2dv
+#define glMultiTexCoord2dvARB epoxy_glMultiTexCoord2dvARB
+#define glMultiTexCoord2f epoxy_glMultiTexCoord2f
+#define glMultiTexCoord2fARB epoxy_glMultiTexCoord2fARB
+#define glMultiTexCoord2fv epoxy_glMultiTexCoord2fv
+#define glMultiTexCoord2fvARB epoxy_glMultiTexCoord2fvARB
+#define glMultiTexCoord2hNV epoxy_glMultiTexCoord2hNV
+#define glMultiTexCoord2hvNV epoxy_glMultiTexCoord2hvNV
+#define glMultiTexCoord2i epoxy_glMultiTexCoord2i
+#define glMultiTexCoord2iARB epoxy_glMultiTexCoord2iARB
+#define glMultiTexCoord2iv epoxy_glMultiTexCoord2iv
+#define glMultiTexCoord2ivARB epoxy_glMultiTexCoord2ivARB
+#define glMultiTexCoord2s epoxy_glMultiTexCoord2s
+#define glMultiTexCoord2sARB epoxy_glMultiTexCoord2sARB
+#define glMultiTexCoord2sv epoxy_glMultiTexCoord2sv
+#define glMultiTexCoord2svARB epoxy_glMultiTexCoord2svARB
+#define glMultiTexCoord2xOES epoxy_glMultiTexCoord2xOES
+#define glMultiTexCoord2xvOES epoxy_glMultiTexCoord2xvOES
+#define glMultiTexCoord3bOES epoxy_glMultiTexCoord3bOES
+#define glMultiTexCoord3bvOES epoxy_glMultiTexCoord3bvOES
+#define glMultiTexCoord3d epoxy_glMultiTexCoord3d
+#define glMultiTexCoord3dARB epoxy_glMultiTexCoord3dARB
+#define glMultiTexCoord3dv epoxy_glMultiTexCoord3dv
+#define glMultiTexCoord3dvARB epoxy_glMultiTexCoord3dvARB
+#define glMultiTexCoord3f epoxy_glMultiTexCoord3f
+#define glMultiTexCoord3fARB epoxy_glMultiTexCoord3fARB
+#define glMultiTexCoord3fv epoxy_glMultiTexCoord3fv
+#define glMultiTexCoord3fvARB epoxy_glMultiTexCoord3fvARB
+#define glMultiTexCoord3hNV epoxy_glMultiTexCoord3hNV
+#define glMultiTexCoord3hvNV epoxy_glMultiTexCoord3hvNV
+#define glMultiTexCoord3i epoxy_glMultiTexCoord3i
+#define glMultiTexCoord3iARB epoxy_glMultiTexCoord3iARB
+#define glMultiTexCoord3iv epoxy_glMultiTexCoord3iv
+#define glMultiTexCoord3ivARB epoxy_glMultiTexCoord3ivARB
+#define glMultiTexCoord3s epoxy_glMultiTexCoord3s
+#define glMultiTexCoord3sARB epoxy_glMultiTexCoord3sARB
+#define glMultiTexCoord3sv epoxy_glMultiTexCoord3sv
+#define glMultiTexCoord3svARB epoxy_glMultiTexCoord3svARB
+#define glMultiTexCoord3xOES epoxy_glMultiTexCoord3xOES
+#define glMultiTexCoord3xvOES epoxy_glMultiTexCoord3xvOES
+#define glMultiTexCoord4bOES epoxy_glMultiTexCoord4bOES
+#define glMultiTexCoord4bvOES epoxy_glMultiTexCoord4bvOES
+#define glMultiTexCoord4d epoxy_glMultiTexCoord4d
+#define glMultiTexCoord4dARB epoxy_glMultiTexCoord4dARB
+#define glMultiTexCoord4dv epoxy_glMultiTexCoord4dv
+#define glMultiTexCoord4dvARB epoxy_glMultiTexCoord4dvARB
+#define glMultiTexCoord4f epoxy_glMultiTexCoord4f
+#define glMultiTexCoord4fARB epoxy_glMultiTexCoord4fARB
+#define glMultiTexCoord4fv epoxy_glMultiTexCoord4fv
+#define glMultiTexCoord4fvARB epoxy_glMultiTexCoord4fvARB
+#define glMultiTexCoord4hNV epoxy_glMultiTexCoord4hNV
+#define glMultiTexCoord4hvNV epoxy_glMultiTexCoord4hvNV
+#define glMultiTexCoord4i epoxy_glMultiTexCoord4i
+#define glMultiTexCoord4iARB epoxy_glMultiTexCoord4iARB
+#define glMultiTexCoord4iv epoxy_glMultiTexCoord4iv
+#define glMultiTexCoord4ivARB epoxy_glMultiTexCoord4ivARB
+#define glMultiTexCoord4s epoxy_glMultiTexCoord4s
+#define glMultiTexCoord4sARB epoxy_glMultiTexCoord4sARB
+#define glMultiTexCoord4sv epoxy_glMultiTexCoord4sv
+#define glMultiTexCoord4svARB epoxy_glMultiTexCoord4svARB
+#define glMultiTexCoord4x epoxy_glMultiTexCoord4x
+#define glMultiTexCoord4xOES epoxy_glMultiTexCoord4xOES
+#define glMultiTexCoord4xvOES epoxy_glMultiTexCoord4xvOES
+#define glMultiTexCoordP1ui epoxy_glMultiTexCoordP1ui
+#define glMultiTexCoordP1uiv epoxy_glMultiTexCoordP1uiv
+#define glMultiTexCoordP2ui epoxy_glMultiTexCoordP2ui
+#define glMultiTexCoordP2uiv epoxy_glMultiTexCoordP2uiv
+#define glMultiTexCoordP3ui epoxy_glMultiTexCoordP3ui
+#define glMultiTexCoordP3uiv epoxy_glMultiTexCoordP3uiv
+#define glMultiTexCoordP4ui epoxy_glMultiTexCoordP4ui
+#define glMultiTexCoordP4uiv epoxy_glMultiTexCoordP4uiv
+#define glMultiTexCoordPointerEXT epoxy_glMultiTexCoordPointerEXT
+#define glMultiTexEnvfEXT epoxy_glMultiTexEnvfEXT
+#define glMultiTexEnvfvEXT epoxy_glMultiTexEnvfvEXT
+#define glMultiTexEnviEXT epoxy_glMultiTexEnviEXT
+#define glMultiTexEnvivEXT epoxy_glMultiTexEnvivEXT
+#define glMultiTexGendEXT epoxy_glMultiTexGendEXT
+#define glMultiTexGendvEXT epoxy_glMultiTexGendvEXT
+#define glMultiTexGenfEXT epoxy_glMultiTexGenfEXT
+#define glMultiTexGenfvEXT epoxy_glMultiTexGenfvEXT
+#define glMultiTexGeniEXT epoxy_glMultiTexGeniEXT
+#define glMultiTexGenivEXT epoxy_glMultiTexGenivEXT
+#define glMultiTexImage1DEXT epoxy_glMultiTexImage1DEXT
+#define glMultiTexImage2DEXT epoxy_glMultiTexImage2DEXT
+#define glMultiTexImage3DEXT epoxy_glMultiTexImage3DEXT
+#define glMultiTexParameterIivEXT epoxy_glMultiTexParameterIivEXT
+#define glMultiTexParameterIuivEXT epoxy_glMultiTexParameterIuivEXT
+#define glMultiTexParameterfEXT epoxy_glMultiTexParameterfEXT
+#define glMultiTexParameterfvEXT epoxy_glMultiTexParameterfvEXT
+#define glMultiTexParameteriEXT epoxy_glMultiTexParameteriEXT
+#define glMultiTexParameterivEXT epoxy_glMultiTexParameterivEXT
+#define glMultiTexRenderbufferEXT epoxy_glMultiTexRenderbufferEXT
+#define glMultiTexSubImage1DEXT epoxy_glMultiTexSubImage1DEXT
+#define glMultiTexSubImage2DEXT epoxy_glMultiTexSubImage2DEXT
+#define glMultiTexSubImage3DEXT epoxy_glMultiTexSubImage3DEXT
+#define glMulticastBarrierNV epoxy_glMulticastBarrierNV
+#define glMulticastBlitFramebufferNV epoxy_glMulticastBlitFramebufferNV
+#define glMulticastBufferSubDataNV epoxy_glMulticastBufferSubDataNV
+#define glMulticastCopyBufferSubDataNV epoxy_glMulticastCopyBufferSubDataNV
+#define glMulticastCopyImageSubDataNV epoxy_glMulticastCopyImageSubDataNV
+#define glMulticastFramebufferSampleLocationsfvNV epoxy_glMulticastFramebufferSampleLocationsfvNV
+#define glMulticastGetQueryObjecti64vNV epoxy_glMulticastGetQueryObjecti64vNV
+#define glMulticastGetQueryObjectivNV epoxy_glMulticastGetQueryObjectivNV
+#define glMulticastGetQueryObjectui64vNV epoxy_glMulticastGetQueryObjectui64vNV
+#define glMulticastGetQueryObjectuivNV epoxy_glMulticastGetQueryObjectuivNV
+#define glMulticastScissorArrayvNVX epoxy_glMulticastScissorArrayvNVX
+#define glMulticastViewportArrayvNVX epoxy_glMulticastViewportArrayvNVX
+#define glMulticastViewportPositionWScaleNVX epoxy_glMulticastViewportPositionWScaleNVX
+#define glMulticastWaitSyncNV epoxy_glMulticastWaitSyncNV
+#define glNamedBufferAttachMemoryNV epoxy_glNamedBufferAttachMemoryNV
+#define glNamedBufferData epoxy_glNamedBufferData
+#define glNamedBufferDataEXT epoxy_glNamedBufferDataEXT
+#define glNamedBufferPageCommitmentARB epoxy_glNamedBufferPageCommitmentARB
+#define glNamedBufferPageCommitmentEXT epoxy_glNamedBufferPageCommitmentEXT
+#define glNamedBufferStorage epoxy_glNamedBufferStorage
+#define glNamedBufferStorageEXT epoxy_glNamedBufferStorageEXT
+#define glNamedBufferStorageExternalEXT epoxy_glNamedBufferStorageExternalEXT
+#define glNamedBufferStorageMemEXT epoxy_glNamedBufferStorageMemEXT
+#define glNamedBufferSubData epoxy_glNamedBufferSubData
+#define glNamedBufferSubDataEXT epoxy_glNamedBufferSubDataEXT
+#define glNamedCopyBufferSubDataEXT epoxy_glNamedCopyBufferSubDataEXT
+#define glNamedFramebufferDrawBuffer epoxy_glNamedFramebufferDrawBuffer
+#define glNamedFramebufferDrawBuffers epoxy_glNamedFramebufferDrawBuffers
+#define glNamedFramebufferParameteri epoxy_glNamedFramebufferParameteri
+#define glNamedFramebufferParameteriEXT epoxy_glNamedFramebufferParameteriEXT
+#define glNamedFramebufferReadBuffer epoxy_glNamedFramebufferReadBuffer
+#define glNamedFramebufferRenderbuffer epoxy_glNamedFramebufferRenderbuffer
+#define glNamedFramebufferRenderbufferEXT epoxy_glNamedFramebufferRenderbufferEXT
+#define glNamedFramebufferSampleLocationsfvARB epoxy_glNamedFramebufferSampleLocationsfvARB
+#define glNamedFramebufferSampleLocationsfvNV epoxy_glNamedFramebufferSampleLocationsfvNV
+#define glNamedFramebufferSamplePositionsfvAMD epoxy_glNamedFramebufferSamplePositionsfvAMD
+#define glNamedFramebufferTexture epoxy_glNamedFramebufferTexture
+#define glNamedFramebufferTexture1DEXT epoxy_glNamedFramebufferTexture1DEXT
+#define glNamedFramebufferTexture2DEXT epoxy_glNamedFramebufferTexture2DEXT
+#define glNamedFramebufferTexture3DEXT epoxy_glNamedFramebufferTexture3DEXT
+#define glNamedFramebufferTextureEXT epoxy_glNamedFramebufferTextureEXT
+#define glNamedFramebufferTextureFaceEXT epoxy_glNamedFramebufferTextureFaceEXT
+#define glNamedFramebufferTextureLayer epoxy_glNamedFramebufferTextureLayer
+#define glNamedFramebufferTextureLayerEXT epoxy_glNamedFramebufferTextureLayerEXT
+#define glNamedProgramLocalParameter4dEXT epoxy_glNamedProgramLocalParameter4dEXT
+#define glNamedProgramLocalParameter4dvEXT epoxy_glNamedProgramLocalParameter4dvEXT
+#define glNamedProgramLocalParameter4fEXT epoxy_glNamedProgramLocalParameter4fEXT
+#define glNamedProgramLocalParameter4fvEXT epoxy_glNamedProgramLocalParameter4fvEXT
+#define glNamedProgramLocalParameterI4iEXT epoxy_glNamedProgramLocalParameterI4iEXT
+#define glNamedProgramLocalParameterI4ivEXT epoxy_glNamedProgramLocalParameterI4ivEXT
+#define glNamedProgramLocalParameterI4uiEXT epoxy_glNamedProgramLocalParameterI4uiEXT
+#define glNamedProgramLocalParameterI4uivEXT epoxy_glNamedProgramLocalParameterI4uivEXT
+#define glNamedProgramLocalParameters4fvEXT epoxy_glNamedProgramLocalParameters4fvEXT
+#define glNamedProgramLocalParametersI4ivEXT epoxy_glNamedProgramLocalParametersI4ivEXT
+#define glNamedProgramLocalParametersI4uivEXT epoxy_glNamedProgramLocalParametersI4uivEXT
+#define glNamedProgramStringEXT epoxy_glNamedProgramStringEXT
+#define glNamedRenderbufferStorage epoxy_glNamedRenderbufferStorage
+#define glNamedRenderbufferStorageEXT epoxy_glNamedRenderbufferStorageEXT
+#define glNamedRenderbufferStorageMultisample epoxy_glNamedRenderbufferStorageMultisample
+#define glNamedRenderbufferStorageMultisampleAdvancedAMD epoxy_glNamedRenderbufferStorageMultisampleAdvancedAMD
+#define glNamedRenderbufferStorageMultisampleCoverageEXT epoxy_glNamedRenderbufferStorageMultisampleCoverageEXT
+#define glNamedRenderbufferStorageMultisampleEXT epoxy_glNamedRenderbufferStorageMultisampleEXT
+#define glNamedStringARB epoxy_glNamedStringARB
+#define glNewList epoxy_glNewList
+#define glNewObjectBufferATI epoxy_glNewObjectBufferATI
+#define glNormal3b epoxy_glNormal3b
+#define glNormal3bv epoxy_glNormal3bv
+#define glNormal3d epoxy_glNormal3d
+#define glNormal3dv epoxy_glNormal3dv
+#define glNormal3f epoxy_glNormal3f
+#define glNormal3fVertex3fSUN epoxy_glNormal3fVertex3fSUN
+#define glNormal3fVertex3fvSUN epoxy_glNormal3fVertex3fvSUN
+#define glNormal3fv epoxy_glNormal3fv
+#define glNormal3hNV epoxy_glNormal3hNV
+#define glNormal3hvNV epoxy_glNormal3hvNV
+#define glNormal3i epoxy_glNormal3i
+#define glNormal3iv epoxy_glNormal3iv
+#define glNormal3s epoxy_glNormal3s
+#define glNormal3sv epoxy_glNormal3sv
+#define glNormal3x epoxy_glNormal3x
+#define glNormal3xOES epoxy_glNormal3xOES
+#define glNormal3xvOES epoxy_glNormal3xvOES
+#define glNormalFormatNV epoxy_glNormalFormatNV
+#define glNormalP3ui epoxy_glNormalP3ui
+#define glNormalP3uiv epoxy_glNormalP3uiv
+#define glNormalPointer epoxy_glNormalPointer
+#define glNormalPointerEXT epoxy_glNormalPointerEXT
+#define glNormalPointerListIBM epoxy_glNormalPointerListIBM
+#define glNormalPointervINTEL epoxy_glNormalPointervINTEL
+#define glNormalStream3bATI epoxy_glNormalStream3bATI
+#define glNormalStream3bvATI epoxy_glNormalStream3bvATI
+#define glNormalStream3dATI epoxy_glNormalStream3dATI
+#define glNormalStream3dvATI epoxy_glNormalStream3dvATI
+#define glNormalStream3fATI epoxy_glNormalStream3fATI
+#define glNormalStream3fvATI epoxy_glNormalStream3fvATI
+#define glNormalStream3iATI epoxy_glNormalStream3iATI
+#define glNormalStream3ivATI epoxy_glNormalStream3ivATI
+#define glNormalStream3sATI epoxy_glNormalStream3sATI
+#define glNormalStream3svATI epoxy_glNormalStream3svATI
+#define glObjectLabel epoxy_glObjectLabel
+#define glObjectLabelKHR epoxy_glObjectLabelKHR
+#define glObjectPtrLabel epoxy_glObjectPtrLabel
+#define glObjectPtrLabelKHR epoxy_glObjectPtrLabelKHR
+#define glObjectPurgeableAPPLE epoxy_glObjectPurgeableAPPLE
+#define glObjectUnpurgeableAPPLE epoxy_glObjectUnpurgeableAPPLE
+#define glOrtho epoxy_glOrtho
+#define glOrthof epoxy_glOrthof
+#define glOrthofOES epoxy_glOrthofOES
+#define glOrthox epoxy_glOrthox
+#define glOrthoxOES epoxy_glOrthoxOES
+#define glPNTrianglesfATI epoxy_glPNTrianglesfATI
+#define glPNTrianglesiATI epoxy_glPNTrianglesiATI
+#define glPassTexCoordATI epoxy_glPassTexCoordATI
+#define glPassThrough epoxy_glPassThrough
+#define glPassThroughxOES epoxy_glPassThroughxOES
+#define glPatchParameterfv epoxy_glPatchParameterfv
+#define glPatchParameteri epoxy_glPatchParameteri
+#define glPatchParameteriEXT epoxy_glPatchParameteriEXT
+#define glPatchParameteriOES epoxy_glPatchParameteriOES
+#define glPathColorGenNV epoxy_glPathColorGenNV
+#define glPathCommandsNV epoxy_glPathCommandsNV
+#define glPathCoordsNV epoxy_glPathCoordsNV
+#define glPathCoverDepthFuncNV epoxy_glPathCoverDepthFuncNV
+#define glPathDashArrayNV epoxy_glPathDashArrayNV
+#define glPathFogGenNV epoxy_glPathFogGenNV
+#define glPathGlyphIndexArrayNV epoxy_glPathGlyphIndexArrayNV
+#define glPathGlyphIndexRangeNV epoxy_glPathGlyphIndexRangeNV
+#define glPathGlyphRangeNV epoxy_glPathGlyphRangeNV
+#define glPathGlyphsNV epoxy_glPathGlyphsNV
+#define glPathMemoryGlyphIndexArrayNV epoxy_glPathMemoryGlyphIndexArrayNV
+#define glPathParameterfNV epoxy_glPathParameterfNV
+#define glPathParameterfvNV epoxy_glPathParameterfvNV
+#define glPathParameteriNV epoxy_glPathParameteriNV
+#define glPathParameterivNV epoxy_glPathParameterivNV
+#define glPathStencilDepthOffsetNV epoxy_glPathStencilDepthOffsetNV
+#define glPathStencilFuncNV epoxy_glPathStencilFuncNV
+#define glPathStringNV epoxy_glPathStringNV
+#define glPathSubCommandsNV epoxy_glPathSubCommandsNV
+#define glPathSubCoordsNV epoxy_glPathSubCoordsNV
+#define glPathTexGenNV epoxy_glPathTexGenNV
+#define glPauseTransformFeedback epoxy_glPauseTransformFeedback
+#define glPauseTransformFeedbackNV epoxy_glPauseTransformFeedbackNV
+#define glPixelDataRangeNV epoxy_glPixelDataRangeNV
+#define glPixelMapfv epoxy_glPixelMapfv
+#define glPixelMapuiv epoxy_glPixelMapuiv
+#define glPixelMapusv epoxy_glPixelMapusv
+#define glPixelMapx epoxy_glPixelMapx
+#define glPixelStoref epoxy_glPixelStoref
+#define glPixelStorei epoxy_glPixelStorei
+#define glPixelStorex epoxy_glPixelStorex
+#define glPixelTexGenParameterfSGIS epoxy_glPixelTexGenParameterfSGIS
+#define glPixelTexGenParameterfvSGIS epoxy_glPixelTexGenParameterfvSGIS
+#define glPixelTexGenParameteriSGIS epoxy_glPixelTexGenParameteriSGIS
+#define glPixelTexGenParameterivSGIS epoxy_glPixelTexGenParameterivSGIS
+#define glPixelTexGenSGIX epoxy_glPixelTexGenSGIX
+#define glPixelTransferf epoxy_glPixelTransferf
+#define glPixelTransferi epoxy_glPixelTransferi
+#define glPixelTransferxOES epoxy_glPixelTransferxOES
+#define glPixelTransformParameterfEXT epoxy_glPixelTransformParameterfEXT
+#define glPixelTransformParameterfvEXT epoxy_glPixelTransformParameterfvEXT
+#define glPixelTransformParameteriEXT epoxy_glPixelTransformParameteriEXT
+#define glPixelTransformParameterivEXT epoxy_glPixelTransformParameterivEXT
+#define glPixelZoom epoxy_glPixelZoom
+#define glPixelZoomxOES epoxy_glPixelZoomxOES
+#define glPointAlongPathNV epoxy_glPointAlongPathNV
+#define glPointParameterf epoxy_glPointParameterf
+#define glPointParameterfARB epoxy_glPointParameterfARB
+#define glPointParameterfEXT epoxy_glPointParameterfEXT
+#define glPointParameterfSGIS epoxy_glPointParameterfSGIS
+#define glPointParameterfv epoxy_glPointParameterfv
+#define glPointParameterfvARB epoxy_glPointParameterfvARB
+#define glPointParameterfvEXT epoxy_glPointParameterfvEXT
+#define glPointParameterfvSGIS epoxy_glPointParameterfvSGIS
+#define glPointParameteri epoxy_glPointParameteri
+#define glPointParameteriNV epoxy_glPointParameteriNV
+#define glPointParameteriv epoxy_glPointParameteriv
+#define glPointParameterivNV epoxy_glPointParameterivNV
+#define glPointParameterx epoxy_glPointParameterx
+#define glPointParameterxOES epoxy_glPointParameterxOES
+#define glPointParameterxv epoxy_glPointParameterxv
+#define glPointParameterxvOES epoxy_glPointParameterxvOES
+#define glPointSize epoxy_glPointSize
+#define glPointSizePointerOES epoxy_glPointSizePointerOES
+#define glPointSizex epoxy_glPointSizex
+#define glPointSizexOES epoxy_glPointSizexOES
+#define glPollAsyncSGIX epoxy_glPollAsyncSGIX
+#define glPollInstrumentsSGIX epoxy_glPollInstrumentsSGIX
+#define glPolygonMode epoxy_glPolygonMode
+#define glPolygonModeNV epoxy_glPolygonModeNV
+#define glPolygonOffset epoxy_glPolygonOffset
+#define glPolygonOffsetClamp epoxy_glPolygonOffsetClamp
+#define glPolygonOffsetClampEXT epoxy_glPolygonOffsetClampEXT
+#define glPolygonOffsetEXT epoxy_glPolygonOffsetEXT
+#define glPolygonOffsetx epoxy_glPolygonOffsetx
+#define glPolygonOffsetxOES epoxy_glPolygonOffsetxOES
+#define glPolygonStipple epoxy_glPolygonStipple
+#define glPopAttrib epoxy_glPopAttrib
+#define glPopClientAttrib epoxy_glPopClientAttrib
+#define glPopDebugGroup epoxy_glPopDebugGroup
+#define glPopDebugGroupKHR epoxy_glPopDebugGroupKHR
+#define glPopGroupMarkerEXT epoxy_glPopGroupMarkerEXT
+#define glPopMatrix epoxy_glPopMatrix
+#define glPopName epoxy_glPopName
+#define glPresentFrameDualFillNV epoxy_glPresentFrameDualFillNV
+#define glPresentFrameKeyedNV epoxy_glPresentFrameKeyedNV
+#define glPrimitiveBoundingBox epoxy_glPrimitiveBoundingBox
+#define glPrimitiveBoundingBoxARB epoxy_glPrimitiveBoundingBoxARB
+#define glPrimitiveBoundingBoxEXT epoxy_glPrimitiveBoundingBoxEXT
+#define glPrimitiveBoundingBoxOES epoxy_glPrimitiveBoundingBoxOES
+#define glPrimitiveRestartIndex epoxy_glPrimitiveRestartIndex
+#define glPrimitiveRestartIndexNV epoxy_glPrimitiveRestartIndexNV
+#define glPrimitiveRestartNV epoxy_glPrimitiveRestartNV
+#define glPrioritizeTextures epoxy_glPrioritizeTextures
+#define glPrioritizeTexturesEXT epoxy_glPrioritizeTexturesEXT
+#define glPrioritizeTexturesxOES epoxy_glPrioritizeTexturesxOES
+#define glProgramBinary epoxy_glProgramBinary
+#define glProgramBinaryOES epoxy_glProgramBinaryOES
+#define glProgramBufferParametersIivNV epoxy_glProgramBufferParametersIivNV
+#define glProgramBufferParametersIuivNV epoxy_glProgramBufferParametersIuivNV
+#define glProgramBufferParametersfvNV epoxy_glProgramBufferParametersfvNV
+#define glProgramEnvParameter4dARB epoxy_glProgramEnvParameter4dARB
+#define glProgramEnvParameter4dvARB epoxy_glProgramEnvParameter4dvARB
+#define glProgramEnvParameter4fARB epoxy_glProgramEnvParameter4fARB
+#define glProgramEnvParameter4fvARB epoxy_glProgramEnvParameter4fvARB
+#define glProgramEnvParameterI4iNV epoxy_glProgramEnvParameterI4iNV
+#define glProgramEnvParameterI4ivNV epoxy_glProgramEnvParameterI4ivNV
+#define glProgramEnvParameterI4uiNV epoxy_glProgramEnvParameterI4uiNV
+#define glProgramEnvParameterI4uivNV epoxy_glProgramEnvParameterI4uivNV
+#define glProgramEnvParameters4fvEXT epoxy_glProgramEnvParameters4fvEXT
+#define glProgramEnvParametersI4ivNV epoxy_glProgramEnvParametersI4ivNV
+#define glProgramEnvParametersI4uivNV epoxy_glProgramEnvParametersI4uivNV
+#define glProgramLocalParameter4dARB epoxy_glProgramLocalParameter4dARB
+#define glProgramLocalParameter4dvARB epoxy_glProgramLocalParameter4dvARB
+#define glProgramLocalParameter4fARB epoxy_glProgramLocalParameter4fARB
+#define glProgramLocalParameter4fvARB epoxy_glProgramLocalParameter4fvARB
+#define glProgramLocalParameterI4iNV epoxy_glProgramLocalParameterI4iNV
+#define glProgramLocalParameterI4ivNV epoxy_glProgramLocalParameterI4ivNV
+#define glProgramLocalParameterI4uiNV epoxy_glProgramLocalParameterI4uiNV
+#define glProgramLocalParameterI4uivNV epoxy_glProgramLocalParameterI4uivNV
+#define glProgramLocalParameters4fvEXT epoxy_glProgramLocalParameters4fvEXT
+#define glProgramLocalParametersI4ivNV epoxy_glProgramLocalParametersI4ivNV
+#define glProgramLocalParametersI4uivNV epoxy_glProgramLocalParametersI4uivNV
+#define glProgramNamedParameter4dNV epoxy_glProgramNamedParameter4dNV
+#define glProgramNamedParameter4dvNV epoxy_glProgramNamedParameter4dvNV
+#define glProgramNamedParameter4fNV epoxy_glProgramNamedParameter4fNV
+#define glProgramNamedParameter4fvNV epoxy_glProgramNamedParameter4fvNV
+#define glProgramParameter4dNV epoxy_glProgramParameter4dNV
+#define glProgramParameter4dvNV epoxy_glProgramParameter4dvNV
+#define glProgramParameter4fNV epoxy_glProgramParameter4fNV
+#define glProgramParameter4fvNV epoxy_glProgramParameter4fvNV
+#define glProgramParameteri epoxy_glProgramParameteri
+#define glProgramParameteriARB epoxy_glProgramParameteriARB
+#define glProgramParameteriEXT epoxy_glProgramParameteriEXT
+#define glProgramParameters4dvNV epoxy_glProgramParameters4dvNV
+#define glProgramParameters4fvNV epoxy_glProgramParameters4fvNV
+#define glProgramPathFragmentInputGenNV epoxy_glProgramPathFragmentInputGenNV
+#define glProgramStringARB epoxy_glProgramStringARB
+#define glProgramSubroutineParametersuivNV epoxy_glProgramSubroutineParametersuivNV
+#define glProgramUniform1d epoxy_glProgramUniform1d
+#define glProgramUniform1dEXT epoxy_glProgramUniform1dEXT
+#define glProgramUniform1dv epoxy_glProgramUniform1dv
+#define glProgramUniform1dvEXT epoxy_glProgramUniform1dvEXT
+#define glProgramUniform1f epoxy_glProgramUniform1f
+#define glProgramUniform1fEXT epoxy_glProgramUniform1fEXT
+#define glProgramUniform1fv epoxy_glProgramUniform1fv
+#define glProgramUniform1fvEXT epoxy_glProgramUniform1fvEXT
+#define glProgramUniform1i epoxy_glProgramUniform1i
+#define glProgramUniform1i64ARB epoxy_glProgramUniform1i64ARB
+#define glProgramUniform1i64NV epoxy_glProgramUniform1i64NV
+#define glProgramUniform1i64vARB epoxy_glProgramUniform1i64vARB
+#define glProgramUniform1i64vNV epoxy_glProgramUniform1i64vNV
+#define glProgramUniform1iEXT epoxy_glProgramUniform1iEXT
+#define glProgramUniform1iv epoxy_glProgramUniform1iv
+#define glProgramUniform1ivEXT epoxy_glProgramUniform1ivEXT
+#define glProgramUniform1ui epoxy_glProgramUniform1ui
+#define glProgramUniform1ui64ARB epoxy_glProgramUniform1ui64ARB
+#define glProgramUniform1ui64NV epoxy_glProgramUniform1ui64NV
+#define glProgramUniform1ui64vARB epoxy_glProgramUniform1ui64vARB
+#define glProgramUniform1ui64vNV epoxy_glProgramUniform1ui64vNV
+#define glProgramUniform1uiEXT epoxy_glProgramUniform1uiEXT
+#define glProgramUniform1uiv epoxy_glProgramUniform1uiv
+#define glProgramUniform1uivEXT epoxy_glProgramUniform1uivEXT
+#define glProgramUniform2d epoxy_glProgramUniform2d
+#define glProgramUniform2dEXT epoxy_glProgramUniform2dEXT
+#define glProgramUniform2dv epoxy_glProgramUniform2dv
+#define glProgramUniform2dvEXT epoxy_glProgramUniform2dvEXT
+#define glProgramUniform2f epoxy_glProgramUniform2f
+#define glProgramUniform2fEXT epoxy_glProgramUniform2fEXT
+#define glProgramUniform2fv epoxy_glProgramUniform2fv
+#define glProgramUniform2fvEXT epoxy_glProgramUniform2fvEXT
+#define glProgramUniform2i epoxy_glProgramUniform2i
+#define glProgramUniform2i64ARB epoxy_glProgramUniform2i64ARB
+#define glProgramUniform2i64NV epoxy_glProgramUniform2i64NV
+#define glProgramUniform2i64vARB epoxy_glProgramUniform2i64vARB
+#define glProgramUniform2i64vNV epoxy_glProgramUniform2i64vNV
+#define glProgramUniform2iEXT epoxy_glProgramUniform2iEXT
+#define glProgramUniform2iv epoxy_glProgramUniform2iv
+#define glProgramUniform2ivEXT epoxy_glProgramUniform2ivEXT
+#define glProgramUniform2ui epoxy_glProgramUniform2ui
+#define glProgramUniform2ui64ARB epoxy_glProgramUniform2ui64ARB
+#define glProgramUniform2ui64NV epoxy_glProgramUniform2ui64NV
+#define glProgramUniform2ui64vARB epoxy_glProgramUniform2ui64vARB
+#define glProgramUniform2ui64vNV epoxy_glProgramUniform2ui64vNV
+#define glProgramUniform2uiEXT epoxy_glProgramUniform2uiEXT
+#define glProgramUniform2uiv epoxy_glProgramUniform2uiv
+#define glProgramUniform2uivEXT epoxy_glProgramUniform2uivEXT
+#define glProgramUniform3d epoxy_glProgramUniform3d
+#define glProgramUniform3dEXT epoxy_glProgramUniform3dEXT
+#define glProgramUniform3dv epoxy_glProgramUniform3dv
+#define glProgramUniform3dvEXT epoxy_glProgramUniform3dvEXT
+#define glProgramUniform3f epoxy_glProgramUniform3f
+#define glProgramUniform3fEXT epoxy_glProgramUniform3fEXT
+#define glProgramUniform3fv epoxy_glProgramUniform3fv
+#define glProgramUniform3fvEXT epoxy_glProgramUniform3fvEXT
+#define glProgramUniform3i epoxy_glProgramUniform3i
+#define glProgramUniform3i64ARB epoxy_glProgramUniform3i64ARB
+#define glProgramUniform3i64NV epoxy_glProgramUniform3i64NV
+#define glProgramUniform3i64vARB epoxy_glProgramUniform3i64vARB
+#define glProgramUniform3i64vNV epoxy_glProgramUniform3i64vNV
+#define glProgramUniform3iEXT epoxy_glProgramUniform3iEXT
+#define glProgramUniform3iv epoxy_glProgramUniform3iv
+#define glProgramUniform3ivEXT epoxy_glProgramUniform3ivEXT
+#define glProgramUniform3ui epoxy_glProgramUniform3ui
+#define glProgramUniform3ui64ARB epoxy_glProgramUniform3ui64ARB
+#define glProgramUniform3ui64NV epoxy_glProgramUniform3ui64NV
+#define glProgramUniform3ui64vARB epoxy_glProgramUniform3ui64vARB
+#define glProgramUniform3ui64vNV epoxy_glProgramUniform3ui64vNV
+#define glProgramUniform3uiEXT epoxy_glProgramUniform3uiEXT
+#define glProgramUniform3uiv epoxy_glProgramUniform3uiv
+#define glProgramUniform3uivEXT epoxy_glProgramUniform3uivEXT
+#define glProgramUniform4d epoxy_glProgramUniform4d
+#define glProgramUniform4dEXT epoxy_glProgramUniform4dEXT
+#define glProgramUniform4dv epoxy_glProgramUniform4dv
+#define glProgramUniform4dvEXT epoxy_glProgramUniform4dvEXT
+#define glProgramUniform4f epoxy_glProgramUniform4f
+#define glProgramUniform4fEXT epoxy_glProgramUniform4fEXT
+#define glProgramUniform4fv epoxy_glProgramUniform4fv
+#define glProgramUniform4fvEXT epoxy_glProgramUniform4fvEXT
+#define glProgramUniform4i epoxy_glProgramUniform4i
+#define glProgramUniform4i64ARB epoxy_glProgramUniform4i64ARB
+#define glProgramUniform4i64NV epoxy_glProgramUniform4i64NV
+#define glProgramUniform4i64vARB epoxy_glProgramUniform4i64vARB
+#define glProgramUniform4i64vNV epoxy_glProgramUniform4i64vNV
+#define glProgramUniform4iEXT epoxy_glProgramUniform4iEXT
+#define glProgramUniform4iv epoxy_glProgramUniform4iv
+#define glProgramUniform4ivEXT epoxy_glProgramUniform4ivEXT
+#define glProgramUniform4ui epoxy_glProgramUniform4ui
+#define glProgramUniform4ui64ARB epoxy_glProgramUniform4ui64ARB
+#define glProgramUniform4ui64NV epoxy_glProgramUniform4ui64NV
+#define glProgramUniform4ui64vARB epoxy_glProgramUniform4ui64vARB
+#define glProgramUniform4ui64vNV epoxy_glProgramUniform4ui64vNV
+#define glProgramUniform4uiEXT epoxy_glProgramUniform4uiEXT
+#define glProgramUniform4uiv epoxy_glProgramUniform4uiv
+#define glProgramUniform4uivEXT epoxy_glProgramUniform4uivEXT
+#define glProgramUniformHandleui64ARB epoxy_glProgramUniformHandleui64ARB
+#define glProgramUniformHandleui64IMG epoxy_glProgramUniformHandleui64IMG
+#define glProgramUniformHandleui64NV epoxy_glProgramUniformHandleui64NV
+#define glProgramUniformHandleui64vARB epoxy_glProgramUniformHandleui64vARB
+#define glProgramUniformHandleui64vIMG epoxy_glProgramUniformHandleui64vIMG
+#define glProgramUniformHandleui64vNV epoxy_glProgramUniformHandleui64vNV
+#define glProgramUniformMatrix2dv epoxy_glProgramUniformMatrix2dv
+#define glProgramUniformMatrix2dvEXT epoxy_glProgramUniformMatrix2dvEXT
+#define glProgramUniformMatrix2fv epoxy_glProgramUniformMatrix2fv
+#define glProgramUniformMatrix2fvEXT epoxy_glProgramUniformMatrix2fvEXT
+#define glProgramUniformMatrix2x3dv epoxy_glProgramUniformMatrix2x3dv
+#define glProgramUniformMatrix2x3dvEXT epoxy_glProgramUniformMatrix2x3dvEXT
+#define glProgramUniformMatrix2x3fv epoxy_glProgramUniformMatrix2x3fv
+#define glProgramUniformMatrix2x3fvEXT epoxy_glProgramUniformMatrix2x3fvEXT
+#define glProgramUniformMatrix2x4dv epoxy_glProgramUniformMatrix2x4dv
+#define glProgramUniformMatrix2x4dvEXT epoxy_glProgramUniformMatrix2x4dvEXT
+#define glProgramUniformMatrix2x4fv epoxy_glProgramUniformMatrix2x4fv
+#define glProgramUniformMatrix2x4fvEXT epoxy_glProgramUniformMatrix2x4fvEXT
+#define glProgramUniformMatrix3dv epoxy_glProgramUniformMatrix3dv
+#define glProgramUniformMatrix3dvEXT epoxy_glProgramUniformMatrix3dvEXT
+#define glProgramUniformMatrix3fv epoxy_glProgramUniformMatrix3fv
+#define glProgramUniformMatrix3fvEXT epoxy_glProgramUniformMatrix3fvEXT
+#define glProgramUniformMatrix3x2dv epoxy_glProgramUniformMatrix3x2dv
+#define glProgramUniformMatrix3x2dvEXT epoxy_glProgramUniformMatrix3x2dvEXT
+#define glProgramUniformMatrix3x2fv epoxy_glProgramUniformMatrix3x2fv
+#define glProgramUniformMatrix3x2fvEXT epoxy_glProgramUniformMatrix3x2fvEXT
+#define glProgramUniformMatrix3x4dv epoxy_glProgramUniformMatrix3x4dv
+#define glProgramUniformMatrix3x4dvEXT epoxy_glProgramUniformMatrix3x4dvEXT
+#define glProgramUniformMatrix3x4fv epoxy_glProgramUniformMatrix3x4fv
+#define glProgramUniformMatrix3x4fvEXT epoxy_glProgramUniformMatrix3x4fvEXT
+#define glProgramUniformMatrix4dv epoxy_glProgramUniformMatrix4dv
+#define glProgramUniformMatrix4dvEXT epoxy_glProgramUniformMatrix4dvEXT
+#define glProgramUniformMatrix4fv epoxy_glProgramUniformMatrix4fv
+#define glProgramUniformMatrix4fvEXT epoxy_glProgramUniformMatrix4fvEXT
+#define glProgramUniformMatrix4x2dv epoxy_glProgramUniformMatrix4x2dv
+#define glProgramUniformMatrix4x2dvEXT epoxy_glProgramUniformMatrix4x2dvEXT
+#define glProgramUniformMatrix4x2fv epoxy_glProgramUniformMatrix4x2fv
+#define glProgramUniformMatrix4x2fvEXT epoxy_glProgramUniformMatrix4x2fvEXT
+#define glProgramUniformMatrix4x3dv epoxy_glProgramUniformMatrix4x3dv
+#define glProgramUniformMatrix4x3dvEXT epoxy_glProgramUniformMatrix4x3dvEXT
+#define glProgramUniformMatrix4x3fv epoxy_glProgramUniformMatrix4x3fv
+#define glProgramUniformMatrix4x3fvEXT epoxy_glProgramUniformMatrix4x3fvEXT
+#define glProgramUniformui64NV epoxy_glProgramUniformui64NV
+#define glProgramUniformui64vNV epoxy_glProgramUniformui64vNV
+#define glProgramVertexLimitNV epoxy_glProgramVertexLimitNV
+#define glProvokingVertex epoxy_glProvokingVertex
+#define glProvokingVertexEXT epoxy_glProvokingVertexEXT
+#define glPushAttrib epoxy_glPushAttrib
+#define glPushClientAttrib epoxy_glPushClientAttrib
+#define glPushClientAttribDefaultEXT epoxy_glPushClientAttribDefaultEXT
+#define glPushDebugGroup epoxy_glPushDebugGroup
+#define glPushDebugGroupKHR epoxy_glPushDebugGroupKHR
+#define glPushGroupMarkerEXT epoxy_glPushGroupMarkerEXT
+#define glPushMatrix epoxy_glPushMatrix
+#define glPushName epoxy_glPushName
+#define glQueryCounter epoxy_glQueryCounter
+#define glQueryCounterEXT epoxy_glQueryCounterEXT
+#define glQueryMatrixxOES epoxy_glQueryMatrixxOES
+#define glQueryObjectParameteruiAMD epoxy_glQueryObjectParameteruiAMD
+#define glQueryResourceNV epoxy_glQueryResourceNV
+#define glQueryResourceTagNV epoxy_glQueryResourceTagNV
+#define glRasterPos2d epoxy_glRasterPos2d
+#define glRasterPos2dv epoxy_glRasterPos2dv
+#define glRasterPos2f epoxy_glRasterPos2f
+#define glRasterPos2fv epoxy_glRasterPos2fv
+#define glRasterPos2i epoxy_glRasterPos2i
+#define glRasterPos2iv epoxy_glRasterPos2iv
+#define glRasterPos2s epoxy_glRasterPos2s
+#define glRasterPos2sv epoxy_glRasterPos2sv
+#define glRasterPos2xOES epoxy_glRasterPos2xOES
+#define glRasterPos2xvOES epoxy_glRasterPos2xvOES
+#define glRasterPos3d epoxy_glRasterPos3d
+#define glRasterPos3dv epoxy_glRasterPos3dv
+#define glRasterPos3f epoxy_glRasterPos3f
+#define glRasterPos3fv epoxy_glRasterPos3fv
+#define glRasterPos3i epoxy_glRasterPos3i
+#define glRasterPos3iv epoxy_glRasterPos3iv
+#define glRasterPos3s epoxy_glRasterPos3s
+#define glRasterPos3sv epoxy_glRasterPos3sv
+#define glRasterPos3xOES epoxy_glRasterPos3xOES
+#define glRasterPos3xvOES epoxy_glRasterPos3xvOES
+#define glRasterPos4d epoxy_glRasterPos4d
+#define glRasterPos4dv epoxy_glRasterPos4dv
+#define glRasterPos4f epoxy_glRasterPos4f
+#define glRasterPos4fv epoxy_glRasterPos4fv
+#define glRasterPos4i epoxy_glRasterPos4i
+#define glRasterPos4iv epoxy_glRasterPos4iv
+#define glRasterPos4s epoxy_glRasterPos4s
+#define glRasterPos4sv epoxy_glRasterPos4sv
+#define glRasterPos4xOES epoxy_glRasterPos4xOES
+#define glRasterPos4xvOES epoxy_glRasterPos4xvOES
+#define glRasterSamplesEXT epoxy_glRasterSamplesEXT
+#define glReadBuffer epoxy_glReadBuffer
+#define glReadBufferIndexedEXT epoxy_glReadBufferIndexedEXT
+#define glReadBufferNV epoxy_glReadBufferNV
+#define glReadInstrumentsSGIX epoxy_glReadInstrumentsSGIX
+#define glReadPixels epoxy_glReadPixels
+#define glReadnPixels epoxy_glReadnPixels
+#define glReadnPixelsARB epoxy_glReadnPixelsARB
+#define glReadnPixelsEXT epoxy_glReadnPixelsEXT
+#define glReadnPixelsKHR epoxy_glReadnPixelsKHR
+#define glRectd epoxy_glRectd
+#define glRectdv epoxy_glRectdv
+#define glRectf epoxy_glRectf
+#define glRectfv epoxy_glRectfv
+#define glRecti epoxy_glRecti
+#define glRectiv epoxy_glRectiv
+#define glRects epoxy_glRects
+#define glRectsv epoxy_glRectsv
+#define glRectxOES epoxy_glRectxOES
+#define glRectxvOES epoxy_glRectxvOES
+#define glReferencePlaneSGIX epoxy_glReferencePlaneSGIX
+#define glReleaseKeyedMutexWin32EXT epoxy_glReleaseKeyedMutexWin32EXT
+#define glReleaseShaderCompiler epoxy_glReleaseShaderCompiler
+#define glRenderGpuMaskNV epoxy_glRenderGpuMaskNV
+#define glRenderMode epoxy_glRenderMode
+#define glRenderbufferStorage epoxy_glRenderbufferStorage
+#define glRenderbufferStorageEXT epoxy_glRenderbufferStorageEXT
+#define glRenderbufferStorageMultisample epoxy_glRenderbufferStorageMultisample
+#define glRenderbufferStorageMultisampleANGLE epoxy_glRenderbufferStorageMultisampleANGLE
+#define glRenderbufferStorageMultisampleAPPLE epoxy_glRenderbufferStorageMultisampleAPPLE
+#define glRenderbufferStorageMultisampleAdvancedAMD epoxy_glRenderbufferStorageMultisampleAdvancedAMD
+#define glRenderbufferStorageMultisampleCoverageNV epoxy_glRenderbufferStorageMultisampleCoverageNV
+#define glRenderbufferStorageMultisampleEXT epoxy_glRenderbufferStorageMultisampleEXT
+#define glRenderbufferStorageMultisampleIMG epoxy_glRenderbufferStorageMultisampleIMG
+#define glRenderbufferStorageMultisampleNV epoxy_glRenderbufferStorageMultisampleNV
+#define glRenderbufferStorageOES epoxy_glRenderbufferStorageOES
+#define glReplacementCodePointerSUN epoxy_glReplacementCodePointerSUN
+#define glReplacementCodeubSUN epoxy_glReplacementCodeubSUN
+#define glReplacementCodeubvSUN epoxy_glReplacementCodeubvSUN
+#define glReplacementCodeuiColor3fVertex3fSUN epoxy_glReplacementCodeuiColor3fVertex3fSUN
+#define glReplacementCodeuiColor3fVertex3fvSUN epoxy_glReplacementCodeuiColor3fVertex3fvSUN
+#define glReplacementCodeuiColor4fNormal3fVertex3fSUN epoxy_glReplacementCodeuiColor4fNormal3fVertex3fSUN
+#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN epoxy_glReplacementCodeuiColor4fNormal3fVertex3fvSUN
+#define glReplacementCodeuiColor4ubVertex3fSUN epoxy_glReplacementCodeuiColor4ubVertex3fSUN
+#define glReplacementCodeuiColor4ubVertex3fvSUN epoxy_glReplacementCodeuiColor4ubVertex3fvSUN
+#define glReplacementCodeuiNormal3fVertex3fSUN epoxy_glReplacementCodeuiNormal3fVertex3fSUN
+#define glReplacementCodeuiNormal3fVertex3fvSUN epoxy_glReplacementCodeuiNormal3fVertex3fvSUN
+#define glReplacementCodeuiSUN epoxy_glReplacementCodeuiSUN
+#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN epoxy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN
+#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN epoxy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN
+#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN epoxy_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN
+#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN epoxy_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN
+#define glReplacementCodeuiTexCoord2fVertex3fSUN epoxy_glReplacementCodeuiTexCoord2fVertex3fSUN
+#define glReplacementCodeuiTexCoord2fVertex3fvSUN epoxy_glReplacementCodeuiTexCoord2fVertex3fvSUN
+#define glReplacementCodeuiVertex3fSUN epoxy_glReplacementCodeuiVertex3fSUN
+#define glReplacementCodeuiVertex3fvSUN epoxy_glReplacementCodeuiVertex3fvSUN
+#define glReplacementCodeuivSUN epoxy_glReplacementCodeuivSUN
+#define glReplacementCodeusSUN epoxy_glReplacementCodeusSUN
+#define glReplacementCodeusvSUN epoxy_glReplacementCodeusvSUN
+#define glRequestResidentProgramsNV epoxy_glRequestResidentProgramsNV
+#define glResetHistogram epoxy_glResetHistogram
+#define glResetHistogramEXT epoxy_glResetHistogramEXT
+#define glResetMemoryObjectParameterNV epoxy_glResetMemoryObjectParameterNV
+#define glResetMinmax epoxy_glResetMinmax
+#define glResetMinmaxEXT epoxy_glResetMinmaxEXT
+#define glResizeBuffersMESA epoxy_glResizeBuffersMESA
+#define glResolveDepthValuesNV epoxy_glResolveDepthValuesNV
+#define glResolveMultisampleFramebufferAPPLE epoxy_glResolveMultisampleFramebufferAPPLE
+#define glResumeTransformFeedback epoxy_glResumeTransformFeedback
+#define glResumeTransformFeedbackNV epoxy_glResumeTransformFeedbackNV
+#define glRotated epoxy_glRotated
+#define glRotatef epoxy_glRotatef
+#define glRotatex epoxy_glRotatex
+#define glRotatexOES epoxy_glRotatexOES
+#define glSampleCoverage epoxy_glSampleCoverage
+#define glSampleCoverageARB epoxy_glSampleCoverageARB
+#define glSampleCoveragex epoxy_glSampleCoveragex
+#define glSampleCoveragexOES epoxy_glSampleCoveragexOES
+#define glSampleMapATI epoxy_glSampleMapATI
+#define glSampleMaskEXT epoxy_glSampleMaskEXT
+#define glSampleMaskIndexedNV epoxy_glSampleMaskIndexedNV
+#define glSampleMaskSGIS epoxy_glSampleMaskSGIS
+#define glSampleMaski epoxy_glSampleMaski
+#define glSamplePatternEXT epoxy_glSamplePatternEXT
+#define glSamplePatternSGIS epoxy_glSamplePatternSGIS
+#define glSamplerParameterIiv epoxy_glSamplerParameterIiv
+#define glSamplerParameterIivEXT epoxy_glSamplerParameterIivEXT
+#define glSamplerParameterIivOES epoxy_glSamplerParameterIivOES
+#define glSamplerParameterIuiv epoxy_glSamplerParameterIuiv
+#define glSamplerParameterIuivEXT epoxy_glSamplerParameterIuivEXT
+#define glSamplerParameterIuivOES epoxy_glSamplerParameterIuivOES
+#define glSamplerParameterf epoxy_glSamplerParameterf
+#define glSamplerParameterfv epoxy_glSamplerParameterfv
+#define glSamplerParameteri epoxy_glSamplerParameteri
+#define glSamplerParameteriv epoxy_glSamplerParameteriv
+#define glScaled epoxy_glScaled
+#define glScalef epoxy_glScalef
+#define glScalex epoxy_glScalex
+#define glScalexOES epoxy_glScalexOES
+#define glScissor epoxy_glScissor
+#define glScissorArrayv epoxy_glScissorArrayv
+#define glScissorArrayvNV epoxy_glScissorArrayvNV
+#define glScissorArrayvOES epoxy_glScissorArrayvOES
+#define glScissorExclusiveArrayvNV epoxy_glScissorExclusiveArrayvNV
+#define glScissorExclusiveNV epoxy_glScissorExclusiveNV
+#define glScissorIndexed epoxy_glScissorIndexed
+#define glScissorIndexedNV epoxy_glScissorIndexedNV
+#define glScissorIndexedOES epoxy_glScissorIndexedOES
+#define glScissorIndexedv epoxy_glScissorIndexedv
+#define glScissorIndexedvNV epoxy_glScissorIndexedvNV
+#define glScissorIndexedvOES epoxy_glScissorIndexedvOES
+#define glSecondaryColor3b epoxy_glSecondaryColor3b
+#define glSecondaryColor3bEXT epoxy_glSecondaryColor3bEXT
+#define glSecondaryColor3bv epoxy_glSecondaryColor3bv
+#define glSecondaryColor3bvEXT epoxy_glSecondaryColor3bvEXT
+#define glSecondaryColor3d epoxy_glSecondaryColor3d
+#define glSecondaryColor3dEXT epoxy_glSecondaryColor3dEXT
+#define glSecondaryColor3dv epoxy_glSecondaryColor3dv
+#define glSecondaryColor3dvEXT epoxy_glSecondaryColor3dvEXT
+#define glSecondaryColor3f epoxy_glSecondaryColor3f
+#define glSecondaryColor3fEXT epoxy_glSecondaryColor3fEXT
+#define glSecondaryColor3fv epoxy_glSecondaryColor3fv
+#define glSecondaryColor3fvEXT epoxy_glSecondaryColor3fvEXT
+#define glSecondaryColor3hNV epoxy_glSecondaryColor3hNV
+#define glSecondaryColor3hvNV epoxy_glSecondaryColor3hvNV
+#define glSecondaryColor3i epoxy_glSecondaryColor3i
+#define glSecondaryColor3iEXT epoxy_glSecondaryColor3iEXT
+#define glSecondaryColor3iv epoxy_glSecondaryColor3iv
+#define glSecondaryColor3ivEXT epoxy_glSecondaryColor3ivEXT
+#define glSecondaryColor3s epoxy_glSecondaryColor3s
+#define glSecondaryColor3sEXT epoxy_glSecondaryColor3sEXT
+#define glSecondaryColor3sv epoxy_glSecondaryColor3sv
+#define glSecondaryColor3svEXT epoxy_glSecondaryColor3svEXT
+#define glSecondaryColor3ub epoxy_glSecondaryColor3ub
+#define glSecondaryColor3ubEXT epoxy_glSecondaryColor3ubEXT
+#define glSecondaryColor3ubv epoxy_glSecondaryColor3ubv
+#define glSecondaryColor3ubvEXT epoxy_glSecondaryColor3ubvEXT
+#define glSecondaryColor3ui epoxy_glSecondaryColor3ui
+#define glSecondaryColor3uiEXT epoxy_glSecondaryColor3uiEXT
+#define glSecondaryColor3uiv epoxy_glSecondaryColor3uiv
+#define glSecondaryColor3uivEXT epoxy_glSecondaryColor3uivEXT
+#define glSecondaryColor3us epoxy_glSecondaryColor3us
+#define glSecondaryColor3usEXT epoxy_glSecondaryColor3usEXT
+#define glSecondaryColor3usv epoxy_glSecondaryColor3usv
+#define glSecondaryColor3usvEXT epoxy_glSecondaryColor3usvEXT
+#define glSecondaryColorFormatNV epoxy_glSecondaryColorFormatNV
+#define glSecondaryColorP3ui epoxy_glSecondaryColorP3ui
+#define glSecondaryColorP3uiv epoxy_glSecondaryColorP3uiv
+#define glSecondaryColorPointer epoxy_glSecondaryColorPointer
+#define glSecondaryColorPointerEXT epoxy_glSecondaryColorPointerEXT
+#define glSecondaryColorPointerListIBM epoxy_glSecondaryColorPointerListIBM
+#define glSelectBuffer epoxy_glSelectBuffer
+#define glSelectPerfMonitorCountersAMD epoxy_glSelectPerfMonitorCountersAMD
+#define glSemaphoreParameterui64vEXT epoxy_glSemaphoreParameterui64vEXT
+#define glSeparableFilter2D epoxy_glSeparableFilter2D
+#define glSeparableFilter2DEXT epoxy_glSeparableFilter2DEXT
+#define glSetFenceAPPLE epoxy_glSetFenceAPPLE
+#define glSetFenceNV epoxy_glSetFenceNV
+#define glSetFragmentShaderConstantATI epoxy_glSetFragmentShaderConstantATI
+#define glSetInvariantEXT epoxy_glSetInvariantEXT
+#define glSetLocalConstantEXT epoxy_glSetLocalConstantEXT
+#define glSetMultisamplefvAMD epoxy_glSetMultisamplefvAMD
+#define glShadeModel epoxy_glShadeModel
+#define glShaderBinary epoxy_glShaderBinary
+#define glShaderOp1EXT epoxy_glShaderOp1EXT
+#define glShaderOp2EXT epoxy_glShaderOp2EXT
+#define glShaderOp3EXT epoxy_glShaderOp3EXT
+#define glShaderSource epoxy_glShaderSource
+#define glShaderSourceARB epoxy_glShaderSourceARB
+#define glShaderStorageBlockBinding epoxy_glShaderStorageBlockBinding
+#define glShadingRateImageBarrierNV epoxy_glShadingRateImageBarrierNV
+#define glShadingRateImagePaletteNV epoxy_glShadingRateImagePaletteNV
+#define glShadingRateSampleOrderCustomNV epoxy_glShadingRateSampleOrderCustomNV
+#define glShadingRateSampleOrderNV epoxy_glShadingRateSampleOrderNV
+#define glSharpenTexFuncSGIS epoxy_glSharpenTexFuncSGIS
+#define glSignalSemaphoreEXT epoxy_glSignalSemaphoreEXT
+#define glSignalSemaphoreui64NVX epoxy_glSignalSemaphoreui64NVX
+#define glSignalVkFenceNV epoxy_glSignalVkFenceNV
+#define glSignalVkSemaphoreNV epoxy_glSignalVkSemaphoreNV
+#define glSpecializeShader epoxy_glSpecializeShader
+#define glSpecializeShaderARB epoxy_glSpecializeShaderARB
+#define glSpriteParameterfSGIX epoxy_glSpriteParameterfSGIX
+#define glSpriteParameterfvSGIX epoxy_glSpriteParameterfvSGIX
+#define glSpriteParameteriSGIX epoxy_glSpriteParameteriSGIX
+#define glSpriteParameterivSGIX epoxy_glSpriteParameterivSGIX
+#define glStartInstrumentsSGIX epoxy_glStartInstrumentsSGIX
+#define glStartTilingQCOM epoxy_glStartTilingQCOM
+#define glStateCaptureNV epoxy_glStateCaptureNV
+#define glStencilClearTagEXT epoxy_glStencilClearTagEXT
+#define glStencilFillPathInstancedNV epoxy_glStencilFillPathInstancedNV
+#define glStencilFillPathNV epoxy_glStencilFillPathNV
+#define glStencilFunc epoxy_glStencilFunc
+#define glStencilFuncSeparate epoxy_glStencilFuncSeparate
+#define glStencilFuncSeparateATI epoxy_glStencilFuncSeparateATI
+#define glStencilMask epoxy_glStencilMask
+#define glStencilMaskSeparate epoxy_glStencilMaskSeparate
+#define glStencilOp epoxy_glStencilOp
+#define glStencilOpSeparate epoxy_glStencilOpSeparate
+#define glStencilOpSeparateATI epoxy_glStencilOpSeparateATI
+#define glStencilOpValueAMD epoxy_glStencilOpValueAMD
+#define glStencilStrokePathInstancedNV epoxy_glStencilStrokePathInstancedNV
+#define glStencilStrokePathNV epoxy_glStencilStrokePathNV
+#define glStencilThenCoverFillPathInstancedNV epoxy_glStencilThenCoverFillPathInstancedNV
+#define glStencilThenCoverFillPathNV epoxy_glStencilThenCoverFillPathNV
+#define glStencilThenCoverStrokePathInstancedNV epoxy_glStencilThenCoverStrokePathInstancedNV
+#define glStencilThenCoverStrokePathNV epoxy_glStencilThenCoverStrokePathNV
+#define glStopInstrumentsSGIX epoxy_glStopInstrumentsSGIX
+#define glStringMarkerGREMEDY epoxy_glStringMarkerGREMEDY
+#define glSubpixelPrecisionBiasNV epoxy_glSubpixelPrecisionBiasNV
+#define glSwizzleEXT epoxy_glSwizzleEXT
+#define glSyncTextureINTEL epoxy_glSyncTextureINTEL
+#define glTagSampleBufferSGIX epoxy_glTagSampleBufferSGIX
+#define glTangent3bEXT epoxy_glTangent3bEXT
+#define glTangent3bvEXT epoxy_glTangent3bvEXT
+#define glTangent3dEXT epoxy_glTangent3dEXT
+#define glTangent3dvEXT epoxy_glTangent3dvEXT
+#define glTangent3fEXT epoxy_glTangent3fEXT
+#define glTangent3fvEXT epoxy_glTangent3fvEXT
+#define glTangent3iEXT epoxy_glTangent3iEXT
+#define glTangent3ivEXT epoxy_glTangent3ivEXT
+#define glTangent3sEXT epoxy_glTangent3sEXT
+#define glTangent3svEXT epoxy_glTangent3svEXT
+#define glTangentPointerEXT epoxy_glTangentPointerEXT
+#define glTbufferMask3DFX epoxy_glTbufferMask3DFX
+#define glTessellationFactorAMD epoxy_glTessellationFactorAMD
+#define glTessellationModeAMD epoxy_glTessellationModeAMD
+#define glTestFenceAPPLE epoxy_glTestFenceAPPLE
+#define glTestFenceNV epoxy_glTestFenceNV
+#define glTestObjectAPPLE epoxy_glTestObjectAPPLE
+#define glTexAttachMemoryNV epoxy_glTexAttachMemoryNV
+#define glTexBuffer epoxy_glTexBuffer
+#define glTexBufferARB epoxy_glTexBufferARB
+#define glTexBufferEXT epoxy_glTexBufferEXT
+#define glTexBufferOES epoxy_glTexBufferOES
+#define glTexBufferRange epoxy_glTexBufferRange
+#define glTexBufferRangeEXT epoxy_glTexBufferRangeEXT
+#define glTexBufferRangeOES epoxy_glTexBufferRangeOES
+#define glTexBumpParameterfvATI epoxy_glTexBumpParameterfvATI
+#define glTexBumpParameterivATI epoxy_glTexBumpParameterivATI
+#define glTexCoord1bOES epoxy_glTexCoord1bOES
+#define glTexCoord1bvOES epoxy_glTexCoord1bvOES
+#define glTexCoord1d epoxy_glTexCoord1d
+#define glTexCoord1dv epoxy_glTexCoord1dv
+#define glTexCoord1f epoxy_glTexCoord1f
+#define glTexCoord1fv epoxy_glTexCoord1fv
+#define glTexCoord1hNV epoxy_glTexCoord1hNV
+#define glTexCoord1hvNV epoxy_glTexCoord1hvNV
+#define glTexCoord1i epoxy_glTexCoord1i
+#define glTexCoord1iv epoxy_glTexCoord1iv
+#define glTexCoord1s epoxy_glTexCoord1s
+#define glTexCoord1sv epoxy_glTexCoord1sv
+#define glTexCoord1xOES epoxy_glTexCoord1xOES
+#define glTexCoord1xvOES epoxy_glTexCoord1xvOES
+#define glTexCoord2bOES epoxy_glTexCoord2bOES
+#define glTexCoord2bvOES epoxy_glTexCoord2bvOES
+#define glTexCoord2d epoxy_glTexCoord2d
+#define glTexCoord2dv epoxy_glTexCoord2dv
+#define glTexCoord2f epoxy_glTexCoord2f
+#define glTexCoord2fColor3fVertex3fSUN epoxy_glTexCoord2fColor3fVertex3fSUN
+#define glTexCoord2fColor3fVertex3fvSUN epoxy_glTexCoord2fColor3fVertex3fvSUN
+#define glTexCoord2fColor4fNormal3fVertex3fSUN epoxy_glTexCoord2fColor4fNormal3fVertex3fSUN
+#define glTexCoord2fColor4fNormal3fVertex3fvSUN epoxy_glTexCoord2fColor4fNormal3fVertex3fvSUN
+#define glTexCoord2fColor4ubVertex3fSUN epoxy_glTexCoord2fColor4ubVertex3fSUN
+#define glTexCoord2fColor4ubVertex3fvSUN epoxy_glTexCoord2fColor4ubVertex3fvSUN
+#define glTexCoord2fNormal3fVertex3fSUN epoxy_glTexCoord2fNormal3fVertex3fSUN
+#define glTexCoord2fNormal3fVertex3fvSUN epoxy_glTexCoord2fNormal3fVertex3fvSUN
+#define glTexCoord2fVertex3fSUN epoxy_glTexCoord2fVertex3fSUN
+#define glTexCoord2fVertex3fvSUN epoxy_glTexCoord2fVertex3fvSUN
+#define glTexCoord2fv epoxy_glTexCoord2fv
+#define glTexCoord2hNV epoxy_glTexCoord2hNV
+#define glTexCoord2hvNV epoxy_glTexCoord2hvNV
+#define glTexCoord2i epoxy_glTexCoord2i
+#define glTexCoord2iv epoxy_glTexCoord2iv
+#define glTexCoord2s epoxy_glTexCoord2s
+#define glTexCoord2sv epoxy_glTexCoord2sv
+#define glTexCoord2xOES epoxy_glTexCoord2xOES
+#define glTexCoord2xvOES epoxy_glTexCoord2xvOES
+#define glTexCoord3bOES epoxy_glTexCoord3bOES
+#define glTexCoord3bvOES epoxy_glTexCoord3bvOES
+#define glTexCoord3d epoxy_glTexCoord3d
+#define glTexCoord3dv epoxy_glTexCoord3dv
+#define glTexCoord3f epoxy_glTexCoord3f
+#define glTexCoord3fv epoxy_glTexCoord3fv
+#define glTexCoord3hNV epoxy_glTexCoord3hNV
+#define glTexCoord3hvNV epoxy_glTexCoord3hvNV
+#define glTexCoord3i epoxy_glTexCoord3i
+#define glTexCoord3iv epoxy_glTexCoord3iv
+#define glTexCoord3s epoxy_glTexCoord3s
+#define glTexCoord3sv epoxy_glTexCoord3sv
+#define glTexCoord3xOES epoxy_glTexCoord3xOES
+#define glTexCoord3xvOES epoxy_glTexCoord3xvOES
+#define glTexCoord4bOES epoxy_glTexCoord4bOES
+#define glTexCoord4bvOES epoxy_glTexCoord4bvOES
+#define glTexCoord4d epoxy_glTexCoord4d
+#define glTexCoord4dv epoxy_glTexCoord4dv
+#define glTexCoord4f epoxy_glTexCoord4f
+#define glTexCoord4fColor4fNormal3fVertex4fSUN epoxy_glTexCoord4fColor4fNormal3fVertex4fSUN
+#define glTexCoord4fColor4fNormal3fVertex4fvSUN epoxy_glTexCoord4fColor4fNormal3fVertex4fvSUN
+#define glTexCoord4fVertex4fSUN epoxy_glTexCoord4fVertex4fSUN
+#define glTexCoord4fVertex4fvSUN epoxy_glTexCoord4fVertex4fvSUN
+#define glTexCoord4fv epoxy_glTexCoord4fv
+#define glTexCoord4hNV epoxy_glTexCoord4hNV
+#define glTexCoord4hvNV epoxy_glTexCoord4hvNV
+#define glTexCoord4i epoxy_glTexCoord4i
+#define glTexCoord4iv epoxy_glTexCoord4iv
+#define glTexCoord4s epoxy_glTexCoord4s
+#define glTexCoord4sv epoxy_glTexCoord4sv
+#define glTexCoord4xOES epoxy_glTexCoord4xOES
+#define glTexCoord4xvOES epoxy_glTexCoord4xvOES
+#define glTexCoordFormatNV epoxy_glTexCoordFormatNV
+#define glTexCoordP1ui epoxy_glTexCoordP1ui
+#define glTexCoordP1uiv epoxy_glTexCoordP1uiv
+#define glTexCoordP2ui epoxy_glTexCoordP2ui
+#define glTexCoordP2uiv epoxy_glTexCoordP2uiv
+#define glTexCoordP3ui epoxy_glTexCoordP3ui
+#define glTexCoordP3uiv epoxy_glTexCoordP3uiv
+#define glTexCoordP4ui epoxy_glTexCoordP4ui
+#define glTexCoordP4uiv epoxy_glTexCoordP4uiv
+#define glTexCoordPointer epoxy_glTexCoordPointer
+#define glTexCoordPointerEXT epoxy_glTexCoordPointerEXT
+#define glTexCoordPointerListIBM epoxy_glTexCoordPointerListIBM
+#define glTexCoordPointervINTEL epoxy_glTexCoordPointervINTEL
+#define glTexEnvf epoxy_glTexEnvf
+#define glTexEnvfv epoxy_glTexEnvfv
+#define glTexEnvi epoxy_glTexEnvi
+#define glTexEnviv epoxy_glTexEnviv
+#define glTexEnvx epoxy_glTexEnvx
+#define glTexEnvxOES epoxy_glTexEnvxOES
+#define glTexEnvxv epoxy_glTexEnvxv
+#define glTexEnvxvOES epoxy_glTexEnvxvOES
+#define glTexFilterFuncSGIS epoxy_glTexFilterFuncSGIS
+#define glTexGend epoxy_glTexGend
+#define glTexGendv epoxy_glTexGendv
+#define glTexGenf epoxy_glTexGenf
+#define glTexGenfOES epoxy_glTexGenfOES
+#define glTexGenfv epoxy_glTexGenfv
+#define glTexGenfvOES epoxy_glTexGenfvOES
+#define glTexGeni epoxy_glTexGeni
+#define glTexGeniOES epoxy_glTexGeniOES
+#define glTexGeniv epoxy_glTexGeniv
+#define glTexGenivOES epoxy_glTexGenivOES
+#define glTexGenxOES epoxy_glTexGenxOES
+#define glTexGenxvOES epoxy_glTexGenxvOES
+#define glTexImage1D epoxy_glTexImage1D
+#define glTexImage2D epoxy_glTexImage2D
+#define glTexImage2DMultisample epoxy_glTexImage2DMultisample
+#define glTexImage2DMultisampleCoverageNV epoxy_glTexImage2DMultisampleCoverageNV
+#define glTexImage3D epoxy_glTexImage3D
+#define glTexImage3DEXT epoxy_glTexImage3DEXT
+#define glTexImage3DMultisample epoxy_glTexImage3DMultisample
+#define glTexImage3DMultisampleCoverageNV epoxy_glTexImage3DMultisampleCoverageNV
+#define glTexImage3DOES epoxy_glTexImage3DOES
+#define glTexImage4DSGIS epoxy_glTexImage4DSGIS
+#define glTexPageCommitmentARB epoxy_glTexPageCommitmentARB
+#define glTexPageCommitmentEXT epoxy_glTexPageCommitmentEXT
+#define glTexParameterIiv epoxy_glTexParameterIiv
+#define glTexParameterIivEXT epoxy_glTexParameterIivEXT
+#define glTexParameterIivOES epoxy_glTexParameterIivOES
+#define glTexParameterIuiv epoxy_glTexParameterIuiv
+#define glTexParameterIuivEXT epoxy_glTexParameterIuivEXT
+#define glTexParameterIuivOES epoxy_glTexParameterIuivOES
+#define glTexParameterf epoxy_glTexParameterf
+#define glTexParameterfv epoxy_glTexParameterfv
+#define glTexParameteri epoxy_glTexParameteri
+#define glTexParameteriv epoxy_glTexParameteriv
+#define glTexParameterx epoxy_glTexParameterx
+#define glTexParameterxOES epoxy_glTexParameterxOES
+#define glTexParameterxv epoxy_glTexParameterxv
+#define glTexParameterxvOES epoxy_glTexParameterxvOES
+#define glTexRenderbufferNV epoxy_glTexRenderbufferNV
+#define glTexStorage1D epoxy_glTexStorage1D
+#define glTexStorage1DEXT epoxy_glTexStorage1DEXT
+#define glTexStorage2D epoxy_glTexStorage2D
+#define glTexStorage2DEXT epoxy_glTexStorage2DEXT
+#define glTexStorage2DMultisample epoxy_glTexStorage2DMultisample
+#define glTexStorage3D epoxy_glTexStorage3D
+#define glTexStorage3DEXT epoxy_glTexStorage3DEXT
+#define glTexStorage3DMultisample epoxy_glTexStorage3DMultisample
+#define glTexStorage3DMultisampleOES epoxy_glTexStorage3DMultisampleOES
+#define glTexStorageMem1DEXT epoxy_glTexStorageMem1DEXT
+#define glTexStorageMem2DEXT epoxy_glTexStorageMem2DEXT
+#define glTexStorageMem2DMultisampleEXT epoxy_glTexStorageMem2DMultisampleEXT
+#define glTexStorageMem3DEXT epoxy_glTexStorageMem3DEXT
+#define glTexStorageMem3DMultisampleEXT epoxy_glTexStorageMem3DMultisampleEXT
+#define glTexStorageSparseAMD epoxy_glTexStorageSparseAMD
+#define glTexSubImage1D epoxy_glTexSubImage1D
+#define glTexSubImage1DEXT epoxy_glTexSubImage1DEXT
+#define glTexSubImage2D epoxy_glTexSubImage2D
+#define glTexSubImage2DEXT epoxy_glTexSubImage2DEXT
+#define glTexSubImage3D epoxy_glTexSubImage3D
+#define glTexSubImage3DEXT epoxy_glTexSubImage3DEXT
+#define glTexSubImage3DOES epoxy_glTexSubImage3DOES
+#define glTexSubImage4DSGIS epoxy_glTexSubImage4DSGIS
+#define glTextureAttachMemoryNV epoxy_glTextureAttachMemoryNV
+#define glTextureBarrier epoxy_glTextureBarrier
+#define glTextureBarrierNV epoxy_glTextureBarrierNV
+#define glTextureBuffer epoxy_glTextureBuffer
+#define glTextureBufferEXT epoxy_glTextureBufferEXT
+#define glTextureBufferRange epoxy_glTextureBufferRange
+#define glTextureBufferRangeEXT epoxy_glTextureBufferRangeEXT
+#define glTextureColorMaskSGIS epoxy_glTextureColorMaskSGIS
+#define glTextureFoveationParametersQCOM epoxy_glTextureFoveationParametersQCOM
+#define glTextureImage1DEXT epoxy_glTextureImage1DEXT
+#define glTextureImage2DEXT epoxy_glTextureImage2DEXT
+#define glTextureImage2DMultisampleCoverageNV epoxy_glTextureImage2DMultisampleCoverageNV
+#define glTextureImage2DMultisampleNV epoxy_glTextureImage2DMultisampleNV
+#define glTextureImage3DEXT epoxy_glTextureImage3DEXT
+#define glTextureImage3DMultisampleCoverageNV epoxy_glTextureImage3DMultisampleCoverageNV
+#define glTextureImage3DMultisampleNV epoxy_glTextureImage3DMultisampleNV
+#define glTextureLightEXT epoxy_glTextureLightEXT
+#define glTextureMaterialEXT epoxy_glTextureMaterialEXT
+#define glTextureNormalEXT epoxy_glTextureNormalEXT
+#define glTexturePageCommitmentEXT epoxy_glTexturePageCommitmentEXT
+#define glTextureParameterIiv epoxy_glTextureParameterIiv
+#define glTextureParameterIivEXT epoxy_glTextureParameterIivEXT
+#define glTextureParameterIuiv epoxy_glTextureParameterIuiv
+#define glTextureParameterIuivEXT epoxy_glTextureParameterIuivEXT
+#define glTextureParameterf epoxy_glTextureParameterf
+#define glTextureParameterfEXT epoxy_glTextureParameterfEXT
+#define glTextureParameterfv epoxy_glTextureParameterfv
+#define glTextureParameterfvEXT epoxy_glTextureParameterfvEXT
+#define glTextureParameteri epoxy_glTextureParameteri
+#define glTextureParameteriEXT epoxy_glTextureParameteriEXT
+#define glTextureParameteriv epoxy_glTextureParameteriv
+#define glTextureParameterivEXT epoxy_glTextureParameterivEXT
+#define glTextureRangeAPPLE epoxy_glTextureRangeAPPLE
+#define glTextureRenderbufferEXT epoxy_glTextureRenderbufferEXT
+#define glTextureStorage1D epoxy_glTextureStorage1D
+#define glTextureStorage1DEXT epoxy_glTextureStorage1DEXT
+#define glTextureStorage2D epoxy_glTextureStorage2D
+#define glTextureStorage2DEXT epoxy_glTextureStorage2DEXT
+#define glTextureStorage2DMultisample epoxy_glTextureStorage2DMultisample
+#define glTextureStorage2DMultisampleEXT epoxy_glTextureStorage2DMultisampleEXT
+#define glTextureStorage3D epoxy_glTextureStorage3D
+#define glTextureStorage3DEXT epoxy_glTextureStorage3DEXT
+#define glTextureStorage3DMultisample epoxy_glTextureStorage3DMultisample
+#define glTextureStorage3DMultisampleEXT epoxy_glTextureStorage3DMultisampleEXT
+#define glTextureStorageMem1DEXT epoxy_glTextureStorageMem1DEXT
+#define glTextureStorageMem2DEXT epoxy_glTextureStorageMem2DEXT
+#define glTextureStorageMem2DMultisampleEXT epoxy_glTextureStorageMem2DMultisampleEXT
+#define glTextureStorageMem3DEXT epoxy_glTextureStorageMem3DEXT
+#define glTextureStorageMem3DMultisampleEXT epoxy_glTextureStorageMem3DMultisampleEXT
+#define glTextureStorageSparseAMD epoxy_glTextureStorageSparseAMD
+#define glTextureSubImage1D epoxy_glTextureSubImage1D
+#define glTextureSubImage1DEXT epoxy_glTextureSubImage1DEXT
+#define glTextureSubImage2D epoxy_glTextureSubImage2D
+#define glTextureSubImage2DEXT epoxy_glTextureSubImage2DEXT
+#define glTextureSubImage3D epoxy_glTextureSubImage3D
+#define glTextureSubImage3DEXT epoxy_glTextureSubImage3DEXT
+#define glTextureView epoxy_glTextureView
+#define glTextureViewEXT epoxy_glTextureViewEXT
+#define glTextureViewOES epoxy_glTextureViewOES
+#define glTrackMatrixNV epoxy_glTrackMatrixNV
+#define glTransformFeedbackAttribsNV epoxy_glTransformFeedbackAttribsNV
+#define glTransformFeedbackBufferBase epoxy_glTransformFeedbackBufferBase
+#define glTransformFeedbackBufferRange epoxy_glTransformFeedbackBufferRange
+#define glTransformFeedbackStreamAttribsNV epoxy_glTransformFeedbackStreamAttribsNV
+#define glTransformFeedbackVaryings epoxy_glTransformFeedbackVaryings
+#define glTransformFeedbackVaryingsEXT epoxy_glTransformFeedbackVaryingsEXT
+#define glTransformFeedbackVaryingsNV epoxy_glTransformFeedbackVaryingsNV
+#define glTransformPathNV epoxy_glTransformPathNV
+#define glTranslated epoxy_glTranslated
+#define glTranslatef epoxy_glTranslatef
+#define glTranslatex epoxy_glTranslatex
+#define glTranslatexOES epoxy_glTranslatexOES
+#define glUniform1d epoxy_glUniform1d
+#define glUniform1dv epoxy_glUniform1dv
+#define glUniform1f epoxy_glUniform1f
+#define glUniform1fARB epoxy_glUniform1fARB
+#define glUniform1fv epoxy_glUniform1fv
+#define glUniform1fvARB epoxy_glUniform1fvARB
+#define glUniform1i epoxy_glUniform1i
+#define glUniform1i64ARB epoxy_glUniform1i64ARB
+#define glUniform1i64NV epoxy_glUniform1i64NV
+#define glUniform1i64vARB epoxy_glUniform1i64vARB
+#define glUniform1i64vNV epoxy_glUniform1i64vNV
+#define glUniform1iARB epoxy_glUniform1iARB
+#define glUniform1iv epoxy_glUniform1iv
+#define glUniform1ivARB epoxy_glUniform1ivARB
+#define glUniform1ui epoxy_glUniform1ui
+#define glUniform1ui64ARB epoxy_glUniform1ui64ARB
+#define glUniform1ui64NV epoxy_glUniform1ui64NV
+#define glUniform1ui64vARB epoxy_glUniform1ui64vARB
+#define glUniform1ui64vNV epoxy_glUniform1ui64vNV
+#define glUniform1uiEXT epoxy_glUniform1uiEXT
+#define glUniform1uiv epoxy_glUniform1uiv
+#define glUniform1uivEXT epoxy_glUniform1uivEXT
+#define glUniform2d epoxy_glUniform2d
+#define glUniform2dv epoxy_glUniform2dv
+#define glUniform2f epoxy_glUniform2f
+#define glUniform2fARB epoxy_glUniform2fARB
+#define glUniform2fv epoxy_glUniform2fv
+#define glUniform2fvARB epoxy_glUniform2fvARB
+#define glUniform2i epoxy_glUniform2i
+#define glUniform2i64ARB epoxy_glUniform2i64ARB
+#define glUniform2i64NV epoxy_glUniform2i64NV
+#define glUniform2i64vARB epoxy_glUniform2i64vARB
+#define glUniform2i64vNV epoxy_glUniform2i64vNV
+#define glUniform2iARB epoxy_glUniform2iARB
+#define glUniform2iv epoxy_glUniform2iv
+#define glUniform2ivARB epoxy_glUniform2ivARB
+#define glUniform2ui epoxy_glUniform2ui
+#define glUniform2ui64ARB epoxy_glUniform2ui64ARB
+#define glUniform2ui64NV epoxy_glUniform2ui64NV
+#define glUniform2ui64vARB epoxy_glUniform2ui64vARB
+#define glUniform2ui64vNV epoxy_glUniform2ui64vNV
+#define glUniform2uiEXT epoxy_glUniform2uiEXT
+#define glUniform2uiv epoxy_glUniform2uiv
+#define glUniform2uivEXT epoxy_glUniform2uivEXT
+#define glUniform3d epoxy_glUniform3d
+#define glUniform3dv epoxy_glUniform3dv
+#define glUniform3f epoxy_glUniform3f
+#define glUniform3fARB epoxy_glUniform3fARB
+#define glUniform3fv epoxy_glUniform3fv
+#define glUniform3fvARB epoxy_glUniform3fvARB
+#define glUniform3i epoxy_glUniform3i
+#define glUniform3i64ARB epoxy_glUniform3i64ARB
+#define glUniform3i64NV epoxy_glUniform3i64NV
+#define glUniform3i64vARB epoxy_glUniform3i64vARB
+#define glUniform3i64vNV epoxy_glUniform3i64vNV
+#define glUniform3iARB epoxy_glUniform3iARB
+#define glUniform3iv epoxy_glUniform3iv
+#define glUniform3ivARB epoxy_glUniform3ivARB
+#define glUniform3ui epoxy_glUniform3ui
+#define glUniform3ui64ARB epoxy_glUniform3ui64ARB
+#define glUniform3ui64NV epoxy_glUniform3ui64NV
+#define glUniform3ui64vARB epoxy_glUniform3ui64vARB
+#define glUniform3ui64vNV epoxy_glUniform3ui64vNV
+#define glUniform3uiEXT epoxy_glUniform3uiEXT
+#define glUniform3uiv epoxy_glUniform3uiv
+#define glUniform3uivEXT epoxy_glUniform3uivEXT
+#define glUniform4d epoxy_glUniform4d
+#define glUniform4dv epoxy_glUniform4dv
+#define glUniform4f epoxy_glUniform4f
+#define glUniform4fARB epoxy_glUniform4fARB
+#define glUniform4fv epoxy_glUniform4fv
+#define glUniform4fvARB epoxy_glUniform4fvARB
+#define glUniform4i epoxy_glUniform4i
+#define glUniform4i64ARB epoxy_glUniform4i64ARB
+#define glUniform4i64NV epoxy_glUniform4i64NV
+#define glUniform4i64vARB epoxy_glUniform4i64vARB
+#define glUniform4i64vNV epoxy_glUniform4i64vNV
+#define glUniform4iARB epoxy_glUniform4iARB
+#define glUniform4iv epoxy_glUniform4iv
+#define glUniform4ivARB epoxy_glUniform4ivARB
+#define glUniform4ui epoxy_glUniform4ui
+#define glUniform4ui64ARB epoxy_glUniform4ui64ARB
+#define glUniform4ui64NV epoxy_glUniform4ui64NV
+#define glUniform4ui64vARB epoxy_glUniform4ui64vARB
+#define glUniform4ui64vNV epoxy_glUniform4ui64vNV
+#define glUniform4uiEXT epoxy_glUniform4uiEXT
+#define glUniform4uiv epoxy_glUniform4uiv
+#define glUniform4uivEXT epoxy_glUniform4uivEXT
+#define glUniformBlockBinding epoxy_glUniformBlockBinding
+#define glUniformBufferEXT epoxy_glUniformBufferEXT
+#define glUniformHandleui64ARB epoxy_glUniformHandleui64ARB
+#define glUniformHandleui64IMG epoxy_glUniformHandleui64IMG
+#define glUniformHandleui64NV epoxy_glUniformHandleui64NV
+#define glUniformHandleui64vARB epoxy_glUniformHandleui64vARB
+#define glUniformHandleui64vIMG epoxy_glUniformHandleui64vIMG
+#define glUniformHandleui64vNV epoxy_glUniformHandleui64vNV
+#define glUniformMatrix2dv epoxy_glUniformMatrix2dv
+#define glUniformMatrix2fv epoxy_glUniformMatrix2fv
+#define glUniformMatrix2fvARB epoxy_glUniformMatrix2fvARB
+#define glUniformMatrix2x3dv epoxy_glUniformMatrix2x3dv
+#define glUniformMatrix2x3fv epoxy_glUniformMatrix2x3fv
+#define glUniformMatrix2x3fvNV epoxy_glUniformMatrix2x3fvNV
+#define glUniformMatrix2x4dv epoxy_glUniformMatrix2x4dv
+#define glUniformMatrix2x4fv epoxy_glUniformMatrix2x4fv
+#define glUniformMatrix2x4fvNV epoxy_glUniformMatrix2x4fvNV
+#define glUniformMatrix3dv epoxy_glUniformMatrix3dv
+#define glUniformMatrix3fv epoxy_glUniformMatrix3fv
+#define glUniformMatrix3fvARB epoxy_glUniformMatrix3fvARB
+#define glUniformMatrix3x2dv epoxy_glUniformMatrix3x2dv
+#define glUniformMatrix3x2fv epoxy_glUniformMatrix3x2fv
+#define glUniformMatrix3x2fvNV epoxy_glUniformMatrix3x2fvNV
+#define glUniformMatrix3x4dv epoxy_glUniformMatrix3x4dv
+#define glUniformMatrix3x4fv epoxy_glUniformMatrix3x4fv
+#define glUniformMatrix3x4fvNV epoxy_glUniformMatrix3x4fvNV
+#define glUniformMatrix4dv epoxy_glUniformMatrix4dv
+#define glUniformMatrix4fv epoxy_glUniformMatrix4fv
+#define glUniformMatrix4fvARB epoxy_glUniformMatrix4fvARB
+#define glUniformMatrix4x2dv epoxy_glUniformMatrix4x2dv
+#define glUniformMatrix4x2fv epoxy_glUniformMatrix4x2fv
+#define glUniformMatrix4x2fvNV epoxy_glUniformMatrix4x2fvNV
+#define glUniformMatrix4x3dv epoxy_glUniformMatrix4x3dv
+#define glUniformMatrix4x3fv epoxy_glUniformMatrix4x3fv
+#define glUniformMatrix4x3fvNV epoxy_glUniformMatrix4x3fvNV
+#define glUniformSubroutinesuiv epoxy_glUniformSubroutinesuiv
+#define glUniformui64NV epoxy_glUniformui64NV
+#define glUniformui64vNV epoxy_glUniformui64vNV
+#define glUnlockArraysEXT epoxy_glUnlockArraysEXT
+#define glUnmapBuffer epoxy_glUnmapBuffer
+#define glUnmapBufferARB epoxy_glUnmapBufferARB
+#define glUnmapBufferOES epoxy_glUnmapBufferOES
+#define glUnmapNamedBuffer epoxy_glUnmapNamedBuffer
+#define glUnmapNamedBufferEXT epoxy_glUnmapNamedBufferEXT
+#define glUnmapObjectBufferATI epoxy_glUnmapObjectBufferATI
+#define glUnmapTexture2DINTEL epoxy_glUnmapTexture2DINTEL
+#define glUpdateObjectBufferATI epoxy_glUpdateObjectBufferATI
+#define glUploadGpuMaskNVX epoxy_glUploadGpuMaskNVX
+#define glUseProgram epoxy_glUseProgram
+#define glUseProgramObjectARB epoxy_glUseProgramObjectARB
+#define glUseProgramStages epoxy_glUseProgramStages
+#define glUseProgramStagesEXT epoxy_glUseProgramStagesEXT
+#define glUseShaderProgramEXT epoxy_glUseShaderProgramEXT
+#define glVDPAUFiniNV epoxy_glVDPAUFiniNV
+#define glVDPAUGetSurfaceivNV epoxy_glVDPAUGetSurfaceivNV
+#define glVDPAUInitNV epoxy_glVDPAUInitNV
+#define glVDPAUIsSurfaceNV epoxy_glVDPAUIsSurfaceNV
+#define glVDPAUMapSurfacesNV epoxy_glVDPAUMapSurfacesNV
+#define glVDPAURegisterOutputSurfaceNV epoxy_glVDPAURegisterOutputSurfaceNV
+#define glVDPAURegisterVideoSurfaceNV epoxy_glVDPAURegisterVideoSurfaceNV
+#define glVDPAURegisterVideoSurfaceWithPictureStructureNV epoxy_glVDPAURegisterVideoSurfaceWithPictureStructureNV
+#define glVDPAUSurfaceAccessNV epoxy_glVDPAUSurfaceAccessNV
+#define glVDPAUUnmapSurfacesNV epoxy_glVDPAUUnmapSurfacesNV
+#define glVDPAUUnregisterSurfaceNV epoxy_glVDPAUUnregisterSurfaceNV
+#define glValidateProgram epoxy_glValidateProgram
+#define glValidateProgramARB epoxy_glValidateProgramARB
+#define glValidateProgramPipeline epoxy_glValidateProgramPipeline
+#define glValidateProgramPipelineEXT epoxy_glValidateProgramPipelineEXT
+#define glVariantArrayObjectATI epoxy_glVariantArrayObjectATI
+#define glVariantPointerEXT epoxy_glVariantPointerEXT
+#define glVariantbvEXT epoxy_glVariantbvEXT
+#define glVariantdvEXT epoxy_glVariantdvEXT
+#define glVariantfvEXT epoxy_glVariantfvEXT
+#define glVariantivEXT epoxy_glVariantivEXT
+#define glVariantsvEXT epoxy_glVariantsvEXT
+#define glVariantubvEXT epoxy_glVariantubvEXT
+#define glVariantuivEXT epoxy_glVariantuivEXT
+#define glVariantusvEXT epoxy_glVariantusvEXT
+#define glVertex2bOES epoxy_glVertex2bOES
+#define glVertex2bvOES epoxy_glVertex2bvOES
+#define glVertex2d epoxy_glVertex2d
+#define glVertex2dv epoxy_glVertex2dv
+#define glVertex2f epoxy_glVertex2f
+#define glVertex2fv epoxy_glVertex2fv
+#define glVertex2hNV epoxy_glVertex2hNV
+#define glVertex2hvNV epoxy_glVertex2hvNV
+#define glVertex2i epoxy_glVertex2i
+#define glVertex2iv epoxy_glVertex2iv
+#define glVertex2s epoxy_glVertex2s
+#define glVertex2sv epoxy_glVertex2sv
+#define glVertex2xOES epoxy_glVertex2xOES
+#define glVertex2xvOES epoxy_glVertex2xvOES
+#define glVertex3bOES epoxy_glVertex3bOES
+#define glVertex3bvOES epoxy_glVertex3bvOES
+#define glVertex3d epoxy_glVertex3d
+#define glVertex3dv epoxy_glVertex3dv
+#define glVertex3f epoxy_glVertex3f
+#define glVertex3fv epoxy_glVertex3fv
+#define glVertex3hNV epoxy_glVertex3hNV
+#define glVertex3hvNV epoxy_glVertex3hvNV
+#define glVertex3i epoxy_glVertex3i
+#define glVertex3iv epoxy_glVertex3iv
+#define glVertex3s epoxy_glVertex3s
+#define glVertex3sv epoxy_glVertex3sv
+#define glVertex3xOES epoxy_glVertex3xOES
+#define glVertex3xvOES epoxy_glVertex3xvOES
+#define glVertex4bOES epoxy_glVertex4bOES
+#define glVertex4bvOES epoxy_glVertex4bvOES
+#define glVertex4d epoxy_glVertex4d
+#define glVertex4dv epoxy_glVertex4dv
+#define glVertex4f epoxy_glVertex4f
+#define glVertex4fv epoxy_glVertex4fv
+#define glVertex4hNV epoxy_glVertex4hNV
+#define glVertex4hvNV epoxy_glVertex4hvNV
+#define glVertex4i epoxy_glVertex4i
+#define glVertex4iv epoxy_glVertex4iv
+#define glVertex4s epoxy_glVertex4s
+#define glVertex4sv epoxy_glVertex4sv
+#define glVertex4xOES epoxy_glVertex4xOES
+#define glVertex4xvOES epoxy_glVertex4xvOES
+#define glVertexArrayAttribBinding epoxy_glVertexArrayAttribBinding
+#define glVertexArrayAttribFormat epoxy_glVertexArrayAttribFormat
+#define glVertexArrayAttribIFormat epoxy_glVertexArrayAttribIFormat
+#define glVertexArrayAttribLFormat epoxy_glVertexArrayAttribLFormat
+#define glVertexArrayBindVertexBufferEXT epoxy_glVertexArrayBindVertexBufferEXT
+#define glVertexArrayBindingDivisor epoxy_glVertexArrayBindingDivisor
+#define glVertexArrayColorOffsetEXT epoxy_glVertexArrayColorOffsetEXT
+#define glVertexArrayEdgeFlagOffsetEXT epoxy_glVertexArrayEdgeFlagOffsetEXT
+#define glVertexArrayElementBuffer epoxy_glVertexArrayElementBuffer
+#define glVertexArrayFogCoordOffsetEXT epoxy_glVertexArrayFogCoordOffsetEXT
+#define glVertexArrayIndexOffsetEXT epoxy_glVertexArrayIndexOffsetEXT
+#define glVertexArrayMultiTexCoordOffsetEXT epoxy_glVertexArrayMultiTexCoordOffsetEXT
+#define glVertexArrayNormalOffsetEXT epoxy_glVertexArrayNormalOffsetEXT
+#define glVertexArrayParameteriAPPLE epoxy_glVertexArrayParameteriAPPLE
+#define glVertexArrayRangeAPPLE epoxy_glVertexArrayRangeAPPLE
+#define glVertexArrayRangeNV epoxy_glVertexArrayRangeNV
+#define glVertexArraySecondaryColorOffsetEXT epoxy_glVertexArraySecondaryColorOffsetEXT
+#define glVertexArrayTexCoordOffsetEXT epoxy_glVertexArrayTexCoordOffsetEXT
+#define glVertexArrayVertexAttribBindingEXT epoxy_glVertexArrayVertexAttribBindingEXT
+#define glVertexArrayVertexAttribDivisorEXT epoxy_glVertexArrayVertexAttribDivisorEXT
+#define glVertexArrayVertexAttribFormatEXT epoxy_glVertexArrayVertexAttribFormatEXT
+#define glVertexArrayVertexAttribIFormatEXT epoxy_glVertexArrayVertexAttribIFormatEXT
+#define glVertexArrayVertexAttribIOffsetEXT epoxy_glVertexArrayVertexAttribIOffsetEXT
+#define glVertexArrayVertexAttribLFormatEXT epoxy_glVertexArrayVertexAttribLFormatEXT
+#define glVertexArrayVertexAttribLOffsetEXT epoxy_glVertexArrayVertexAttribLOffsetEXT
+#define glVertexArrayVertexAttribOffsetEXT epoxy_glVertexArrayVertexAttribOffsetEXT
+#define glVertexArrayVertexBindingDivisorEXT epoxy_glVertexArrayVertexBindingDivisorEXT
+#define glVertexArrayVertexBuffer epoxy_glVertexArrayVertexBuffer
+#define glVertexArrayVertexBuffers epoxy_glVertexArrayVertexBuffers
+#define glVertexArrayVertexOffsetEXT epoxy_glVertexArrayVertexOffsetEXT
+#define glVertexAttrib1d epoxy_glVertexAttrib1d
+#define glVertexAttrib1dARB epoxy_glVertexAttrib1dARB
+#define glVertexAttrib1dNV epoxy_glVertexAttrib1dNV
+#define glVertexAttrib1dv epoxy_glVertexAttrib1dv
+#define glVertexAttrib1dvARB epoxy_glVertexAttrib1dvARB
+#define glVertexAttrib1dvNV epoxy_glVertexAttrib1dvNV
+#define glVertexAttrib1f epoxy_glVertexAttrib1f
+#define glVertexAttrib1fARB epoxy_glVertexAttrib1fARB
+#define glVertexAttrib1fNV epoxy_glVertexAttrib1fNV
+#define glVertexAttrib1fv epoxy_glVertexAttrib1fv
+#define glVertexAttrib1fvARB epoxy_glVertexAttrib1fvARB
+#define glVertexAttrib1fvNV epoxy_glVertexAttrib1fvNV
+#define glVertexAttrib1hNV epoxy_glVertexAttrib1hNV
+#define glVertexAttrib1hvNV epoxy_glVertexAttrib1hvNV
+#define glVertexAttrib1s epoxy_glVertexAttrib1s
+#define glVertexAttrib1sARB epoxy_glVertexAttrib1sARB
+#define glVertexAttrib1sNV epoxy_glVertexAttrib1sNV
+#define glVertexAttrib1sv epoxy_glVertexAttrib1sv
+#define glVertexAttrib1svARB epoxy_glVertexAttrib1svARB
+#define glVertexAttrib1svNV epoxy_glVertexAttrib1svNV
+#define glVertexAttrib2d epoxy_glVertexAttrib2d
+#define glVertexAttrib2dARB epoxy_glVertexAttrib2dARB
+#define glVertexAttrib2dNV epoxy_glVertexAttrib2dNV
+#define glVertexAttrib2dv epoxy_glVertexAttrib2dv
+#define glVertexAttrib2dvARB epoxy_glVertexAttrib2dvARB
+#define glVertexAttrib2dvNV epoxy_glVertexAttrib2dvNV
+#define glVertexAttrib2f epoxy_glVertexAttrib2f
+#define glVertexAttrib2fARB epoxy_glVertexAttrib2fARB
+#define glVertexAttrib2fNV epoxy_glVertexAttrib2fNV
+#define glVertexAttrib2fv epoxy_glVertexAttrib2fv
+#define glVertexAttrib2fvARB epoxy_glVertexAttrib2fvARB
+#define glVertexAttrib2fvNV epoxy_glVertexAttrib2fvNV
+#define glVertexAttrib2hNV epoxy_glVertexAttrib2hNV
+#define glVertexAttrib2hvNV epoxy_glVertexAttrib2hvNV
+#define glVertexAttrib2s epoxy_glVertexAttrib2s
+#define glVertexAttrib2sARB epoxy_glVertexAttrib2sARB
+#define glVertexAttrib2sNV epoxy_glVertexAttrib2sNV
+#define glVertexAttrib2sv epoxy_glVertexAttrib2sv
+#define glVertexAttrib2svARB epoxy_glVertexAttrib2svARB
+#define glVertexAttrib2svNV epoxy_glVertexAttrib2svNV
+#define glVertexAttrib3d epoxy_glVertexAttrib3d
+#define glVertexAttrib3dARB epoxy_glVertexAttrib3dARB
+#define glVertexAttrib3dNV epoxy_glVertexAttrib3dNV
+#define glVertexAttrib3dv epoxy_glVertexAttrib3dv
+#define glVertexAttrib3dvARB epoxy_glVertexAttrib3dvARB
+#define glVertexAttrib3dvNV epoxy_glVertexAttrib3dvNV
+#define glVertexAttrib3f epoxy_glVertexAttrib3f
+#define glVertexAttrib3fARB epoxy_glVertexAttrib3fARB
+#define glVertexAttrib3fNV epoxy_glVertexAttrib3fNV
+#define glVertexAttrib3fv epoxy_glVertexAttrib3fv
+#define glVertexAttrib3fvARB epoxy_glVertexAttrib3fvARB
+#define glVertexAttrib3fvNV epoxy_glVertexAttrib3fvNV
+#define glVertexAttrib3hNV epoxy_glVertexAttrib3hNV
+#define glVertexAttrib3hvNV epoxy_glVertexAttrib3hvNV
+#define glVertexAttrib3s epoxy_glVertexAttrib3s
+#define glVertexAttrib3sARB epoxy_glVertexAttrib3sARB
+#define glVertexAttrib3sNV epoxy_glVertexAttrib3sNV
+#define glVertexAttrib3sv epoxy_glVertexAttrib3sv
+#define glVertexAttrib3svARB epoxy_glVertexAttrib3svARB
+#define glVertexAttrib3svNV epoxy_glVertexAttrib3svNV
+#define glVertexAttrib4Nbv epoxy_glVertexAttrib4Nbv
+#define glVertexAttrib4NbvARB epoxy_glVertexAttrib4NbvARB
+#define glVertexAttrib4Niv epoxy_glVertexAttrib4Niv
+#define glVertexAttrib4NivARB epoxy_glVertexAttrib4NivARB
+#define glVertexAttrib4Nsv epoxy_glVertexAttrib4Nsv
+#define glVertexAttrib4NsvARB epoxy_glVertexAttrib4NsvARB
+#define glVertexAttrib4Nub epoxy_glVertexAttrib4Nub
+#define glVertexAttrib4NubARB epoxy_glVertexAttrib4NubARB
+#define glVertexAttrib4Nubv epoxy_glVertexAttrib4Nubv
+#define glVertexAttrib4NubvARB epoxy_glVertexAttrib4NubvARB
+#define glVertexAttrib4Nuiv epoxy_glVertexAttrib4Nuiv
+#define glVertexAttrib4NuivARB epoxy_glVertexAttrib4NuivARB
+#define glVertexAttrib4Nusv epoxy_glVertexAttrib4Nusv
+#define glVertexAttrib4NusvARB epoxy_glVertexAttrib4NusvARB
+#define glVertexAttrib4bv epoxy_glVertexAttrib4bv
+#define glVertexAttrib4bvARB epoxy_glVertexAttrib4bvARB
+#define glVertexAttrib4d epoxy_glVertexAttrib4d
+#define glVertexAttrib4dARB epoxy_glVertexAttrib4dARB
+#define glVertexAttrib4dNV epoxy_glVertexAttrib4dNV
+#define glVertexAttrib4dv epoxy_glVertexAttrib4dv
+#define glVertexAttrib4dvARB epoxy_glVertexAttrib4dvARB
+#define glVertexAttrib4dvNV epoxy_glVertexAttrib4dvNV
+#define glVertexAttrib4f epoxy_glVertexAttrib4f
+#define glVertexAttrib4fARB epoxy_glVertexAttrib4fARB
+#define glVertexAttrib4fNV epoxy_glVertexAttrib4fNV
+#define glVertexAttrib4fv epoxy_glVertexAttrib4fv
+#define glVertexAttrib4fvARB epoxy_glVertexAttrib4fvARB
+#define glVertexAttrib4fvNV epoxy_glVertexAttrib4fvNV
+#define glVertexAttrib4hNV epoxy_glVertexAttrib4hNV
+#define glVertexAttrib4hvNV epoxy_glVertexAttrib4hvNV
+#define glVertexAttrib4iv epoxy_glVertexAttrib4iv
+#define glVertexAttrib4ivARB epoxy_glVertexAttrib4ivARB
+#define glVertexAttrib4s epoxy_glVertexAttrib4s
+#define glVertexAttrib4sARB epoxy_glVertexAttrib4sARB
+#define glVertexAttrib4sNV epoxy_glVertexAttrib4sNV
+#define glVertexAttrib4sv epoxy_glVertexAttrib4sv
+#define glVertexAttrib4svARB epoxy_glVertexAttrib4svARB
+#define glVertexAttrib4svNV epoxy_glVertexAttrib4svNV
+#define glVertexAttrib4ubNV epoxy_glVertexAttrib4ubNV
+#define glVertexAttrib4ubv epoxy_glVertexAttrib4ubv
+#define glVertexAttrib4ubvARB epoxy_glVertexAttrib4ubvARB
+#define glVertexAttrib4ubvNV epoxy_glVertexAttrib4ubvNV
+#define glVertexAttrib4uiv epoxy_glVertexAttrib4uiv
+#define glVertexAttrib4uivARB epoxy_glVertexAttrib4uivARB
+#define glVertexAttrib4usv epoxy_glVertexAttrib4usv
+#define glVertexAttrib4usvARB epoxy_glVertexAttrib4usvARB
+#define glVertexAttribArrayObjectATI epoxy_glVertexAttribArrayObjectATI
+#define glVertexAttribBinding epoxy_glVertexAttribBinding
+#define glVertexAttribDivisor epoxy_glVertexAttribDivisor
+#define glVertexAttribDivisorANGLE epoxy_glVertexAttribDivisorANGLE
+#define glVertexAttribDivisorARB epoxy_glVertexAttribDivisorARB
+#define glVertexAttribDivisorEXT epoxy_glVertexAttribDivisorEXT
+#define glVertexAttribDivisorNV epoxy_glVertexAttribDivisorNV
+#define glVertexAttribFormat epoxy_glVertexAttribFormat
+#define glVertexAttribFormatNV epoxy_glVertexAttribFormatNV
+#define glVertexAttribI1i epoxy_glVertexAttribI1i
+#define glVertexAttribI1iEXT epoxy_glVertexAttribI1iEXT
+#define glVertexAttribI1iv epoxy_glVertexAttribI1iv
+#define glVertexAttribI1ivEXT epoxy_glVertexAttribI1ivEXT
+#define glVertexAttribI1ui epoxy_glVertexAttribI1ui
+#define glVertexAttribI1uiEXT epoxy_glVertexAttribI1uiEXT
+#define glVertexAttribI1uiv epoxy_glVertexAttribI1uiv
+#define glVertexAttribI1uivEXT epoxy_glVertexAttribI1uivEXT
+#define glVertexAttribI2i epoxy_glVertexAttribI2i
+#define glVertexAttribI2iEXT epoxy_glVertexAttribI2iEXT
+#define glVertexAttribI2iv epoxy_glVertexAttribI2iv
+#define glVertexAttribI2ivEXT epoxy_glVertexAttribI2ivEXT
+#define glVertexAttribI2ui epoxy_glVertexAttribI2ui
+#define glVertexAttribI2uiEXT epoxy_glVertexAttribI2uiEXT
+#define glVertexAttribI2uiv epoxy_glVertexAttribI2uiv
+#define glVertexAttribI2uivEXT epoxy_glVertexAttribI2uivEXT
+#define glVertexAttribI3i epoxy_glVertexAttribI3i
+#define glVertexAttribI3iEXT epoxy_glVertexAttribI3iEXT
+#define glVertexAttribI3iv epoxy_glVertexAttribI3iv
+#define glVertexAttribI3ivEXT epoxy_glVertexAttribI3ivEXT
+#define glVertexAttribI3ui epoxy_glVertexAttribI3ui
+#define glVertexAttribI3uiEXT epoxy_glVertexAttribI3uiEXT
+#define glVertexAttribI3uiv epoxy_glVertexAttribI3uiv
+#define glVertexAttribI3uivEXT epoxy_glVertexAttribI3uivEXT
+#define glVertexAttribI4bv epoxy_glVertexAttribI4bv
+#define glVertexAttribI4bvEXT epoxy_glVertexAttribI4bvEXT
+#define glVertexAttribI4i epoxy_glVertexAttribI4i
+#define glVertexAttribI4iEXT epoxy_glVertexAttribI4iEXT
+#define glVertexAttribI4iv epoxy_glVertexAttribI4iv
+#define glVertexAttribI4ivEXT epoxy_glVertexAttribI4ivEXT
+#define glVertexAttribI4sv epoxy_glVertexAttribI4sv
+#define glVertexAttribI4svEXT epoxy_glVertexAttribI4svEXT
+#define glVertexAttribI4ubv epoxy_glVertexAttribI4ubv
+#define glVertexAttribI4ubvEXT epoxy_glVertexAttribI4ubvEXT
+#define glVertexAttribI4ui epoxy_glVertexAttribI4ui
+#define glVertexAttribI4uiEXT epoxy_glVertexAttribI4uiEXT
+#define glVertexAttribI4uiv epoxy_glVertexAttribI4uiv
+#define glVertexAttribI4uivEXT epoxy_glVertexAttribI4uivEXT
+#define glVertexAttribI4usv epoxy_glVertexAttribI4usv
+#define glVertexAttribI4usvEXT epoxy_glVertexAttribI4usvEXT
+#define glVertexAttribIFormat epoxy_glVertexAttribIFormat
+#define glVertexAttribIFormatNV epoxy_glVertexAttribIFormatNV
+#define glVertexAttribIPointer epoxy_glVertexAttribIPointer
+#define glVertexAttribIPointerEXT epoxy_glVertexAttribIPointerEXT
+#define glVertexAttribL1d epoxy_glVertexAttribL1d
+#define glVertexAttribL1dEXT epoxy_glVertexAttribL1dEXT
+#define glVertexAttribL1dv epoxy_glVertexAttribL1dv
+#define glVertexAttribL1dvEXT epoxy_glVertexAttribL1dvEXT
+#define glVertexAttribL1i64NV epoxy_glVertexAttribL1i64NV
+#define glVertexAttribL1i64vNV epoxy_glVertexAttribL1i64vNV
+#define glVertexAttribL1ui64ARB epoxy_glVertexAttribL1ui64ARB
+#define glVertexAttribL1ui64NV epoxy_glVertexAttribL1ui64NV
+#define glVertexAttribL1ui64vARB epoxy_glVertexAttribL1ui64vARB
+#define glVertexAttribL1ui64vNV epoxy_glVertexAttribL1ui64vNV
+#define glVertexAttribL2d epoxy_glVertexAttribL2d
+#define glVertexAttribL2dEXT epoxy_glVertexAttribL2dEXT
+#define glVertexAttribL2dv epoxy_glVertexAttribL2dv
+#define glVertexAttribL2dvEXT epoxy_glVertexAttribL2dvEXT
+#define glVertexAttribL2i64NV epoxy_glVertexAttribL2i64NV
+#define glVertexAttribL2i64vNV epoxy_glVertexAttribL2i64vNV
+#define glVertexAttribL2ui64NV epoxy_glVertexAttribL2ui64NV
+#define glVertexAttribL2ui64vNV epoxy_glVertexAttribL2ui64vNV
+#define glVertexAttribL3d epoxy_glVertexAttribL3d
+#define glVertexAttribL3dEXT epoxy_glVertexAttribL3dEXT
+#define glVertexAttribL3dv epoxy_glVertexAttribL3dv
+#define glVertexAttribL3dvEXT epoxy_glVertexAttribL3dvEXT
+#define glVertexAttribL3i64NV epoxy_glVertexAttribL3i64NV
+#define glVertexAttribL3i64vNV epoxy_glVertexAttribL3i64vNV
+#define glVertexAttribL3ui64NV epoxy_glVertexAttribL3ui64NV
+#define glVertexAttribL3ui64vNV epoxy_glVertexAttribL3ui64vNV
+#define glVertexAttribL4d epoxy_glVertexAttribL4d
+#define glVertexAttribL4dEXT epoxy_glVertexAttribL4dEXT
+#define glVertexAttribL4dv epoxy_glVertexAttribL4dv
+#define glVertexAttribL4dvEXT epoxy_glVertexAttribL4dvEXT
+#define glVertexAttribL4i64NV epoxy_glVertexAttribL4i64NV
+#define glVertexAttribL4i64vNV epoxy_glVertexAttribL4i64vNV
+#define glVertexAttribL4ui64NV epoxy_glVertexAttribL4ui64NV
+#define glVertexAttribL4ui64vNV epoxy_glVertexAttribL4ui64vNV
+#define glVertexAttribLFormat epoxy_glVertexAttribLFormat
+#define glVertexAttribLFormatNV epoxy_glVertexAttribLFormatNV
+#define glVertexAttribLPointer epoxy_glVertexAttribLPointer
+#define glVertexAttribLPointerEXT epoxy_glVertexAttribLPointerEXT
+#define glVertexAttribP1ui epoxy_glVertexAttribP1ui
+#define glVertexAttribP1uiv epoxy_glVertexAttribP1uiv
+#define glVertexAttribP2ui epoxy_glVertexAttribP2ui
+#define glVertexAttribP2uiv epoxy_glVertexAttribP2uiv
+#define glVertexAttribP3ui epoxy_glVertexAttribP3ui
+#define glVertexAttribP3uiv epoxy_glVertexAttribP3uiv
+#define glVertexAttribP4ui epoxy_glVertexAttribP4ui
+#define glVertexAttribP4uiv epoxy_glVertexAttribP4uiv
+#define glVertexAttribParameteriAMD epoxy_glVertexAttribParameteriAMD
+#define glVertexAttribPointer epoxy_glVertexAttribPointer
+#define glVertexAttribPointerARB epoxy_glVertexAttribPointerARB
+#define glVertexAttribPointerNV epoxy_glVertexAttribPointerNV
+#define glVertexAttribs1dvNV epoxy_glVertexAttribs1dvNV
+#define glVertexAttribs1fvNV epoxy_glVertexAttribs1fvNV
+#define glVertexAttribs1hvNV epoxy_glVertexAttribs1hvNV
+#define glVertexAttribs1svNV epoxy_glVertexAttribs1svNV
+#define glVertexAttribs2dvNV epoxy_glVertexAttribs2dvNV
+#define glVertexAttribs2fvNV epoxy_glVertexAttribs2fvNV
+#define glVertexAttribs2hvNV epoxy_glVertexAttribs2hvNV
+#define glVertexAttribs2svNV epoxy_glVertexAttribs2svNV
+#define glVertexAttribs3dvNV epoxy_glVertexAttribs3dvNV
+#define glVertexAttribs3fvNV epoxy_glVertexAttribs3fvNV
+#define glVertexAttribs3hvNV epoxy_glVertexAttribs3hvNV
+#define glVertexAttribs3svNV epoxy_glVertexAttribs3svNV
+#define glVertexAttribs4dvNV epoxy_glVertexAttribs4dvNV
+#define glVertexAttribs4fvNV epoxy_glVertexAttribs4fvNV
+#define glVertexAttribs4hvNV epoxy_glVertexAttribs4hvNV
+#define glVertexAttribs4svNV epoxy_glVertexAttribs4svNV
+#define glVertexAttribs4ubvNV epoxy_glVertexAttribs4ubvNV
+#define glVertexBindingDivisor epoxy_glVertexBindingDivisor
+#define glVertexBlendARB epoxy_glVertexBlendARB
+#define glVertexBlendEnvfATI epoxy_glVertexBlendEnvfATI
+#define glVertexBlendEnviATI epoxy_glVertexBlendEnviATI
+#define glVertexFormatNV epoxy_glVertexFormatNV
+#define glVertexP2ui epoxy_glVertexP2ui
+#define glVertexP2uiv epoxy_glVertexP2uiv
+#define glVertexP3ui epoxy_glVertexP3ui
+#define glVertexP3uiv epoxy_glVertexP3uiv
+#define glVertexP4ui epoxy_glVertexP4ui
+#define glVertexP4uiv epoxy_glVertexP4uiv
+#define glVertexPointer epoxy_glVertexPointer
+#define glVertexPointerEXT epoxy_glVertexPointerEXT
+#define glVertexPointerListIBM epoxy_glVertexPointerListIBM
+#define glVertexPointervINTEL epoxy_glVertexPointervINTEL
+#define glVertexStream1dATI epoxy_glVertexStream1dATI
+#define glVertexStream1dvATI epoxy_glVertexStream1dvATI
+#define glVertexStream1fATI epoxy_glVertexStream1fATI
+#define glVertexStream1fvATI epoxy_glVertexStream1fvATI
+#define glVertexStream1iATI epoxy_glVertexStream1iATI
+#define glVertexStream1ivATI epoxy_glVertexStream1ivATI
+#define glVertexStream1sATI epoxy_glVertexStream1sATI
+#define glVertexStream1svATI epoxy_glVertexStream1svATI
+#define glVertexStream2dATI epoxy_glVertexStream2dATI
+#define glVertexStream2dvATI epoxy_glVertexStream2dvATI
+#define glVertexStream2fATI epoxy_glVertexStream2fATI
+#define glVertexStream2fvATI epoxy_glVertexStream2fvATI
+#define glVertexStream2iATI epoxy_glVertexStream2iATI
+#define glVertexStream2ivATI epoxy_glVertexStream2ivATI
+#define glVertexStream2sATI epoxy_glVertexStream2sATI
+#define glVertexStream2svATI epoxy_glVertexStream2svATI
+#define glVertexStream3dATI epoxy_glVertexStream3dATI
+#define glVertexStream3dvATI epoxy_glVertexStream3dvATI
+#define glVertexStream3fATI epoxy_glVertexStream3fATI
+#define glVertexStream3fvATI epoxy_glVertexStream3fvATI
+#define glVertexStream3iATI epoxy_glVertexStream3iATI
+#define glVertexStream3ivATI epoxy_glVertexStream3ivATI
+#define glVertexStream3sATI epoxy_glVertexStream3sATI
+#define glVertexStream3svATI epoxy_glVertexStream3svATI
+#define glVertexStream4dATI epoxy_glVertexStream4dATI
+#define glVertexStream4dvATI epoxy_glVertexStream4dvATI
+#define glVertexStream4fATI epoxy_glVertexStream4fATI
+#define glVertexStream4fvATI epoxy_glVertexStream4fvATI
+#define glVertexStream4iATI epoxy_glVertexStream4iATI
+#define glVertexStream4ivATI epoxy_glVertexStream4ivATI
+#define glVertexStream4sATI epoxy_glVertexStream4sATI
+#define glVertexStream4svATI epoxy_glVertexStream4svATI
+#define glVertexWeightPointerEXT epoxy_glVertexWeightPointerEXT
+#define glVertexWeightfEXT epoxy_glVertexWeightfEXT
+#define glVertexWeightfvEXT epoxy_glVertexWeightfvEXT
+#define glVertexWeighthNV epoxy_glVertexWeighthNV
+#define glVertexWeighthvNV epoxy_glVertexWeighthvNV
+#define glVideoCaptureNV epoxy_glVideoCaptureNV
+#define glVideoCaptureStreamParameterdvNV epoxy_glVideoCaptureStreamParameterdvNV
+#define glVideoCaptureStreamParameterfvNV epoxy_glVideoCaptureStreamParameterfvNV
+#define glVideoCaptureStreamParameterivNV epoxy_glVideoCaptureStreamParameterivNV
+#define glViewport epoxy_glViewport
+#define glViewportArrayv epoxy_glViewportArrayv
+#define glViewportArrayvNV epoxy_glViewportArrayvNV
+#define glViewportArrayvOES epoxy_glViewportArrayvOES
+#define glViewportIndexedf epoxy_glViewportIndexedf
+#define glViewportIndexedfNV epoxy_glViewportIndexedfNV
+#define glViewportIndexedfOES epoxy_glViewportIndexedfOES
+#define glViewportIndexedfv epoxy_glViewportIndexedfv
+#define glViewportIndexedfvNV epoxy_glViewportIndexedfvNV
+#define glViewportIndexedfvOES epoxy_glViewportIndexedfvOES
+#define glViewportPositionWScaleNV epoxy_glViewportPositionWScaleNV
+#define glViewportSwizzleNV epoxy_glViewportSwizzleNV
+#define glWaitSemaphoreEXT epoxy_glWaitSemaphoreEXT
+#define glWaitSemaphoreui64NVX epoxy_glWaitSemaphoreui64NVX
+#define glWaitSync epoxy_glWaitSync
+#define glWaitSyncAPPLE epoxy_glWaitSyncAPPLE
+#define glWaitVkSemaphoreNV epoxy_glWaitVkSemaphoreNV
+#define glWeightPathsNV epoxy_glWeightPathsNV
+#define glWeightPointerARB epoxy_glWeightPointerARB
+#define glWeightPointerOES epoxy_glWeightPointerOES
+#define glWeightbvARB epoxy_glWeightbvARB
+#define glWeightdvARB epoxy_glWeightdvARB
+#define glWeightfvARB epoxy_glWeightfvARB
+#define glWeightivARB epoxy_glWeightivARB
+#define glWeightsvARB epoxy_glWeightsvARB
+#define glWeightubvARB epoxy_glWeightubvARB
+#define glWeightuivARB epoxy_glWeightuivARB
+#define glWeightusvARB epoxy_glWeightusvARB
+#define glWindowPos2d epoxy_glWindowPos2d
+#define glWindowPos2dARB epoxy_glWindowPos2dARB
+#define glWindowPos2dMESA epoxy_glWindowPos2dMESA
+#define glWindowPos2dv epoxy_glWindowPos2dv
+#define glWindowPos2dvARB epoxy_glWindowPos2dvARB
+#define glWindowPos2dvMESA epoxy_glWindowPos2dvMESA
+#define glWindowPos2f epoxy_glWindowPos2f
+#define glWindowPos2fARB epoxy_glWindowPos2fARB
+#define glWindowPos2fMESA epoxy_glWindowPos2fMESA
+#define glWindowPos2fv epoxy_glWindowPos2fv
+#define glWindowPos2fvARB epoxy_glWindowPos2fvARB
+#define glWindowPos2fvMESA epoxy_glWindowPos2fvMESA
+#define glWindowPos2i epoxy_glWindowPos2i
+#define glWindowPos2iARB epoxy_glWindowPos2iARB
+#define glWindowPos2iMESA epoxy_glWindowPos2iMESA
+#define glWindowPos2iv epoxy_glWindowPos2iv
+#define glWindowPos2ivARB epoxy_glWindowPos2ivARB
+#define glWindowPos2ivMESA epoxy_glWindowPos2ivMESA
+#define glWindowPos2s epoxy_glWindowPos2s
+#define glWindowPos2sARB epoxy_glWindowPos2sARB
+#define glWindowPos2sMESA epoxy_glWindowPos2sMESA
+#define glWindowPos2sv epoxy_glWindowPos2sv
+#define glWindowPos2svARB epoxy_glWindowPos2svARB
+#define glWindowPos2svMESA epoxy_glWindowPos2svMESA
+#define glWindowPos3d epoxy_glWindowPos3d
+#define glWindowPos3dARB epoxy_glWindowPos3dARB
+#define glWindowPos3dMESA epoxy_glWindowPos3dMESA
+#define glWindowPos3dv epoxy_glWindowPos3dv
+#define glWindowPos3dvARB epoxy_glWindowPos3dvARB
+#define glWindowPos3dvMESA epoxy_glWindowPos3dvMESA
+#define glWindowPos3f epoxy_glWindowPos3f
+#define glWindowPos3fARB epoxy_glWindowPos3fARB
+#define glWindowPos3fMESA epoxy_glWindowPos3fMESA
+#define glWindowPos3fv epoxy_glWindowPos3fv
+#define glWindowPos3fvARB epoxy_glWindowPos3fvARB
+#define glWindowPos3fvMESA epoxy_glWindowPos3fvMESA
+#define glWindowPos3i epoxy_glWindowPos3i
+#define glWindowPos3iARB epoxy_glWindowPos3iARB
+#define glWindowPos3iMESA epoxy_glWindowPos3iMESA
+#define glWindowPos3iv epoxy_glWindowPos3iv
+#define glWindowPos3ivARB epoxy_glWindowPos3ivARB
+#define glWindowPos3ivMESA epoxy_glWindowPos3ivMESA
+#define glWindowPos3s epoxy_glWindowPos3s
+#define glWindowPos3sARB epoxy_glWindowPos3sARB
+#define glWindowPos3sMESA epoxy_glWindowPos3sMESA
+#define glWindowPos3sv epoxy_glWindowPos3sv
+#define glWindowPos3svARB epoxy_glWindowPos3svARB
+#define glWindowPos3svMESA epoxy_glWindowPos3svMESA
+#define glWindowPos4dMESA epoxy_glWindowPos4dMESA
+#define glWindowPos4dvMESA epoxy_glWindowPos4dvMESA
+#define glWindowPos4fMESA epoxy_glWindowPos4fMESA
+#define glWindowPos4fvMESA epoxy_glWindowPos4fvMESA
+#define glWindowPos4iMESA epoxy_glWindowPos4iMESA
+#define glWindowPos4ivMESA epoxy_glWindowPos4ivMESA
+#define glWindowPos4sMESA epoxy_glWindowPos4sMESA
+#define glWindowPos4svMESA epoxy_glWindowPos4svMESA
+#define glWindowRectanglesEXT epoxy_glWindowRectanglesEXT
+#define glWriteMaskEXT epoxy_glWriteMaskEXT
diff --git a/third_party/epoxy/epoxy/glx.h b/third_party/epoxy/epoxy/glx.h
new file mode 100644
index 0000000000..85170639c9
--- /dev/null
+++ b/third_party/epoxy/epoxy/glx.h
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+
+/** @file glx.h
+ *
+ * Provides an implementation of a GLX dispatch layer using global
+ * function pointers.
+ *
+ * You should include `<epoxy/glx.h>` instead of `<GL/glx.h>`.
+ */
+
+#ifndef EPOXY_GLX_H
+#define EPOXY_GLX_H
+
+#include <epoxy/gl.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+#if defined(GLX_H) || defined(__glxext_h_)
+#error epoxy/glx.h must be included before (or in place of) GL/glx.h
+#else
+#define GLX_H
+#define __glx_h__
+#define __glxext_h_
+#endif
+
+EPOXY_BEGIN_DECLS
+
+#include "epoxy/glx_generated.h"
+
+EPOXY_PUBLIC bool epoxy_has_glx_extension(Display *dpy, int screen, const char *extension);
+EPOXY_PUBLIC int epoxy_glx_version(Display *dpy, int screen);
+EPOXY_PUBLIC bool epoxy_has_glx(Display *dpy);
+
+EPOXY_END_DECLS
+
+#endif /* EPOXY_GLX_H */
diff --git a/third_party/epoxy/epoxy/glx_generated.h b/third_party/epoxy/epoxy/glx_generated.h
new file mode 100644
index 0000000000..e04f643fec
--- /dev/null
+++ b/third_party/epoxy/epoxy/glx_generated.h
@@ -0,0 +1,1005 @@
+/* GL dispatch header.
+ * This is code-generated from the GL API XML files from Khronos.
+ *
+ * Copyright (c) 2013-2018 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#pragma once
+#include <inttypes.h>
+#include <stddef.h>
+
+#include "epoxy/common.h"
+#include "epoxy/gl.h"
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+typedef XID GLXFBConfigID;
+typedef struct __GLXFBConfigRec *GLXFBConfig;
+typedef XID GLXContextID;
+typedef struct __GLXcontextRec *GLXContext;
+typedef XID GLXPixmap;
+typedef XID GLXDrawable;
+typedef XID GLXWindow;
+typedef XID GLXPbuffer;
+typedef void (APIENTRY *__GLXextFuncPtr)(void);
+typedef XID GLXVideoCaptureDeviceNV;
+typedef unsigned int GLXVideoDeviceNV;
+typedef XID GLXVideoSourceSGIX;
+typedef XID GLXFBConfigIDSGIX;
+typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
+typedef XID GLXPbufferSGIX;
+typedef struct {
+ int event_type; /* GLX_DAMAGED or GLX_SAVED */
+ int draw_type; /* GLX_WINDOW or GLX_PBUFFER */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came for SendEvent request */
+ Display *display; /* display the event was read from */
+ GLXDrawable drawable; /* XID of Drawable */
+ unsigned int buffer_mask; /* mask indicating which buffers are affected */
+ unsigned int aux_buffer; /* which aux buffer was affected */
+ int x, y;
+ int width, height;
+ int count; /* if nonzero, at least this many more */
+} GLXPbufferClobberEvent;
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ GLXDrawable drawable; /* drawable on which event was requested in event mask */
+ int event_type;
+ int64_t ust;
+ int64_t msc;
+ int64_t sbc;
+} GLXBufferSwapComplete;
+typedef union __GLXEvent {
+ GLXPbufferClobberEvent glxpbufferclobber;
+ GLXBufferSwapComplete glxbufferswapcomplete;
+ long pad[24];
+} GLXEvent;
+typedef struct {
+ int type;
+ unsigned long serial;
+ Bool send_event;
+ Display *display;
+ int extension;
+ int evtype;
+ GLXDrawable window;
+ Bool stereo_tree;
+} GLXStereoNotifyEventEXT;
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came for SendEvent request */
+ Display *display; /* display the event was read from */
+ GLXDrawable drawable; /* i.d. of Drawable */
+ int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */
+ int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */
+ unsigned int mask; /* mask indicating which buffers are affected*/
+ int x, y;
+ int width, height;
+ int count; /* if nonzero, at least this many more */
+} GLXBufferClobberEventSGIX;
+typedef struct {
+ char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */
+ int networkId;
+} GLXHyperpipeNetworkSGIX;
+typedef struct {
+ char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */
+ int channel;
+ unsigned int participationType;
+ int timeSlice;
+} GLXHyperpipeConfigSGIX;
+typedef struct {
+ char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */
+ int srcXOrigin, srcYOrigin, srcWidth, srcHeight;
+ int destXOrigin, destYOrigin, destWidth, destHeight;
+} GLXPipeRect;
+typedef struct {
+ char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */
+ int XOrigin, YOrigin, maxHeight, maxWidth;
+} GLXPipeRectLimits;
+
+#define GLX_VERSION_1_0 1
+#define GLX_VERSION_1_1 1
+#define GLX_VERSION_1_2 1
+#define GLX_VERSION_1_3 1
+#define GLX_VERSION_1_4 1
+
+#define GLX_3DFX_multisample 1
+#define GLX_AMD_gpu_association 1
+#define GLX_ARB_context_flush_control 1
+#define GLX_ARB_create_context 1
+#define GLX_ARB_create_context_no_error 1
+#define GLX_ARB_create_context_profile 1
+#define GLX_ARB_create_context_robustness 1
+#define GLX_ARB_fbconfig_float 1
+#define GLX_ARB_framebuffer_sRGB 1
+#define GLX_ARB_get_proc_address 1
+#define GLX_ARB_multisample 1
+#define GLX_ARB_robustness_application_isolation 1
+#define GLX_ARB_robustness_share_group_isolation 1
+#define GLX_ARB_vertex_buffer_object 1
+#define GLX_EXT_buffer_age 1
+#define GLX_EXT_context_priority 1
+#define GLX_EXT_create_context_es2_profile 1
+#define GLX_EXT_create_context_es_profile 1
+#define GLX_EXT_fbconfig_packed_float 1
+#define GLX_EXT_framebuffer_sRGB 1
+#define GLX_EXT_import_context 1
+#define GLX_EXT_libglvnd 1
+#define GLX_EXT_no_config_context 1
+#define GLX_EXT_stereo_tree 1
+#define GLX_EXT_swap_control 1
+#define GLX_EXT_swap_control_tear 1
+#define GLX_EXT_texture_from_pixmap 1
+#define GLX_EXT_visual_info 1
+#define GLX_EXT_visual_rating 1
+#define GLX_INTEL_swap_event 1
+#define GLX_MESA_agp_offset 1
+#define GLX_MESA_copy_sub_buffer 1
+#define GLX_MESA_pixmap_colormap 1
+#define GLX_MESA_query_renderer 1
+#define GLX_MESA_release_buffers 1
+#define GLX_MESA_set_3dfx_mode 1
+#define GLX_MESA_swap_control 1
+#define GLX_NV_copy_buffer 1
+#define GLX_NV_copy_image 1
+#define GLX_NV_delay_before_swap 1
+#define GLX_NV_float_buffer 1
+#define GLX_NV_multisample_coverage 1
+#define GLX_NV_present_video 1
+#define GLX_NV_robustness_video_memory_purge 1
+#define GLX_NV_swap_group 1
+#define GLX_NV_video_capture 1
+#define GLX_NV_video_out 1
+#define GLX_OML_swap_method 1
+#define GLX_OML_sync_control 1
+#define GLX_SGIS_blended_overlay 1
+#define GLX_SGIS_multisample 1
+#define GLX_SGIS_shared_multisample 1
+#define GLX_SGIX_dmbuffer 1
+#define GLX_SGIX_fbconfig 1
+#define GLX_SGIX_hyperpipe 1
+#define GLX_SGIX_pbuffer 1
+#define GLX_SGIX_swap_barrier 1
+#define GLX_SGIX_swap_group 1
+#define GLX_SGIX_video_resize 1
+#define GLX_SGIX_video_source 1
+#define GLX_SGIX_visual_select_group 1
+#define GLX_SGI_cushion 1
+#define GLX_SGI_make_current_read 1
+#define GLX_SGI_swap_control 1
+#define GLX_SGI_video_sync 1
+#define GLX_SUN_get_transparent_index 1
+
+#define GLX_EXTENSION_NAME "GLX"
+#define GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
+#define GLX_PbufferClobber 0
+#define GLX_STEREO_NOTIFY_EXT 0x00000000
+#define GLX_SYNC_FRAME_SGIX 0x00000000
+#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001
+#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
+#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001
+#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001
+#define GLX_PIPE_RECT_SGIX 0x00000001
+#define GLX_RGBA_BIT 0x00000001
+#define GLX_RGBA_BIT_SGIX 0x00000001
+#define GLX_STEREO_NOTIFY_MASK_EXT 0x00000001
+#define GLX_SYNC_SWAP_SGIX 0x00000001
+#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
+#define GLX_WINDOW_BIT 0x00000001
+#define GLX_WINDOW_BIT_SGIX 0x00000001
+#define GLX_COLOR_INDEX_BIT 0x00000002
+#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002
+#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
+#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
+#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002
+#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002
+#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002
+#define GLX_PIXMAP_BIT 0x00000002
+#define GLX_PIXMAP_BIT_SGIX 0x00000002
+#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
+#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003
+#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
+#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004
+#define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
+#define GLX_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
+#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
+#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004
+#define GLX_PBUFFER_BIT 0x00000004
+#define GLX_PBUFFER_BIT_SGIX 0x00000004
+#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004
+#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
+#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008
+#define GLX_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
+#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008
+#define GLX_AUX_BUFFERS_BIT 0x00000010
+#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010
+#define GLX_DEPTH_BUFFER_BIT 0x00000020
+#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020
+#define GLX_STENCIL_BUFFER_BIT 0x00000040
+#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040
+#define GLX_ACCUM_BUFFER_BIT 0x00000080
+#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080
+#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100
+#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000
+#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000
+#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
+#define GLX_3DFX_WINDOW_MODE_MESA 0x1
+#define GLX_VENDOR 0x1
+#define GLX_GPU_VENDOR_AMD 0x1F00
+#define GLX_GPU_RENDERER_STRING_AMD 0x1F01
+#define GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
+#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
+#define GLX_VERSION 0x2
+#define GLX_CONFIG_CAVEAT 0x20
+#define GLX_VISUAL_CAVEAT_EXT 0x20
+#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
+#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
+#define GLX_CONTEXT_FLAGS_ARB 0x2094
+#define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095
+#define GLX_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
+#define GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
+#define GLX_FLOAT_COMPONENTS_NV 0x20B0
+#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1
+#define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2
+#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2
+#define GLX_COLOR_SAMPLES_NV 0x20B3
+#define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9
+#define GLX_VIDEO_OUT_COLOR_NV 0x20C3
+#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4
+#define GLX_VIDEO_OUT_DEPTH_NV 0x20C5
+#define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
+#define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
+#define GLX_VIDEO_OUT_FRAME_NV 0x20C8
+#define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9
+#define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA
+#define GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB
+#define GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC
+#define GLX_DEVICE_ID_NV 0x20CD
+#define GLX_UNIQUE_ID_NV 0x20CE
+#define GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
+#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
+#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
+#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
+#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
+#define GLX_Y_INVERTED_EXT 0x20D4
+#define GLX_TEXTURE_FORMAT_EXT 0x20D5
+#define GLX_TEXTURE_TARGET_EXT 0x20D6
+#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
+#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
+#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
+#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
+#define GLX_TEXTURE_1D_EXT 0x20DB
+#define GLX_TEXTURE_2D_EXT 0x20DC
+#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
+#define GLX_FRONT_EXT 0x20DE
+#define GLX_FRONT_LEFT_EXT 0x20DE
+#define GLX_FRONT_RIGHT_EXT 0x20DF
+#define GLX_BACK_EXT 0x20E0
+#define GLX_BACK_LEFT_EXT 0x20E0
+#define GLX_BACK_RIGHT_EXT 0x20E1
+#define GLX_AUX0_EXT 0x20E2
+#define GLX_AUX1_EXT 0x20E3
+#define GLX_AUX2_EXT 0x20E4
+#define GLX_AUX3_EXT 0x20E5
+#define GLX_AUX4_EXT 0x20E6
+#define GLX_AUX5_EXT 0x20E7
+#define GLX_AUX6_EXT 0x20E8
+#define GLX_AUX7_EXT 0x20E9
+#define GLX_AUX8_EXT 0x20EA
+#define GLX_AUX9_EXT 0x20EB
+#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0
+#define GLX_SWAP_INTERVAL_EXT 0x20F1
+#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2
+#define GLX_LATE_SWAPS_TEAR_EXT 0x20F3
+#define GLX_BACK_BUFFER_AGE_EXT 0x20F4
+#define GLX_STEREO_TREE_EXT 0x20F5
+#define GLX_VENDOR_NAMES_EXT 0x20F6
+#define GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x20F7
+#define GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
+#define GLX_GPU_RAM_AMD 0x21A3
+#define GLX_GPU_CLOCK_AMD 0x21A4
+#define GLX_GPU_NUM_PIPES_AMD 0x21A5
+#define GLX_GPU_NUM_SIMD_AMD 0x21A6
+#define GLX_GPU_NUM_RB_AMD 0x21A7
+#define GLX_GPU_NUM_SPI_AMD 0x21A8
+#define GLX_X_VISUAL_TYPE 0x22
+#define GLX_X_VISUAL_TYPE_EXT 0x22
+#define GLX_TRANSPARENT_TYPE 0x23
+#define GLX_TRANSPARENT_TYPE_EXT 0x23
+#define GLX_TRANSPARENT_INDEX_VALUE 0x24
+#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
+#define GLX_TRANSPARENT_RED_VALUE 0x25
+#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25
+#define GLX_TRANSPARENT_GREEN_VALUE 0x26
+#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
+#define GLX_TRANSPARENT_BLUE_VALUE 0x27
+#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
+#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
+#define GLX_EXTENSIONS 0x3
+#define GLX_CONTEXT_PRIORITY_LEVEL_EXT 0x3100
+#define GLX_CONTEXT_PRIORITY_HIGH_EXT 0x3101
+#define GLX_CONTEXT_PRIORITY_MEDIUM_EXT 0x3102
+#define GLX_CONTEXT_PRIORITY_LOW_EXT 0x3103
+#define GLX_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3
+#define GLX_NONE 0x8000
+#define GLX_NONE_EXT 0x8000
+#define GLX_SLOW_CONFIG 0x8001
+#define GLX_SLOW_VISUAL_EXT 0x8001
+#define GLX_TRUE_COLOR 0x8002
+#define GLX_TRUE_COLOR_EXT 0x8002
+#define GLX_DIRECT_COLOR 0x8003
+#define GLX_DIRECT_COLOR_EXT 0x8003
+#define GLX_PSEUDO_COLOR 0x8004
+#define GLX_PSEUDO_COLOR_EXT 0x8004
+#define GLX_STATIC_COLOR 0x8005
+#define GLX_STATIC_COLOR_EXT 0x8005
+#define GLX_GRAY_SCALE 0x8006
+#define GLX_GRAY_SCALE_EXT 0x8006
+#define GLX_STATIC_GRAY 0x8007
+#define GLX_STATIC_GRAY_EXT 0x8007
+#define GLX_TRANSPARENT_RGB 0x8008
+#define GLX_TRANSPARENT_RGB_EXT 0x8008
+#define GLX_TRANSPARENT_INDEX 0x8009
+#define GLX_TRANSPARENT_INDEX_EXT 0x8009
+#define GLX_SHARE_CONTEXT_EXT 0x800A
+#define GLX_VISUAL_ID 0x800B
+#define GLX_VISUAL_ID_EXT 0x800B
+#define GLX_SCREEN 0x800C
+#define GLX_SCREEN_EXT 0x800C
+#define GLX_NON_CONFORMANT_CONFIG 0x800D
+#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D
+#define GLX_DRAWABLE_TYPE 0x8010
+#define GLX_DRAWABLE_TYPE_SGIX 0x8010
+#define GLX_RENDER_TYPE 0x8011
+#define GLX_RENDER_TYPE_SGIX 0x8011
+#define GLX_X_RENDERABLE 0x8012
+#define GLX_X_RENDERABLE_SGIX 0x8012
+#define GLX_FBCONFIG_ID 0x8013
+#define GLX_FBCONFIG_ID_SGIX 0x8013
+#define GLX_RGBA_TYPE 0x8014
+#define GLX_RGBA_TYPE_SGIX 0x8014
+#define GLX_COLOR_INDEX_TYPE 0x8015
+#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015
+#define GLX_MAX_PBUFFER_WIDTH 0x8016
+#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016
+#define GLX_MAX_PBUFFER_HEIGHT 0x8017
+#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017
+#define GLX_MAX_PBUFFER_PIXELS 0x8018
+#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018
+#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019
+#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A
+#define GLX_PRESERVED_CONTENTS 0x801B
+#define GLX_PRESERVED_CONTENTS_SGIX 0x801B
+#define GLX_LARGEST_PBUFFER 0x801C
+#define GLX_LARGEST_PBUFFER_SGIX 0x801C
+#define GLX_WIDTH 0x801D
+#define GLX_WIDTH_SGIX 0x801D
+#define GLX_HEIGHT 0x801E
+#define GLX_HEIGHT_SGIX 0x801E
+#define GLX_EVENT_MASK 0x801F
+#define GLX_EVENT_MASK_SGIX 0x801F
+#define GLX_DAMAGED 0x8020
+#define GLX_DAMAGED_SGIX 0x8020
+#define GLX_SAVED 0x8021
+#define GLX_SAVED_SGIX 0x8021
+#define GLX_WINDOW 0x8022
+#define GLX_WINDOW_SGIX 0x8022
+#define GLX_PBUFFER 0x8023
+#define GLX_PBUFFER_SGIX 0x8023
+#define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024
+#define GLX_BLENDED_RGBA_SGIS 0x8025
+#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026
+#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027
+#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028
+#define GLX_HYPERPIPE_ID_SGIX 0x8030
+#define GLX_PBUFFER_HEIGHT 0x8040
+#define GLX_PBUFFER_WIDTH 0x8041
+#define GLX_SAMPLE_BUFFERS_3DFX 0x8050
+#define GLX_SAMPLES_3DFX 0x8051
+#define GLX_SWAP_METHOD_OML 0x8060
+#define GLX_SWAP_EXCHANGE_OML 0x8061
+#define GLX_SWAP_COPY_OML 0x8062
+#define GLX_SWAP_UNDEFINED_OML 0x8063
+#define GLX_EXCHANGE_COMPLETE_INTEL 0x8180
+#define GLX_COPY_COMPLETE_INTEL 0x8181
+#define GLX_FLIP_COMPLETE_INTEL 0x8182
+#define GLX_RENDERER_VENDOR_ID_MESA 0x8183
+#define GLX_RENDERER_DEVICE_ID_MESA 0x8184
+#define GLX_RENDERER_VERSION_MESA 0x8185
+#define GLX_RENDERER_ACCELERATED_MESA 0x8186
+#define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187
+#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188
+#define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189
+#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A
+#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B
+#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C
+#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D
+#define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252
+#define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
+#define GLX_NO_RESET_NOTIFICATION_ARB 0x8261
+#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126
+#define GLX_DONT_CARE 0xFFFFFFFF
+#define GLX_BAD_SCREEN 1
+#define GLX_BufferSwapComplete 1
+#define GLX_USE_GL 1
+#define GLX_BLUE_SIZE 10
+#define GLX_SAMPLE_BUFFERS 100000
+#define GLX_SAMPLE_BUFFERS_ARB 100000
+#define GLX_SAMPLE_BUFFERS_SGIS 100000
+#define GLX_COVERAGE_SAMPLES_NV 100001
+#define GLX_SAMPLES 100001
+#define GLX_SAMPLES_ARB 100001
+#define GLX_SAMPLES_SGIS 100001
+#define GLX_ALPHA_SIZE 11
+#define GLX_DEPTH_SIZE 12
+#define GLX_STENCIL_SIZE 13
+#define GLX_ACCUM_RED_SIZE 14
+#define GLX_ACCUM_GREEN_SIZE 15
+#define GLX_ACCUM_BLUE_SIZE 16
+#define GLX_ACCUM_ALPHA_SIZE 17
+#define __GLX_NUMBER_EVENTS 17
+#define GLX_BAD_ATTRIBUTE 2
+#define GLX_BUFFER_SIZE 2
+#define GLX_LEVEL 3
+#define GLX_NO_EXTENSION 3
+#define GLX_BAD_VISUAL 4
+#define GLX_RGBA 4
+#define GLX_BAD_CONTEXT 5
+#define GLX_DOUBLEBUFFER 5
+#define GLX_BAD_VALUE 6
+#define GLX_STEREO 6
+#define GLX_AUX_BUFFERS 7
+#define GLX_BAD_ENUM 7
+#define GLX_RED_SIZE 8
+#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80
+#define GLX_GREEN_SIZE 9
+#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91
+#define GLX_BAD_HYPERPIPE_SGIX 92
+
+typedef int (GLAPIENTRY *PFNGLXBINDCHANNELTOWINDOWSGIXPROC)(Display * display, int screen, int channel, Window window);
+typedef int (GLAPIENTRY *PFNGLXBINDHYPERPIPESGIXPROC)(Display * dpy, int hpId);
+typedef Bool (GLAPIENTRY *PFNGLXBINDSWAPBARRIERNVPROC)(Display * dpy, GLuint group, GLuint barrier);
+typedef void (GLAPIENTRY *PFNGLXBINDSWAPBARRIERSGIXPROC)(Display * dpy, GLXDrawable drawable, int barrier);
+typedef void (GLAPIENTRY *PFNGLXBINDTEXIMAGEEXTPROC)(Display * dpy, GLXDrawable drawable, int buffer, const int * attrib_list);
+typedef int (GLAPIENTRY *PFNGLXBINDVIDEOCAPTUREDEVICENVPROC)(Display * dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device);
+typedef int (GLAPIENTRY *PFNGLXBINDVIDEODEVICENVPROC)(Display * dpy, unsigned int video_slot, unsigned int video_device, const int * attrib_list);
+typedef int (GLAPIENTRY *PFNGLXBINDVIDEOIMAGENVPROC)(Display * dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer);
+typedef void (GLAPIENTRY *PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC)(GLXContext dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef int (GLAPIENTRY *PFNGLXCHANNELRECTSGIXPROC)(Display * display, int screen, int channel, int x, int y, int w, int h);
+typedef int (GLAPIENTRY *PFNGLXCHANNELRECTSYNCSGIXPROC)(Display * display, int screen, int channel, GLenum synctype);
+typedef GLXFBConfig * (GLAPIENTRY *PFNGLXCHOOSEFBCONFIGPROC)(Display * dpy, int screen, const int * attrib_list, int * nelements);
+typedef GLXFBConfigSGIX * (GLAPIENTRY *PFNGLXCHOOSEFBCONFIGSGIXPROC)(Display * dpy, int screen, int * attrib_list, int * nelements);
+typedef XVisualInfo * (GLAPIENTRY *PFNGLXCHOOSEVISUALPROC)(Display * dpy, int screen, int * attribList);
+typedef void (GLAPIENTRY *PFNGLXCOPYBUFFERSUBDATANVPROC)(Display * dpy, GLXContext readCtx, GLXContext writeCtx, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (GLAPIENTRY *PFNGLXCOPYCONTEXTPROC)(Display * dpy, GLXContext src, GLXContext dst, unsigned long mask);
+typedef void (GLAPIENTRY *PFNGLXCOPYIMAGESUBDATANVPROC)(Display * dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (GLAPIENTRY *PFNGLXCOPYSUBBUFFERMESAPROC)(Display * dpy, GLXDrawable drawable, int x, int y, int width, int height);
+typedef GLXContext (GLAPIENTRY *PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC)(unsigned int id, GLXContext share_list);
+typedef GLXContext (GLAPIENTRY *PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)(unsigned int id, GLXContext share_context, const int * attribList);
+typedef GLXContext (GLAPIENTRY *PFNGLXCREATECONTEXTPROC)(Display * dpy, XVisualInfo * vis, GLXContext shareList, Bool direct);
+typedef GLXContext (GLAPIENTRY *PFNGLXCREATECONTEXTATTRIBSARBPROC)(Display * dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int * attrib_list);
+typedef GLXContext (GLAPIENTRY *PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC)(Display * dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
+typedef GLXPbufferSGIX (GLAPIENTRY *PFNGLXCREATEGLXPBUFFERSGIXPROC)(Display * dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int * attrib_list);
+typedef GLXPixmap (GLAPIENTRY *PFNGLXCREATEGLXPIXMAPPROC)(Display * dpy, XVisualInfo * visual, Pixmap pixmap);
+typedef GLXPixmap (GLAPIENTRY *PFNGLXCREATEGLXPIXMAPMESAPROC)(Display * dpy, XVisualInfo * visual, Pixmap pixmap, Colormap cmap);
+typedef GLXPixmap (GLAPIENTRY *PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC)(Display * dpy, GLXFBConfigSGIX config, Pixmap pixmap);
+typedef GLXContext (GLAPIENTRY *PFNGLXCREATENEWCONTEXTPROC)(Display * dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
+typedef GLXPbuffer (GLAPIENTRY *PFNGLXCREATEPBUFFERPROC)(Display * dpy, GLXFBConfig config, const int * attrib_list);
+typedef GLXPixmap (GLAPIENTRY *PFNGLXCREATEPIXMAPPROC)(Display * dpy, GLXFBConfig config, Pixmap pixmap, const int * attrib_list);
+typedef GLXWindow (GLAPIENTRY *PFNGLXCREATEWINDOWPROC)(Display * dpy, GLXFBConfig config, Window win, const int * attrib_list);
+typedef void (GLAPIENTRY *PFNGLXCUSHIONSGIPROC)(Display * dpy, Window window, float cushion);
+typedef Bool (GLAPIENTRY *PFNGLXDELAYBEFORESWAPNVPROC)(Display * dpy, GLXDrawable drawable, GLfloat seconds);
+typedef Bool (GLAPIENTRY *PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC)(GLXContext ctx);
+typedef void (GLAPIENTRY *PFNGLXDESTROYCONTEXTPROC)(Display * dpy, GLXContext ctx);
+typedef void (GLAPIENTRY *PFNGLXDESTROYGLXPBUFFERSGIXPROC)(Display * dpy, GLXPbufferSGIX pbuf);
+typedef void (GLAPIENTRY *PFNGLXDESTROYGLXPIXMAPPROC)(Display * dpy, GLXPixmap pixmap);
+typedef void (GLAPIENTRY *PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC)(Display * dpy, GLXVideoSourceSGIX glxvideosource);
+typedef int (GLAPIENTRY *PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC)(Display * dpy, int hpId);
+typedef void (GLAPIENTRY *PFNGLXDESTROYPBUFFERPROC)(Display * dpy, GLXPbuffer pbuf);
+typedef void (GLAPIENTRY *PFNGLXDESTROYPIXMAPPROC)(Display * dpy, GLXPixmap pixmap);
+typedef void (GLAPIENTRY *PFNGLXDESTROYWINDOWPROC)(Display * dpy, GLXWindow win);
+typedef GLXVideoCaptureDeviceNV * (GLAPIENTRY *PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC)(Display * dpy, int screen, int * nelements);
+typedef unsigned int * (GLAPIENTRY *PFNGLXENUMERATEVIDEODEVICESNVPROC)(Display * dpy, int screen, int * nelements);
+typedef void (GLAPIENTRY *PFNGLXFREECONTEXTEXTPROC)(Display * dpy, GLXContext context);
+typedef unsigned int (GLAPIENTRY *PFNGLXGETAGPOFFSETMESAPROC)(const void * pointer);
+typedef const char * (GLAPIENTRY *PFNGLXGETCLIENTSTRINGPROC)(Display * dpy, int name);
+typedef int (GLAPIENTRY *PFNGLXGETCONFIGPROC)(Display * dpy, XVisualInfo * visual, int attrib, int * value);
+typedef unsigned int (GLAPIENTRY *PFNGLXGETCONTEXTGPUIDAMDPROC)(GLXContext ctx);
+typedef GLXContextID (GLAPIENTRY *PFNGLXGETCONTEXTIDEXTPROC)(const GLXContext context);
+typedef GLXContext (GLAPIENTRY *PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC)(void);
+typedef GLXContext (GLAPIENTRY *PFNGLXGETCURRENTCONTEXTPROC)(void);
+typedef Display * (GLAPIENTRY *PFNGLXGETCURRENTDISPLAYPROC)(void);
+typedef Display * (GLAPIENTRY *PFNGLXGETCURRENTDISPLAYEXTPROC)(void);
+typedef GLXDrawable (GLAPIENTRY *PFNGLXGETCURRENTDRAWABLEPROC)(void);
+typedef GLXDrawable (GLAPIENTRY *PFNGLXGETCURRENTREADDRAWABLEPROC)(void);
+typedef GLXDrawable (GLAPIENTRY *PFNGLXGETCURRENTREADDRAWABLESGIPROC)(void);
+typedef int (GLAPIENTRY *PFNGLXGETFBCONFIGATTRIBPROC)(Display * dpy, GLXFBConfig config, int attribute, int * value);
+typedef int (GLAPIENTRY *PFNGLXGETFBCONFIGATTRIBSGIXPROC)(Display * dpy, GLXFBConfigSGIX config, int attribute, int * value);
+typedef GLXFBConfigSGIX (GLAPIENTRY *PFNGLXGETFBCONFIGFROMVISUALSGIXPROC)(Display * dpy, XVisualInfo * vis);
+typedef GLXFBConfig * (GLAPIENTRY *PFNGLXGETFBCONFIGSPROC)(Display * dpy, int screen, int * nelements);
+typedef unsigned int (GLAPIENTRY *PFNGLXGETGPUIDSAMDPROC)(unsigned int maxCount, unsigned int * ids);
+typedef int (GLAPIENTRY *PFNGLXGETGPUINFOAMDPROC)(unsigned int id, int property, GLenum dataType, unsigned int size, void * data);
+typedef Bool (GLAPIENTRY *PFNGLXGETMSCRATEOMLPROC)(Display * dpy, GLXDrawable drawable, int32_t * numerator, int32_t * denominator);
+typedef __GLXextFuncPtr (GLAPIENTRY *PFNGLXGETPROCADDRESSPROC)(const GLubyte * procName);
+typedef __GLXextFuncPtr (GLAPIENTRY *PFNGLXGETPROCADDRESSARBPROC)(const GLubyte * procName);
+typedef void (GLAPIENTRY *PFNGLXGETSELECTEDEVENTPROC)(Display * dpy, GLXDrawable draw, unsigned long * event_mask);
+typedef void (GLAPIENTRY *PFNGLXGETSELECTEDEVENTSGIXPROC)(Display * dpy, GLXDrawable drawable, unsigned long * mask);
+typedef int (GLAPIENTRY *PFNGLXGETSWAPINTERVALMESAPROC)(void);
+typedef Bool (GLAPIENTRY *PFNGLXGETSYNCVALUESOMLPROC)(Display * dpy, GLXDrawable drawable, int64_t * ust, int64_t * msc, int64_t * sbc);
+typedef Status (GLAPIENTRY *PFNGLXGETTRANSPARENTINDEXSUNPROC)(Display * dpy, Window overlay, Window underlay, unsigned long * pTransparentIndex);
+typedef int (GLAPIENTRY *PFNGLXGETVIDEODEVICENVPROC)(Display * dpy, int screen, int numVideoDevices, GLXVideoDeviceNV * pVideoDevice);
+typedef int (GLAPIENTRY *PFNGLXGETVIDEOINFONVPROC)(Display * dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long * pulCounterOutputPbuffer, unsigned long * pulCounterOutputVideo);
+typedef int (GLAPIENTRY *PFNGLXGETVIDEOSYNCSGIPROC)(unsigned int * count);
+typedef XVisualInfo * (GLAPIENTRY *PFNGLXGETVISUALFROMFBCONFIGPROC)(Display * dpy, GLXFBConfig config);
+typedef XVisualInfo * (GLAPIENTRY *PFNGLXGETVISUALFROMFBCONFIGSGIXPROC)(Display * dpy, GLXFBConfigSGIX config);
+typedef int (GLAPIENTRY *PFNGLXHYPERPIPEATTRIBSGIXPROC)(Display * dpy, int timeSlice, int attrib, int size, void * attribList);
+typedef int (GLAPIENTRY *PFNGLXHYPERPIPECONFIGSGIXPROC)(Display * dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX * cfg, int * hpId);
+typedef GLXContext (GLAPIENTRY *PFNGLXIMPORTCONTEXTEXTPROC)(Display * dpy, GLXContextID contextID);
+typedef Bool (GLAPIENTRY *PFNGLXISDIRECTPROC)(Display * dpy, GLXContext ctx);
+typedef Bool (GLAPIENTRY *PFNGLXJOINSWAPGROUPNVPROC)(Display * dpy, GLXDrawable drawable, GLuint group);
+typedef void (GLAPIENTRY *PFNGLXJOINSWAPGROUPSGIXPROC)(Display * dpy, GLXDrawable drawable, GLXDrawable member);
+typedef void (GLAPIENTRY *PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC)(Display * dpy, GLXVideoCaptureDeviceNV device);
+typedef Bool (GLAPIENTRY *PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC)(GLXContext ctx);
+typedef Bool (GLAPIENTRY *PFNGLXMAKECONTEXTCURRENTPROC)(Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+typedef Bool (GLAPIENTRY *PFNGLXMAKECURRENTPROC)(Display * dpy, GLXDrawable drawable, GLXContext ctx);
+typedef Bool (GLAPIENTRY *PFNGLXMAKECURRENTREADSGIPROC)(Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+typedef void (GLAPIENTRY *PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC)(Display * dpy, GLXContext readCtx, GLXContext writeCtx, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef int (GLAPIENTRY *PFNGLXQUERYCHANNELDELTASSGIXPROC)(Display * display, int screen, int channel, int * x, int * y, int * w, int * h);
+typedef int (GLAPIENTRY *PFNGLXQUERYCHANNELRECTSGIXPROC)(Display * display, int screen, int channel, int * dx, int * dy, int * dw, int * dh);
+typedef int (GLAPIENTRY *PFNGLXQUERYCONTEXTPROC)(Display * dpy, GLXContext ctx, int attribute, int * value);
+typedef int (GLAPIENTRY *PFNGLXQUERYCONTEXTINFOEXTPROC)(Display * dpy, GLXContext context, int attribute, int * value);
+typedef Bool (GLAPIENTRY *PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC)(int attribute, unsigned int * value);
+typedef const char * (GLAPIENTRY *PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC)(int attribute);
+typedef void (GLAPIENTRY *PFNGLXQUERYDRAWABLEPROC)(Display * dpy, GLXDrawable draw, int attribute, unsigned int * value);
+typedef Bool (GLAPIENTRY *PFNGLXQUERYEXTENSIONPROC)(Display * dpy, int * errorb, int * event);
+typedef const char * (GLAPIENTRY *PFNGLXQUERYEXTENSIONSSTRINGPROC)(Display * dpy, int screen);
+typedef Bool (GLAPIENTRY *PFNGLXQUERYFRAMECOUNTNVPROC)(Display * dpy, int screen, GLuint * count);
+typedef void (GLAPIENTRY *PFNGLXQUERYGLXPBUFFERSGIXPROC)(Display * dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int * value);
+typedef int (GLAPIENTRY *PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC)(Display * dpy, int timeSlice, int attrib, int size, void * returnAttribList);
+typedef int (GLAPIENTRY *PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC)(Display * dpy, int timeSlice, int attrib, int size, void * attribList, void * returnAttribList);
+typedef GLXHyperpipeConfigSGIX * (GLAPIENTRY *PFNGLXQUERYHYPERPIPECONFIGSGIXPROC)(Display * dpy, int hpId, int * npipes);
+typedef GLXHyperpipeNetworkSGIX * (GLAPIENTRY *PFNGLXQUERYHYPERPIPENETWORKSGIXPROC)(Display * dpy, int * npipes);
+typedef Bool (GLAPIENTRY *PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC)(Display * dpy, int screen, int * max);
+typedef Bool (GLAPIENTRY *PFNGLXQUERYMAXSWAPGROUPSNVPROC)(Display * dpy, int screen, GLuint * maxGroups, GLuint * maxBarriers);
+typedef Bool (GLAPIENTRY *PFNGLXQUERYRENDERERINTEGERMESAPROC)(Display * dpy, int screen, int renderer, int attribute, unsigned int * value);
+typedef const char * (GLAPIENTRY *PFNGLXQUERYRENDERERSTRINGMESAPROC)(Display * dpy, int screen, int renderer, int attribute);
+typedef const char * (GLAPIENTRY *PFNGLXQUERYSERVERSTRINGPROC)(Display * dpy, int screen, int name);
+typedef Bool (GLAPIENTRY *PFNGLXQUERYSWAPGROUPNVPROC)(Display * dpy, GLXDrawable drawable, GLuint * group, GLuint * barrier);
+typedef Bool (GLAPIENTRY *PFNGLXQUERYVERSIONPROC)(Display * dpy, int * maj, int * min);
+typedef int (GLAPIENTRY *PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC)(Display * dpy, GLXVideoCaptureDeviceNV device, int attribute, int * value);
+typedef Bool (GLAPIENTRY *PFNGLXRELEASEBUFFERSMESAPROC)(Display * dpy, GLXDrawable drawable);
+typedef void (GLAPIENTRY *PFNGLXRELEASETEXIMAGEEXTPROC)(Display * dpy, GLXDrawable drawable, int buffer);
+typedef void (GLAPIENTRY *PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC)(Display * dpy, GLXVideoCaptureDeviceNV device);
+typedef int (GLAPIENTRY *PFNGLXRELEASEVIDEODEVICENVPROC)(Display * dpy, int screen, GLXVideoDeviceNV VideoDevice);
+typedef int (GLAPIENTRY *PFNGLXRELEASEVIDEOIMAGENVPROC)(Display * dpy, GLXPbuffer pbuf);
+typedef Bool (GLAPIENTRY *PFNGLXRESETFRAMECOUNTNVPROC)(Display * dpy, int screen);
+typedef void (GLAPIENTRY *PFNGLXSELECTEVENTPROC)(Display * dpy, GLXDrawable draw, unsigned long event_mask);
+typedef void (GLAPIENTRY *PFNGLXSELECTEVENTSGIXPROC)(Display * dpy, GLXDrawable drawable, unsigned long mask);
+typedef int (GLAPIENTRY *PFNGLXSENDPBUFFERTOVIDEONVPROC)(Display * dpy, GLXPbuffer pbuf, int iBufferType, unsigned long * pulCounterPbuffer, GLboolean bBlock);
+typedef GLboolean (GLAPIENTRY *PFNGLXSET3DFXMODEMESAPROC)(GLint mode);
+typedef void (GLAPIENTRY *PFNGLXSWAPBUFFERSPROC)(Display * dpy, GLXDrawable drawable);
+typedef int64_t (GLAPIENTRY *PFNGLXSWAPBUFFERSMSCOMLPROC)(Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
+typedef void (GLAPIENTRY *PFNGLXSWAPINTERVALEXTPROC)(Display * dpy, GLXDrawable drawable, int interval);
+typedef int (GLAPIENTRY *PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval);
+typedef int (GLAPIENTRY *PFNGLXSWAPINTERVALSGIPROC)(int interval);
+typedef void (GLAPIENTRY *PFNGLXUSEXFONTPROC)(Font font, int first, int count, int list);
+typedef Bool (GLAPIENTRY *PFNGLXWAITFORMSCOMLPROC)(Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t * ust, int64_t * msc, int64_t * sbc);
+typedef Bool (GLAPIENTRY *PFNGLXWAITFORSBCOMLPROC)(Display * dpy, GLXDrawable drawable, int64_t target_sbc, int64_t * ust, int64_t * msc, int64_t * sbc);
+typedef void (GLAPIENTRY *PFNGLXWAITGLPROC)(void);
+typedef int (GLAPIENTRY *PFNGLXWAITVIDEOSYNCSGIPROC)(int divisor, int remainder, unsigned int * count);
+typedef void (GLAPIENTRY *PFNGLXWAITXPROC)(void);
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXBindChannelToWindowSGIX)(Display * display, int screen, int channel, Window window);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXBindHyperpipeSGIX)(Display * dpy, int hpId);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXBindSwapBarrierNV)(Display * dpy, GLuint group, GLuint barrier);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXBindSwapBarrierSGIX)(Display * dpy, GLXDrawable drawable, int barrier);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXBindTexImageEXT)(Display * dpy, GLXDrawable drawable, int buffer, const int * attrib_list);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXBindVideoCaptureDeviceNV)(Display * dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXBindVideoDeviceNV)(Display * dpy, unsigned int video_slot, unsigned int video_device, const int * attrib_list);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXBindVideoImageNV)(Display * dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXBlitContextFramebufferAMD)(GLXContext dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXChannelRectSGIX)(Display * display, int screen, int channel, int x, int y, int w, int h);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXChannelRectSyncSGIX)(Display * display, int screen, int channel, GLenum synctype);
+
+EPOXY_PUBLIC GLXFBConfig * (EPOXY_CALLSPEC *epoxy_glXChooseFBConfig)(Display * dpy, int screen, const int * attrib_list, int * nelements);
+
+EPOXY_PUBLIC GLXFBConfigSGIX * (EPOXY_CALLSPEC *epoxy_glXChooseFBConfigSGIX)(Display * dpy, int screen, int * attrib_list, int * nelements);
+
+EPOXY_PUBLIC XVisualInfo * (EPOXY_CALLSPEC *epoxy_glXChooseVisual)(Display * dpy, int screen, int * attribList);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXCopyBufferSubDataNV)(Display * dpy, GLXContext readCtx, GLXContext writeCtx, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXCopyContext)(Display * dpy, GLXContext src, GLXContext dst, unsigned long mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXCopyImageSubDataNV)(Display * dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXCopySubBufferMESA)(Display * dpy, GLXDrawable drawable, int x, int y, int width, int height);
+
+EPOXY_PUBLIC GLXContext (EPOXY_CALLSPEC *epoxy_glXCreateAssociatedContextAMD)(unsigned int id, GLXContext share_list);
+
+EPOXY_PUBLIC GLXContext (EPOXY_CALLSPEC *epoxy_glXCreateAssociatedContextAttribsAMD)(unsigned int id, GLXContext share_context, const int * attribList);
+
+EPOXY_PUBLIC GLXContext (EPOXY_CALLSPEC *epoxy_glXCreateContext)(Display * dpy, XVisualInfo * vis, GLXContext shareList, Bool direct);
+
+EPOXY_PUBLIC GLXContext (EPOXY_CALLSPEC *epoxy_glXCreateContextAttribsARB)(Display * dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int * attrib_list);
+
+EPOXY_PUBLIC GLXContext (EPOXY_CALLSPEC *epoxy_glXCreateContextWithConfigSGIX)(Display * dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
+
+EPOXY_PUBLIC GLXPbufferSGIX (EPOXY_CALLSPEC *epoxy_glXCreateGLXPbufferSGIX)(Display * dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int * attrib_list);
+
+EPOXY_PUBLIC GLXPixmap (EPOXY_CALLSPEC *epoxy_glXCreateGLXPixmap)(Display * dpy, XVisualInfo * visual, Pixmap pixmap);
+
+EPOXY_PUBLIC GLXPixmap (EPOXY_CALLSPEC *epoxy_glXCreateGLXPixmapMESA)(Display * dpy, XVisualInfo * visual, Pixmap pixmap, Colormap cmap);
+
+EPOXY_PUBLIC GLXPixmap (EPOXY_CALLSPEC *epoxy_glXCreateGLXPixmapWithConfigSGIX)(Display * dpy, GLXFBConfigSGIX config, Pixmap pixmap);
+
+EPOXY_PUBLIC GLXContext (EPOXY_CALLSPEC *epoxy_glXCreateNewContext)(Display * dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
+
+EPOXY_PUBLIC GLXPbuffer (EPOXY_CALLSPEC *epoxy_glXCreatePbuffer)(Display * dpy, GLXFBConfig config, const int * attrib_list);
+
+EPOXY_PUBLIC GLXPixmap (EPOXY_CALLSPEC *epoxy_glXCreatePixmap)(Display * dpy, GLXFBConfig config, Pixmap pixmap, const int * attrib_list);
+
+EPOXY_PUBLIC GLXWindow (EPOXY_CALLSPEC *epoxy_glXCreateWindow)(Display * dpy, GLXFBConfig config, Window win, const int * attrib_list);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXCushionSGI)(Display * dpy, Window window, float cushion);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXDelayBeforeSwapNV)(Display * dpy, GLXDrawable drawable, GLfloat seconds);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXDeleteAssociatedContextAMD)(GLXContext ctx);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXDestroyContext)(Display * dpy, GLXContext ctx);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXDestroyGLXPbufferSGIX)(Display * dpy, GLXPbufferSGIX pbuf);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXDestroyGLXPixmap)(Display * dpy, GLXPixmap pixmap);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXDestroyGLXVideoSourceSGIX)(Display * dpy, GLXVideoSourceSGIX glxvideosource);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXDestroyHyperpipeConfigSGIX)(Display * dpy, int hpId);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXDestroyPbuffer)(Display * dpy, GLXPbuffer pbuf);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXDestroyPixmap)(Display * dpy, GLXPixmap pixmap);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXDestroyWindow)(Display * dpy, GLXWindow win);
+
+EPOXY_PUBLIC GLXVideoCaptureDeviceNV * (EPOXY_CALLSPEC *epoxy_glXEnumerateVideoCaptureDevicesNV)(Display * dpy, int screen, int * nelements);
+
+EPOXY_PUBLIC unsigned int * (EPOXY_CALLSPEC *epoxy_glXEnumerateVideoDevicesNV)(Display * dpy, int screen, int * nelements);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXFreeContextEXT)(Display * dpy, GLXContext context);
+
+EPOXY_PUBLIC unsigned int (EPOXY_CALLSPEC *epoxy_glXGetAGPOffsetMESA)(const void * pointer);
+
+EPOXY_PUBLIC const char * (EPOXY_CALLSPEC *epoxy_glXGetClientString)(Display * dpy, int name);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXGetConfig)(Display * dpy, XVisualInfo * visual, int attrib, int * value);
+
+EPOXY_PUBLIC unsigned int (EPOXY_CALLSPEC *epoxy_glXGetContextGPUIDAMD)(GLXContext ctx);
+
+EPOXY_PUBLIC GLXContextID (EPOXY_CALLSPEC *epoxy_glXGetContextIDEXT)(const GLXContext context);
+
+EPOXY_PUBLIC GLXContext (EPOXY_CALLSPEC *epoxy_glXGetCurrentAssociatedContextAMD)(void);
+
+EPOXY_PUBLIC GLXContext (EPOXY_CALLSPEC *epoxy_glXGetCurrentContext)(void);
+
+EPOXY_PUBLIC Display * (EPOXY_CALLSPEC *epoxy_glXGetCurrentDisplay)(void);
+
+EPOXY_PUBLIC Display * (EPOXY_CALLSPEC *epoxy_glXGetCurrentDisplayEXT)(void);
+
+EPOXY_PUBLIC GLXDrawable (EPOXY_CALLSPEC *epoxy_glXGetCurrentDrawable)(void);
+
+EPOXY_PUBLIC GLXDrawable (EPOXY_CALLSPEC *epoxy_glXGetCurrentReadDrawable)(void);
+
+EPOXY_PUBLIC GLXDrawable (EPOXY_CALLSPEC *epoxy_glXGetCurrentReadDrawableSGI)(void);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXGetFBConfigAttrib)(Display * dpy, GLXFBConfig config, int attribute, int * value);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXGetFBConfigAttribSGIX)(Display * dpy, GLXFBConfigSGIX config, int attribute, int * value);
+
+EPOXY_PUBLIC GLXFBConfigSGIX (EPOXY_CALLSPEC *epoxy_glXGetFBConfigFromVisualSGIX)(Display * dpy, XVisualInfo * vis);
+
+EPOXY_PUBLIC GLXFBConfig * (EPOXY_CALLSPEC *epoxy_glXGetFBConfigs)(Display * dpy, int screen, int * nelements);
+
+EPOXY_PUBLIC unsigned int (EPOXY_CALLSPEC *epoxy_glXGetGPUIDsAMD)(unsigned int maxCount, unsigned int * ids);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXGetGPUInfoAMD)(unsigned int id, int property, GLenum dataType, unsigned int size, void * data);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXGetMscRateOML)(Display * dpy, GLXDrawable drawable, int32_t * numerator, int32_t * denominator);
+
+EPOXY_PUBLIC __GLXextFuncPtr (EPOXY_CALLSPEC *epoxy_glXGetProcAddress)(const GLubyte * procName);
+
+EPOXY_PUBLIC __GLXextFuncPtr (EPOXY_CALLSPEC *epoxy_glXGetProcAddressARB)(const GLubyte * procName);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXGetSelectedEvent)(Display * dpy, GLXDrawable draw, unsigned long * event_mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXGetSelectedEventSGIX)(Display * dpy, GLXDrawable drawable, unsigned long * mask);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXGetSwapIntervalMESA)(void);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXGetSyncValuesOML)(Display * dpy, GLXDrawable drawable, int64_t * ust, int64_t * msc, int64_t * sbc);
+
+EPOXY_PUBLIC Status (EPOXY_CALLSPEC *epoxy_glXGetTransparentIndexSUN)(Display * dpy, Window overlay, Window underlay, unsigned long * pTransparentIndex);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXGetVideoDeviceNV)(Display * dpy, int screen, int numVideoDevices, GLXVideoDeviceNV * pVideoDevice);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXGetVideoInfoNV)(Display * dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long * pulCounterOutputPbuffer, unsigned long * pulCounterOutputVideo);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXGetVideoSyncSGI)(unsigned int * count);
+
+EPOXY_PUBLIC XVisualInfo * (EPOXY_CALLSPEC *epoxy_glXGetVisualFromFBConfig)(Display * dpy, GLXFBConfig config);
+
+EPOXY_PUBLIC XVisualInfo * (EPOXY_CALLSPEC *epoxy_glXGetVisualFromFBConfigSGIX)(Display * dpy, GLXFBConfigSGIX config);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXHyperpipeAttribSGIX)(Display * dpy, int timeSlice, int attrib, int size, void * attribList);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXHyperpipeConfigSGIX)(Display * dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX * cfg, int * hpId);
+
+EPOXY_PUBLIC GLXContext (EPOXY_CALLSPEC *epoxy_glXImportContextEXT)(Display * dpy, GLXContextID contextID);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXIsDirect)(Display * dpy, GLXContext ctx);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXJoinSwapGroupNV)(Display * dpy, GLXDrawable drawable, GLuint group);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXJoinSwapGroupSGIX)(Display * dpy, GLXDrawable drawable, GLXDrawable member);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXLockVideoCaptureDeviceNV)(Display * dpy, GLXVideoCaptureDeviceNV device);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXMakeAssociatedContextCurrentAMD)(GLXContext ctx);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXMakeContextCurrent)(Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXMakeCurrent)(Display * dpy, GLXDrawable drawable, GLXContext ctx);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXMakeCurrentReadSGI)(Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXNamedCopyBufferSubDataNV)(Display * dpy, GLXContext readCtx, GLXContext writeCtx, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXQueryChannelDeltasSGIX)(Display * display, int screen, int channel, int * x, int * y, int * w, int * h);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXQueryChannelRectSGIX)(Display * display, int screen, int channel, int * dx, int * dy, int * dw, int * dh);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXQueryContext)(Display * dpy, GLXContext ctx, int attribute, int * value);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXQueryContextInfoEXT)(Display * dpy, GLXContext context, int attribute, int * value);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXQueryCurrentRendererIntegerMESA)(int attribute, unsigned int * value);
+
+EPOXY_PUBLIC const char * (EPOXY_CALLSPEC *epoxy_glXQueryCurrentRendererStringMESA)(int attribute);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXQueryDrawable)(Display * dpy, GLXDrawable draw, int attribute, unsigned int * value);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXQueryExtension)(Display * dpy, int * errorb, int * event);
+
+EPOXY_PUBLIC const char * (EPOXY_CALLSPEC *epoxy_glXQueryExtensionsString)(Display * dpy, int screen);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXQueryFrameCountNV)(Display * dpy, int screen, GLuint * count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXQueryGLXPbufferSGIX)(Display * dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int * value);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXQueryHyperpipeAttribSGIX)(Display * dpy, int timeSlice, int attrib, int size, void * returnAttribList);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXQueryHyperpipeBestAttribSGIX)(Display * dpy, int timeSlice, int attrib, int size, void * attribList, void * returnAttribList);
+
+EPOXY_PUBLIC GLXHyperpipeConfigSGIX * (EPOXY_CALLSPEC *epoxy_glXQueryHyperpipeConfigSGIX)(Display * dpy, int hpId, int * npipes);
+
+EPOXY_PUBLIC GLXHyperpipeNetworkSGIX * (EPOXY_CALLSPEC *epoxy_glXQueryHyperpipeNetworkSGIX)(Display * dpy, int * npipes);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXQueryMaxSwapBarriersSGIX)(Display * dpy, int screen, int * max);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXQueryMaxSwapGroupsNV)(Display * dpy, int screen, GLuint * maxGroups, GLuint * maxBarriers);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXQueryRendererIntegerMESA)(Display * dpy, int screen, int renderer, int attribute, unsigned int * value);
+
+EPOXY_PUBLIC const char * (EPOXY_CALLSPEC *epoxy_glXQueryRendererStringMESA)(Display * dpy, int screen, int renderer, int attribute);
+
+EPOXY_PUBLIC const char * (EPOXY_CALLSPEC *epoxy_glXQueryServerString)(Display * dpy, int screen, int name);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXQuerySwapGroupNV)(Display * dpy, GLXDrawable drawable, GLuint * group, GLuint * barrier);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXQueryVersion)(Display * dpy, int * maj, int * min);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXQueryVideoCaptureDeviceNV)(Display * dpy, GLXVideoCaptureDeviceNV device, int attribute, int * value);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXReleaseBuffersMESA)(Display * dpy, GLXDrawable drawable);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXReleaseTexImageEXT)(Display * dpy, GLXDrawable drawable, int buffer);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXReleaseVideoCaptureDeviceNV)(Display * dpy, GLXVideoCaptureDeviceNV device);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXReleaseVideoDeviceNV)(Display * dpy, int screen, GLXVideoDeviceNV VideoDevice);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXReleaseVideoImageNV)(Display * dpy, GLXPbuffer pbuf);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXResetFrameCountNV)(Display * dpy, int screen);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXSelectEvent)(Display * dpy, GLXDrawable draw, unsigned long event_mask);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXSelectEventSGIX)(Display * dpy, GLXDrawable drawable, unsigned long mask);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXSendPbufferToVideoNV)(Display * dpy, GLXPbuffer pbuf, int iBufferType, unsigned long * pulCounterPbuffer, GLboolean bBlock);
+
+EPOXY_PUBLIC GLboolean (EPOXY_CALLSPEC *epoxy_glXSet3DfxModeMESA)(GLint mode);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXSwapBuffers)(Display * dpy, GLXDrawable drawable);
+
+EPOXY_PUBLIC int64_t (EPOXY_CALLSPEC *epoxy_glXSwapBuffersMscOML)(Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXSwapIntervalEXT)(Display * dpy, GLXDrawable drawable, int interval);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXSwapIntervalMESA)(unsigned int interval);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXSwapIntervalSGI)(int interval);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXUseXFont)(Font font, int first, int count, int list);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXWaitForMscOML)(Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t * ust, int64_t * msc, int64_t * sbc);
+
+EPOXY_PUBLIC Bool (EPOXY_CALLSPEC *epoxy_glXWaitForSbcOML)(Display * dpy, GLXDrawable drawable, int64_t target_sbc, int64_t * ust, int64_t * msc, int64_t * sbc);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXWaitGL)(void);
+
+EPOXY_PUBLIC int (EPOXY_CALLSPEC *epoxy_glXWaitVideoSyncSGI)(int divisor, int remainder, unsigned int * count);
+
+EPOXY_PUBLIC void (EPOXY_CALLSPEC *epoxy_glXWaitX)(void);
+
+#define glXBindChannelToWindowSGIX epoxy_glXBindChannelToWindowSGIX
+#define glXBindHyperpipeSGIX epoxy_glXBindHyperpipeSGIX
+#define glXBindSwapBarrierNV epoxy_glXBindSwapBarrierNV
+#define glXBindSwapBarrierSGIX epoxy_glXBindSwapBarrierSGIX
+#define glXBindTexImageEXT epoxy_glXBindTexImageEXT
+#define glXBindVideoCaptureDeviceNV epoxy_glXBindVideoCaptureDeviceNV
+#define glXBindVideoDeviceNV epoxy_glXBindVideoDeviceNV
+#define glXBindVideoImageNV epoxy_glXBindVideoImageNV
+#define glXBlitContextFramebufferAMD epoxy_glXBlitContextFramebufferAMD
+#define glXChannelRectSGIX epoxy_glXChannelRectSGIX
+#define glXChannelRectSyncSGIX epoxy_glXChannelRectSyncSGIX
+#define glXChooseFBConfig epoxy_glXChooseFBConfig
+#define glXChooseFBConfigSGIX epoxy_glXChooseFBConfigSGIX
+#define glXChooseVisual epoxy_glXChooseVisual
+#define glXCopyBufferSubDataNV epoxy_glXCopyBufferSubDataNV
+#define glXCopyContext epoxy_glXCopyContext
+#define glXCopyImageSubDataNV epoxy_glXCopyImageSubDataNV
+#define glXCopySubBufferMESA epoxy_glXCopySubBufferMESA
+#define glXCreateAssociatedContextAMD epoxy_glXCreateAssociatedContextAMD
+#define glXCreateAssociatedContextAttribsAMD epoxy_glXCreateAssociatedContextAttribsAMD
+#define glXCreateContext epoxy_glXCreateContext
+#define glXCreateContextAttribsARB epoxy_glXCreateContextAttribsARB
+#define glXCreateContextWithConfigSGIX epoxy_glXCreateContextWithConfigSGIX
+#define glXCreateGLXPbufferSGIX epoxy_glXCreateGLXPbufferSGIX
+#define glXCreateGLXPixmap epoxy_glXCreateGLXPixmap
+#define glXCreateGLXPixmapMESA epoxy_glXCreateGLXPixmapMESA
+#define glXCreateGLXPixmapWithConfigSGIX epoxy_glXCreateGLXPixmapWithConfigSGIX
+#define glXCreateNewContext epoxy_glXCreateNewContext
+#define glXCreatePbuffer epoxy_glXCreatePbuffer
+#define glXCreatePixmap epoxy_glXCreatePixmap
+#define glXCreateWindow epoxy_glXCreateWindow
+#define glXCushionSGI epoxy_glXCushionSGI
+#define glXDelayBeforeSwapNV epoxy_glXDelayBeforeSwapNV
+#define glXDeleteAssociatedContextAMD epoxy_glXDeleteAssociatedContextAMD
+#define glXDestroyContext epoxy_glXDestroyContext
+#define glXDestroyGLXPbufferSGIX epoxy_glXDestroyGLXPbufferSGIX
+#define glXDestroyGLXPixmap epoxy_glXDestroyGLXPixmap
+#define glXDestroyGLXVideoSourceSGIX epoxy_glXDestroyGLXVideoSourceSGIX
+#define glXDestroyHyperpipeConfigSGIX epoxy_glXDestroyHyperpipeConfigSGIX
+#define glXDestroyPbuffer epoxy_glXDestroyPbuffer
+#define glXDestroyPixmap epoxy_glXDestroyPixmap
+#define glXDestroyWindow epoxy_glXDestroyWindow
+#define glXEnumerateVideoCaptureDevicesNV epoxy_glXEnumerateVideoCaptureDevicesNV
+#define glXEnumerateVideoDevicesNV epoxy_glXEnumerateVideoDevicesNV
+#define glXFreeContextEXT epoxy_glXFreeContextEXT
+#define glXGetAGPOffsetMESA epoxy_glXGetAGPOffsetMESA
+#define glXGetClientString epoxy_glXGetClientString
+#define glXGetConfig epoxy_glXGetConfig
+#define glXGetContextGPUIDAMD epoxy_glXGetContextGPUIDAMD
+#define glXGetContextIDEXT epoxy_glXGetContextIDEXT
+#define glXGetCurrentAssociatedContextAMD epoxy_glXGetCurrentAssociatedContextAMD
+#define glXGetCurrentContext epoxy_glXGetCurrentContext
+#define glXGetCurrentDisplay epoxy_glXGetCurrentDisplay
+#define glXGetCurrentDisplayEXT epoxy_glXGetCurrentDisplayEXT
+#define glXGetCurrentDrawable epoxy_glXGetCurrentDrawable
+#define glXGetCurrentReadDrawable epoxy_glXGetCurrentReadDrawable
+#define glXGetCurrentReadDrawableSGI epoxy_glXGetCurrentReadDrawableSGI
+#define glXGetFBConfigAttrib epoxy_glXGetFBConfigAttrib
+#define glXGetFBConfigAttribSGIX epoxy_glXGetFBConfigAttribSGIX
+#define glXGetFBConfigFromVisualSGIX epoxy_glXGetFBConfigFromVisualSGIX
+#define glXGetFBConfigs epoxy_glXGetFBConfigs
+#define glXGetGPUIDsAMD epoxy_glXGetGPUIDsAMD
+#define glXGetGPUInfoAMD epoxy_glXGetGPUInfoAMD
+#define glXGetMscRateOML epoxy_glXGetMscRateOML
+#define glXGetProcAddress epoxy_glXGetProcAddress
+#define glXGetProcAddressARB epoxy_glXGetProcAddressARB
+#define glXGetSelectedEvent epoxy_glXGetSelectedEvent
+#define glXGetSelectedEventSGIX epoxy_glXGetSelectedEventSGIX
+#define glXGetSwapIntervalMESA epoxy_glXGetSwapIntervalMESA
+#define glXGetSyncValuesOML epoxy_glXGetSyncValuesOML
+#define glXGetTransparentIndexSUN epoxy_glXGetTransparentIndexSUN
+#define glXGetVideoDeviceNV epoxy_glXGetVideoDeviceNV
+#define glXGetVideoInfoNV epoxy_glXGetVideoInfoNV
+#define glXGetVideoSyncSGI epoxy_glXGetVideoSyncSGI
+#define glXGetVisualFromFBConfig epoxy_glXGetVisualFromFBConfig
+#define glXGetVisualFromFBConfigSGIX epoxy_glXGetVisualFromFBConfigSGIX
+#define glXHyperpipeAttribSGIX epoxy_glXHyperpipeAttribSGIX
+#define glXHyperpipeConfigSGIX epoxy_glXHyperpipeConfigSGIX
+#define glXImportContextEXT epoxy_glXImportContextEXT
+#define glXIsDirect epoxy_glXIsDirect
+#define glXJoinSwapGroupNV epoxy_glXJoinSwapGroupNV
+#define glXJoinSwapGroupSGIX epoxy_glXJoinSwapGroupSGIX
+#define glXLockVideoCaptureDeviceNV epoxy_glXLockVideoCaptureDeviceNV
+#define glXMakeAssociatedContextCurrentAMD epoxy_glXMakeAssociatedContextCurrentAMD
+#define glXMakeContextCurrent epoxy_glXMakeContextCurrent
+#define glXMakeCurrent epoxy_glXMakeCurrent
+#define glXMakeCurrentReadSGI epoxy_glXMakeCurrentReadSGI
+#define glXNamedCopyBufferSubDataNV epoxy_glXNamedCopyBufferSubDataNV
+#define glXQueryChannelDeltasSGIX epoxy_glXQueryChannelDeltasSGIX
+#define glXQueryChannelRectSGIX epoxy_glXQueryChannelRectSGIX
+#define glXQueryContext epoxy_glXQueryContext
+#define glXQueryContextInfoEXT epoxy_glXQueryContextInfoEXT
+#define glXQueryCurrentRendererIntegerMESA epoxy_glXQueryCurrentRendererIntegerMESA
+#define glXQueryCurrentRendererStringMESA epoxy_glXQueryCurrentRendererStringMESA
+#define glXQueryDrawable epoxy_glXQueryDrawable
+#define glXQueryExtension epoxy_glXQueryExtension
+#define glXQueryExtensionsString epoxy_glXQueryExtensionsString
+#define glXQueryFrameCountNV epoxy_glXQueryFrameCountNV
+#define glXQueryGLXPbufferSGIX epoxy_glXQueryGLXPbufferSGIX
+#define glXQueryHyperpipeAttribSGIX epoxy_glXQueryHyperpipeAttribSGIX
+#define glXQueryHyperpipeBestAttribSGIX epoxy_glXQueryHyperpipeBestAttribSGIX
+#define glXQueryHyperpipeConfigSGIX epoxy_glXQueryHyperpipeConfigSGIX
+#define glXQueryHyperpipeNetworkSGIX epoxy_glXQueryHyperpipeNetworkSGIX
+#define glXQueryMaxSwapBarriersSGIX epoxy_glXQueryMaxSwapBarriersSGIX
+#define glXQueryMaxSwapGroupsNV epoxy_glXQueryMaxSwapGroupsNV
+#define glXQueryRendererIntegerMESA epoxy_glXQueryRendererIntegerMESA
+#define glXQueryRendererStringMESA epoxy_glXQueryRendererStringMESA
+#define glXQueryServerString epoxy_glXQueryServerString
+#define glXQuerySwapGroupNV epoxy_glXQuerySwapGroupNV
+#define glXQueryVersion epoxy_glXQueryVersion
+#define glXQueryVideoCaptureDeviceNV epoxy_glXQueryVideoCaptureDeviceNV
+#define glXReleaseBuffersMESA epoxy_glXReleaseBuffersMESA
+#define glXReleaseTexImageEXT epoxy_glXReleaseTexImageEXT
+#define glXReleaseVideoCaptureDeviceNV epoxy_glXReleaseVideoCaptureDeviceNV
+#define glXReleaseVideoDeviceNV epoxy_glXReleaseVideoDeviceNV
+#define glXReleaseVideoImageNV epoxy_glXReleaseVideoImageNV
+#define glXResetFrameCountNV epoxy_glXResetFrameCountNV
+#define glXSelectEvent epoxy_glXSelectEvent
+#define glXSelectEventSGIX epoxy_glXSelectEventSGIX
+#define glXSendPbufferToVideoNV epoxy_glXSendPbufferToVideoNV
+#define glXSet3DfxModeMESA epoxy_glXSet3DfxModeMESA
+#define glXSwapBuffers epoxy_glXSwapBuffers
+#define glXSwapBuffersMscOML epoxy_glXSwapBuffersMscOML
+#define glXSwapIntervalEXT epoxy_glXSwapIntervalEXT
+#define glXSwapIntervalMESA epoxy_glXSwapIntervalMESA
+#define glXSwapIntervalSGI epoxy_glXSwapIntervalSGI
+#define glXUseXFont epoxy_glXUseXFont
+#define glXWaitForMscOML epoxy_glXWaitForMscOML
+#define glXWaitForSbcOML epoxy_glXWaitForSbcOML
+#define glXWaitGL epoxy_glXWaitGL
+#define glXWaitVideoSyncSGI epoxy_glXWaitVideoSyncSGI
+#define glXWaitX epoxy_glXWaitX
diff --git a/third_party/epoxy/epoxy/khrplatform.h b/third_party/epoxy/epoxy/khrplatform.h
new file mode 100644
index 0000000000..dd22d92701
--- /dev/null
+++ b/third_party/epoxy/epoxy/khrplatform.h
@@ -0,0 +1,290 @@
+#ifndef __khrplatform_h_
+#define __khrplatform_h_
+
+/*
+** Copyright (c) 2008-2018 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** 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:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** 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.
+*/
+
+/* Khronos platform-specific types and definitions.
+ *
+ * The master copy of khrplatform.h is maintained in the Khronos EGL
+ * Registry repository at https://github.com/KhronosGroup/EGL-Registry
+ * The last semantic modification to khrplatform.h was at commit ID:
+ * 67a3e0864c2d75ea5287b9f3d2eb74a745936692
+ *
+ * Adopters may modify this file to suit their platform. Adopters are
+ * encouraged to submit platform specific modifications to the Khronos
+ * group so that they can be included in future versions of this file.
+ * Please submit changes by filing pull requests or issues on
+ * the EGL Registry repository linked above.
+ *
+ *
+ * See the Implementer's Guidelines for information about where this file
+ * should be located on your system and for more details of its use:
+ * http://www.khronos.org/registry/implementers_guide.pdf
+ *
+ * This file should be included as
+ * #include <KHR/khrplatform.h>
+ * by Khronos client API header files that use its types and defines.
+ *
+ * The types in khrplatform.h should only be used to define API-specific types.
+ *
+ * Types defined in khrplatform.h:
+ * khronos_int8_t signed 8 bit
+ * khronos_uint8_t unsigned 8 bit
+ * khronos_int16_t signed 16 bit
+ * khronos_uint16_t unsigned 16 bit
+ * khronos_int32_t signed 32 bit
+ * khronos_uint32_t unsigned 32 bit
+ * khronos_int64_t signed 64 bit
+ * khronos_uint64_t unsigned 64 bit
+ * khronos_intptr_t signed same number of bits as a pointer
+ * khronos_uintptr_t unsigned same number of bits as a pointer
+ * khronos_ssize_t signed size
+ * khronos_usize_t unsigned size
+ * khronos_float_t signed 32 bit floating point
+ * khronos_time_ns_t unsigned 64 bit time in nanoseconds
+ * khronos_utime_nanoseconds_t unsigned time interval or absolute time in
+ * nanoseconds
+ * khronos_stime_nanoseconds_t signed time interval in nanoseconds
+ * khronos_boolean_enum_t enumerated boolean type. This should
+ * only be used as a base type when a client API's boolean type is
+ * an enum. Client APIs which use an integer or other type for
+ * booleans cannot use this as the base type for their boolean.
+ *
+ * Tokens defined in khrplatform.h:
+ *
+ * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
+ *
+ * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
+ * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
+ *
+ * Calling convention macros defined in this file:
+ * KHRONOS_APICALL
+ * KHRONOS_APIENTRY
+ * KHRONOS_APIATTRIBUTES
+ *
+ * These may be used in function prototypes as:
+ *
+ * KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
+ * int arg1,
+ * int arg2) KHRONOS_APIATTRIBUTES;
+ */
+
+#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
+# define KHRONOS_STATIC 1
+#endif
+
+/*-------------------------------------------------------------------------
+ * Definition of KHRONOS_APICALL
+ *-------------------------------------------------------------------------
+ * This precedes the return type of the function in the function prototype.
+ */
+#if defined(KHRONOS_STATIC)
+ /* If the preprocessor constant KHRONOS_STATIC is defined, make the
+ * header compatible with static linking. */
+# define KHRONOS_APICALL
+#elif defined(_WIN32)
+# define KHRONOS_APICALL __declspec(dllimport)
+#elif defined (__SYMBIAN32__)
+# define KHRONOS_APICALL IMPORT_C
+#elif defined(__ANDROID__)
+# define KHRONOS_APICALL __attribute__((visibility("default")))
+#else
+# define KHRONOS_APICALL
+#endif
+
+/*-------------------------------------------------------------------------
+ * Definition of KHRONOS_APIENTRY
+ *-------------------------------------------------------------------------
+ * This follows the return type of the function and precedes the function
+ * name in the function prototype.
+ */
+#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
+ /* Win32 but not WinCE */
+# define KHRONOS_APIENTRY __stdcall
+#else
+# define KHRONOS_APIENTRY
+#endif
+
+/*-------------------------------------------------------------------------
+ * Definition of KHRONOS_APIATTRIBUTES
+ *-------------------------------------------------------------------------
+ * This follows the closing parenthesis of the function prototype arguments.
+ */
+#if defined (__ARMCC_2__)
+#define KHRONOS_APIATTRIBUTES __softfp
+#else
+#define KHRONOS_APIATTRIBUTES
+#endif
+
+/*-------------------------------------------------------------------------
+ * basic type definitions
+ *-----------------------------------------------------------------------*/
+#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
+
+
+/*
+ * Using <stdint.h>
+ */
+#include <stdint.h>
+typedef int32_t khronos_int32_t;
+typedef uint32_t khronos_uint32_t;
+typedef int64_t khronos_int64_t;
+typedef uint64_t khronos_uint64_t;
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#elif defined(__VMS ) || defined(__sgi)
+
+/*
+ * Using <inttypes.h>
+ */
+#include <inttypes.h>
+typedef int32_t khronos_int32_t;
+typedef uint32_t khronos_uint32_t;
+typedef int64_t khronos_int64_t;
+typedef uint64_t khronos_uint64_t;
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
+
+/*
+ * Win32
+ */
+typedef __int32 khronos_int32_t;
+typedef unsigned __int32 khronos_uint32_t;
+typedef __int64 khronos_int64_t;
+typedef unsigned __int64 khronos_uint64_t;
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#elif defined(__sun__) || defined(__digital__)
+
+/*
+ * Sun or Digital
+ */
+typedef int khronos_int32_t;
+typedef unsigned int khronos_uint32_t;
+#if defined(__arch64__) || defined(_LP64)
+typedef long int khronos_int64_t;
+typedef unsigned long int khronos_uint64_t;
+#else
+typedef long long int khronos_int64_t;
+typedef unsigned long long int khronos_uint64_t;
+#endif /* __arch64__ */
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#elif 0
+
+/*
+ * Hypothetical platform with no float or int64 support
+ */
+typedef int khronos_int32_t;
+typedef unsigned int khronos_uint32_t;
+#define KHRONOS_SUPPORT_INT64 0
+#define KHRONOS_SUPPORT_FLOAT 0
+
+#else
+
+/*
+ * Generic fallback
+ */
+#include <stdint.h>
+typedef int32_t khronos_int32_t;
+typedef uint32_t khronos_uint32_t;
+typedef int64_t khronos_int64_t;
+typedef uint64_t khronos_uint64_t;
+#define KHRONOS_SUPPORT_INT64 1
+#define KHRONOS_SUPPORT_FLOAT 1
+
+#endif
+
+
+/*
+ * Types that are (so far) the same on all platforms
+ */
+typedef signed char khronos_int8_t;
+typedef unsigned char khronos_uint8_t;
+typedef signed short int khronos_int16_t;
+typedef unsigned short int khronos_uint16_t;
+
+/*
+ * Types that differ between LLP64 and LP64 architectures - in LLP64,
+ * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
+ * to be the only LLP64 architecture in current use.
+ */
+#ifdef _WIN64
+typedef signed long long int khronos_intptr_t;
+typedef unsigned long long int khronos_uintptr_t;
+typedef signed long long int khronos_ssize_t;
+typedef unsigned long long int khronos_usize_t;
+#else
+typedef signed long int khronos_intptr_t;
+typedef unsigned long int khronos_uintptr_t;
+typedef signed long int khronos_ssize_t;
+typedef unsigned long int khronos_usize_t;
+#endif
+
+#if KHRONOS_SUPPORT_FLOAT
+/*
+ * Float type
+ */
+typedef float khronos_float_t;
+#endif
+
+#if KHRONOS_SUPPORT_INT64
+/* Time types
+ *
+ * These types can be used to represent a time interval in nanoseconds or
+ * an absolute Unadjusted System Time. Unadjusted System Time is the number
+ * of nanoseconds since some arbitrary system event (e.g. since the last
+ * time the system booted). The Unadjusted System Time is an unsigned
+ * 64 bit value that wraps back to 0 every 584 years. Time intervals
+ * may be either signed or unsigned.
+ */
+typedef khronos_uint64_t khronos_utime_nanoseconds_t;
+typedef khronos_int64_t khronos_stime_nanoseconds_t;
+#endif
+
+/*
+ * Dummy value used to pad enum types to 32 bits.
+ */
+#ifndef KHRONOS_MAX_ENUM
+#define KHRONOS_MAX_ENUM 0x7FFFFFFF
+#endif
+
+/*
+ * Enumerated boolean type
+ *
+ * Values other than zero should be considered to be true. Therefore
+ * comparisons should not be made against KHRONOS_TRUE.
+ */
+typedef enum {
+ KHRONOS_FALSE = 0,
+ KHRONOS_TRUE = 1,
+ KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
+} khronos_boolean_enum_t;
+
+#endif /* __khrplatform_h_ */
diff --git a/third_party/epoxy/libepoxy/moz.build b/third_party/epoxy/libepoxy/moz.build
new file mode 100644
index 0000000000..54e8e4e76b
--- /dev/null
+++ b/third_party/epoxy/libepoxy/moz.build
@@ -0,0 +1,12 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
+ CXXFLAGS += CONFIG['MOZ_GTK3_CFLAGS']
+
+LOCAL_INCLUDES += ['/third_party/epoxy']
+
+FINAL_LIBRARY = 'xul'
diff --git a/third_party/gbm/README b/third_party/gbm/README
new file mode 100644
index 0000000000..4b6e2e8e02
--- /dev/null
+++ b/third_party/gbm/README
@@ -0,0 +1,4 @@
+Libgbm is a gbm library wrapper needed to build and run Firefox with
+Pipewire support on Linux (https://gitlab.freedesktop.org/mesa/gbm).
+
+libgbm directory stores headers of libgbm needed for build only.
diff --git a/third_party/gbm/gbm/gbm.h b/third_party/gbm/gbm/gbm.h
new file mode 100644
index 0000000000..e28fa04aae
--- /dev/null
+++ b/third_party/gbm/gbm/gbm.h
@@ -0,0 +1,452 @@
+/*
+ * Copyright © 2011 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.
+ *
+ * Authors:
+ * Benjamin Franzke <benjaminfranzke@googlemail.com>
+ */
+
+#ifndef _GBM_H_
+#define _GBM_H_
+
+#define __GBM__ 1
+
+#include <stddef.h>
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * \file gbm.h
+ * \brief Generic Buffer Manager
+ */
+
+struct gbm_device;
+struct gbm_bo;
+struct gbm_surface;
+
+/**
+ * \mainpage The Generic Buffer Manager
+ *
+ * This module provides an abstraction that the caller can use to request a
+ * buffer from the underlying memory management system for the platform.
+ *
+ * This allows the creation of portable code whilst still allowing access to
+ * the underlying memory manager.
+ */
+
+/**
+ * Abstraction representing the handle to a buffer allocated by the
+ * manager
+ */
+union gbm_bo_handle {
+ void *ptr;
+ int32_t s32;
+ uint32_t u32;
+ int64_t s64;
+ uint64_t u64;
+};
+
+/** Format of the allocated buffer */
+enum gbm_bo_format {
+ /** RGB with 8 bits per channel in a 32 bit value */
+ GBM_BO_FORMAT_XRGB8888,
+ /** ARGB with 8 bits per channel in a 32 bit value */
+ GBM_BO_FORMAT_ARGB8888
+};
+
+
+/**
+ * The FourCC format codes are taken from the drm_fourcc.h definition, and
+ * re-namespaced. New GBM formats must not be added, unless they are
+ * identical ports from drm_fourcc.
+ */
+#define __gbm_fourcc_code(a,b,c,d) ((uint32_t)(a) | ((uint32_t)(b) << 8) | \
+ ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24))
+
+#define GBM_FORMAT_BIG_ENDIAN (1<<31) /* format is big endian instead of little endian */
+
+/* color index */
+#define GBM_FORMAT_C8 __gbm_fourcc_code('C', '8', ' ', ' ') /* [7:0] C */
+
+/* 8 bpp Red */
+#define GBM_FORMAT_R8 __gbm_fourcc_code('R', '8', ' ', ' ') /* [7:0] R */
+
+/* 16 bpp Red */
+#define GBM_FORMAT_R16 __gbm_fourcc_code('R', '1', '6', ' ') /* [15:0] R little endian */
+
+/* 16 bpp RG */
+#define GBM_FORMAT_GR88 __gbm_fourcc_code('G', 'R', '8', '8') /* [15:0] G:R 8:8 little endian */
+
+/* 8 bpp RGB */
+#define GBM_FORMAT_RGB332 __gbm_fourcc_code('R', 'G', 'B', '8') /* [7:0] R:G:B 3:3:2 */
+#define GBM_FORMAT_BGR233 __gbm_fourcc_code('B', 'G', 'R', '8') /* [7:0] B:G:R 2:3:3 */
+
+/* 16 bpp RGB */
+#define GBM_FORMAT_XRGB4444 __gbm_fourcc_code('X', 'R', '1', '2') /* [15:0] x:R:G:B 4:4:4:4 little endian */
+#define GBM_FORMAT_XBGR4444 __gbm_fourcc_code('X', 'B', '1', '2') /* [15:0] x:B:G:R 4:4:4:4 little endian */
+#define GBM_FORMAT_RGBX4444 __gbm_fourcc_code('R', 'X', '1', '2') /* [15:0] R:G:B:x 4:4:4:4 little endian */
+#define GBM_FORMAT_BGRX4444 __gbm_fourcc_code('B', 'X', '1', '2') /* [15:0] B:G:R:x 4:4:4:4 little endian */
+
+#define GBM_FORMAT_ARGB4444 __gbm_fourcc_code('A', 'R', '1', '2') /* [15:0] A:R:G:B 4:4:4:4 little endian */
+#define GBM_FORMAT_ABGR4444 __gbm_fourcc_code('A', 'B', '1', '2') /* [15:0] A:B:G:R 4:4:4:4 little endian */
+#define GBM_FORMAT_RGBA4444 __gbm_fourcc_code('R', 'A', '1', '2') /* [15:0] R:G:B:A 4:4:4:4 little endian */
+#define GBM_FORMAT_BGRA4444 __gbm_fourcc_code('B', 'A', '1', '2') /* [15:0] B:G:R:A 4:4:4:4 little endian */
+
+#define GBM_FORMAT_XRGB1555 __gbm_fourcc_code('X', 'R', '1', '5') /* [15:0] x:R:G:B 1:5:5:5 little endian */
+#define GBM_FORMAT_XBGR1555 __gbm_fourcc_code('X', 'B', '1', '5') /* [15:0] x:B:G:R 1:5:5:5 little endian */
+#define GBM_FORMAT_RGBX5551 __gbm_fourcc_code('R', 'X', '1', '5') /* [15:0] R:G:B:x 5:5:5:1 little endian */
+#define GBM_FORMAT_BGRX5551 __gbm_fourcc_code('B', 'X', '1', '5') /* [15:0] B:G:R:x 5:5:5:1 little endian */
+
+#define GBM_FORMAT_ARGB1555 __gbm_fourcc_code('A', 'R', '1', '5') /* [15:0] A:R:G:B 1:5:5:5 little endian */
+#define GBM_FORMAT_ABGR1555 __gbm_fourcc_code('A', 'B', '1', '5') /* [15:0] A:B:G:R 1:5:5:5 little endian */
+#define GBM_FORMAT_RGBA5551 __gbm_fourcc_code('R', 'A', '1', '5') /* [15:0] R:G:B:A 5:5:5:1 little endian */
+#define GBM_FORMAT_BGRA5551 __gbm_fourcc_code('B', 'A', '1', '5') /* [15:0] B:G:R:A 5:5:5:1 little endian */
+
+#define GBM_FORMAT_RGB565 __gbm_fourcc_code('R', 'G', '1', '6') /* [15:0] R:G:B 5:6:5 little endian */
+#define GBM_FORMAT_BGR565 __gbm_fourcc_code('B', 'G', '1', '6') /* [15:0] B:G:R 5:6:5 little endian */
+
+/* 24 bpp RGB */
+#define GBM_FORMAT_RGB888 __gbm_fourcc_code('R', 'G', '2', '4') /* [23:0] R:G:B little endian */
+#define GBM_FORMAT_BGR888 __gbm_fourcc_code('B', 'G', '2', '4') /* [23:0] B:G:R little endian */
+
+/* 32 bpp RGB */
+#define GBM_FORMAT_XRGB8888 __gbm_fourcc_code('X', 'R', '2', '4') /* [31:0] x:R:G:B 8:8:8:8 little endian */
+#define GBM_FORMAT_XBGR8888 __gbm_fourcc_code('X', 'B', '2', '4') /* [31:0] x:B:G:R 8:8:8:8 little endian */
+#define GBM_FORMAT_RGBX8888 __gbm_fourcc_code('R', 'X', '2', '4') /* [31:0] R:G:B:x 8:8:8:8 little endian */
+#define GBM_FORMAT_BGRX8888 __gbm_fourcc_code('B', 'X', '2', '4') /* [31:0] B:G:R:x 8:8:8:8 little endian */
+
+#define GBM_FORMAT_ARGB8888 __gbm_fourcc_code('A', 'R', '2', '4') /* [31:0] A:R:G:B 8:8:8:8 little endian */
+#define GBM_FORMAT_ABGR8888 __gbm_fourcc_code('A', 'B', '2', '4') /* [31:0] A:B:G:R 8:8:8:8 little endian */
+#define GBM_FORMAT_RGBA8888 __gbm_fourcc_code('R', 'A', '2', '4') /* [31:0] R:G:B:A 8:8:8:8 little endian */
+#define GBM_FORMAT_BGRA8888 __gbm_fourcc_code('B', 'A', '2', '4') /* [31:0] B:G:R:A 8:8:8:8 little endian */
+
+#define GBM_FORMAT_XRGB2101010 __gbm_fourcc_code('X', 'R', '3', '0') /* [31:0] x:R:G:B 2:10:10:10 little endian */
+#define GBM_FORMAT_XBGR2101010 __gbm_fourcc_code('X', 'B', '3', '0') /* [31:0] x:B:G:R 2:10:10:10 little endian */
+#define GBM_FORMAT_RGBX1010102 __gbm_fourcc_code('R', 'X', '3', '0') /* [31:0] R:G:B:x 10:10:10:2 little endian */
+#define GBM_FORMAT_BGRX1010102 __gbm_fourcc_code('B', 'X', '3', '0') /* [31:0] B:G:R:x 10:10:10:2 little endian */
+
+#define GBM_FORMAT_ARGB2101010 __gbm_fourcc_code('A', 'R', '3', '0') /* [31:0] A:R:G:B 2:10:10:10 little endian */
+#define GBM_FORMAT_ABGR2101010 __gbm_fourcc_code('A', 'B', '3', '0') /* [31:0] A:B:G:R 2:10:10:10 little endian */
+#define GBM_FORMAT_RGBA1010102 __gbm_fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */
+#define GBM_FORMAT_BGRA1010102 __gbm_fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */
+
+/*
+ * Floating point 64bpp RGB
+ * IEEE 754-2008 binary16 half-precision float
+ * [15:0] sign:exponent:mantissa 1:5:10
+ */
+#define GBM_FORMAT_XBGR16161616F __gbm_fourcc_code('X', 'B', '4', 'H') /* [63:0] x:B:G:R 16:16:16:16 little endian */
+
+#define GBM_FORMAT_ABGR16161616F __gbm_fourcc_code('A', 'B', '4', 'H') /* [63:0] A:B:G:R 16:16:16:16 little endian */
+
+/* packed YCbCr */
+#define GBM_FORMAT_YUYV __gbm_fourcc_code('Y', 'U', 'Y', 'V') /* [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian */
+#define GBM_FORMAT_YVYU __gbm_fourcc_code('Y', 'V', 'Y', 'U') /* [31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian */
+#define GBM_FORMAT_UYVY __gbm_fourcc_code('U', 'Y', 'V', 'Y') /* [31:0] Y1:Cr0:Y0:Cb0 8:8:8:8 little endian */
+#define GBM_FORMAT_VYUY __gbm_fourcc_code('V', 'Y', 'U', 'Y') /* [31:0] Y1:Cb0:Y0:Cr0 8:8:8:8 little endian */
+
+#define GBM_FORMAT_AYUV __gbm_fourcc_code('A', 'Y', 'U', 'V') /* [31:0] A:Y:Cb:Cr 8:8:8:8 little endian */
+
+/*
+ * 2 plane YCbCr
+ * index 0 = Y plane, [7:0] Y
+ * index 1 = Cr:Cb plane, [15:0] Cr:Cb little endian
+ * or
+ * index 1 = Cb:Cr plane, [15:0] Cb:Cr little endian
+ */
+#define GBM_FORMAT_NV12 __gbm_fourcc_code('N', 'V', '1', '2') /* 2x2 subsampled Cr:Cb plane */
+#define GBM_FORMAT_NV21 __gbm_fourcc_code('N', 'V', '2', '1') /* 2x2 subsampled Cb:Cr plane */
+#define GBM_FORMAT_NV16 __gbm_fourcc_code('N', 'V', '1', '6') /* 2x1 subsampled Cr:Cb plane */
+#define GBM_FORMAT_NV61 __gbm_fourcc_code('N', 'V', '6', '1') /* 2x1 subsampled Cb:Cr plane */
+
+/*
+ * 3 plane YCbCr
+ * index 0: Y plane, [7:0] Y
+ * index 1: Cb plane, [7:0] Cb
+ * index 2: Cr plane, [7:0] Cr
+ * or
+ * index 1: Cr plane, [7:0] Cr
+ * index 2: Cb plane, [7:0] Cb
+ */
+#define GBM_FORMAT_YUV410 __gbm_fourcc_code('Y', 'U', 'V', '9') /* 4x4 subsampled Cb (1) and Cr (2) planes */
+#define GBM_FORMAT_YVU410 __gbm_fourcc_code('Y', 'V', 'U', '9') /* 4x4 subsampled Cr (1) and Cb (2) planes */
+#define GBM_FORMAT_YUV411 __gbm_fourcc_code('Y', 'U', '1', '1') /* 4x1 subsampled Cb (1) and Cr (2) planes */
+#define GBM_FORMAT_YVU411 __gbm_fourcc_code('Y', 'V', '1', '1') /* 4x1 subsampled Cr (1) and Cb (2) planes */
+#define GBM_FORMAT_YUV420 __gbm_fourcc_code('Y', 'U', '1', '2') /* 2x2 subsampled Cb (1) and Cr (2) planes */
+#define GBM_FORMAT_YVU420 __gbm_fourcc_code('Y', 'V', '1', '2') /* 2x2 subsampled Cr (1) and Cb (2) planes */
+#define GBM_FORMAT_YUV422 __gbm_fourcc_code('Y', 'U', '1', '6') /* 2x1 subsampled Cb (1) and Cr (2) planes */
+#define GBM_FORMAT_YVU422 __gbm_fourcc_code('Y', 'V', '1', '6') /* 2x1 subsampled Cr (1) and Cb (2) planes */
+#define GBM_FORMAT_YUV444 __gbm_fourcc_code('Y', 'U', '2', '4') /* non-subsampled Cb (1) and Cr (2) planes */
+#define GBM_FORMAT_YVU444 __gbm_fourcc_code('Y', 'V', '2', '4') /* non-subsampled Cr (1) and Cb (2) planes */
+
+struct gbm_format_name_desc {
+ char name[5];
+};
+
+/**
+ * Flags to indicate the intended use for the buffer - these are passed into
+ * gbm_bo_create(). The caller must set the union of all the flags that are
+ * appropriate
+ *
+ * \sa Use gbm_device_is_format_supported() to check if the combination of format
+ * and use flags are supported
+ */
+enum gbm_bo_flags {
+ /**
+ * Buffer is going to be presented to the screen using an API such as KMS
+ */
+ GBM_BO_USE_SCANOUT = (1 << 0),
+ /**
+ * Buffer is going to be used as cursor
+ */
+ GBM_BO_USE_CURSOR = (1 << 1),
+ /**
+ * Deprecated
+ */
+ GBM_BO_USE_CURSOR_64X64 = GBM_BO_USE_CURSOR,
+ /**
+ * Buffer is to be used for rendering - for example it is going to be used
+ * as the storage for a color buffer
+ */
+ GBM_BO_USE_RENDERING = (1 << 2),
+ /**
+ * Buffer can be used for gbm_bo_write. This is guaranteed to work
+ * with GBM_BO_USE_CURSOR, but may not work for other combinations.
+ */
+ GBM_BO_USE_WRITE = (1 << 3),
+ /**
+ * Buffer is linear, i.e. not tiled.
+ */
+ GBM_BO_USE_LINEAR = (1 << 4),
+ /**
+ * Buffer is protected, i.e. encrypted and not readable by CPU or any
+ * other non-secure / non-trusted components nor by non-trusted OpenGL,
+ * OpenCL, and Vulkan applications.
+ */
+ GBM_BO_USE_PROTECTED = (1 << 5),
+};
+
+int
+gbm_device_get_fd(struct gbm_device *gbm);
+
+const char *
+gbm_device_get_backend_name(struct gbm_device *gbm);
+
+int
+gbm_device_is_format_supported(struct gbm_device *gbm,
+ uint32_t format, uint32_t flags);
+
+int
+gbm_device_get_format_modifier_plane_count(struct gbm_device *gbm,
+ uint32_t format,
+ uint64_t modifier);
+
+void
+gbm_device_destroy(struct gbm_device *gbm);
+
+struct gbm_device *
+gbm_create_device(int fd);
+
+struct gbm_bo *
+gbm_bo_create(struct gbm_device *gbm,
+ uint32_t width, uint32_t height,
+ uint32_t format, uint32_t flags);
+
+struct gbm_bo *
+gbm_bo_create_with_modifiers(struct gbm_device *gbm,
+ uint32_t width, uint32_t height,
+ uint32_t format,
+ const uint64_t *modifiers,
+ const unsigned int count);
+
+struct gbm_bo *
+gbm_bo_create_with_modifiers2(struct gbm_device *gbm,
+ uint32_t width, uint32_t height,
+ uint32_t format,
+ const uint64_t *modifiers,
+ const unsigned int count,
+ uint32_t flags);
+
+#define GBM_BO_IMPORT_WL_BUFFER 0x5501
+#define GBM_BO_IMPORT_EGL_IMAGE 0x5502
+#define GBM_BO_IMPORT_FD 0x5503
+#define GBM_BO_IMPORT_FD_MODIFIER 0x5504
+
+struct gbm_import_fd_data {
+ int fd;
+ uint32_t width;
+ uint32_t height;
+ uint32_t stride;
+ uint32_t format;
+};
+
+#define GBM_MAX_PLANES 4
+
+struct gbm_import_fd_modifier_data {
+ uint32_t width;
+ uint32_t height;
+ uint32_t format;
+ uint32_t num_fds;
+ int fds[GBM_MAX_PLANES];
+ int strides[GBM_MAX_PLANES];
+ int offsets[GBM_MAX_PLANES];
+ uint64_t modifier;
+};
+
+struct gbm_bo *
+gbm_bo_import(struct gbm_device *gbm, uint32_t type,
+ void *buffer, uint32_t flags);
+
+/**
+ * Flags to indicate the type of mapping for the buffer - these are
+ * passed into gbm_bo_map(). The caller must set the union of all the
+ * flags that are appropriate.
+ *
+ * These flags are independent of the GBM_BO_USE_* creation flags. However,
+ * mapping the buffer may require copying to/from a staging buffer.
+ *
+ * See also: pipe_map_flags
+ */
+enum gbm_bo_transfer_flags {
+ /**
+ * Buffer contents read back (or accessed directly) at transfer
+ * create time.
+ */
+ GBM_BO_TRANSFER_READ = (1 << 0),
+ /**
+ * Buffer contents will be written back at unmap time
+ * (or modified as a result of being accessed directly).
+ */
+ GBM_BO_TRANSFER_WRITE = (1 << 1),
+ /**
+ * Read/modify/write
+ */
+ GBM_BO_TRANSFER_READ_WRITE = (GBM_BO_TRANSFER_READ | GBM_BO_TRANSFER_WRITE),
+};
+
+void *
+gbm_bo_map(struct gbm_bo *bo,
+ uint32_t x, uint32_t y, uint32_t width, uint32_t height,
+ uint32_t flags, uint32_t *stride, void **map_data);
+
+void
+gbm_bo_unmap(struct gbm_bo *bo, void *map_data);
+
+uint32_t
+gbm_bo_get_width(struct gbm_bo *bo);
+
+uint32_t
+gbm_bo_get_height(struct gbm_bo *bo);
+
+uint32_t
+gbm_bo_get_stride(struct gbm_bo *bo);
+
+uint32_t
+gbm_bo_get_stride_for_plane(struct gbm_bo *bo, int plane);
+
+uint32_t
+gbm_bo_get_format(struct gbm_bo *bo);
+
+uint32_t
+gbm_bo_get_bpp(struct gbm_bo *bo);
+
+uint32_t
+gbm_bo_get_offset(struct gbm_bo *bo, int plane);
+
+struct gbm_device *
+gbm_bo_get_device(struct gbm_bo *bo);
+
+union gbm_bo_handle
+gbm_bo_get_handle(struct gbm_bo *bo);
+
+int
+gbm_bo_get_fd(struct gbm_bo *bo);
+
+uint64_t
+gbm_bo_get_modifier(struct gbm_bo *bo);
+
+int
+gbm_bo_get_plane_count(struct gbm_bo *bo);
+
+union gbm_bo_handle
+gbm_bo_get_handle_for_plane(struct gbm_bo *bo, int plane);
+
+int
+gbm_bo_get_fd_for_plane(struct gbm_bo *bo, int plane);
+
+int
+gbm_bo_write(struct gbm_bo *bo, const void *buf, size_t count);
+
+void
+gbm_bo_set_user_data(struct gbm_bo *bo, void *data,
+ void (*destroy_user_data)(struct gbm_bo *, void *));
+
+void *
+gbm_bo_get_user_data(struct gbm_bo *bo);
+
+void
+gbm_bo_destroy(struct gbm_bo *bo);
+
+struct gbm_surface *
+gbm_surface_create(struct gbm_device *gbm,
+ uint32_t width, uint32_t height,
+ uint32_t format, uint32_t flags);
+
+struct gbm_surface *
+gbm_surface_create_with_modifiers(struct gbm_device *gbm,
+ uint32_t width, uint32_t height,
+ uint32_t format,
+ const uint64_t *modifiers,
+ const unsigned int count);
+
+struct gbm_surface *
+gbm_surface_create_with_modifiers2(struct gbm_device *gbm,
+ uint32_t width, uint32_t height,
+ uint32_t format,
+ const uint64_t *modifiers,
+ const unsigned int count,
+ uint32_t flags);
+
+struct gbm_bo *
+gbm_surface_lock_front_buffer(struct gbm_surface *surface);
+
+void
+gbm_surface_release_buffer(struct gbm_surface *surface, struct gbm_bo *bo);
+
+int
+gbm_surface_has_free_buffers(struct gbm_surface *surface);
+
+void
+gbm_surface_destroy(struct gbm_surface *surface);
+
+char *
+gbm_format_get_name(uint32_t gbm_format, struct gbm_format_name_desc *desc);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/third_party/gbm/libgbm/moz.build b/third_party/gbm/libgbm/moz.build
new file mode 100644
index 0000000000..0953d2f17a
--- /dev/null
+++ b/third_party/gbm/libgbm/moz.build
@@ -0,0 +1,16 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+SOURCES += [
+ 'mozgbm.cpp',
+]
+
+if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
+ CXXFLAGS += CONFIG['MOZ_GTK3_CFLAGS']
+
+LOCAL_INCLUDES += ['/third_party/gbm']
+
+FINAL_LIBRARY = 'xul'
diff --git a/third_party/gbm/libgbm/mozgbm.cpp b/third_party/gbm/libgbm/mozgbm.cpp
new file mode 100644
index 0000000000..bc024a11c0
--- /dev/null
+++ b/third_party/gbm/libgbm/mozgbm.cpp
@@ -0,0 +1,66 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
+ */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "mozilla/Types.h"
+#include "prlink.h"
+
+#include <gbm/gbm.h>
+
+#define GET_FUNC(func, lib) \
+ func##_fn = \
+ (decltype(func##_fn))PR_FindFunctionSymbol(lib, #func) \
+
+#define IS_FUNC_LOADED(func) \
+ (func != nullptr) \
+
+static struct gbm_device * (*gbm_create_device_fn)(int fd);
+static void (*gbm_device_destroy_fn)(struct gbm_device* gbm);
+
+bool IsGBMLibraryLoaded() {
+ static bool isLoaded =
+ (IS_FUNC_LOADED(gbm_create_device_fn) &&
+ IS_FUNC_LOADED(gbm_device_destroy_fn));
+
+ return isLoaded;
+}
+
+bool LoadGBMLibrary() {
+ static PRLibrary* gbmLib = nullptr;
+ static bool gbmInitialized = false;
+
+ //TODO Thread safe
+ if (!gbmInitialized) {
+ gbmInitialized = true;
+ gbmLib = PR_LoadLibrary("libgbm.so.1");
+ if (!gbmLib) {
+ return false;
+ }
+
+ GET_FUNC(gbm_create_device, gbmLib);
+ GET_FUNC(gbm_device_destroy, gbmLib);
+ }
+
+ return IsGBMLibraryLoaded();
+}
+
+struct gbm_device *
+gbm_create_device(int fd)
+{
+ if (!LoadGBMLibrary()) {
+ return nullptr;
+ }
+ return gbm_create_device_fn(fd);
+}
+
+void
+gbm_device_destroy(struct gbm_device* gbm)
+{
+ if (!LoadGBMLibrary()) {
+ return;
+ }
+ return gbm_device_destroy_fn(gbm);
+}
diff --git a/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build b/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
index d5e8525ed1..55475488d8 100644
--- a/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
+++ b/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
@@ -26,6 +26,10 @@ LOCAL_INCLUDES += [
"/ipc/chromium/src",
"/media/libyuv/",
"/media/libyuv/libyuv/include/",
+ "/third_party/drm/",
+ "/third_party/epoxy/",
+ "/third_party/gbm/",
+ "/third_party/gbm/",
"/third_party/libwebrtc/",
"/third_party/libwebrtc/third_party/abseil-cpp/",
"/third_party/pipewire/",
@@ -133,15 +137,18 @@ if CONFIG["OS_TARGET"] == "OpenBSD":
]
SOURCES += [
- "/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc"
+ "/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/egl_dmabuf.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/scoped_glib.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/screencast_portal.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/shared_screencast_stream.cc"
]
UNIFIED_SOURCES += [
"/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc",
- "/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
"/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_x11.cc",
"/third_party/libwebrtc/modules/desktop_capture/linux/shared_x_display.cc",
- "/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc",
"/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_x11.cc",
"/third_party/libwebrtc/modules/desktop_capture/linux/window_finder_x11.cc",
"/third_party/libwebrtc/modules/desktop_capture/linux/window_list_utils.cc",
@@ -241,12 +248,12 @@ if CONFIG["CPU_ARCH"] == "arm":
DEFINES["_GNU_SOURCE"] = True
SOURCES += [
- "/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc"
- ]
-
- UNIFIED_SOURCES += [
- "/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
- "/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc"
+ "/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/egl_dmabuf.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/scoped_glib.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/screencast_portal.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/shared_screencast_stream.cc"
]
if CONFIG["CPU_ARCH"] == "ppc64":
@@ -300,12 +307,12 @@ if CONFIG["CPU_ARCH"] == "aarch64" and CONFIG["OS_TARGET"] == "Linux":
DEFINES["_GNU_SOURCE"] = True
SOURCES += [
- "/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc"
- ]
-
- UNIFIED_SOURCES += [
- "/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
- "/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc"
+ "/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/egl_dmabuf.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/scoped_glib.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/screencast_portal.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/shared_screencast_stream.cc"
]
if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Linux":
@@ -318,12 +325,12 @@ if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Linux":
DEFINES["_GNU_SOURCE"] = True
SOURCES += [
- "/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc"
- ]
-
- UNIFIED_SOURCES += [
- "/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
- "/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc"
+ "/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/egl_dmabuf.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/scoped_glib.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/screencast_portal.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/shared_screencast_stream.cc"
]
if CONFIG["CPU_ARCH"] == "x86_64" and CONFIG["OS_TARGET"] == "Linux":
@@ -332,12 +339,12 @@ if CONFIG["CPU_ARCH"] == "x86_64" and CONFIG["OS_TARGET"] == "Linux":
DEFINES["_GNU_SOURCE"] = True
SOURCES += [
- "/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc"
- ]
-
- UNIFIED_SOURCES += [
- "/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
- "/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc"
+ "/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/egl_dmabuf.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/scoped_glib.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/screencast_portal.cc",
+ "/third_party/libwebrtc/modules/desktop_capture/linux/shared_screencast_stream.cc"
]
if CONFIG["CPU_ARCH"] == "aarch64" and CONFIG["MOZ_X11"] == "1" and CONFIG["OS_TARGET"] == "Linux":
diff --git a/third_party/libwebrtc/modules/desktop_capture/desktop_capture_options.cc b/third_party/libwebrtc/modules/desktop_capture/desktop_capture_options.cc
index c89896d5fd..c8ef822938 100644
--- a/third_party/libwebrtc/modules/desktop_capture/desktop_capture_options.cc
+++ b/third_party/libwebrtc/modules/desktop_capture/desktop_capture_options.cc
@@ -14,6 +14,9 @@
#elif defined(WEBRTC_WIN)
#include "modules/desktop_capture/win/full_screen_win_application_handler.h"
#endif
+#if defined(WEBRTC_USE_PIPEWIRE)
+#include "modules/desktop_capture/linux/shared_screencast_stream.h"
+#endif
namespace webrtc {
@@ -35,6 +38,9 @@ DesktopCaptureOptions DesktopCaptureOptions::CreateDefault() {
#if defined(WEBRTC_USE_X11)
result.set_x_display(SharedXDisplay::CreateDefault());
#endif
+#if defined(WEBRTC_USE_PIPEWIRE)
+ result.set_screencast_stream(SharedScreenCastStream::CreateDefault());
+#endif
#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
result.set_configuration_monitor(new DesktopConfigurationMonitor());
result.set_full_screen_window_detector(
diff --git a/third_party/libwebrtc/modules/desktop_capture/desktop_capture_options.h b/third_party/libwebrtc/modules/desktop_capture/desktop_capture_options.h
index ee0dd3ab40..ac56c8c1c1 100644
--- a/third_party/libwebrtc/modules/desktop_capture/desktop_capture_options.h
+++ b/third_party/libwebrtc/modules/desktop_capture/desktop_capture_options.h
@@ -17,6 +17,10 @@
#include "modules/desktop_capture/linux/shared_x_display.h"
#endif
+#if defined(WEBRTC_USE_PIPEWIRE)
+#include "modules/desktop_capture/linux/shared_screencast_stream.h"
+#endif
+
#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
#include "modules/desktop_capture/mac/desktop_configuration_monitor.h"
#endif
@@ -149,13 +153,26 @@ class RTC_EXPORT DesktopCaptureOptions {
#if defined(WEBRTC_USE_PIPEWIRE)
bool allow_pipewire() const { return allow_pipewire_; }
void set_allow_pipewire(bool allow) { allow_pipewire_ = allow; }
+
+ const rtc::scoped_refptr<SharedScreenCastStream>& screencast_stream() const {
+ return screencast_stream_;
+ }
+ void set_screencast_stream(
+ rtc::scoped_refptr<SharedScreenCastStream> stream) {
+ screencast_stream_ = stream;
+ }
#endif
private:
#if defined(WEBRTC_USE_X11)
rtc::scoped_refptr<SharedXDisplay> x_display_;
#endif
-
+#if defined(WEBRTC_USE_PIPEWIRE)
+ // An instance of shared PipeWire ScreenCast stream we share between
+ // BaseCapturerPipeWire and MouseCursorMonitorPipeWire as cursor information
+ // is sent together with screen content.
+ rtc::scoped_refptr<SharedScreenCastStream> screencast_stream_;
+#endif
#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
rtc::scoped_refptr<DesktopConfigurationMonitor> configuration_monitor_;
bool allow_iosurface_ = false;
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc b/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
index 2fd3b1a575..e4685fc814 100644
--- a/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
@@ -10,937 +10,67 @@
#include "modules/desktop_capture/linux/base_capturer_pipewire.h"
-#include <gio/gunixfdlist.h>
-#include <glib-object.h>
-#include <spa/param/format-utils.h>
-#include <spa/param/props.h>
-
-#include <sys/mman.h>
-#include <sys/ioctl.h>
-#include <sys/syscall.h>
-
-#include <cstring>
-#include <memory>
-#include <utility>
-
-#include "absl/memory/memory.h"
#include "modules/desktop_capture/desktop_capture_options.h"
#include "modules/desktop_capture/desktop_capturer.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
-#if defined(WEBRTC_DLOPEN_PIPEWIRE)
-#include "modules/desktop_capture/linux/pipewire_stubs.h"
-
-using modules_desktop_capture_linux::InitializeStubs;
-using modules_desktop_capture_linux::kModulePipewire;
-using modules_desktop_capture_linux::StubPathMap;
-#endif // defined(WEBRTC_DLOPEN_PIPEWIRE)
-
namespace webrtc {
-const char kDesktopBusName[] = "org.freedesktop.portal.Desktop";
-const char kDesktopObjectPath[] = "/org/freedesktop/portal/desktop";
-const char kDesktopRequestObjectPath[] =
- "/org/freedesktop/portal/desktop/request";
-const char kSessionInterfaceName[] = "org.freedesktop.portal.Session";
-const char kRequestInterfaceName[] = "org.freedesktop.portal.Request";
-const char kScreenCastInterfaceName[] = "org.freedesktop.portal.ScreenCast";
-
-const int kBytesPerPixel = 4;
-
-#if defined(WEBRTC_DLOPEN_PIPEWIRE)
-const char kPipeWireLib[] = "libpipewire-0.2.so.1";
-#endif
-
-// static
-struct dma_buf_sync {
- uint64_t flags;
-};
-#define DMA_BUF_SYNC_READ (1 << 0)
-#define DMA_BUF_SYNC_START (0 << 2)
-#define DMA_BUF_SYNC_END (1 << 2)
-#define DMA_BUF_BASE 'b'
-#define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
-
-static void SyncDmaBuf(int fd, uint64_t start_or_end) {
- struct dma_buf_sync sync = { 0 };
-
- sync.flags = start_or_end | DMA_BUF_SYNC_READ;
-
- while(true) {
- int ret;
- ret = ioctl (fd, DMA_BUF_IOCTL_SYNC, &sync);
- if (ret == -1 && errno == EINTR) {
- continue;
- } else if (ret == -1) {
- RTC_LOG(LS_ERROR) << "Failed to synchronize DMA buffer: " << g_strerror(errno);
- break;
- } else {
- break;
- }
- }
-}
-
-// static
-void BaseCapturerPipeWire::OnCoreError(void *data,
- uint32_t id,
- int seq,
- int res,
- const char *message) {
- RTC_LOG(LS_ERROR) << "core error: " << message;
-}
-
-// static
-void BaseCapturerPipeWire::OnStreamStateChanged(void* data,
- pw_stream_state old_state,
- pw_stream_state state,
- const char* error_message) {
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
- RTC_DCHECK(that);
-
- switch (state) {
- case PW_STREAM_STATE_ERROR:
- RTC_LOG(LS_ERROR) << "PipeWire stream state error: " << error_message;
- break;
- case PW_STREAM_STATE_PAUSED:
- case PW_STREAM_STATE_STREAMING:
- case PW_STREAM_STATE_UNCONNECTED:
- case PW_STREAM_STATE_CONNECTING:
- break;
- }
+BaseCapturerPipeWire::BaseCapturerPipeWire(const DesktopCaptureOptions& options)
+ : options_(options) {
+ screencast_portal_ = std::make_unique<ScreenCastPortal>(
+ ScreenCastPortal::CaptureSourceType::kAnyScreenContent, this);
}
-// static
-void BaseCapturerPipeWire::OnStreamParamChanged(void *data, uint32_t id,
- const struct spa_pod *format) {
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
- RTC_DCHECK(that);
-
- RTC_LOG(LS_INFO) << "PipeWire stream param changed.";
-
- if (!format || id != SPA_PARAM_Format) {
- return;
- }
-
- spa_format_video_raw_parse(format, &that->spa_video_format_);
-
- auto width = that->spa_video_format_.size.width;
- auto height = that->spa_video_format_.size.height;
- // In order to be able to build in the non unified environment kBytesPerPixel
- // must be fully qualified, see Bug 1725145
- auto stride = SPA_ROUND_UP_N(width * BasicDesktopFrame::kBytesPerPixel, 4);
- auto size = height * stride;
-
- that->desktop_size_ = DesktopSize(width, height);
-
- uint8_t buffer[1024] = {};
- auto builder = spa_pod_builder{buffer, sizeof(buffer)};
-
- // Setup buffers and meta header for new format.
- const struct spa_pod* params[3];
- params[0] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
- SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
- SPA_PARAM_BUFFERS_dataType, SPA_POD_CHOICE_FLAGS_Int((1<<SPA_DATA_MemPtr) |
- (1<<SPA_DATA_MemFd)),
- SPA_PARAM_BUFFERS_size, SPA_POD_Int(size),
- SPA_PARAM_BUFFERS_stride, SPA_POD_Int(stride),
- SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(8, 1, 32)));
- params[1] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
- SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
- SPA_PARAM_META_type, SPA_POD_Id(SPA_META_Header),
- SPA_PARAM_META_size, SPA_POD_Int(sizeof(struct spa_meta_header))));
- params[2] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
- SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
- SPA_PARAM_META_type, SPA_POD_Id (SPA_META_VideoCrop),
- SPA_PARAM_META_size, SPA_POD_Int (sizeof(struct spa_meta_region))));
- pw_stream_update_params(that->pw_stream_, params, 3);
-}
-
-// static
-void BaseCapturerPipeWire::OnStreamProcess(void* data) {
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
- RTC_DCHECK(that);
-
- struct pw_buffer *next_buffer;
- struct pw_buffer *buffer = nullptr;
+BaseCapturerPipeWire::~BaseCapturerPipeWire() {}
- next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
- while (next_buffer) {
- buffer = next_buffer;
- next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
-
- if (next_buffer) {
- pw_stream_queue_buffer (that->pw_stream_, buffer);
- }
- }
-
- if (!buffer) {
- return;
+void BaseCapturerPipeWire::OnScreenCastRequestResult(
+ ScreenCastPortal::RequestResponse result,
+ uint32_t stream_node_id,
+ int fd) {
+ if (result != ScreenCastPortal::RequestResponse::kSuccess ||
+ !options_.screencast_stream()->StartScreenCastStream(stream_node_id,
+ fd)) {
+ capturer_failed_ = true;
+ RTC_LOG(LS_ERROR) << "ScreenCastPortal failed: "
+ << static_cast<uint>(result);
}
-
- that->HandleBuffer(buffer);
-
- pw_stream_queue_buffer(that->pw_stream_, buffer);
}
-BaseCapturerPipeWire::BaseCapturerPipeWire(CaptureSourceType source_type)
- : capture_source_type_(source_type) {}
-
-BaseCapturerPipeWire::~BaseCapturerPipeWire() {
- if (pw_main_loop_) {
- pw_thread_loop_stop(pw_main_loop_);
- }
-
- if (pw_stream_) {
- pw_stream_destroy(pw_stream_);
- }
-
- if (pw_core_) {
- pw_core_disconnect(pw_core_);
- }
-
- if (pw_context_) {
- pw_context_destroy(pw_context_);
- }
-
- if (pw_main_loop_) {
- pw_thread_loop_destroy(pw_main_loop_);
+void BaseCapturerPipeWire::OnScreenCastSessionClosed() {
+ if (!capturer_failed_) {
+ options_.screencast_stream()->StopScreenCastStream();
}
-
- if (start_request_signal_id_) {
- g_dbus_connection_signal_unsubscribe(connection_, start_request_signal_id_);
- }
- if (sources_request_signal_id_) {
- g_dbus_connection_signal_unsubscribe(connection_,
- sources_request_signal_id_);
- }
- if (session_request_signal_id_) {
- g_dbus_connection_signal_unsubscribe(connection_,
- session_request_signal_id_);
- }
-
- if (session_handle_) {
- GDBusMessage* message = g_dbus_message_new_method_call(
- kDesktopBusName, session_handle_, kSessionInterfaceName, "Close");
- if (message) {
- GError* error = nullptr;
- g_dbus_connection_send_message(connection_, message,
- G_DBUS_SEND_MESSAGE_FLAGS_NONE,
- /*out_serial=*/nullptr, &error);
- if (error) {
- RTC_LOG(LS_ERROR) << "Failed to close the session: " << error->message;
- g_error_free(error);
- }
- g_object_unref(message);
- }
- }
-
- g_free(start_handle_);
- g_free(sources_handle_);
- g_free(session_handle_);
- g_free(portal_handle_);
-
- if (cancellable_) {
- g_cancellable_cancel(cancellable_);
- g_object_unref(cancellable_);
- cancellable_ = nullptr;
- }
-
- if (proxy_) {
- g_object_unref(proxy_);
- proxy_ = nullptr;
- }
-
- if (pw_fd_ != -1) {
- close(pw_fd_);
- }
-}
-
-void BaseCapturerPipeWire::InitPortal() {
- cancellable_ = g_cancellable_new();
- g_dbus_proxy_new_for_bus(
- G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, /*info=*/nullptr,
- kDesktopBusName, kDesktopObjectPath, kScreenCastInterfaceName,
- cancellable_,
- reinterpret_cast<GAsyncReadyCallback>(OnProxyRequested), this);
-}
-
-void BaseCapturerPipeWire::InitPipeWire() {
-#if defined(WEBRTC_DLOPEN_PIPEWIRE)
- StubPathMap paths;
-
- // Check if the PipeWire library is available.
- paths[kModulePipewire].push_back(kPipeWireLib);
- if (!InitializeStubs(paths)) {
- RTC_LOG(LS_ERROR) << "Failed to load the PipeWire library and symbols.";
- portal_init_failed_ = true;
- return;
- }
-#endif // defined(WEBRTC_DLOPEN_PIPEWIRE)
-
- pw_init(/*argc=*/nullptr, /*argc=*/nullptr);
-
- pw_main_loop_ = pw_thread_loop_new("pipewire-main-loop", nullptr);
- pw_context_ = pw_context_new(pw_thread_loop_get_loop(pw_main_loop_), nullptr, 0);
- if (!pw_context_) {
- RTC_LOG(LS_ERROR) << "Failed to create PipeWire context";
- return;
- }
-
- pw_core_ = pw_context_connect_fd(pw_context_, pw_fd_, nullptr, 0);
- if (!pw_core_) {
- RTC_LOG(LS_ERROR) << "Failed to connect PipeWire context";
- return;
- }
-
- // Initialize event handlers, remote end and stream-related.
- pw_core_events_.version = PW_VERSION_CORE_EVENTS;
- pw_core_events_.error = &OnCoreError;
-
- pw_stream_events_.version = PW_VERSION_STREAM_EVENTS;
- pw_stream_events_.state_changed = &OnStreamStateChanged;
- pw_stream_events_.param_changed = &OnStreamParamChanged;
- pw_stream_events_.process = &OnStreamProcess;
-
- pw_core_add_listener(pw_core_, &spa_core_listener_, &pw_core_events_, this);
-
- pw_stream_ = CreateReceivingStream();
- if (!pw_stream_) {
- RTC_LOG(LS_ERROR) << "Failed to create PipeWire stream";
- return;
- }
-
- if (pw_thread_loop_start(pw_main_loop_) < 0) {
- RTC_LOG(LS_ERROR) << "Failed to start main PipeWire loop";
- portal_init_failed_ = true;
- }
-
- RTC_LOG(LS_INFO) << "PipeWire remote opened.";
-}
-
-pw_stream* BaseCapturerPipeWire::CreateReceivingStream() {
- spa_rectangle pwMinScreenBounds = spa_rectangle{1, 1};
- spa_rectangle pwMaxScreenBounds = spa_rectangle{UINT32_MAX, UINT32_MAX};
-
- auto stream = pw_stream_new(pw_core_, "webrtc-pipewire-stream", nullptr);
-
- if (!stream) {
- RTC_LOG(LS_ERROR) << "Could not create receiving stream.";
- return nullptr;
- }
-
- uint8_t buffer[1024] = {};
- const spa_pod* params[2];
- spa_pod_builder builder = SPA_POD_BUILDER_INIT(buffer, sizeof (buffer));
-
- params[0] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
- SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
- SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video),
- SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
- SPA_FORMAT_VIDEO_format, SPA_POD_CHOICE_ENUM_Id(5, SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_RGBx, SPA_VIDEO_FORMAT_RGBA,
- SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_BGRA),
- SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle(&pwMinScreenBounds,
- &pwMinScreenBounds,
- &pwMaxScreenBounds),
- 0));
- pw_stream_add_listener(stream, &spa_stream_listener_, &pw_stream_events_, this);
-
- if (pw_stream_connect(stream, PW_DIRECTION_INPUT, pw_stream_node_id_,
- PW_STREAM_FLAG_AUTOCONNECT, params, 1) != 0) {
- RTC_LOG(LS_ERROR) << "Could not connect receiving stream.";
- portal_init_failed_ = true;
- }
-
- return stream;
-}
-
-static void SpaBufferUnmap(unsigned char *map, int map_size, bool IsDMABuf, int fd) {
- if (map) {
- if (IsDMABuf) {
- SyncDmaBuf(fd, DMA_BUF_SYNC_END);
- }
- munmap(map, map_size);
- }
-}
-
-void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) {
- spa_buffer* spaBuffer = buffer->buffer;
- uint8_t *map = nullptr;
- uint8_t* src = nullptr;
-
- if (spaBuffer->datas[0].chunk->size == 0) {
- RTC_LOG(LS_ERROR) << "Failed to get video stream: Zero size.";
- return;
- }
-
- switch (spaBuffer->datas[0].type) {
- case SPA_DATA_MemFd:
- case SPA_DATA_DmaBuf:
- map = static_cast<uint8_t*>(mmap(
- nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
- PROT_READ, MAP_PRIVATE, spaBuffer->datas[0].fd, 0));
- if (map == MAP_FAILED) {
- RTC_LOG(LS_ERROR) << "Failed to mmap memory: " << std::strerror(errno);
- return;
- }
- if (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) {
- SyncDmaBuf(spaBuffer->datas[0].fd, DMA_BUF_SYNC_START);
- }
- src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t);
- break;
- case SPA_DATA_MemPtr:
- map = nullptr;
- src = static_cast<uint8_t*>(spaBuffer->datas[0].data);
- break;
- default:
- return;
- }
-
- if (!src) {
- RTC_LOG(LS_ERROR) << "Failed to get video stream: Wrong data after mmap()";
- SpaBufferUnmap(map,
- spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
- spaBuffer->datas[0].type == SPA_DATA_DmaBuf, spaBuffer->datas[0].fd);
- return;
- }
-
- struct spa_meta_region* video_metadata =
- static_cast<struct spa_meta_region*>(
- spa_buffer_find_meta_data(spaBuffer, SPA_META_VideoCrop, sizeof(*video_metadata)));
-
- // Video size from metada is bigger than an actual video stream size.
- // The metadata are wrong or we should up-scale te video...in both cases
- // just quit now.
- if (video_metadata &&
- (video_metadata->region.size.width > (uint32_t)desktop_size_.width() ||
- video_metadata->region.size.height > (uint32_t)desktop_size_.height())) {
- RTC_LOG(LS_ERROR) << "Stream metadata sizes are wrong!";
- SpaBufferUnmap(map,
- spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
- spaBuffer->datas[0].type == SPA_DATA_DmaBuf, spaBuffer->datas[0].fd);
- return;
- }
-
- // Use video metada when video size from metadata is set and smaller than
- // video stream size, so we need to adjust it.
- video_metadata_use_ = (video_metadata &&
- video_metadata->region.size.width != 0 &&
- video_metadata->region.size.height != 0 &&
- (video_metadata->region.size.width < (uint32_t)desktop_size_.width() ||
- video_metadata->region.size.height < (uint32_t)desktop_size_.height()));
-
- DesktopSize video_size_prev = video_size_;
- if (video_metadata_use_) {
- video_size_ = DesktopSize(video_metadata->region.size.width,
- video_metadata->region.size.height);
- } else {
- video_size_ = desktop_size_;
- }
-
- webrtc::MutexLock lock(&current_frame_lock_);
- if (!current_frame_ || !video_size_.equals(video_size_prev)) {
- current_frame_ =
- std::make_unique<uint8_t[]>
- (video_size_.width() * video_size_.height() * BasicDesktopFrame::kBytesPerPixel);
- }
-
- const int32_t dstStride = video_size_.width() * BasicDesktopFrame::kBytesPerPixel;
- const int32_t srcStride = spaBuffer->datas[0].chunk->stride;
-
- // Adjust source content based on metadata video position
- if (video_metadata_use_ &&
- (video_metadata->region.position.y + video_size_.height() <= desktop_size_.height())) {
- src += srcStride * video_metadata->region.position.y;
- }
- const int xOffset =
- video_metadata_use_ &&
- (video_metadata->region.position.x + video_size_.width() <= desktop_size_.width())
- ? video_metadata->region.position.x * BasicDesktopFrame::kBytesPerPixel
- : 0;
-
- uint8_t* dst = current_frame_.get();
- for (int i = 0; i < video_size_.height(); ++i) {
- // Adjust source content based on crop video position if needed
- src += xOffset;
- std::memcpy(dst, src, dstStride);
- // If both sides decided to go with the RGBx format we need to convert it to
- // BGRx to match color format expected by WebRTC.
- if (spa_video_format_.format == SPA_VIDEO_FORMAT_RGBx ||
- spa_video_format_.format == SPA_VIDEO_FORMAT_RGBA) {
- ConvertRGBxToBGRx(dst, dstStride);
- }
- src += srcStride - xOffset;
- dst += dstStride;
- }
-
- SpaBufferUnmap(map,
- spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
- spaBuffer->datas[0].type == SPA_DATA_DmaBuf, spaBuffer->datas[0].fd);
-}
-
-void BaseCapturerPipeWire::ConvertRGBxToBGRx(uint8_t* frame, uint32_t size) {
- // Change color format for KDE KWin which uses RGBx and not BGRx
- for (uint32_t i = 0; i < size; i += 4) {
- uint8_t tempR = frame[i];
- uint8_t tempB = frame[i + 2];
- frame[i] = tempB;
- frame[i + 2] = tempR;
- }
-}
-
-guint BaseCapturerPipeWire::SetupRequestResponseSignal(
- const gchar* object_path,
- GDBusSignalCallback callback) {
- return g_dbus_connection_signal_subscribe(
- connection_, kDesktopBusName, kRequestInterfaceName, "Response",
- object_path, /*arg0=*/nullptr, G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE,
- callback, this, /*user_data_free_func=*/nullptr);
-}
-
-// static
-void BaseCapturerPipeWire::OnProxyRequested(GObject* /*object*/,
- GAsyncResult* result,
- gpointer user_data) {
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(user_data);
- RTC_DCHECK(that);
-
- GError* error = nullptr;
- GDBusProxy *proxy = g_dbus_proxy_new_finish(result, &error);
- if (!proxy) {
- if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
- return;
- RTC_LOG(LS_ERROR) << "Failed to create a proxy for the screen cast portal: "
- << error->message;
- g_error_free(error);
- that->portal_init_failed_ = true;
- return;
- }
- that->proxy_ = proxy;
- that->connection_ = g_dbus_proxy_get_connection(that->proxy_);
-
- RTC_LOG(LS_INFO) << "Created proxy for the screen cast portal.";
- that->SessionRequest();
-}
-
-// static
-gchar* BaseCapturerPipeWire::PrepareSignalHandle(GDBusConnection* connection,
- const gchar* token) {
- gchar* sender = g_strdup(g_dbus_connection_get_unique_name(connection) + 1);
- for (int i = 0; sender[i]; i++) {
- if (sender[i] == '.') {
- sender[i] = '_';
- }
- }
-
- gchar* handle = g_strconcat(kDesktopRequestObjectPath, "/", sender, "/",
- token, /*end of varargs*/ nullptr);
- g_free(sender);
-
- return handle;
-}
-
-void BaseCapturerPipeWire::SessionRequest() {
- GVariantBuilder builder;
- gchar* variant_string;
-
- g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
- variant_string =
- g_strdup_printf("webrtc_session%d", g_random_int_range(0, G_MAXINT));
- g_variant_builder_add(&builder, "{sv}", "session_handle_token",
- g_variant_new_string(variant_string));
- g_free(variant_string);
- variant_string = g_strdup_printf("webrtc%d", g_random_int_range(0, G_MAXINT));
- g_variant_builder_add(&builder, "{sv}", "handle_token",
- g_variant_new_string(variant_string));
-
- portal_handle_ = PrepareSignalHandle(connection_, variant_string);
- session_request_signal_id_ = SetupRequestResponseSignal(
- portal_handle_, OnSessionRequestResponseSignal);
- g_free(variant_string);
-
- RTC_LOG(LS_INFO) << "Screen cast session requested.";
- g_dbus_proxy_call(
- proxy_, "CreateSession", g_variant_new("(a{sv})", &builder),
- G_DBUS_CALL_FLAGS_NONE, /*timeout=*/-1, cancellable_,
- reinterpret_cast<GAsyncReadyCallback>(OnSessionRequested), this);
-}
-
-// static
-void BaseCapturerPipeWire::OnSessionRequested(GDBusProxy *proxy,
- GAsyncResult* result,
- gpointer user_data) {
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(user_data);
- RTC_DCHECK(that);
-
- GError* error = nullptr;
- GVariant* variant = g_dbus_proxy_call_finish(proxy, result, &error);
- if (!variant) {
- if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
- return;
- RTC_LOG(LS_ERROR) << "Failed to create a screen cast session: "
- << error->message;
- g_error_free(error);
- that->portal_init_failed_ = true;
- return;
- }
- RTC_LOG(LS_INFO) << "Initializing the screen cast session.";
-
- gchar* handle = nullptr;
- g_variant_get_child(variant, 0, "o", &handle);
- g_variant_unref(variant);
- if (!handle) {
- RTC_LOG(LS_ERROR) << "Failed to initialize the screen cast session.";
- if (that->session_request_signal_id_) {
- g_dbus_connection_signal_unsubscribe(that->connection_,
- that->session_request_signal_id_);
- that->session_request_signal_id_ = 0;
- }
- that->portal_init_failed_ = true;
- return;
- }
-
- g_free(handle);
-
- RTC_LOG(LS_INFO) << "Subscribing to the screen cast session.";
-}
-
-// static
-void BaseCapturerPipeWire::OnSessionRequestResponseSignal(
- GDBusConnection* connection,
- const gchar* sender_name,
- const gchar* object_path,
- const gchar* interface_name,
- const gchar* signal_name,
- GVariant* parameters,
- gpointer user_data) {
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(user_data);
- RTC_DCHECK(that);
-
- RTC_LOG(LS_INFO)
- << "Received response for the screen cast session subscription.";
-
- guint32 portal_response;
- GVariant* response_data;
- g_variant_get(parameters, "(u@a{sv})", &portal_response, &response_data);
-
- GVariant* session_handle =
- g_variant_lookup_value(response_data, "session_handle", NULL);
- that->session_handle_ = g_variant_dup_string(session_handle, NULL);
-
- g_variant_unref(session_handle);
- g_variant_unref(response_data);
-
- if (!that->session_handle_ || portal_response) {
- RTC_LOG(LS_ERROR)
- << "Failed to request the screen cast session subscription.";
- that->portal_init_failed_ = true;
- return;
- }
-
- that->SourcesRequest();
-}
-
-void BaseCapturerPipeWire::SourcesRequest() {
- GVariantBuilder builder;
- gchar* variant_string;
-
- g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
- // We want to record monitor content.
- g_variant_builder_add(&builder, "{sv}", "types",
- g_variant_new_uint32(capture_source_type_));
- // We don't want to allow selection of multiple sources.
- g_variant_builder_add(&builder, "{sv}", "multiple",
- g_variant_new_boolean(false));
- variant_string = g_strdup_printf("webrtc%d", g_random_int_range(0, G_MAXINT));
- g_variant_builder_add(&builder, "{sv}", "handle_token",
- g_variant_new_string(variant_string));
-
- sources_handle_ = PrepareSignalHandle(connection_, variant_string);
- sources_request_signal_id_ = SetupRequestResponseSignal(
- sources_handle_, OnSourcesRequestResponseSignal);
- g_free(variant_string);
-
- RTC_LOG(LS_INFO) << "Requesting sources from the screen cast session.";
- g_dbus_proxy_call(
- proxy_, "SelectSources",
- g_variant_new("(oa{sv})", session_handle_, &builder),
- G_DBUS_CALL_FLAGS_NONE, /*timeout=*/-1, cancellable_,
- reinterpret_cast<GAsyncReadyCallback>(OnSourcesRequested), this);
-}
-
-// static
-void BaseCapturerPipeWire::OnSourcesRequested(GDBusProxy *proxy,
- GAsyncResult* result,
- gpointer user_data) {
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(user_data);
- RTC_DCHECK(that);
-
- GError* error = nullptr;
- GVariant* variant = g_dbus_proxy_call_finish(proxy, result, &error);
- if (!variant) {
- if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
- return;
- RTC_LOG(LS_ERROR) << "Failed to request the sources: " << error->message;
- g_error_free(error);
- that->portal_init_failed_ = true;
- return;
- }
-
- RTC_LOG(LS_INFO) << "Sources requested from the screen cast session.";
-
- gchar* handle = nullptr;
- g_variant_get_child(variant, 0, "o", &handle);
- g_variant_unref(variant);
- if (!handle) {
- RTC_LOG(LS_ERROR) << "Failed to initialize the screen cast session.";
- if (that->sources_request_signal_id_) {
- g_dbus_connection_signal_unsubscribe(that->connection_,
- that->sources_request_signal_id_);
- that->sources_request_signal_id_ = 0;
- }
- that->portal_init_failed_ = true;
- return;
- }
-
- g_free(handle);
-
- RTC_LOG(LS_INFO) << "Subscribed to sources signal.";
-}
-
-// static
-void BaseCapturerPipeWire::OnSourcesRequestResponseSignal(
- GDBusConnection* connection,
- const gchar* sender_name,
- const gchar* object_path,
- const gchar* interface_name,
- const gchar* signal_name,
- GVariant* parameters,
- gpointer user_data) {
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(user_data);
- RTC_DCHECK(that);
-
- RTC_LOG(LS_INFO) << "Received sources signal from session.";
-
- guint32 portal_response;
- g_variant_get(parameters, "(u@a{sv})", &portal_response, nullptr);
- if (portal_response) {
- RTC_LOG(LS_ERROR)
- << "Failed to select sources for the screen cast session.";
- that->portal_init_failed_ = true;
- return;
- }
-
- that->StartRequest();
-}
-
-void BaseCapturerPipeWire::StartRequest() {
- GVariantBuilder builder;
- gchar* variant_string;
-
- g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
- variant_string = g_strdup_printf("webrtc%d", g_random_int_range(0, G_MAXINT));
- g_variant_builder_add(&builder, "{sv}", "handle_token",
- g_variant_new_string(variant_string));
-
- start_handle_ = PrepareSignalHandle(connection_, variant_string);
- start_request_signal_id_ =
- SetupRequestResponseSignal(start_handle_, OnStartRequestResponseSignal);
- g_free(variant_string);
-
- // "Identifier for the application window", this is Wayland, so not "x11:...".
- const gchar parent_window[] = "";
-
- RTC_LOG(LS_INFO) << "Starting the screen cast session.";
- g_dbus_proxy_call(
- proxy_, "Start",
- g_variant_new("(osa{sv})", session_handle_, parent_window, &builder),
- G_DBUS_CALL_FLAGS_NONE, /*timeout=*/-1, cancellable_,
- reinterpret_cast<GAsyncReadyCallback>(OnStartRequested), this);
-}
-
-// static
-void BaseCapturerPipeWire::OnStartRequested(GDBusProxy *proxy,
- GAsyncResult* result,
- gpointer user_data) {
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(user_data);
- RTC_DCHECK(that);
-
- GError* error = nullptr;
- GVariant* variant = g_dbus_proxy_call_finish(proxy, result, &error);
- if (!variant) {
- if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
- return;
- RTC_LOG(LS_ERROR) << "Failed to start the screen cast session: "
- << error->message;
- g_error_free(error);
- that->portal_init_failed_ = true;
- return;
- }
-
- RTC_LOG(LS_INFO) << "Initializing the start of the screen cast session.";
-
- gchar* handle = nullptr;
- g_variant_get_child(variant, 0, "o", &handle);
- g_variant_unref(variant);
- if (!handle) {
- RTC_LOG(LS_ERROR)
- << "Failed to initialize the start of the screen cast session.";
- if (that->start_request_signal_id_) {
- g_dbus_connection_signal_unsubscribe(that->connection_,
- that->start_request_signal_id_);
- that->start_request_signal_id_ = 0;
- }
- that->portal_init_failed_ = true;
- return;
- }
-
- g_free(handle);
-
- RTC_LOG(LS_INFO) << "Subscribed to the start signal.";
-}
-
-// static
-void BaseCapturerPipeWire::OnStartRequestResponseSignal(
- GDBusConnection* connection,
- const gchar* sender_name,
- const gchar* object_path,
- const gchar* interface_name,
- const gchar* signal_name,
- GVariant* parameters,
- gpointer user_data) {
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(user_data);
- RTC_DCHECK(that);
-
- RTC_LOG(LS_INFO) << "Start signal received.";
- guint32 portal_response;
- GVariant* response_data;
- GVariantIter* iter = nullptr;
- g_variant_get(parameters, "(u@a{sv})", &portal_response, &response_data);
- if (portal_response || !response_data) {
- RTC_LOG(LS_ERROR) << "Failed to start the screen cast session.";
- that->portal_init_failed_ = true;
- return;
- }
-
- // Array of PipeWire streams. See
- // https://github.com/flatpak/xdg-desktop-portal/blob/master/data/org.freedesktop.portal.ScreenCast.xml
- // documentation for <method name="Start">.
- if (g_variant_lookup(response_data, "streams", "a(ua{sv})", &iter)) {
- GVariant* variant;
-
- while (g_variant_iter_next(iter, "@(ua{sv})", &variant)) {
- guint32 stream_id;
- GVariant* options;
-
- g_variant_get(variant, "(u@a{sv})", &stream_id, &options);
- RTC_DCHECK(options != nullptr);
-
- that->pw_stream_node_id_ = stream_id;
- g_variant_unref(options);
- g_variant_unref(variant);
- }
- }
- g_variant_iter_free(iter);
- g_variant_unref(response_data);
-
- that->OpenPipeWireRemote();
-}
-
-void BaseCapturerPipeWire::OpenPipeWireRemote() {
- GVariantBuilder builder;
- g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
-
- RTC_LOG(LS_INFO) << "Opening the PipeWire remote.";
-
- g_dbus_proxy_call_with_unix_fd_list(
- proxy_, "OpenPipeWireRemote",
- g_variant_new("(oa{sv})", session_handle_, &builder),
- G_DBUS_CALL_FLAGS_NONE, /*timeout=*/-1, /*fd_list=*/nullptr,
- cancellable_,
- reinterpret_cast<GAsyncReadyCallback>(OnOpenPipeWireRemoteRequested),
- this);
-}
-
-// static
-void BaseCapturerPipeWire::OnOpenPipeWireRemoteRequested(
- GDBusProxy *proxy,
- GAsyncResult* result,
- gpointer user_data) {
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(user_data);
- RTC_DCHECK(that);
-
- GError* error = nullptr;
- GUnixFDList* outlist = nullptr;
- GVariant* variant = g_dbus_proxy_call_with_unix_fd_list_finish(
- proxy, &outlist, result, &error);
- if (!variant) {
- if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
- return;
- RTC_LOG(LS_ERROR) << "Failed to open the PipeWire remote: "
- << error->message;
- g_error_free(error);
- that->portal_init_failed_ = true;
- return;
- }
-
- gint32 index;
- g_variant_get(variant, "(h)", &index);
-
- if ((that->pw_fd_ = g_unix_fd_list_get(outlist, index, &error)) == -1) {
- RTC_LOG(LS_ERROR) << "Failed to get file descriptor from the list: "
- << error->message;
- g_error_free(error);
- g_variant_unref(variant);
- that->portal_init_failed_ = true;
- return;
- }
-
- g_variant_unref(variant);
- g_object_unref(outlist);
-
- that->InitPipeWire();
}
void BaseCapturerPipeWire::Start(Callback* callback) {
RTC_DCHECK(!callback_);
RTC_DCHECK(callback);
- InitPortal();
-
callback_ = callback;
+
+ screencast_portal_->Start();
}
void BaseCapturerPipeWire::CaptureFrame() {
- if (portal_init_failed_) {
+ if (capturer_failed_) {
callback_->OnCaptureResult(Result::ERROR_PERMANENT, nullptr);
return;
}
- webrtc::MutexLock lock(&current_frame_lock_);
- if (!current_frame_) {
- callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr);
- return;
- }
-
- DesktopSize frame_size = desktop_size_;
- if (video_metadata_use_) {
- frame_size = video_size_;
- }
+ std::unique_ptr<DesktopFrame> frame =
+ options_.screencast_stream()->CaptureFrame();
- std::unique_ptr<DesktopFrame> result(new BasicDesktopFrame(frame_size));
- result->CopyPixelsFrom(
- current_frame_.get(), (frame_size.width() * BasicDesktopFrame::kBytesPerPixel),
- DesktopRect::MakeWH(frame_size.width(), frame_size.height()));
- if (!result) {
+ if (!frame || !frame->data()) {
callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr);
return;
}
- // TODO(julien.isorce): http://crbug.com/945468. Set the icc profile on the
- // frame, see ScreenCapturerX11::CaptureFrame.
+ // TODO(julien.isorce): http://crbug.com/945468. Set the icc profile on
+ // the frame, see ScreenCapturerX11::CaptureFrame.
- callback_->OnCaptureResult(Result::SUCCESS, std::move(result));
+ callback_->OnCaptureResult(Result::SUCCESS, std::move(frame));
}
// Keep in sync with defines at browser/actors/WebRTCParent.jsm
@@ -953,31 +83,13 @@ void BaseCapturerPipeWire::CaptureFrame() {
#define PIPEWIRE_NAME "####_PIPEWIRE_PORTAL_####"
bool BaseCapturerPipeWire::GetSourceList(SourceList* sources) {
+ RTC_DCHECK(sources->size() == 0);
sources->push_back({PIPEWIRE_ID, 0, PIPEWIRE_NAME});
return true;
}
bool BaseCapturerPipeWire::SelectSource(SourceId id) {
- // Screen selection is handled by the xdg-desktop-portal.
return id == PIPEWIRE_ID;
}
-// static
-std::unique_ptr<DesktopCapturer>
-BaseCapturerPipeWire::CreateRawScreenCapturer(
- const DesktopCaptureOptions& options) {
- std::unique_ptr<BaseCapturerPipeWire> capturer =
- std::make_unique<BaseCapturerPipeWire>(BaseCapturerPipeWire::CaptureSourceType::kAny);
- return std::move(capturer);}
-
-// static
-std::unique_ptr<DesktopCapturer>
-BaseCapturerPipeWire::CreateRawWindowCapturer(
- const DesktopCaptureOptions& options) {
-
- std::unique_ptr<BaseCapturerPipeWire> capturer =
- std::make_unique<BaseCapturerPipeWire>(BaseCapturerPipeWire::CaptureSourceType::kAny);
- return std::move(capturer);
-}
-
} // namespace webrtc
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.h b/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
index af8e20c84c..5db09e0244 100644
--- a/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
@@ -11,160 +11,39 @@
#ifndef MODULES_DESKTOP_CAPTURE_LINUX_BASE_CAPTURER_PIPEWIRE_H_
#define MODULES_DESKTOP_CAPTURE_LINUX_BASE_CAPTURER_PIPEWIRE_H_
-#include <gio/gio.h>
-#define typeof __typeof__
-#include <pipewire/pipewire.h>
-#include <spa/param/video/format-utils.h>
-
#include "modules/desktop_capture/desktop_capture_options.h"
#include "modules/desktop_capture/desktop_capturer.h"
-#include "rtc_base/synchronization/mutex.h"
+#include "modules/desktop_capture/linux/screencast_portal.h"
+#include "modules/desktop_capture/linux/shared_screencast_stream.h"
namespace webrtc {
-class BaseCapturerPipeWire : public DesktopCapturer {
+class BaseCapturerPipeWire : public DesktopCapturer,
+ public ScreenCastPortal::PortalNotifier {
public:
- enum CaptureSourceType : uint32_t {
- kScreen = 0b01,
- kWindow = 0b10,
- kAny = 0b11
- };
-
- explicit BaseCapturerPipeWire(CaptureSourceType source_type);
+ BaseCapturerPipeWire(const DesktopCaptureOptions& options);
~BaseCapturerPipeWire() override;
+ BaseCapturerPipeWire(const BaseCapturerPipeWire&) = delete;
+ BaseCapturerPipeWire& operator=(const BaseCapturerPipeWire&) = delete;
+
// DesktopCapturer interface.
void Start(Callback* delegate) override;
void CaptureFrame() override;
bool GetSourceList(SourceList* sources) override;
bool SelectSource(SourceId id) override;
- static std::unique_ptr<DesktopCapturer> CreateRawScreenCapturer(
- const DesktopCaptureOptions& options);
-
- static std::unique_ptr<DesktopCapturer> CreateRawWindowCapturer(
- const DesktopCaptureOptions& options);
+ // ScreenCastPortal::PortalNotifier interface.
+ void OnScreenCastRequestResult(ScreenCastPortal::RequestResponse result,
+ uint32_t stream_node_id,
+ int fd) override;
+ void OnScreenCastSessionClosed() override;
private:
- // PipeWire types -->
- pw_context* pw_context_ = nullptr;
- pw_core* pw_core_ = nullptr;
- pw_stream* pw_stream_ = nullptr;
- pw_thread_loop* pw_main_loop_ = nullptr;
-
- spa_hook spa_core_listener_ = {};
- spa_hook spa_stream_listener_ = {};
-
- pw_core_events pw_core_events_ = {};
- pw_stream_events pw_stream_events_ = {};
-
- struct spa_video_info_raw spa_video_format_;
-
- guint32 pw_stream_node_id_ = 0;
- gint32 pw_fd_ = -1;
-
- CaptureSourceType capture_source_type_ =
- BaseCapturerPipeWire::CaptureSourceType::kAny;
-
- // <-- end of PipeWire types
-
- GDBusConnection* connection_ = nullptr;
- GDBusProxy* proxy_ = nullptr;
- GCancellable *cancellable_ = nullptr;
- gchar* portal_handle_ = nullptr;
- gchar* session_handle_ = nullptr;
- gchar* sources_handle_ = nullptr;
- gchar* start_handle_ = nullptr;
- guint session_request_signal_id_ = 0;
- guint sources_request_signal_id_ = 0;
- guint start_request_signal_id_ = 0;
-
- bool video_metadata_use_ = false;
- DesktopSize video_size_;
- DesktopSize desktop_size_ = {};
DesktopCaptureOptions options_ = {};
-
- webrtc::Mutex current_frame_lock_;
- std::unique_ptr<uint8_t[]> current_frame_;
Callback* callback_ = nullptr;
-
- bool portal_init_failed_ = false;
-
- void InitPortal();
- void InitPipeWire();
-
- pw_stream* CreateReceivingStream();
- void HandleBuffer(pw_buffer* buffer);
-
- void ConvertRGBxToBGRx(uint8_t* frame, uint32_t size);
-
- static void OnCoreError(void *data,
- uint32_t id,
- int seq,
- int res,
- const char *message);
- static void OnStreamParamChanged(void *data,
- uint32_t id,
- const struct spa_pod *format);
- static void OnStreamStateChanged(void* data,
- pw_stream_state old_state,
- pw_stream_state state,
- const char* error_message);
- static void OnStreamProcess(void* data);
- static void OnNewBuffer(void* data, uint32_t id);
-
- guint SetupRequestResponseSignal(const gchar* object_path,
- GDBusSignalCallback callback);
-
- static void OnProxyRequested(GObject* object,
- GAsyncResult* result,
- gpointer user_data);
-
- static gchar* PrepareSignalHandle(GDBusConnection* connection,
- const gchar* token);
-
- void SessionRequest();
- static void OnSessionRequested(GDBusProxy *proxy,
- GAsyncResult* result,
- gpointer user_data);
- static void OnSessionRequestResponseSignal(GDBusConnection* connection,
- const gchar* sender_name,
- const gchar* object_path,
- const gchar* interface_name,
- const gchar* signal_name,
- GVariant* parameters,
- gpointer user_data);
-
- void SourcesRequest();
- static void OnSourcesRequested(GDBusProxy *proxy,
- GAsyncResult* result,
- gpointer user_data);
- static void OnSourcesRequestResponseSignal(GDBusConnection* connection,
- const gchar* sender_name,
- const gchar* object_path,
- const gchar* interface_name,
- const gchar* signal_name,
- GVariant* parameters,
- gpointer user_data);
-
- void StartRequest();
- static void OnStartRequested(GDBusProxy *proxy,
- GAsyncResult* result,
- gpointer user_data);
- static void OnStartRequestResponseSignal(GDBusConnection* connection,
- const gchar* sender_name,
- const gchar* object_path,
- const gchar* interface_name,
- const gchar* signal_name,
- GVariant* parameters,
- gpointer user_data);
-
- void OpenPipeWireRemote();
- static void OnOpenPipeWireRemoteRequested(GDBusProxy *proxy,
- GAsyncResult* result,
- gpointer user_data);
-
- RTC_DISALLOW_COPY_AND_ASSIGN(BaseCapturerPipeWire);
+ bool capturer_failed_ = false;
+ std::unique_ptr<ScreenCastPortal> screencast_portal_;
};
} // namespace webrtc
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/drm.sigs b/third_party/libwebrtc/modules/desktop_capture/linux/drm.sigs
new file mode 100644
index 0000000000..226979fe16
--- /dev/null
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/drm.sigs
@@ -0,0 +1,11 @@
+// Copyright 2021 The WebRTC project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+//------------------------------------------------
+// Functions from DRM used in capturer code.
+//--------
+
+// xf86drm.h
+int drmGetDevices2(uint32_t flags, drmDevicePtr devices[], int max_devices);
+void drmFreeDevices(drmDevicePtr devices[], int count);
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/egl_dmabuf.cc b/third_party/libwebrtc/modules/desktop_capture/linux/egl_dmabuf.cc
new file mode 100644
index 0000000000..de63c2a0b8
--- /dev/null
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/egl_dmabuf.cc
@@ -0,0 +1,695 @@
+/*
+ * Copyright 2021 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "modules/desktop_capture/linux/egl_dmabuf.h"
+
+#include <asm/ioctl.h>
+#include <dlfcn.h>
+#include <fcntl.h>
+#include <drm/drm_fourcc.h>
+#include <linux/types.h>
+#include <spa/param/video/format-utils.h>
+#include <unistd.h>
+#include <drm/xf86drm.h>
+
+#include "absl/memory/memory.h"
+#include "absl/types/optional.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/logging.h"
+#include "rtc_base/sanitizer.h"
+#include "rtc_base/string_encode.h"
+
+namespace webrtc {
+
+// EGL
+typedef EGLBoolean (*eglBindAPI_func)(EGLenum api);
+typedef EGLContext (*eglCreateContext_func)(EGLDisplay dpy,
+ EGLConfig config,
+ EGLContext share_context,
+ const EGLint* attrib_list);
+typedef EGLBoolean (*eglDestroyContext_func)(EGLDisplay display,
+ EGLContext context);
+typedef EGLBoolean (*eglTerminate_func)(EGLDisplay display);
+typedef EGLImageKHR (*eglCreateImageKHR_func)(EGLDisplay dpy,
+ EGLContext ctx,
+ EGLenum target,
+ EGLClientBuffer buffer,
+ const EGLint* attrib_list);
+typedef EGLBoolean (*eglDestroyImageKHR_func)(EGLDisplay dpy,
+ EGLImageKHR image);
+typedef EGLint (*eglGetError_func)(void);
+typedef void* (*eglGetProcAddress_func)(const char*);
+typedef EGLDisplay (*eglGetPlatformDisplayEXT_func)(EGLenum platform,
+ void* native_display,
+ const EGLint* attrib_list);
+typedef EGLDisplay (*eglGetPlatformDisplay_func)(EGLenum platform,
+ void* native_display,
+ const EGLAttrib* attrib_list);
+
+typedef EGLBoolean (*eglInitialize_func)(EGLDisplay dpy,
+ EGLint* major,
+ EGLint* minor);
+typedef EGLBoolean (*eglMakeCurrent_func)(EGLDisplay dpy,
+ EGLSurface draw,
+ EGLSurface read,
+ EGLContext ctx);
+typedef EGLBoolean (*eglQueryDmaBufFormatsEXT_func)(EGLDisplay dpy,
+ EGLint max_formats,
+ EGLint* formats,
+ EGLint* num_formats);
+typedef EGLBoolean (*eglQueryDmaBufModifiersEXT_func)(EGLDisplay dpy,
+ EGLint format,
+ EGLint max_modifiers,
+ EGLuint64KHR* modifiers,
+ EGLBoolean* external_only,
+ EGLint* num_modifiers);
+typedef const char* (*eglQueryString_func)(EGLDisplay dpy, EGLint name);
+typedef void (*glEGLImageTargetTexture2DOES_func)(GLenum target,
+ GLeglImageOES image);
+
+// This doesn't follow naming conventions in WebRTC, where the naming
+// should look like e.g. egl_bind_api instead of EglBindAPI, however
+// we named them according to the exported functions they map to for
+// consistency.
+eglBindAPI_func EglBindAPI = nullptr;
+eglCreateContext_func EglCreateContext = nullptr;
+eglDestroyContext_func EglDestroyContext = nullptr;
+eglTerminate_func EglTerminate = nullptr;
+eglCreateImageKHR_func EglCreateImageKHR = nullptr;
+eglDestroyImageKHR_func EglDestroyImageKHR = nullptr;
+eglGetError_func EglGetError = nullptr;
+eglGetProcAddress_func EglGetProcAddress = nullptr;
+eglGetPlatformDisplayEXT_func EglGetPlatformDisplayEXT = nullptr;
+eglGetPlatformDisplay_func EglGetPlatformDisplay = nullptr;
+eglInitialize_func EglInitialize = nullptr;
+eglMakeCurrent_func EglMakeCurrent = nullptr;
+eglQueryDmaBufFormatsEXT_func EglQueryDmaBufFormatsEXT = nullptr;
+eglQueryDmaBufModifiersEXT_func EglQueryDmaBufModifiersEXT = nullptr;
+eglQueryString_func EglQueryString = nullptr;
+glEGLImageTargetTexture2DOES_func GlEGLImageTargetTexture2DOES = nullptr;
+
+// GL
+typedef void (*glBindTexture_func)(GLenum target, GLuint texture);
+typedef void (*glDeleteTextures_func)(GLsizei n, const GLuint* textures);
+typedef void (*glGenTextures_func)(GLsizei n, GLuint* textures);
+typedef GLenum (*glGetError_func)(void);
+typedef const GLubyte* (*glGetString_func)(GLenum name);
+typedef void (*glGetTexImage_func)(GLenum target,
+ GLint level,
+ GLenum format,
+ GLenum type,
+ void* pixels);
+typedef void (*glTexParameteri_func)(GLenum target, GLenum pname, GLint param);
+typedef void* (*glXGetProcAddressARB_func)(const char*);
+
+// This doesn't follow naming conventions in WebRTC, where the naming
+// should look like e.g. egl_bind_api instead of EglBindAPI, however
+// we named them according to the exported functions they map to for
+// consistency.
+glBindTexture_func GlBindTexture = nullptr;
+glDeleteTextures_func GlDeleteTextures = nullptr;
+glGenTextures_func GlGenTextures = nullptr;
+glGetError_func GlGetError = nullptr;
+glGetString_func GlGetString = nullptr;
+glGetTexImage_func GlGetTexImage = nullptr;
+glTexParameteri_func GlTexParameteri = nullptr;
+glXGetProcAddressARB_func GlXGetProcAddressARB = nullptr;
+
+static const std::string FormatGLError(GLenum err) {
+ switch (err) {
+ case GL_NO_ERROR:
+ return "GL_NO_ERROR";
+ case GL_INVALID_ENUM:
+ return "GL_INVALID_ENUM";
+ case GL_INVALID_VALUE:
+ return "GL_INVALID_VALUE";
+ case GL_INVALID_OPERATION:
+ return "GL_INVALID_OPERATION";
+ case GL_STACK_OVERFLOW:
+ return "GL_STACK_OVERFLOW";
+ case GL_STACK_UNDERFLOW:
+ return "GL_STACK_UNDERFLOW";
+ case GL_OUT_OF_MEMORY:
+ return "GL_OUT_OF_MEMORY";
+ default:
+ return "GL error code: " + std::to_string(err);
+ }
+}
+
+static const std::string FormatEGLError(EGLint err) {
+ switch (err) {
+ case EGL_NOT_INITIALIZED:
+ return "EGL_NOT_INITIALIZED";
+ case EGL_BAD_ACCESS:
+ return "EGL_BAD_ACCESS";
+ case EGL_BAD_ALLOC:
+ return "EGL_BAD_ALLOC";
+ case EGL_BAD_ATTRIBUTE:
+ return "EGL_BAD_ATTRIBUTE";
+ case EGL_BAD_CONTEXT:
+ return "EGL_BAD_CONTEXT";
+ case EGL_BAD_CONFIG:
+ return "EGL_BAD_CONFIG";
+ case EGL_BAD_CURRENT_SURFACE:
+ return "EGL_BAD_CURRENT_SURFACE";
+ case EGL_BAD_DISPLAY:
+ return "EGL_BAD_DISPLAY";
+ case EGL_BAD_SURFACE:
+ return "EGL_BAD_SURFACE";
+ case EGL_BAD_MATCH:
+ return "EGL_BAD_MATCH";
+ case EGL_BAD_PARAMETER:
+ return "EGL_BAD_PARAMETER";
+ case EGL_BAD_NATIVE_PIXMAP:
+ return "EGL_BAD_NATIVE_PIXMAP";
+ case EGL_BAD_NATIVE_WINDOW:
+ return "EGL_BAD_NATIVE_WINDOW";
+ case EGL_CONTEXT_LOST:
+ return "EGL_CONTEXT_LOST";
+ default:
+ return "EGL error code: " + std::to_string(err);
+ }
+}
+
+static uint32_t SpaPixelFormatToDrmFormat(uint32_t spa_format) {
+ switch (spa_format) {
+ case SPA_VIDEO_FORMAT_RGBA:
+ return DRM_FORMAT_ABGR8888;
+ case SPA_VIDEO_FORMAT_RGBx:
+ return DRM_FORMAT_XBGR8888;
+ case SPA_VIDEO_FORMAT_BGRA:
+ return DRM_FORMAT_ARGB8888;
+ case SPA_VIDEO_FORMAT_BGRx:
+ return DRM_FORMAT_XRGB8888;
+ default:
+ return DRM_FORMAT_INVALID;
+ }
+}
+
+static void CloseLibrary(void* library) {
+ if (library) {
+ dlclose(library);
+ library = nullptr;
+ }
+}
+
+static void* g_lib_egl = nullptr;
+
+static bool OpenEGL() {
+ g_lib_egl = dlopen("libEGL.so.1", RTLD_NOW | RTLD_GLOBAL);
+ if (g_lib_egl) {
+ EglGetProcAddress =
+ (eglGetProcAddress_func)dlsym(g_lib_egl, "eglGetProcAddress");
+ return EglGetProcAddress;
+ }
+
+ return false;
+}
+
+static bool LoadEGL() {
+ if (OpenEGL()) {
+ EglBindAPI = (eglBindAPI_func)EglGetProcAddress("eglBindAPI");
+ EglCreateContext =
+ (eglCreateContext_func)EglGetProcAddress("eglCreateContext");
+ EglDestroyContext =
+ (eglDestroyContext_func)EglGetProcAddress("eglDestroyContext");
+ EglTerminate = (eglTerminate_func)EglGetProcAddress("eglTerminate");
+ EglCreateImageKHR =
+ (eglCreateImageKHR_func)EglGetProcAddress("eglCreateImageKHR");
+ EglDestroyImageKHR =
+ (eglDestroyImageKHR_func)EglGetProcAddress("eglDestroyImageKHR");
+ EglGetError = (eglGetError_func)EglGetProcAddress("eglGetError");
+ EglGetPlatformDisplayEXT = (eglGetPlatformDisplayEXT_func)EglGetProcAddress(
+ "eglGetPlatformDisplayEXT");
+ EglGetPlatformDisplay =
+ (eglGetPlatformDisplay_func)EglGetProcAddress("eglGetPlatformDisplay");
+ EglInitialize = (eglInitialize_func)EglGetProcAddress("eglInitialize");
+ EglMakeCurrent = (eglMakeCurrent_func)EglGetProcAddress("eglMakeCurrent");
+ EglQueryString = (eglQueryString_func)EglGetProcAddress("eglQueryString");
+ GlEGLImageTargetTexture2DOES =
+ (glEGLImageTargetTexture2DOES_func)EglGetProcAddress(
+ "glEGLImageTargetTexture2DOES");
+
+ return EglBindAPI && EglCreateContext && EglCreateImageKHR &&
+ EglTerminate && EglDestroyContext && EglDestroyImageKHR &&
+ EglGetError && EglGetPlatformDisplayEXT && EglGetPlatformDisplay &&
+ EglInitialize && EglMakeCurrent && EglQueryString &&
+ GlEGLImageTargetTexture2DOES;
+ }
+
+ return false;
+}
+
+static void* g_lib_gl = nullptr;
+
+static bool OpenGL() {
+ std::vector<std::string> names = {"libGL.so.1", "libGL.so"};
+ for (const std::string& name : names) {
+ g_lib_gl = dlopen(name.c_str(), RTLD_NOW | RTLD_GLOBAL);
+ if (g_lib_gl) {
+ GlXGetProcAddressARB =
+ (glXGetProcAddressARB_func)dlsym(g_lib_gl, "glXGetProcAddressARB");
+ return GlXGetProcAddressARB;
+ }
+ }
+
+ return false;
+}
+
+static bool LoadGL() {
+ if (OpenGL()) {
+ GlGetString = (glGetString_func)GlXGetProcAddressARB("glGetString");
+ if (!GlGetString) {
+ return false;
+ }
+
+ GlBindTexture = (glBindTexture_func)GlXGetProcAddressARB("glBindTexture");
+ GlDeleteTextures =
+ (glDeleteTextures_func)GlXGetProcAddressARB("glDeleteTextures");
+ GlGenTextures = (glGenTextures_func)GlXGetProcAddressARB("glGenTextures");
+ GlGetError = (glGetError_func)GlXGetProcAddressARB("glGetError");
+ GlGetTexImage = (glGetTexImage_func)GlXGetProcAddressARB("glGetTexImage");
+ GlTexParameteri =
+ (glTexParameteri_func)GlXGetProcAddressARB("glTexParameteri");
+
+ return GlBindTexture && GlDeleteTextures && GlGenTextures && GlGetError &&
+ GlGetTexImage && GlTexParameteri;
+ }
+
+ return false;
+}
+
+EglDmaBuf::EglDmaBuf() {
+ if (!LoadEGL()) {
+ RTC_LOG(LS_ERROR) << "Unable to load EGL entry functions.";
+ CloseLibrary(g_lib_egl);
+ return;
+ }
+
+ if (!LoadGL()) {
+ RTC_LOG(LS_ERROR) << "Failed to load OpenGL entry functions.";
+ CloseLibrary(g_lib_gl);
+ return;
+ }
+
+ if (!GetClientExtensions(EGL_NO_DISPLAY, EGL_EXTENSIONS)) {
+ return;
+ }
+
+ bool has_platform_base_ext = false;
+ bool has_platform_gbm_ext = false;
+ bool has_khr_platform_gbm_ext = false;
+
+ for (const auto& extension : egl_.extensions) {
+ if (extension == "EGL_EXT_platform_base") {
+ has_platform_base_ext = true;
+ continue;
+ } else if (extension == "EGL_MESA_platform_gbm") {
+ has_platform_gbm_ext = true;
+ continue;
+ } else if (extension == "EGL_KHR_platform_gbm") {
+ has_khr_platform_gbm_ext = true;
+ continue;
+ }
+ }
+
+ if (!has_platform_base_ext || !has_platform_gbm_ext ||
+ !has_khr_platform_gbm_ext) {
+ RTC_LOG(LS_ERROR) << "One of required EGL extensions is missing";
+ return;
+ }
+
+ egl_.display = EglGetPlatformDisplay(EGL_PLATFORM_WAYLAND_KHR,
+ (void*)EGL_DEFAULT_DISPLAY, nullptr);
+
+ if (egl_.display == EGL_NO_DISPLAY) {
+ RTC_LOG(LS_ERROR) << "Failed to obtain default EGL display: "
+ << FormatEGLError(EglGetError()) << "\n"
+ << "Defaulting to using first available render node";
+ absl::optional<std::string> render_node = GetRenderNode();
+ if (!render_node) {
+ return;
+ }
+
+ drm_fd_ = open(render_node->c_str(), O_RDWR);
+
+ if (drm_fd_ < 0) {
+ RTC_LOG(LS_ERROR) << "Failed to open drm render node: "
+ << strerror(errno);
+ return;
+ }
+
+ gbm_device_ = gbm_create_device(drm_fd_);
+
+ if (!gbm_device_) {
+ RTC_LOG(LS_ERROR) << "Cannot create GBM device: " << strerror(errno);
+ close(drm_fd_);
+ return;
+ }
+
+ // Use eglGetPlatformDisplayEXT() to get the display pointer
+ // if the implementation supports it.
+ egl_.display =
+ EglGetPlatformDisplayEXT(EGL_PLATFORM_GBM_KHR, gbm_device_, nullptr);
+ }
+
+ if (egl_.display == EGL_NO_DISPLAY) {
+ RTC_LOG(LS_ERROR) << "Error during obtaining EGL display: "
+ << FormatEGLError(EglGetError());
+ return;
+ }
+
+ EGLint major, minor;
+ if (EglInitialize(egl_.display, &major, &minor) == EGL_FALSE) {
+ RTC_LOG(LS_ERROR) << "Error during eglInitialize: "
+ << FormatEGLError(EglGetError());
+ return;
+ }
+
+ if (EglBindAPI(EGL_OPENGL_API) == EGL_FALSE) {
+ RTC_LOG(LS_ERROR) << "bind OpenGL API failed";
+ return;
+ }
+
+ egl_.context =
+ EglCreateContext(egl_.display, nullptr, EGL_NO_CONTEXT, nullptr);
+
+ if (egl_.context == EGL_NO_CONTEXT) {
+ RTC_LOG(LS_ERROR) << "Couldn't create EGL context: "
+ << FormatGLError(EglGetError());
+ return;
+ }
+
+ if (!GetClientExtensions(egl_.display, EGL_EXTENSIONS)) {
+ return;
+ }
+
+ bool has_image_dma_buf_import_modifiers_ext = false;
+
+ for (const auto& extension : egl_.extensions) {
+ if (extension == "EGL_EXT_image_dma_buf_import") {
+ has_image_dma_buf_import_ext_ = true;
+ continue;
+ } else if (extension == "EGL_EXT_image_dma_buf_import_modifiers") {
+ has_image_dma_buf_import_modifiers_ext = true;
+ continue;
+ }
+ }
+
+ if (has_image_dma_buf_import_ext_ && has_image_dma_buf_import_modifiers_ext) {
+ EglQueryDmaBufFormatsEXT = (eglQueryDmaBufFormatsEXT_func)EglGetProcAddress(
+ "eglQueryDmaBufFormatsEXT");
+ EglQueryDmaBufModifiersEXT =
+ (eglQueryDmaBufModifiersEXT_func)EglGetProcAddress(
+ "eglQueryDmaBufModifiersEXT");
+ }
+
+ RTC_LOG(LS_INFO) << "Egl initialization succeeded";
+ egl_initialized_ = true;
+}
+
+EglDmaBuf::~EglDmaBuf() {
+ if (gbm_device_) {
+ gbm_device_destroy(gbm_device_);
+ close(drm_fd_);
+ }
+
+ if (egl_.context != EGL_NO_CONTEXT) {
+ EglDestroyContext(egl_.display, egl_.context);
+ }
+
+ if (egl_.display != EGL_NO_DISPLAY) {
+ EglTerminate(egl_.display);
+ }
+
+ // BUG: crbug.com/1290566
+ // Closing libEGL.so.1 when using NVidia drivers causes a crash
+ // when EglGetPlatformDisplayEXT() is used, at least this one is enough
+ // to be called to make it crash.
+ // It also looks that libepoxy and glad don't dlclose it either
+ // CloseLibrary(g_lib_egl);
+ // CloseLibrary(g_lib_gl);
+}
+
+bool EglDmaBuf::GetClientExtensions(EGLDisplay dpy, EGLint name) {
+ // Get the list of client extensions
+ const char* client_extensions_cstring = EglQueryString(dpy, name);
+ if (!client_extensions_cstring) {
+ // If eglQueryString() returned NULL, the implementation doesn't support
+ // EGL_EXT_client_extensions. Expect an EGL_BAD_DISPLAY error.
+ RTC_LOG(LS_ERROR) << "No client extensions defined! "
+ << FormatEGLError(EglGetError());
+ return false;
+ }
+
+ std::vector<std::string> client_extensions;
+ rtc::split(client_extensions_cstring, ' ',
+ &client_extensions);
+ for (const auto& extension : client_extensions) {
+ egl_.extensions.push_back(extension);
+ }
+
+ return true;
+}
+
+std::unique_ptr<uint8_t[]> EglDmaBuf::ImageFromDmaBuf(
+ const DesktopSize& size,
+ uint32_t format,
+ const std::vector<PlaneData>& plane_datas,
+ uint64_t modifier) {
+ std::unique_ptr<uint8_t[]> src;
+
+ if (!egl_initialized_) {
+ return src;
+ }
+
+ if (plane_datas.size() <= 0) {
+ RTC_LOG(LS_ERROR) << "Failed to process buffer: invalid number of planes";
+ return src;
+ }
+
+ EGLint attribs[47];
+ int atti = 0;
+
+ attribs[atti++] = EGL_WIDTH;
+ attribs[atti++] = static_cast<EGLint>(size.width());
+ attribs[atti++] = EGL_HEIGHT;
+ attribs[atti++] = static_cast<EGLint>(size.height());
+ attribs[atti++] = EGL_LINUX_DRM_FOURCC_EXT;
+ attribs[atti++] = SpaPixelFormatToDrmFormat(format);
+
+ if (plane_datas.size() > 0) {
+ attribs[atti++] = EGL_DMA_BUF_PLANE0_FD_EXT;
+ attribs[atti++] = plane_datas[0].fd;
+ attribs[atti++] = EGL_DMA_BUF_PLANE0_OFFSET_EXT;
+ attribs[atti++] = plane_datas[0].offset;
+ attribs[atti++] = EGL_DMA_BUF_PLANE0_PITCH_EXT;
+ attribs[atti++] = plane_datas[0].stride;
+
+ if (modifier != DRM_FORMAT_MOD_INVALID) {
+ attribs[atti++] = EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT;
+ attribs[atti++] = modifier & 0xFFFFFFFF;
+ attribs[atti++] = EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT;
+ attribs[atti++] = modifier >> 32;
+ }
+ }
+
+ if (plane_datas.size() > 1) {
+ attribs[atti++] = EGL_DMA_BUF_PLANE1_FD_EXT;
+ attribs[atti++] = plane_datas[1].fd;
+ attribs[atti++] = EGL_DMA_BUF_PLANE1_OFFSET_EXT;
+ attribs[atti++] = plane_datas[1].offset;
+ attribs[atti++] = EGL_DMA_BUF_PLANE1_PITCH_EXT;
+ attribs[atti++] = plane_datas[1].stride;
+
+ if (modifier != DRM_FORMAT_MOD_INVALID) {
+ attribs[atti++] = EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT;
+ attribs[atti++] = modifier & 0xFFFFFFFF;
+ attribs[atti++] = EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT;
+ attribs[atti++] = modifier >> 32;
+ }
+ }
+
+ if (plane_datas.size() > 2) {
+ attribs[atti++] = EGL_DMA_BUF_PLANE2_FD_EXT;
+ attribs[atti++] = plane_datas[2].fd;
+ attribs[atti++] = EGL_DMA_BUF_PLANE2_OFFSET_EXT;
+ attribs[atti++] = plane_datas[2].offset;
+ attribs[atti++] = EGL_DMA_BUF_PLANE2_PITCH_EXT;
+ attribs[atti++] = plane_datas[2].stride;
+
+ if (modifier != DRM_FORMAT_MOD_INVALID) {
+ attribs[atti++] = EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT;
+ attribs[atti++] = modifier & 0xFFFFFFFF;
+ attribs[atti++] = EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT;
+ attribs[atti++] = modifier >> 32;
+ }
+ }
+
+ if (plane_datas.size() > 3) {
+ attribs[atti++] = EGL_DMA_BUF_PLANE3_FD_EXT;
+ attribs[atti++] = plane_datas[3].fd;
+ attribs[atti++] = EGL_DMA_BUF_PLANE3_OFFSET_EXT;
+ attribs[atti++] = plane_datas[3].offset;
+ attribs[atti++] = EGL_DMA_BUF_PLANE3_PITCH_EXT;
+ attribs[atti++] = plane_datas[3].stride;
+
+ if (modifier != DRM_FORMAT_MOD_INVALID) {
+ attribs[atti++] = EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT;
+ attribs[atti++] = modifier & 0xFFFFFFFF;
+ attribs[atti++] = EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT;
+ attribs[atti++] = modifier >> 32;
+ }
+ }
+
+ attribs[atti++] = EGL_NONE;
+
+ // bind context to render thread
+ EglMakeCurrent(egl_.display, EGL_NO_SURFACE, EGL_NO_SURFACE, egl_.context);
+
+ // create EGL image from attribute list
+ EGLImageKHR image = EglCreateImageKHR(
+ egl_.display, EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT, nullptr, attribs);
+
+ if (image == EGL_NO_IMAGE) {
+ RTC_LOG(LS_ERROR) << "Failed to record frame: Error creating EGLImage - "
+ << FormatEGLError(EglGetError());
+ return src;
+ }
+
+ // create GL 2D texture for framebuffer
+ GLuint texture;
+ GlGenTextures(1, &texture);
+ GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ GlBindTexture(GL_TEXTURE_2D, texture);
+ GlEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image);
+
+ src = std::make_unique<uint8_t[]>(plane_datas[0].stride * size.height());
+
+ GLenum gl_format = GL_BGRA;
+ switch (format) {
+ case SPA_VIDEO_FORMAT_RGBx:
+ gl_format = GL_RGBA;
+ break;
+ case SPA_VIDEO_FORMAT_RGBA:
+ gl_format = GL_RGBA;
+ break;
+ case SPA_VIDEO_FORMAT_BGRx:
+ gl_format = GL_BGRA;
+ break;
+ default:
+ gl_format = GL_BGRA;
+ break;
+ }
+ GlGetTexImage(GL_TEXTURE_2D, 0, gl_format, GL_UNSIGNED_BYTE, src.get());
+
+ if (GlGetError()) {
+ RTC_LOG(LS_ERROR) << "Failed to get image from DMA buffer.";
+ return src;
+ }
+
+ GlDeleteTextures(1, &texture);
+ EglDestroyImageKHR(egl_.display, image);
+
+ return src;
+}
+
+std::vector<uint64_t> EglDmaBuf::QueryDmaBufModifiers(uint32_t format) {
+ if (!egl_initialized_) {
+ return {};
+ }
+
+ // Explicit modifiers not supported, return just DRM_FORMAT_MOD_INVALID as we
+ // can still use modifier-less DMA-BUFs if we have required extension
+ if (EglQueryDmaBufFormatsEXT == nullptr ||
+ EglQueryDmaBufModifiersEXT == nullptr) {
+ return has_image_dma_buf_import_ext_
+ ? std::vector<uint64_t>{DRM_FORMAT_MOD_INVALID}
+ : std::vector<uint64_t>{};
+ }
+
+ uint32_t drm_format = SpaPixelFormatToDrmFormat(format);
+ // Should never happen as it's us who controls the list of supported formats
+ RTC_DCHECK(drm_format != DRM_FORMAT_INVALID);
+
+ EGLint count = 0;
+ EGLBoolean success =
+ EglQueryDmaBufFormatsEXT(egl_.display, 0, nullptr, &count);
+
+ if (!success || !count) {
+ RTC_LOG(LS_ERROR) << "Failed to query DMA-BUF formats.";
+ return {DRM_FORMAT_MOD_INVALID};
+ }
+
+ std::vector<uint32_t> formats(count);
+ if (!EglQueryDmaBufFormatsEXT(egl_.display, count,
+ reinterpret_cast<EGLint*>(formats.data()),
+ &count)) {
+ RTC_LOG(LS_ERROR) << "Failed to query DMA-BUF formats.";
+ return {DRM_FORMAT_MOD_INVALID};
+ }
+
+ if (std::find(formats.begin(), formats.end(), drm_format) == formats.end()) {
+ RTC_LOG(LS_ERROR) << "Format " << drm_format
+ << " not supported for modifiers.";
+ return {DRM_FORMAT_MOD_INVALID};
+ }
+
+ success = EglQueryDmaBufModifiersEXT(egl_.display, drm_format, 0, nullptr,
+ nullptr, &count);
+
+ if (!success || !count) {
+ RTC_LOG(LS_ERROR) << "Failed to query DMA-BUF modifiers.";
+ return {DRM_FORMAT_MOD_INVALID};
+ }
+
+ std::vector<uint64_t> modifiers(count);
+ if (!EglQueryDmaBufModifiersEXT(egl_.display, drm_format, count,
+ modifiers.data(), nullptr, &count)) {
+ RTC_LOG(LS_ERROR) << "Failed to query DMA-BUF modifiers.";
+ }
+
+ // Support modifier-less buffers
+ modifiers.push_back(DRM_FORMAT_MOD_INVALID);
+ return modifiers;
+}
+
+absl::optional<std::string> EglDmaBuf::GetRenderNode() {
+ int max_devices = drmGetDevices2(0, nullptr, 0);
+ if (max_devices <= 0) {
+ RTC_LOG(LS_ERROR) << "drmGetDevices2() has not found any devices (errno="
+ << -max_devices << ")";
+ return absl::nullopt;
+ }
+
+ std::vector<drmDevicePtr> devices(max_devices);
+ int ret = drmGetDevices2(0, devices.data(), max_devices);
+ if (ret < 0) {
+ RTC_LOG(LS_ERROR) << "drmGetDevices2() returned an error " << ret;
+ return absl::nullopt;
+ }
+
+ std::string render_node;
+
+ for (const drmDevicePtr& device : devices) {
+ if (device->available_nodes & (1 << DRM_NODE_RENDER)) {
+ render_node = device->nodes[DRM_NODE_RENDER];
+ break;
+ }
+ }
+
+ drmFreeDevices(devices.data(), ret);
+ return render_node;
+}
+
+} // namespace webrtc
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/egl_dmabuf.h b/third_party/libwebrtc/modules/desktop_capture/linux/egl_dmabuf.h
new file mode 100644
index 0000000000..b755d8ba37
--- /dev/null
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/egl_dmabuf.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2021 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef MODULES_DESKTOP_CAPTURE_LINUX_EGL_DMABUF_H_
+#define MODULES_DESKTOP_CAPTURE_LINUX_EGL_DMABUF_H_
+
+#include <epoxy/egl.h>
+#include <epoxy/gl.h>
+#include <gbm/gbm.h>
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "absl/types/optional.h"
+#include "modules/desktop_capture/desktop_geometry.h"
+
+namespace webrtc {
+
+class EglDmaBuf {
+ public:
+ struct EGLStruct {
+ std::vector<std::string> extensions;
+ EGLDisplay display = EGL_NO_DISPLAY;
+ EGLContext context = EGL_NO_CONTEXT;
+ };
+
+ struct PlaneData {
+ int32_t fd;
+ uint32_t stride;
+ uint32_t offset;
+ };
+
+ EglDmaBuf();
+ ~EglDmaBuf();
+
+ std::unique_ptr<uint8_t[]> ImageFromDmaBuf(
+ const DesktopSize& size,
+ uint32_t format,
+ const std::vector<PlaneData>& plane_datas,
+ uint64_t modifiers);
+ std::vector<uint64_t> QueryDmaBufModifiers(uint32_t format);
+
+ bool IsEglInitialized() const { return egl_initialized_; }
+
+ private:
+ bool GetClientExtensions(EGLDisplay dpy, EGLint name);
+
+ bool egl_initialized_ = false;
+ bool has_image_dma_buf_import_ext_ = false;
+ int32_t drm_fd_ = -1; // for GBM buffer mmap
+ gbm_device* gbm_device_ = nullptr; // for passed GBM buffer retrieval
+
+ EGLStruct egl_;
+
+ absl::optional<std::string> GetRenderNode();
+};
+
+} // namespace webrtc
+
+#endif // MODULES_DESKTOP_CAPTURE_LINUX_EGL_DMABUF_H_
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.cc b/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.cc
new file mode 100644
index 0000000000..09dea242b3
--- /dev/null
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.cc
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2022 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.h"
+
+#include <utility>
+
+#include "modules/desktop_capture/desktop_capture_options.h"
+#include "modules/desktop_capture/desktop_capturer.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/logging.h"
+
+namespace webrtc {
+
+MouseCursorMonitorPipeWire::MouseCursorMonitorPipeWire(
+ const DesktopCaptureOptions& options)
+ : options_(options) {
+}
+
+MouseCursorMonitorPipeWire::~MouseCursorMonitorPipeWire() {}
+
+void MouseCursorMonitorPipeWire::Init(Callback* callback, Mode mode) {
+ RTC_DCHECK(!callback_);
+ RTC_DCHECK(callback);
+
+ callback_ = callback;
+ mode_ = mode;
+}
+
+void MouseCursorMonitorPipeWire::Capture() {
+ RTC_DCHECK(callback_);
+
+ std::unique_ptr<MouseCursor> mouse_cursor =
+ options_.screencast_stream()->CaptureCursor();
+
+ if (mouse_cursor && mouse_cursor->image()->data()) {
+ callback_->OnMouseCursor(mouse_cursor.release());
+ }
+
+ if (mode_ == SHAPE_AND_POSITION) {
+ absl::optional<DesktopVector> mouse_cursor_position =
+ options_.screencast_stream()->CaptureCursorPosition();
+ if (mouse_cursor_position) {
+ callback_->OnMouseCursorPosition(mouse_cursor_position.value());
+ }
+ }
+}
+
+} // namespace webrtc
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.h b/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.h
new file mode 100644
index 0000000000..9b9ccf74f8
--- /dev/null
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2022 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef MODULES_DESKTOP_CAPTURE_LINUX_MOUSE_CURSOR_MONITOR_PIPEWIRE_H_
+#define MODULES_DESKTOP_CAPTURE_LINUX_MOUSE_CURSOR_MONITOR_PIPEWIRE_H_
+
+#include <memory>
+
+#include "api/scoped_refptr.h"
+#include "modules/desktop_capture/desktop_capture_options.h"
+#include "modules/desktop_capture/desktop_capture_types.h"
+#include "modules/desktop_capture/linux/shared_screencast_stream.h"
+#include "modules/desktop_capture/mouse_cursor.h"
+#include "modules/desktop_capture/mouse_cursor_monitor.h"
+
+namespace webrtc {
+
+class MouseCursorMonitorPipeWire : public MouseCursorMonitor {
+ public:
+ explicit MouseCursorMonitorPipeWire(const DesktopCaptureOptions& options);
+ ~MouseCursorMonitorPipeWire() override;
+
+ // MouseCursorMonitor:
+ void Init(Callback* callback, Mode mode) override;
+ void Capture() override;
+
+ DesktopCaptureOptions options_;
+ Callback* callback_ = nullptr;
+ Mode mode_ = SHAPE_AND_POSITION;
+};
+
+} // namespace webrtc
+
+#endif // MODULES_DESKTOP_CAPTURE_LINUX_MOUSE_CURSOR_MONITOR_PIPEWIRE_H_
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/pipewire.sigs b/third_party/libwebrtc/modules/desktop_capture/linux/pipewire.sigs
index 3e21e9dc07..06a97b8f29 100644
--- a/third_party/libwebrtc/modules/desktop_capture/linux/pipewire.sigs
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/pipewire.sigs
@@ -7,38 +7,44 @@
//------------------------------------------------
// core.h
-void pw_core_destroy(pw_core *core);
-pw_type *pw_core_get_type(pw_core *core);
-pw_core * pw_core_new(pw_loop *main_loop, pw_properties *props);
+int pw_core_disconnect(pw_core *core);
// loop.h
void pw_loop_destroy(pw_loop *loop);
-pw_loop * pw_loop_new(pw_properties *properties);
+pw_loop * pw_loop_new(const spa_dict *props);
+
// pipewire.h
void pw_init(int *argc, char **argv[]);
+const char* pw_get_library_version();
// properties.h
pw_properties * pw_properties_new_string(const char *args);
-// remote.h
-void pw_remote_add_listener(pw_remote *remote, spa_hook *listener, const pw_remote_events *events, void *data);
-int pw_remote_connect_fd(pw_remote *remote, int fd);
-void pw_remote_destroy(pw_remote *remote);
-pw_remote * pw_remote_new(pw_core *core, pw_properties *properties, size_t user_data_size);
-
// stream.h
void pw_stream_add_listener(pw_stream *stream, spa_hook *listener, const pw_stream_events *events, void *data);
-int pw_stream_connect(pw_stream *stream, enum pw_direction direction, const char *port_path, enum pw_stream_flags flags, const spa_pod **params, uint32_t n_params);
+int pw_stream_connect(pw_stream *stream, enum pw_direction direction, uint32_t target_id, enum pw_stream_flags flags, const spa_pod **params, uint32_t n_params);
+int pw_stream_disconnect(pw_stream *stream);
pw_buffer *pw_stream_dequeue_buffer(pw_stream *stream);
void pw_stream_destroy(pw_stream *stream);
-void pw_stream_finish_format(pw_stream *stream, int res, const spa_pod **params, uint32_t n_params);
-pw_stream * pw_stream_new(pw_remote *remote, const char *name, pw_properties *props);
+pw_stream * pw_stream_new(pw_core *core, const char *name, pw_properties *props);
int pw_stream_queue_buffer(pw_stream *stream, pw_buffer *buffer);
int pw_stream_set_active(pw_stream *stream, bool active);
+int pw_stream_update_params(pw_stream *stream, const spa_pod **params, uint32_t n_params);
// thread-loop.h
void pw_thread_loop_destroy(pw_thread_loop *loop);
-pw_thread_loop * pw_thread_loop_new(pw_loop *loop, const char *name);
+pw_thread_loop * pw_thread_loop_new(const char *name, const spa_dict *props);
int pw_thread_loop_start(pw_thread_loop *loop);
void pw_thread_loop_stop(pw_thread_loop *loop);
+void pw_thread_loop_lock(pw_thread_loop *loop);
+void pw_thread_loop_unlock(pw_thread_loop *loop);
+pw_loop * pw_thread_loop_get_loop(pw_thread_loop *loop);
+void pw_thread_loop_signal(pw_thread_loop *loop, bool wait_for_accept);
+void pw_thread_loop_wait(pw_thread_loop *loop);
+
+// context.h
+void pw_context_destroy(pw_context *context);
+pw_context *pw_context_new(pw_loop *main_loop, pw_properties *props, size_t user_data_size);
+pw_core * pw_context_connect(pw_context *context, pw_properties *properties, size_t user_data_size);
+pw_core * pw_context_connect_fd(pw_context *context, int fd, pw_properties *properties, size_t user_data_size);
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/pipewire_stub_header.fragment b/third_party/libwebrtc/modules/desktop_capture/linux/pipewire_stub_header.fragment
index 9d7dbd27c5..06ae18dfd4 100644
--- a/third_party/libwebrtc/modules/desktop_capture/linux/pipewire_stub_header.fragment
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/pipewire_stub_header.fragment
@@ -5,4 +5,5 @@ extern "C" {
#include <pipewire/pipewire.h>
+#include <xf86drm.h>
}
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/scoped_glib.cc b/third_party/libwebrtc/modules/desktop_capture/linux/scoped_glib.cc
new file mode 100644
index 0000000000..51ca57adc1
--- /dev/null
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/scoped_glib.cc
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2022 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "modules/desktop_capture/linux/scoped_glib.h"
+
+namespace webrtc {
+
+template <>
+Scoped<GError>::~Scoped() {
+ if (ptr_) {
+ g_error_free(ptr_);
+ }
+}
+
+template <>
+Scoped<char>::~Scoped() {
+ if (ptr_) {
+ g_free(ptr_);
+ }
+}
+
+template <>
+Scoped<GVariant>::~Scoped() {
+ if (ptr_) {
+ g_variant_unref(ptr_);
+ }
+}
+
+template <>
+Scoped<GVariantIter>::~Scoped() {
+ if (ptr_) {
+ g_variant_iter_free(ptr_);
+ }
+}
+
+template <>
+Scoped<GDBusMessage>::~Scoped() {
+ if (ptr_) {
+ g_object_unref(ptr_);
+ }
+}
+
+template <>
+Scoped<GUnixFDList>::~Scoped() {
+ if (ptr_) {
+ g_object_unref(ptr_);
+ }
+}
+
+} // namespace webrtc
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/scoped_glib.h b/third_party/libwebrtc/modules/desktop_capture/linux/scoped_glib.h
new file mode 100644
index 0000000000..ef152c1469
--- /dev/null
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/scoped_glib.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2022 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef MODULES_DESKTOP_CAPTURE_LINUX_SCOPED_GLIB_H_
+#define MODULES_DESKTOP_CAPTURE_LINUX_SCOPED_GLIB_H_
+
+#include <gio/gio.h>
+
+#include "rtc_base/checks.h"
+
+namespace webrtc {
+
+template <class T>
+class Scoped {
+ public:
+ Scoped() {}
+ explicit Scoped(T* val) { ptr_ = val; }
+ ~Scoped() { }
+
+ T* operator->() const { return ptr_; }
+
+ explicit operator bool() const { return ptr_ != nullptr; }
+
+ bool operator!() const { return ptr_ == nullptr; }
+
+ T* get() const { return ptr_; }
+
+ T** receive() {
+ RTC_CHECK(!ptr_);
+ return &ptr_;
+ }
+
+ Scoped& operator=(T* val) {
+ RTC_DCHECK(val);
+ ptr_ = val;
+ return *this;
+ }
+
+ protected:
+ T* ptr_ = nullptr;
+};
+
+template <>
+Scoped<GError>::~Scoped();
+template <>
+Scoped<char>::~Scoped();
+template <>
+Scoped<GVariant>::~Scoped();
+template <>
+Scoped<GVariantIter>::~Scoped();
+template <>
+Scoped<GDBusMessage>::~Scoped();
+template <>
+Scoped<GUnixFDList>::~Scoped();
+
+} // namespace webrtc
+
+#endif // MODULES_DESKTOP_CAPTURE_LINUX_SCOPED_GLIB_H_
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc b/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc
deleted file mode 100644
index 3813d697bb..0000000000
--- a/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2018 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/desktop_capture/linux/screen_capturer_pipewire.h"
-
-#include <memory>
-
-namespace webrtc {
-
-ScreenCapturerPipeWire::ScreenCapturerPipeWire()
- : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::kScreen) {}
-ScreenCapturerPipeWire::~ScreenCapturerPipeWire() {}
-
-// static
-std::unique_ptr<DesktopCapturer>
-ScreenCapturerPipeWire::CreateRawScreenCapturer(
- const DesktopCaptureOptions& options) {
- return std::make_unique<ScreenCapturerPipeWire>();
-}
-
-} // namespace webrtc
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_pipewire.h b/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_pipewire.h
deleted file mode 100644
index 66dcd680e0..0000000000
--- a/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_pipewire.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2018 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_DESKTOP_CAPTURE_LINUX_SCREEN_CAPTURER_PIPEWIRE_H_
-#define MODULES_DESKTOP_CAPTURE_LINUX_SCREEN_CAPTURER_PIPEWIRE_H_
-
-#include <memory>
-
-#include "modules/desktop_capture/linux/base_capturer_pipewire.h"
-
-namespace webrtc {
-
-class ScreenCapturerPipeWire : public BaseCapturerPipeWire {
- public:
- ScreenCapturerPipeWire();
- ~ScreenCapturerPipeWire() override;
-
- static std::unique_ptr<DesktopCapturer> CreateRawScreenCapturer(
- const DesktopCaptureOptions& options);
-
- RTC_DISALLOW_COPY_AND_ASSIGN(ScreenCapturerPipeWire);
-};
-
-} // namespace webrtc
-
-#endif // MODULES_DESKTOP_CAPTURE_LINUX_SCREEN_CAPTURER_PIPEWIRE_H_
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/screencast_portal.cc b/third_party/libwebrtc/modules/desktop_capture/linux/screencast_portal.cc
new file mode 100644
index 0000000000..306e984207
--- /dev/null
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/screencast_portal.cc
@@ -0,0 +1,532 @@
+/*
+ * Copyright 2022 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "modules/desktop_capture/linux/screencast_portal.h"
+
+#include <gio/gunixfdlist.h>
+#include <glib-object.h>
+
+#include "modules/desktop_capture/linux/scoped_glib.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/logging.h"
+
+namespace webrtc {
+
+const char kDesktopBusName[] = "org.freedesktop.portal.Desktop";
+const char kDesktopObjectPath[] = "/org/freedesktop/portal/desktop";
+const char kDesktopRequestObjectPath[] =
+ "/org/freedesktop/portal/desktop/request";
+const char kSessionInterfaceName[] = "org.freedesktop.portal.Session";
+const char kRequestInterfaceName[] = "org.freedesktop.portal.Request";
+const char kScreenCastInterfaceName[] = "org.freedesktop.portal.ScreenCast";
+
+ScreenCastPortal::ScreenCastPortal(CaptureSourceType source_type,
+ PortalNotifier* notifier)
+ : notifier_(notifier), capture_source_type_(source_type) {}
+
+ScreenCastPortal::~ScreenCastPortal() {
+ if (start_request_signal_id_) {
+ g_dbus_connection_signal_unsubscribe(connection_, start_request_signal_id_);
+ }
+ if (sources_request_signal_id_) {
+ g_dbus_connection_signal_unsubscribe(connection_,
+ sources_request_signal_id_);
+ }
+ if (session_request_signal_id_) {
+ g_dbus_connection_signal_unsubscribe(connection_,
+ session_request_signal_id_);
+ }
+
+ if (!session_handle_.empty()) {
+ Scoped<GDBusMessage> message(
+ g_dbus_message_new_method_call(kDesktopBusName, session_handle_.c_str(),
+ kSessionInterfaceName, "Close"));
+ if (message.get()) {
+ Scoped<GError> error;
+ g_dbus_connection_send_message(connection_, message.get(),
+ G_DBUS_SEND_MESSAGE_FLAGS_NONE,
+ /*out_serial=*/nullptr, error.receive());
+ if (error.get()) {
+ RTC_LOG(LS_ERROR) << "Failed to close the session: " << error->message;
+ }
+ }
+ }
+
+ if (cancellable_) {
+ g_cancellable_cancel(cancellable_);
+ g_object_unref(cancellable_);
+ cancellable_ = nullptr;
+ }
+
+ if (proxy_) {
+ g_object_unref(proxy_);
+ proxy_ = nullptr;
+ }
+
+ if (pw_fd_ != -1) {
+ close(pw_fd_);
+ }
+}
+
+void ScreenCastPortal::Start() {
+ cancellable_ = g_cancellable_new();
+ g_dbus_proxy_new_for_bus(
+ G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, /*info=*/nullptr,
+ kDesktopBusName, kDesktopObjectPath, kScreenCastInterfaceName,
+ cancellable_, reinterpret_cast<GAsyncReadyCallback>(OnProxyRequested),
+ this);
+}
+
+void ScreenCastPortal::PortalFailed(RequestResponse result) {
+ notifier_->OnScreenCastRequestResult(result, pw_stream_node_id_, pw_fd_);
+}
+
+uint32_t ScreenCastPortal::SetupRequestResponseSignal(
+ const char* object_path,
+ GDBusSignalCallback callback) {
+ return g_dbus_connection_signal_subscribe(
+ connection_, kDesktopBusName, kRequestInterfaceName, "Response",
+ object_path, /*arg0=*/nullptr, G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE,
+ callback, this, /*user_data_free_func=*/nullptr);
+}
+
+// static
+void ScreenCastPortal::OnProxyRequested(GObject* /*object*/,
+ GAsyncResult* result,
+ gpointer user_data) {
+ ScreenCastPortal* that = static_cast<ScreenCastPortal*>(user_data);
+ RTC_DCHECK(that);
+
+ Scoped<GError> error;
+ GDBusProxy* proxy = g_dbus_proxy_new_finish(result, error.receive());
+ if (!proxy) {
+ if (g_error_matches(error.get(), G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ return;
+ RTC_LOG(LS_ERROR) << "Failed to create a proxy for the screen cast portal: "
+ << error->message;
+ that->PortalFailed(RequestResponse::kError);
+ return;
+ }
+ that->proxy_ = proxy;
+ that->connection_ = g_dbus_proxy_get_connection(that->proxy_);
+
+ RTC_LOG(LS_INFO) << "Created proxy for the screen cast portal.";
+
+ that->SessionRequest();
+}
+
+// static
+std::string ScreenCastPortal::PrepareSignalHandle(GDBusConnection* connection,
+ const char* token) {
+ Scoped<char> sender(
+ g_strdup(g_dbus_connection_get_unique_name(connection) + 1));
+ for (int i = 0; sender.get()[i]; ++i) {
+ if (sender.get()[i] == '.') {
+ sender.get()[i] = '_';
+ }
+ }
+
+ const char* handle = g_strconcat(kDesktopRequestObjectPath, "/", sender.get(),
+ "/", token, /*end of varargs*/ nullptr);
+
+ return handle;
+}
+
+void ScreenCastPortal::SessionRequest() {
+ GVariantBuilder builder;
+ Scoped<char> variant_string;
+
+ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
+ variant_string =
+ g_strdup_printf("webrtc_session%d", g_random_int_range(0, G_MAXINT));
+ g_variant_builder_add(&builder, "{sv}", "session_handle_token",
+ g_variant_new_string(variant_string.get()));
+ variant_string = g_strdup_printf("webrtc%d", g_random_int_range(0, G_MAXINT));
+ g_variant_builder_add(&builder, "{sv}", "handle_token",
+ g_variant_new_string(variant_string.get()));
+
+ portal_handle_ = PrepareSignalHandle(connection_, variant_string.get());
+ session_request_signal_id_ = SetupRequestResponseSignal(
+ portal_handle_.c_str(), OnSessionRequestResponseSignal);
+
+ RTC_LOG(LS_INFO) << "Screen cast session requested.";
+ g_dbus_proxy_call(proxy_, "CreateSession", g_variant_new("(a{sv})", &builder),
+ G_DBUS_CALL_FLAGS_NONE, /*timeout=*/-1, cancellable_,
+ reinterpret_cast<GAsyncReadyCallback>(OnSessionRequested),
+ this);
+}
+
+// static
+void ScreenCastPortal::OnSessionRequested(GDBusProxy* proxy,
+ GAsyncResult* result,
+ gpointer user_data) {
+ ScreenCastPortal* that = static_cast<ScreenCastPortal*>(user_data);
+ RTC_DCHECK(that);
+
+ Scoped<GError> error;
+ Scoped<GVariant> variant(
+ g_dbus_proxy_call_finish(proxy, result, error.receive()));
+ if (!variant) {
+ if (g_error_matches(error.get(), G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ return;
+ RTC_LOG(LS_ERROR) << "Failed to create a screen cast session: "
+ << error->message;
+ that->PortalFailed(RequestResponse::kError);
+ return;
+ }
+ RTC_LOG(LS_INFO) << "Initializing the screen cast session.";
+
+ Scoped<char> handle;
+ g_variant_get_child(variant.get(), 0, "o", &handle);
+ if (!handle) {
+ RTC_LOG(LS_ERROR) << "Failed to initialize the screen cast session.";
+ if (that->session_request_signal_id_) {
+ g_dbus_connection_signal_unsubscribe(that->connection_,
+ that->session_request_signal_id_);
+ that->session_request_signal_id_ = 0;
+ }
+ that->PortalFailed(RequestResponse::kError);
+ return;
+ }
+
+ RTC_LOG(LS_INFO) << "Subscribing to the screen cast session.";
+}
+
+// static
+void ScreenCastPortal::OnSessionRequestResponseSignal(
+ GDBusConnection* connection,
+ const char* sender_name,
+ const char* object_path,
+ const char* interface_name,
+ const char* signal_name,
+ GVariant* parameters,
+ gpointer user_data) {
+ ScreenCastPortal* that = static_cast<ScreenCastPortal*>(user_data);
+ RTC_DCHECK(that);
+
+ RTC_LOG(LS_INFO)
+ << "Received response for the screen cast session subscription.";
+
+ uint32_t portal_response;
+ Scoped<GVariant> response_data;
+ g_variant_get(parameters, "(u@a{sv})", &portal_response,
+ response_data.receive());
+ Scoped<GVariant> session_handle(
+ g_variant_lookup_value(response_data.get(), "session_handle", nullptr));
+ that->session_handle_ = g_variant_dup_string(session_handle.get(), nullptr);
+
+ if (that->session_handle_.empty() || portal_response) {
+ RTC_LOG(LS_ERROR)
+ << "Failed to request the screen cast session subscription.";
+ that->PortalFailed(RequestResponse::kError);
+ return;
+ }
+
+ that->session_closed_signal_id_ = g_dbus_connection_signal_subscribe(
+ that->connection_, kDesktopBusName, kSessionInterfaceName, "Closed",
+ that->session_handle_.c_str(), /*arg0=*/nullptr, G_DBUS_SIGNAL_FLAGS_NONE,
+ OnSessionClosedSignal, that, /*user_data_free_func=*/nullptr);
+
+ that->SourcesRequest();
+}
+
+// static
+void ScreenCastPortal::OnSessionClosedSignal(GDBusConnection* connection,
+ const char* sender_name,
+ const char* object_path,
+ const char* interface_name,
+ const char* signal_name,
+ GVariant* parameters,
+ gpointer user_data) {
+ ScreenCastPortal* that = static_cast<ScreenCastPortal*>(user_data);
+ RTC_DCHECK(that);
+
+ RTC_LOG(LS_INFO) << "Received closed signal from session.";
+
+ that->notifier_->OnScreenCastSessionClosed();
+
+ // Unsubscribe from the signal and free the session handle to avoid calling
+ // Session::Close from the destructor since it's already closed
+ g_dbus_connection_signal_unsubscribe(that->connection_,
+ that->session_closed_signal_id_);
+}
+
+void ScreenCastPortal::SourcesRequest() {
+ GVariantBuilder builder;
+ Scoped<char> variant_string;
+
+ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
+ // We want to record monitor content.
+ g_variant_builder_add(
+ &builder, "{sv}", "types",
+ g_variant_new_uint32(static_cast<uint32_t>(capture_source_type_)));
+ // We don't want to allow selection of multiple sources.
+ g_variant_builder_add(&builder, "{sv}", "multiple",
+ g_variant_new_boolean(false));
+
+ Scoped<GVariant> variant(
+ g_dbus_proxy_get_cached_property(proxy_, "AvailableCursorModes"));
+ if (variant.get()) {
+ uint32_t modes = 0;
+ g_variant_get(variant.get(), "u", &modes);
+ // Make request only if this mode is advertised by the portal
+ // implementation.
+ if (modes & static_cast<uint32_t>(cursor_mode_)) {
+ g_variant_builder_add(
+ &builder, "{sv}", "cursor_mode",
+ g_variant_new_uint32(static_cast<uint32_t>(cursor_mode_)));
+ }
+ }
+
+ variant_string = g_strdup_printf("webrtc%d", g_random_int_range(0, G_MAXINT));
+ g_variant_builder_add(&builder, "{sv}", "handle_token",
+ g_variant_new_string(variant_string.get()));
+
+ sources_handle_ = PrepareSignalHandle(connection_, variant_string.get());
+ sources_request_signal_id_ = SetupRequestResponseSignal(
+ sources_handle_.c_str(), OnSourcesRequestResponseSignal);
+
+ RTC_LOG(LS_INFO) << "Requesting sources from the screen cast session.";
+ g_dbus_proxy_call(
+ proxy_, "SelectSources",
+ g_variant_new("(oa{sv})", session_handle_.c_str(), &builder),
+ G_DBUS_CALL_FLAGS_NONE, /*timeout=*/-1, cancellable_,
+ reinterpret_cast<GAsyncReadyCallback>(OnSourcesRequested), this);
+}
+
+// static
+void ScreenCastPortal::OnSourcesRequested(GDBusProxy* proxy,
+ GAsyncResult* result,
+ gpointer user_data) {
+ ScreenCastPortal* that = static_cast<ScreenCastPortal*>(user_data);
+ RTC_DCHECK(that);
+
+ Scoped<GError> error;
+ Scoped<GVariant> variant(
+ g_dbus_proxy_call_finish(proxy, result, error.receive()));
+ if (!variant) {
+ if (g_error_matches(error.get(), G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ return;
+ RTC_LOG(LS_ERROR) << "Failed to request the sources: " << error->message;
+ that->PortalFailed(RequestResponse::kError);
+ return;
+ }
+
+ RTC_LOG(LS_INFO) << "Sources requested from the screen cast session.";
+
+ Scoped<char> handle;
+ g_variant_get_child(variant.get(), 0, "o", handle.receive());
+ if (!handle) {
+ RTC_LOG(LS_ERROR) << "Failed to initialize the screen cast session.";
+ if (that->sources_request_signal_id_) {
+ g_dbus_connection_signal_unsubscribe(that->connection_,
+ that->sources_request_signal_id_);
+ that->sources_request_signal_id_ = 0;
+ }
+ that->PortalFailed(RequestResponse::kError);
+ return;
+ }
+
+ RTC_LOG(LS_INFO) << "Subscribed to sources signal.";
+}
+
+// static
+void ScreenCastPortal::OnSourcesRequestResponseSignal(
+ GDBusConnection* connection,
+ const char* sender_name,
+ const char* object_path,
+ const char* interface_name,
+ const char* signal_name,
+ GVariant* parameters,
+ gpointer user_data) {
+ ScreenCastPortal* that = static_cast<ScreenCastPortal*>(user_data);
+ RTC_DCHECK(that);
+
+ RTC_LOG(LS_INFO) << "Received sources signal from session.";
+
+ uint32_t portal_response;
+ g_variant_get(parameters, "(u@a{sv})", &portal_response, nullptr);
+ if (portal_response) {
+ RTC_LOG(LS_ERROR)
+ << "Failed to select sources for the screen cast session.";
+ that->PortalFailed(RequestResponse::kError);
+ return;
+ }
+
+ that->StartRequest();
+}
+
+void ScreenCastPortal::StartRequest() {
+ GVariantBuilder builder;
+ Scoped<char> variant_string;
+
+ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
+ variant_string = g_strdup_printf("webrtc%d", g_random_int_range(0, G_MAXINT));
+ g_variant_builder_add(&builder, "{sv}", "handle_token",
+ g_variant_new_string(variant_string.get()));
+
+ start_handle_ = PrepareSignalHandle(connection_, variant_string.get());
+ start_request_signal_id_ = SetupRequestResponseSignal(
+ start_handle_.c_str(), OnStartRequestResponseSignal);
+
+ // "Identifier for the application window", this is Wayland, so not "x11:...".
+ const char parent_window[] = "";
+
+ RTC_LOG(LS_INFO) << "Starting the screen cast session.";
+ g_dbus_proxy_call(proxy_, "Start",
+ g_variant_new("(osa{sv})", session_handle_.c_str(),
+ parent_window, &builder),
+ G_DBUS_CALL_FLAGS_NONE, /*timeout=*/-1, cancellable_,
+ reinterpret_cast<GAsyncReadyCallback>(OnStartRequested),
+ this);
+}
+
+// static
+void ScreenCastPortal::OnStartRequested(GDBusProxy* proxy,
+ GAsyncResult* result,
+ gpointer user_data) {
+ ScreenCastPortal* that = static_cast<ScreenCastPortal*>(user_data);
+ RTC_DCHECK(that);
+
+ Scoped<GError> error;
+ Scoped<GVariant> variant(
+ g_dbus_proxy_call_finish(proxy, result, error.receive()));
+ if (!variant) {
+ if (g_error_matches(error.get(), G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ return;
+ RTC_LOG(LS_ERROR) << "Failed to start the screen cast session: "
+ << error->message;
+ that->PortalFailed(RequestResponse::kError);
+ return;
+ }
+
+ RTC_LOG(LS_INFO) << "Initializing the start of the screen cast session.";
+
+ Scoped<char> handle;
+ g_variant_get_child(variant.get(), 0, "o", handle.receive());
+ if (!handle) {
+ RTC_LOG(LS_ERROR)
+ << "Failed to initialize the start of the screen cast session.";
+ if (that->start_request_signal_id_) {
+ g_dbus_connection_signal_unsubscribe(that->connection_,
+ that->start_request_signal_id_);
+ that->start_request_signal_id_ = 0;
+ }
+ that->PortalFailed(RequestResponse::kError);
+ return;
+ }
+
+ RTC_LOG(LS_INFO) << "Subscribed to the start signal.";
+}
+
+// static
+void ScreenCastPortal::OnStartRequestResponseSignal(GDBusConnection* connection,
+ const char* sender_name,
+ const char* object_path,
+ const char* interface_name,
+ const char* signal_name,
+ GVariant* parameters,
+ gpointer user_data) {
+ ScreenCastPortal* that = static_cast<ScreenCastPortal*>(user_data);
+ RTC_DCHECK(that);
+
+ RTC_LOG(LS_INFO) << "Start signal received.";
+ uint32_t portal_response;
+ Scoped<GVariant> response_data;
+ Scoped<GVariantIter> iter;
+ g_variant_get(parameters, "(u@a{sv})", &portal_response,
+ response_data.receive());
+ if (portal_response || !response_data) {
+ RTC_LOG(LS_ERROR) << "Failed to start the screen cast session.";
+ that->PortalFailed(static_cast<RequestResponse>(portal_response));
+ return;
+ }
+
+ // Array of PipeWire streams. See
+ // https://github.com/flatpak/xdg-desktop-portal/blob/master/data/org.freedesktop.portal.ScreenCast.xml
+ // documentation for <method name="Start">.
+ if (g_variant_lookup(response_data.get(), "streams", "a(ua{sv})",
+ iter.receive())) {
+ Scoped<GVariant> variant;
+
+ while (g_variant_iter_next(iter.get(), "@(ua{sv})", variant.receive())) {
+ uint32_t stream_id;
+ uint32_t type;
+ Scoped<GVariant> options;
+
+ g_variant_get(variant.get(), "(u@a{sv})", &stream_id, options.receive());
+ RTC_DCHECK(options.get());
+
+ if (g_variant_lookup(options.get(), "source_type", "u", &type)) {
+ that->capture_source_type_ =
+ static_cast<ScreenCastPortal::CaptureSourceType>(type);
+ }
+
+ that->pw_stream_node_id_ = stream_id;
+
+ break;
+ }
+ }
+
+ that->OpenPipeWireRemote();
+}
+
+void ScreenCastPortal::OpenPipeWireRemote() {
+ GVariantBuilder builder;
+ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
+
+ RTC_LOG(LS_INFO) << "Opening the PipeWire remote.";
+
+ g_dbus_proxy_call_with_unix_fd_list(
+ proxy_, "OpenPipeWireRemote",
+ g_variant_new("(oa{sv})", session_handle_.c_str(), &builder),
+ G_DBUS_CALL_FLAGS_NONE, /*timeout=*/-1, /*fd_list=*/nullptr, cancellable_,
+ reinterpret_cast<GAsyncReadyCallback>(OnOpenPipeWireRemoteRequested),
+ this);
+}
+
+// static
+void ScreenCastPortal::OnOpenPipeWireRemoteRequested(GDBusProxy* proxy,
+ GAsyncResult* result,
+ gpointer user_data) {
+ ScreenCastPortal* that = static_cast<ScreenCastPortal*>(user_data);
+ RTC_DCHECK(that);
+
+ Scoped<GError> error;
+ Scoped<GUnixFDList> outlist;
+ Scoped<GVariant> variant(g_dbus_proxy_call_with_unix_fd_list_finish(
+ proxy, outlist.receive(), result, error.receive()));
+ if (!variant) {
+ if (g_error_matches(error.get(), G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ return;
+ RTC_LOG(LS_ERROR) << "Failed to open the PipeWire remote: "
+ << error->message;
+ that->PortalFailed(RequestResponse::kError);
+ return;
+ }
+
+ int32_t index;
+ g_variant_get(variant.get(), "(h)", &index);
+
+ that->pw_fd_ = g_unix_fd_list_get(outlist.get(), index, error.receive());
+
+ if (that->pw_fd_ == -1) {
+ RTC_LOG(LS_ERROR) << "Failed to get file descriptor from the list: "
+ << error->message;
+ that->PortalFailed(RequestResponse::kError);
+ return;
+ }
+
+ that->notifier_->OnScreenCastRequestResult(
+ ScreenCastPortal::RequestResponse::kSuccess, that->pw_stream_node_id_,
+ that->pw_fd_);
+}
+
+} // namespace webrtc
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/screencast_portal.h b/third_party/libwebrtc/modules/desktop_capture/linux/screencast_portal.h
new file mode 100644
index 0000000000..7da218ed78
--- /dev/null
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/screencast_portal.h
@@ -0,0 +1,169 @@
+/*
+ * Copyright 2022 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef MODULES_DESKTOP_CAPTURE_LINUX_SCREENCAST_PORTAL_H_
+#define MODULES_DESKTOP_CAPTURE_LINUX_SCREENCAST_PORTAL_H_
+
+#include <gio/gio.h>
+
+#include <string>
+
+#include "absl/types/optional.h"
+
+namespace webrtc {
+
+class ScreenCastPortal {
+ public:
+ // Values are set based on source type property in
+ // xdg-desktop-portal/screencast
+ // https://github.com/flatpak/xdg-desktop-portal/blob/master/data/org.freedesktop.portal.ScreenCast.xml
+ enum class CaptureSourceType : uint32_t {
+ kScreen = 0b01,
+ kWindow = 0b10,
+ kAnyScreenContent = kScreen | kWindow
+ };
+
+ // Values are set based on cursor mode property in
+ // xdg-desktop-portal/screencast
+ // https://github.com/flatpak/xdg-desktop-portal/blob/master/data/org.freedesktop.portal.ScreenCast.xml
+ enum class CursorMode : uint32_t {
+ // Mouse cursor will not be included in any form
+ kHidden = 0b01,
+ // Mouse cursor will be part of the screen content
+ kEmbedded = 0b10,
+ // Mouse cursor information will be send separately in form of metadata
+ kMetadata = 0b100
+ };
+
+ // Interface that must be implemented by the ScreenCastPortal consumers.
+ enum class RequestResponse {
+ // Success, the request is carried out.
+ kSuccess,
+ // The user cancelled the interaction.
+ kUserCancelled,
+ // The user interaction was ended in some other way.
+ kError,
+
+ kMaxValue = kError
+ };
+
+ class PortalNotifier {
+ public:
+ virtual void OnScreenCastRequestResult(RequestResponse result,
+ uint32_t stream_node_id,
+ int fd) = 0;
+ virtual void OnScreenCastSessionClosed() = 0;
+
+ protected:
+ PortalNotifier() = default;
+ virtual ~PortalNotifier() = default;
+ };
+
+ explicit ScreenCastPortal(CaptureSourceType source_type,
+ PortalNotifier* notifier);
+ ~ScreenCastPortal();
+
+ // Initialize ScreenCastPortal with series of DBus calls where we try to
+ // obtain all the required information, like PipeWire file descriptor and
+ // PipeWire stream node ID.
+ //
+ // The observer will return whether the communication with xdg-desktop-portal
+ // was successful and only then you will be able to get all the required
+ // information in order to continue working with PipeWire.
+ void Start();
+
+ private:
+ PortalNotifier* notifier_;
+
+ // A PipeWire stream ID of stream we will be connecting to
+ uint32_t pw_stream_node_id_ = 0;
+ // A file descriptor of PipeWire socket
+ int pw_fd_ = -1;
+
+ CaptureSourceType capture_source_type_ =
+ ScreenCastPortal::CaptureSourceType::kScreen;
+
+ CursorMode cursor_mode_ = ScreenCastPortal::CursorMode::kMetadata;
+
+ GDBusConnection* connection_ = nullptr;
+ GDBusProxy* proxy_ = nullptr;
+ GCancellable* cancellable_ = nullptr;
+ std::string portal_handle_;
+ std::string session_handle_;
+ std::string sources_handle_;
+ std::string start_handle_;
+ guint session_request_signal_id_ = 0;
+ guint sources_request_signal_id_ = 0;
+ guint start_request_signal_id_ = 0;
+ guint session_closed_signal_id_ = 0;
+
+ void PortalFailed(RequestResponse result);
+
+ uint32_t SetupRequestResponseSignal(const char* object_path,
+ GDBusSignalCallback callback);
+
+ static void OnProxyRequested(GObject* object,
+ GAsyncResult* result,
+ gpointer user_data);
+
+ static std::string PrepareSignalHandle(GDBusConnection* connection,
+ const char* token);
+
+ void SessionRequest();
+ static void OnSessionRequested(GDBusProxy* proxy,
+ GAsyncResult* result,
+ gpointer user_data);
+ static void OnSessionRequestResponseSignal(GDBusConnection* connection,
+ const char* sender_name,
+ const char* object_path,
+ const char* interface_name,
+ const char* signal_name,
+ GVariant* parameters,
+ gpointer user_data);
+ static void OnSessionClosedSignal(GDBusConnection* connection,
+ const char* sender_name,
+ const char* object_path,
+ const char* interface_name,
+ const char* signal_name,
+ GVariant* parameters,
+ gpointer user_data);
+ void SourcesRequest();
+ static void OnSourcesRequested(GDBusProxy* proxy,
+ GAsyncResult* result,
+ gpointer user_data);
+ static void OnSourcesRequestResponseSignal(GDBusConnection* connection,
+ const char* sender_name,
+ const char* object_path,
+ const char* interface_name,
+ const char* signal_name,
+ GVariant* parameters,
+ gpointer user_data);
+
+ void StartRequest();
+ static void OnStartRequested(GDBusProxy* proxy,
+ GAsyncResult* result,
+ gpointer user_data);
+ static void OnStartRequestResponseSignal(GDBusConnection* connection,
+ const char* sender_name,
+ const char* object_path,
+ const char* interface_name,
+ const char* signal_name,
+ GVariant* parameters,
+ gpointer user_data);
+
+ void OpenPipeWireRemote();
+ static void OnOpenPipeWireRemoteRequested(GDBusProxy* proxy,
+ GAsyncResult* result,
+ gpointer user_data);
+};
+
+} // namespace webrtc
+
+#endif // MODULES_DESKTOP_CAPTURE_LINUX_SCREENCAST_PORTAL_H_
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/shared_screencast_stream.cc b/third_party/libwebrtc/modules/desktop_capture/linux/shared_screencast_stream.cc
new file mode 100644
index 0000000000..4fb06ac13d
--- /dev/null
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/shared_screencast_stream.cc
@@ -0,0 +1,944 @@
+/*
+ * Copyright 2022 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "modules/desktop_capture/linux/shared_screencast_stream.h"
+
+#include <fcntl.h>
+#include <drm/drm_fourcc.h>
+#include <pipewire/pipewire.h>
+#include <spa/param/format-utils.h>
+#include <spa/param/props.h>
+#include <spa/param/video/format-utils.h>
+#include <spa/utils/result.h>
+#include <sys/mman.h>
+
+#include <string>
+#include <tuple>
+#include <utility>
+#include <vector>
+
+#include "absl/memory/memory.h"
+#include "modules/desktop_capture/linux/egl_dmabuf.h"
+#include "modules/desktop_capture/screen_capture_frame_queue.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/logging.h"
+#include "rtc_base/sanitizer.h"
+#include "rtc_base/string_encode.h"
+#include "rtc_base/string_to_number.h"
+#include "rtc_base/synchronization/mutex.h"
+
+#if defined(WEBRTC_DLOPEN_PIPEWIRE)
+#include "modules/desktop_capture/linux/pipewire_stubs.h"
+using modules_desktop_capture_linux_wayland::InitializeStubs;
+using modules_desktop_capture_linux_wayland::kModuleDrm;
+using modules_desktop_capture_linux_wayland::kModulePipewire;
+using modules_desktop_capture_linux_wayland::StubPathMap;
+#endif // defined(WEBRTC_DLOPEN_PIPEWIRE)
+
+namespace webrtc {
+
+const int kBytesPerPixel = 4;
+
+#if defined(WEBRTC_DLOPEN_PIPEWIRE)
+const char kPipeWireLib[] = "libpipewire-0.3.so.0";
+const char kDrmLib[] = "libdrm.so.2";
+#endif
+
+#if !PW_CHECK_VERSION(0, 3, 29)
+#define SPA_POD_PROP_FLAG_MANDATORY (1u << 3)
+#endif
+#if !PW_CHECK_VERSION(0, 3, 33)
+#define SPA_POD_PROP_FLAG_DONT_FIXATE (1u << 4)
+#endif
+
+constexpr int kCursorBpp = 4;
+constexpr int CursorMetaSize(int w, int h) {
+ return (sizeof(struct spa_meta_cursor) + sizeof(struct spa_meta_bitmap) +
+ w * h * kCursorBpp);
+}
+
+struct PipeWireVersion {
+ int major = 0;
+ int minor = 0;
+ int micro = 0;
+};
+
+constexpr PipeWireVersion kDmaBufMinVersion = {0, 3, 24};
+constexpr PipeWireVersion kDmaBufModifierMinVersion = {0, 3, 33};
+constexpr PipeWireVersion kDropSingleModifierMinVersion = {0, 3, 40};
+
+PipeWireVersion ParsePipeWireVersion(const char* version) {
+ std::vector<std::string> parsed_version;
+ rtc::split(version, '.', &parsed_version);
+
+ if (parsed_version.size() != 3) {
+ return {};
+ }
+
+ absl::optional<int> major = rtc::StringToNumber<int>(parsed_version.at(0));
+ absl::optional<int> minor = rtc::StringToNumber<int>(parsed_version.at(1));
+ absl::optional<int> micro = rtc::StringToNumber<int>(parsed_version.at(2));
+
+ // Return invalid version if we failed to parse it
+ if (!major || !minor || !micro) {
+ return {0, 0, 0};
+ }
+
+ return {major.value(), micro.value(), micro.value()};
+}
+
+spa_pod* BuildFormat(spa_pod_builder* builder,
+ uint32_t format,
+ const std::vector<uint64_t>& modifiers) {
+ bool first = true;
+ spa_pod_frame frames[2];
+ spa_rectangle pw_min_screen_bounds = spa_rectangle{1, 1};
+ spa_rectangle pw_max_screen_bounds = spa_rectangle{UINT32_MAX, UINT32_MAX};
+
+ spa_pod_builder_push_object(builder, &frames[0], SPA_TYPE_OBJECT_Format,
+ SPA_PARAM_EnumFormat);
+ spa_pod_builder_add(builder, SPA_FORMAT_mediaType,
+ SPA_POD_Id(SPA_MEDIA_TYPE_video), 0);
+ spa_pod_builder_add(builder, SPA_FORMAT_mediaSubtype,
+ SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw), 0);
+ spa_pod_builder_add(builder, SPA_FORMAT_VIDEO_format, SPA_POD_Id(format), 0);
+
+ if (modifiers.size()) {
+ if (modifiers.size() == 1 && modifiers[0] == DRM_FORMAT_MOD_INVALID) {
+ spa_pod_builder_prop(builder, SPA_FORMAT_VIDEO_modifier,
+ SPA_POD_PROP_FLAG_MANDATORY);
+ spa_pod_builder_long(builder, modifiers[0]);
+ } else {
+ spa_pod_builder_prop(
+ builder, SPA_FORMAT_VIDEO_modifier,
+ SPA_POD_PROP_FLAG_MANDATORY | SPA_POD_PROP_FLAG_DONT_FIXATE);
+ spa_pod_builder_push_choice(builder, &frames[1], SPA_CHOICE_Enum, 0);
+
+ // modifiers from the array
+ for (int64_t val : modifiers) {
+ spa_pod_builder_long(builder, val);
+ // Add the first modifier twice as the very first value is the default
+ // option
+ if (first) {
+ spa_pod_builder_long(builder, val);
+ first = false;
+ }
+ }
+ spa_pod_builder_pop(builder, &frames[1]);
+ }
+ }
+
+ spa_pod_builder_add(
+ builder, SPA_FORMAT_VIDEO_size,
+ SPA_POD_CHOICE_RANGE_Rectangle(
+ &pw_min_screen_bounds, &pw_min_screen_bounds, &pw_max_screen_bounds),
+ 0);
+
+ return static_cast<spa_pod*>(spa_pod_builder_pop(builder, &frames[0]));
+}
+
+class PipeWireThreadLoopLock {
+ public:
+ explicit PipeWireThreadLoopLock(pw_thread_loop* loop) : loop_(loop) {
+ pw_thread_loop_lock(loop_);
+ }
+ ~PipeWireThreadLoopLock() { pw_thread_loop_unlock(loop_); }
+
+ private:
+ pw_thread_loop* const loop_;
+};
+
+class ScopedBuf {
+ public:
+ ScopedBuf() {}
+ ScopedBuf(uint8_t* map, int map_size, int fd)
+ : map_(map), map_size_(map_size), fd_(fd) {}
+ ~ScopedBuf() {
+ if (map_ != MAP_FAILED) {
+ munmap(map_, map_size_);
+ }
+ }
+
+ explicit operator bool() { return map_ != MAP_FAILED; }
+
+ void initialize(uint8_t* map, int map_size, int fd) {
+ map_ = map;
+ map_size_ = map_size;
+ fd_ = fd;
+ }
+
+ uint8_t* get() { return map_; }
+
+ protected:
+ uint8_t* map_ = static_cast<uint8_t*>(MAP_FAILED);
+ int map_size_;
+ int fd_;
+};
+
+class SharedScreenCastStreamPrivate {
+ public:
+ SharedScreenCastStreamPrivate();
+ ~SharedScreenCastStreamPrivate();
+
+ void StopAndCleanupStream();
+ bool StartScreenCastStream(uint32_t stream_node_id, int fd);
+ void StopScreenCastStream();
+ std::unique_ptr<DesktopFrame> CaptureFrame();
+ std::unique_ptr<MouseCursor> CaptureCursor();
+ DesktopVector CaptureCursorPosition();
+
+ private:
+ uint32_t pw_stream_node_id_ = 0;
+
+ DesktopSize stream_size_ = {};
+ DesktopSize frame_size_;
+
+ webrtc::Mutex queue_lock_;
+ ScreenCaptureFrameQueue<SharedDesktopFrame> queue_
+ RTC_GUARDED_BY(&queue_lock_);
+ std::unique_ptr<MouseCursor> mouse_cursor_;
+ DesktopVector mouse_cursor_position_ = DesktopVector(-1, -1);
+
+ int64_t modifier_;
+ std::unique_ptr<EglDmaBuf> egl_dmabuf_;
+ // List of modifiers we query as supported by the graphics card/driver
+ std::vector<uint64_t> modifiers_;
+
+ // PipeWire types
+ struct pw_context* pw_context_ = nullptr;
+ struct pw_core* pw_core_ = nullptr;
+ struct pw_stream* pw_stream_ = nullptr;
+ struct pw_thread_loop* pw_main_loop_ = nullptr;
+ struct spa_source* renegotiate_ = nullptr;
+
+ spa_hook spa_core_listener_;
+ spa_hook spa_stream_listener_;
+
+ // A number used to verify all previous methods and the resulting
+ // events have been handled.
+ int server_version_sync_ = 0;
+ // Version of the running PipeWire server we communicate with
+ PipeWireVersion pw_server_version_;
+ // Version of the library used to run our code
+ PipeWireVersion pw_client_version_;
+
+ // event handlers
+ pw_core_events pw_core_events_ = {};
+ pw_stream_events pw_stream_events_ = {};
+
+ struct spa_video_info_raw spa_video_format_;
+
+ void ProcessBuffer(pw_buffer* buffer);
+ void ConvertRGBxToBGRx(uint8_t* frame, uint32_t size);
+
+ // PipeWire callbacks
+ static void OnCoreError(void* data,
+ uint32_t id,
+ int seq,
+ int res,
+ const char* message);
+ static void OnCoreDone(void* user_data, uint32_t id, int seq);
+ static void OnCoreInfo(void* user_data, const pw_core_info* info);
+ static void OnStreamParamChanged(void* data,
+ uint32_t id,
+ const struct spa_pod* format);
+ static void OnStreamStateChanged(void* data,
+ pw_stream_state old_state,
+ pw_stream_state state,
+ const char* error_message);
+ static void OnStreamProcess(void* data);
+ // This will be invoked in case we fail to process DMA-BUF PW buffer using
+ // negotiated stream parameters (modifier). We will drop the modifier we
+ // failed to use and try to use a different one or fallback to shared memory
+ // buffers.
+ static void OnRenegotiateFormat(void* data, uint64_t);
+};
+
+bool operator>=(const PipeWireVersion& current_pw_version,
+ const PipeWireVersion& required_pw_version) {
+ if (!current_pw_version.major && !current_pw_version.minor &&
+ !current_pw_version.micro) {
+ return false;
+ }
+
+ return std::tie(current_pw_version.major, current_pw_version.minor,
+ current_pw_version.micro) >=
+ std::tie(required_pw_version.major, required_pw_version.minor,
+ required_pw_version.micro);
+}
+
+bool operator<=(const PipeWireVersion& current_pw_version,
+ const PipeWireVersion& required_pw_version) {
+ if (!current_pw_version.major && !current_pw_version.minor &&
+ !current_pw_version.micro) {
+ return false;
+ }
+
+ return std::tie(current_pw_version.major, current_pw_version.minor,
+ current_pw_version.micro) <=
+ std::tie(required_pw_version.major, required_pw_version.minor,
+ required_pw_version.micro);
+}
+
+void SharedScreenCastStreamPrivate::OnCoreError(void* data,
+ uint32_t id,
+ int seq,
+ int res,
+ const char* message) {
+ SharedScreenCastStreamPrivate* that =
+ static_cast<SharedScreenCastStreamPrivate*>(data);
+ RTC_DCHECK(that);
+
+ RTC_LOG(LS_ERROR) << "PipeWire remote error: " << message;
+}
+
+void SharedScreenCastStreamPrivate::OnCoreInfo(void* data,
+ const pw_core_info* info) {
+ SharedScreenCastStreamPrivate* stream =
+ static_cast<SharedScreenCastStreamPrivate*>(data);
+ RTC_DCHECK(stream);
+
+ stream->pw_server_version_ = ParsePipeWireVersion(info->version);
+}
+
+void SharedScreenCastStreamPrivate::OnCoreDone(void* data,
+ uint32_t id,
+ int seq) {
+ const SharedScreenCastStreamPrivate* stream =
+ static_cast<SharedScreenCastStreamPrivate*>(data);
+ RTC_DCHECK(stream);
+
+ if (id == PW_ID_CORE && stream->server_version_sync_ == seq) {
+ pw_thread_loop_signal(stream->pw_main_loop_, false);
+ }
+}
+
+// static
+void SharedScreenCastStreamPrivate::OnStreamStateChanged(
+ void* data,
+ pw_stream_state old_state,
+ pw_stream_state state,
+ const char* error_message) {
+ SharedScreenCastStreamPrivate* that =
+ static_cast<SharedScreenCastStreamPrivate*>(data);
+ RTC_DCHECK(that);
+
+ switch (state) {
+ case PW_STREAM_STATE_ERROR:
+ RTC_LOG(LS_ERROR) << "PipeWire stream state error: " << error_message;
+ break;
+ case PW_STREAM_STATE_PAUSED:
+ case PW_STREAM_STATE_STREAMING:
+ case PW_STREAM_STATE_UNCONNECTED:
+ case PW_STREAM_STATE_CONNECTING:
+ break;
+ }
+}
+
+// static
+void SharedScreenCastStreamPrivate::OnStreamParamChanged(
+ void* data,
+ uint32_t id,
+ const struct spa_pod* format) {
+ SharedScreenCastStreamPrivate* that =
+ static_cast<SharedScreenCastStreamPrivate*>(data);
+ RTC_DCHECK(that);
+
+ RTC_LOG(LS_INFO) << "PipeWire stream format changed.";
+ if (!format || id != SPA_PARAM_Format) {
+ return;
+ }
+
+ spa_format_video_raw_parse(format, &that->spa_video_format_);
+
+ auto width = that->spa_video_format_.size.width;
+ auto height = that->spa_video_format_.size.height;
+ auto stride = SPA_ROUND_UP_N(width * kBytesPerPixel, 4);
+ auto size = height * stride;
+
+ that->stream_size_ = DesktopSize(width, height);
+
+ uint8_t buffer[1024] = {};
+ auto builder = spa_pod_builder{buffer, sizeof(buffer)};
+
+ // Setup buffers and meta header for new format.
+
+ // When SPA_FORMAT_VIDEO_modifier is present we can use DMA-BUFs as
+ // the server announces support for it.
+ // See https://github.com/PipeWire/pipewire/blob/master/doc/dma-buf.dox
+ const bool has_modifier =
+ spa_pod_find_prop(format, nullptr, SPA_FORMAT_VIDEO_modifier);
+ that->modifier_ =
+ has_modifier ? that->spa_video_format_.modifier : DRM_FORMAT_MOD_INVALID;
+ std::vector<const spa_pod*> params;
+ const int buffer_types =
+ has_modifier || (that->pw_server_version_ >= kDmaBufMinVersion)
+ ? (1 << SPA_DATA_DmaBuf) | (1 << SPA_DATA_MemFd) |
+ (1 << SPA_DATA_MemPtr)
+ : (1 << SPA_DATA_MemFd) | (1 << SPA_DATA_MemPtr);
+
+ params.push_back(reinterpret_cast<spa_pod*>(spa_pod_builder_add_object(
+ &builder, SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
+ SPA_PARAM_BUFFERS_size, SPA_POD_Int(size), SPA_PARAM_BUFFERS_stride,
+ SPA_POD_Int(stride), SPA_PARAM_BUFFERS_buffers,
+ SPA_POD_CHOICE_RANGE_Int(8, 1, 32), SPA_PARAM_BUFFERS_dataType,
+ SPA_POD_CHOICE_FLAGS_Int(buffer_types))));
+ params.push_back(reinterpret_cast<spa_pod*>(spa_pod_builder_add_object(
+ &builder, SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, SPA_PARAM_META_type,
+ SPA_POD_Id(SPA_META_Header), SPA_PARAM_META_size,
+ SPA_POD_Int(sizeof(struct spa_meta_header)))));
+ params.push_back(reinterpret_cast<spa_pod*>(spa_pod_builder_add_object(
+ &builder, SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, SPA_PARAM_META_type,
+ SPA_POD_Id(SPA_META_VideoCrop), SPA_PARAM_META_size,
+ SPA_POD_Int(sizeof(struct spa_meta_region)))));
+ params.push_back(reinterpret_cast<spa_pod*>(spa_pod_builder_add_object(
+ &builder, SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, SPA_PARAM_META_type,
+ SPA_POD_Id(SPA_META_Cursor), SPA_PARAM_META_size,
+ SPA_POD_CHOICE_RANGE_Int(CursorMetaSize(64, 64), CursorMetaSize(1, 1),
+ CursorMetaSize(384, 384)))));
+ params.push_back(reinterpret_cast<spa_pod*>(spa_pod_builder_add_object(
+ &builder, SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, SPA_PARAM_META_type,
+ SPA_POD_Id(SPA_META_VideoDamage), SPA_PARAM_META_size,
+ SPA_POD_CHOICE_RANGE_Int(sizeof(struct spa_meta_region) * 16,
+ sizeof(struct spa_meta_region) * 1,
+ sizeof(struct spa_meta_region) * 16))));
+
+ pw_stream_update_params(that->pw_stream_, params.data(), params.size());
+}
+
+// static
+void SharedScreenCastStreamPrivate::OnStreamProcess(void* data) {
+ SharedScreenCastStreamPrivate* that =
+ static_cast<SharedScreenCastStreamPrivate*>(data);
+ RTC_DCHECK(that);
+
+ struct pw_buffer* next_buffer;
+ struct pw_buffer* buffer = nullptr;
+
+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
+ while (next_buffer) {
+ buffer = next_buffer;
+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
+
+ if (next_buffer) {
+ pw_stream_queue_buffer(that->pw_stream_, buffer);
+ }
+ }
+
+ if (!buffer) {
+ return;
+ }
+
+ that->ProcessBuffer(buffer);
+
+ pw_stream_queue_buffer(that->pw_stream_, buffer);
+}
+
+void SharedScreenCastStreamPrivate::OnRenegotiateFormat(void* data, uint64_t) {
+ SharedScreenCastStreamPrivate* that =
+ static_cast<SharedScreenCastStreamPrivate*>(data);
+ RTC_DCHECK(that);
+
+ {
+ PipeWireThreadLoopLock thread_loop_lock(that->pw_main_loop_);
+
+ uint8_t buffer[2048] = {};
+
+ spa_pod_builder builder = spa_pod_builder{buffer, sizeof(buffer)};
+
+ std::vector<const spa_pod*> params;
+
+ for (uint32_t format : {SPA_VIDEO_FORMAT_BGRA, SPA_VIDEO_FORMAT_RGBA,
+ SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_RGBx}) {
+ if (!that->modifiers_.empty()) {
+ params.push_back(BuildFormat(&builder, format, that->modifiers_));
+ }
+ params.push_back(BuildFormat(&builder, format, /*modifiers=*/{}));
+ }
+
+ pw_stream_update_params(that->pw_stream_, params.data(), params.size());
+ }
+}
+
+SharedScreenCastStreamPrivate::SharedScreenCastStreamPrivate() {}
+
+SharedScreenCastStreamPrivate::~SharedScreenCastStreamPrivate() {
+ StopAndCleanupStream();
+}
+
+void SharedScreenCastStreamPrivate::StopAndCleanupStream()
+{
+ // We get buffers on the PipeWire thread, but this is called from the capturer
+ // thread, so we need to wait on and stop the pipewire thread before we
+ // disconnect the stream so that we can guarantee we aren't in the middle of
+ // processing a new frame.
+
+ // Even if we *do* somehow have the other objects without a pipewire thread,
+ // destroying them without a thread causes a crash.
+ if (!pw_main_loop_)
+ return;
+
+ // While we can stop the thread now, we cannot destroy it until we've cleaned
+ // up the other members.
+ pw_thread_loop_wait(pw_main_loop_);
+ pw_thread_loop_stop(pw_main_loop_);
+
+ if (pw_stream_) {
+ pw_stream_disconnect(pw_stream_);
+ pw_stream_destroy(pw_stream_);
+ pw_stream_ = nullptr;
+
+ {
+ webrtc::MutexLock lock(&queue_lock_);
+ queue_.Reset();
+ }
+ }
+
+ if (pw_core_) {
+ pw_core_disconnect(pw_core_);
+ pw_core_ = nullptr;
+ }
+
+ if (pw_context_) {
+ pw_context_destroy(pw_context_);
+ pw_context_ = nullptr;
+ }
+
+ pw_thread_loop_destroy(pw_main_loop_);
+ pw_main_loop_ = nullptr;
+}
+
+bool SharedScreenCastStreamPrivate::StartScreenCastStream(
+ uint32_t stream_node_id,
+ int fd) {
+#if defined(WEBRTC_DLOPEN_PIPEWIRE)
+ StubPathMap paths;
+
+ // Check if the PipeWire and DRM libraries are available.
+ paths[kModulePipewire].push_back(kPipeWireLib);
+ paths[kModuleDrm].push_back(kDrmLib);
+
+ if (!InitializeStubs(paths)) {
+ RTC_LOG(LS_ERROR)
+ << "One of following libraries is missing on your system:\n"
+ << " - PipeWire (" << kPipeWireLib << ")\n"
+ << " - drm (" << kDrmLib << ")";
+ return false;
+ }
+#endif // defined(WEBRTC_DLOPEN_PIPEWIRE)
+ egl_dmabuf_ = std::make_unique<EglDmaBuf>();
+
+ pw_stream_node_id_ = stream_node_id;
+
+ pw_init(/*argc=*/nullptr, /*argc=*/nullptr);
+
+ pw_main_loop_ = pw_thread_loop_new("pipewire-main-loop", nullptr);
+
+ pw_context_ =
+ pw_context_new(pw_thread_loop_get_loop(pw_main_loop_), nullptr, 0);
+
+ if (!pw_context_) {
+ RTC_LOG(LS_ERROR) << "Failed to create PipeWire context";
+ return false;
+ }
+
+ if (pw_thread_loop_start(pw_main_loop_) < 0) {
+ RTC_LOG(LS_ERROR) << "Failed to start main PipeWire loop";
+ return false;
+ }
+
+ pw_client_version_ = ParsePipeWireVersion(pw_get_library_version());
+
+ // Initialize event handlers, remote end and stream-related.
+ pw_core_events_.version = PW_VERSION_CORE_EVENTS;
+ pw_core_events_.info = &OnCoreInfo;
+ pw_core_events_.done = &OnCoreDone;
+ pw_core_events_.error = &OnCoreError;
+
+ pw_stream_events_.version = PW_VERSION_STREAM_EVENTS;
+ pw_stream_events_.state_changed = &OnStreamStateChanged;
+ pw_stream_events_.param_changed = &OnStreamParamChanged;
+ pw_stream_events_.process = &OnStreamProcess;
+
+ {
+ PipeWireThreadLoopLock thread_loop_lock(pw_main_loop_);
+
+ if (fd >= 0) {
+ pw_core_ = pw_context_connect_fd(
+ pw_context_, fcntl(fd, F_DUPFD_CLOEXEC), nullptr, 0);
+ } else {
+ pw_core_ = pw_context_connect(pw_context_, nullptr, 0);
+ }
+
+ if (!pw_core_) {
+ RTC_LOG(LS_ERROR) << "Failed to connect PipeWire context";
+ return false;
+ }
+
+ pw_core_add_listener(pw_core_, &spa_core_listener_, &pw_core_events_, this);
+
+ // Add an event that can be later invoked by pw_loop_signal_event()
+ renegotiate_ = pw_loop_add_event(pw_thread_loop_get_loop(pw_main_loop_),
+ OnRenegotiateFormat, this);
+
+ server_version_sync_ =
+ pw_core_sync(pw_core_, PW_ID_CORE, server_version_sync_);
+
+ pw_thread_loop_wait(pw_main_loop_);
+
+ pw_properties* reuseProps =
+ pw_properties_new_string("pipewire.client.reuse=1");
+ pw_stream_ = pw_stream_new(pw_core_, "webrtc-consume-stream", reuseProps);
+
+ if (!pw_stream_) {
+ RTC_LOG(LS_ERROR) << "Failed to create PipeWire stream";
+ return false;
+ }
+
+ pw_stream_add_listener(pw_stream_, &spa_stream_listener_,
+ &pw_stream_events_, this);
+ uint8_t buffer[2048] = {};
+
+ spa_pod_builder builder = spa_pod_builder{buffer, sizeof(buffer)};
+
+ std::vector<const spa_pod*> params;
+ const bool has_required_pw_client_version =
+ pw_client_version_ >= kDmaBufModifierMinVersion;
+ const bool has_required_pw_server_version =
+ pw_server_version_ >= kDmaBufModifierMinVersion;
+ for (uint32_t format : {SPA_VIDEO_FORMAT_BGRA, SPA_VIDEO_FORMAT_RGBA,
+ SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_RGBx}) {
+ // Modifiers can be used with PipeWire >= 0.3.33
+ if (has_required_pw_client_version && has_required_pw_server_version) {
+ modifiers_ = egl_dmabuf_->QueryDmaBufModifiers(format);
+
+ if (!modifiers_.empty()) {
+ params.push_back(BuildFormat(&builder, format, modifiers_));
+ }
+ }
+
+ params.push_back(BuildFormat(&builder, format, /*modifiers=*/{}));
+ }
+
+ if (pw_stream_connect(pw_stream_, PW_DIRECTION_INPUT, pw_stream_node_id_,
+ PW_STREAM_FLAG_AUTOCONNECT, params.data(),
+ params.size()) != 0) {
+ RTC_LOG(LS_ERROR) << "Could not connect receiving stream.";
+ return false;
+ }
+
+ RTC_LOG(LS_INFO) << "PipeWire remote opened.";
+ }
+ return true;
+}
+
+void SharedScreenCastStreamPrivate::StopScreenCastStream() {
+ StopAndCleanupStream();
+}
+
+std::unique_ptr<DesktopFrame> SharedScreenCastStreamPrivate::CaptureFrame() {
+ webrtc::MutexLock lock(&queue_lock_);
+
+ if (!queue_.current_frame()) {
+ return std::unique_ptr<DesktopFrame>{};
+ }
+
+ std::unique_ptr<SharedDesktopFrame> frame = queue_.current_frame()->Share();
+ return std::move(frame);
+}
+
+std::unique_ptr<MouseCursor> SharedScreenCastStreamPrivate::CaptureCursor() {
+ if (!mouse_cursor_) {
+ return nullptr;
+ }
+
+ return std::move(mouse_cursor_);
+}
+
+DesktopVector SharedScreenCastStreamPrivate::CaptureCursorPosition() {
+ return mouse_cursor_position_;
+}
+
+void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) {
+ spa_buffer* spa_buffer = buffer->buffer;
+ ScopedBuf map;
+ std::unique_ptr<uint8_t[]> src_unique_ptr;
+ uint8_t* src = nullptr;
+
+ // Try to update the mouse cursor first, because it can be the only
+ // information carried by the buffer
+ {
+ const struct spa_meta_cursor* cursor =
+ static_cast<struct spa_meta_cursor*>(spa_buffer_find_meta_data(
+ spa_buffer, SPA_META_Cursor, sizeof(*cursor)));
+ if (cursor && spa_meta_cursor_is_valid(cursor)) {
+ struct spa_meta_bitmap* bitmap = nullptr;
+
+ if (cursor->bitmap_offset)
+ bitmap =
+ SPA_MEMBER(cursor, cursor->bitmap_offset, struct spa_meta_bitmap);
+
+ if (bitmap && bitmap->size.width > 0 && bitmap->size.height > 0) {
+ const uint8_t* bitmap_data =
+ SPA_MEMBER(bitmap, bitmap->offset, uint8_t);
+ BasicDesktopFrame* mouse_frame = new BasicDesktopFrame(
+ DesktopSize(bitmap->size.width, bitmap->size.height));
+ mouse_frame->CopyPixelsFrom(
+ bitmap_data, bitmap->stride,
+ DesktopRect::MakeWH(bitmap->size.width, bitmap->size.height));
+ mouse_cursor_ = std::make_unique<MouseCursor>(
+ mouse_frame, DesktopVector(cursor->hotspot.x, cursor->hotspot.y));
+ }
+ mouse_cursor_position_.set(cursor->position.x, cursor->position.y);
+ }
+ }
+
+ if (spa_buffer->datas[0].chunk->size == 0) {
+ return;
+ }
+
+ if (spa_buffer->datas[0].type == SPA_DATA_MemFd) {
+ map.initialize(
+ static_cast<uint8_t*>(
+ mmap(nullptr,
+ spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset,
+ PROT_READ, MAP_PRIVATE, spa_buffer->datas[0].fd, 0)),
+ spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset,
+ spa_buffer->datas[0].fd);
+
+ if (!map) {
+ RTC_LOG(LS_ERROR) << "Failed to mmap the memory: "
+ << std::strerror(errno);
+ return;
+ }
+
+ src = SPA_MEMBER(map.get(), spa_buffer->datas[0].mapoffset, uint8_t);
+ } else if (spa_buffer->datas[0].type == SPA_DATA_DmaBuf) {
+ const uint n_planes = spa_buffer->n_datas;
+
+ if (!n_planes) {
+ return;
+ }
+
+ std::vector<EglDmaBuf::PlaneData> plane_datas;
+ for (uint32_t i = 0; i < n_planes; ++i) {
+ EglDmaBuf::PlaneData data = {
+ static_cast<int32_t>(spa_buffer->datas[i].fd),
+ static_cast<uint32_t>(spa_buffer->datas[i].chunk->stride),
+ static_cast<uint32_t>(spa_buffer->datas[i].chunk->offset)};
+ plane_datas.push_back(data);
+ }
+
+ // When importing DMA-BUFs, we use the stride (number of bytes from one row
+ // of pixels in the buffer) provided by PipeWire. The stride from PipeWire
+ // is given by the graphics driver and some drivers might add some
+ // additional padding for memory layout optimizations so not everytime the
+ // stride is equal to BYTES_PER_PIXEL x WIDTH. This is fine, because during
+ // the import we will use OpenGL and same graphics driver so it will be able
+ // to work with the stride it provided, but later on when we work with
+ // images we get from DMA-BUFs we will need to update the stride to be equal
+ // to BYTES_PER_PIXEL x WIDTH as that's the size of the DesktopFrame we
+ // allocate for each captured frame.
+ src_unique_ptr = egl_dmabuf_->ImageFromDmaBuf(
+ stream_size_, spa_video_format_.format, plane_datas, modifier_);
+ if (src_unique_ptr) {
+ src = src_unique_ptr.get();
+ } else {
+ RTC_LOG(LS_ERROR) << "Dropping DMA-BUF modifier: " << modifier_
+ << " and trying to renegotiate stream parameters";
+
+ if (pw_server_version_ >= kDropSingleModifierMinVersion) {
+ modifiers_.erase(
+ std::remove(modifiers_.begin(), modifiers_.end(), modifier_),
+ modifiers_.end());
+ } else {
+ modifiers_.clear();
+ }
+
+ pw_loop_signal_event(pw_thread_loop_get_loop(pw_main_loop_),
+ renegotiate_);
+ return;
+ }
+ } else if (spa_buffer->datas[0].type == SPA_DATA_MemPtr) {
+ src = static_cast<uint8_t*>(spa_buffer->datas[0].data);
+ }
+
+ if (!src) {
+ return;
+ }
+
+ // Use SPA_META_VideoCrop metadata to get the frame size. KDE and GNOME do
+ // handle screen/window sharing differently. KDE/KWin doesn't use
+ // SPA_META_VideoCrop metadata and when sharing a window, it always sets
+ // stream size to size of the window. With that we just allocate the
+ // DesktopFrame using the size of the stream itself. GNOME/Mutter
+ // always sets stream size to the size of the whole screen, even when sharing
+ // a window. To get the real window size we have to use SPA_META_VideoCrop
+ // metadata. This gives us the size we need in order to allocate the
+ // DesktopFrame.
+
+ struct spa_meta_region* videocrop_metadata =
+ static_cast<struct spa_meta_region*>(spa_buffer_find_meta_data(
+ spa_buffer, SPA_META_VideoCrop, sizeof(*videocrop_metadata)));
+
+ // Video size from metadata is bigger than an actual video stream size.
+ // The metadata are wrong or we should up-scale the video...in both cases
+ // just quit now.
+ if (videocrop_metadata &&
+ (videocrop_metadata->region.size.width >
+ static_cast<uint32_t>(stream_size_.width()) ||
+ videocrop_metadata->region.size.height >
+ static_cast<uint32_t>(stream_size_.height()))) {
+ RTC_LOG(LS_ERROR) << "Stream metadata sizes are wrong!";
+ return;
+ }
+
+ // Use SPA_META_VideoCrop metadata to get the DesktopFrame size in case
+ // a windows is shared and it represents just a small portion of the
+ // stream itself. This will be for example used in case of GNOME (Mutter)
+ // where the stream will have the size of the screen itself, but we care
+ // only about smaller portion representing the window inside.
+ bool videocrop_metadata_use = false;
+ const struct spa_rectangle* videocrop_metadata_size =
+ videocrop_metadata ? &videocrop_metadata->region.size : nullptr;
+
+ if (videocrop_metadata_size && videocrop_metadata_size->width != 0 &&
+ videocrop_metadata_size->height != 0 &&
+ (static_cast<int>(videocrop_metadata_size->width) <
+ stream_size_.width() ||
+ static_cast<int>(videocrop_metadata_size->height) <
+ stream_size_.height())) {
+ videocrop_metadata_use = true;
+ }
+
+ if (videocrop_metadata_use) {
+ frame_size_ = DesktopSize(videocrop_metadata_size->width,
+ videocrop_metadata_size->height);
+ } else {
+ frame_size_ = stream_size_;
+ }
+
+ // Get the position of the video crop within the stream. Just double-check
+ // that the position doesn't exceed the size of the stream itself. NOTE:
+ // Currently it looks there is no implementation using this.
+ uint32_t y_offset =
+ videocrop_metadata_use &&
+ (videocrop_metadata->region.position.y + frame_size_.height() <=
+ stream_size_.height())
+ ? videocrop_metadata->region.position.y
+ : 0;
+ uint32_t x_offset =
+ videocrop_metadata_use &&
+ (videocrop_metadata->region.position.x + frame_size_.width() <=
+ stream_size_.width())
+ ? videocrop_metadata->region.position.x
+ : 0;
+
+ const uint32_t stream_stride = kBytesPerPixel * stream_size_.width();
+ uint32_t buffer_stride = spa_buffer->datas[0].chunk->stride;
+ uint32_t src_stride = buffer_stride;
+
+ if (spa_buffer->datas[0].type == SPA_DATA_DmaBuf &&
+ buffer_stride > stream_stride) {
+ // When DMA-BUFs are used, sometimes spa_buffer->stride we get might
+ // contain additional padding, but after we import the buffer, the stride
+ // we used is no longer relevant and we should just calculate it based on
+ // the stream width. For more context see https://crbug.com/1333304.
+ src_stride = stream_stride;
+ }
+
+ uint8_t* updated_src =
+ src + (src_stride * y_offset) + (kBytesPerPixel * x_offset);
+
+ webrtc::MutexLock lock(&queue_lock_);
+
+ // Move to the next frame if the current one is being used and shared
+ if (queue_.current_frame() && queue_.current_frame()->IsShared()) {
+ queue_.MoveToNextFrame();
+ if (queue_.current_frame() && queue_.current_frame()->IsShared()) {
+ RTC_LOG(LS_WARNING)
+ << "Failed to process PipeWire buffer: no available frame";
+ return;
+ }
+ }
+
+ if (!queue_.current_frame() ||
+ !queue_.current_frame()->size().equals(frame_size_)) {
+ std::unique_ptr<DesktopFrame> frame(new BasicDesktopFrame(
+ DesktopSize(frame_size_.width(), frame_size_.height())));
+ queue_.ReplaceCurrentFrame(SharedDesktopFrame::Wrap(std::move(frame)));
+ }
+
+ queue_.current_frame()->CopyPixelsFrom(
+ updated_src, (src_stride - (kBytesPerPixel * x_offset)),
+ DesktopRect::MakeWH(frame_size_.width(), frame_size_.height()));
+
+ if (spa_video_format_.format == SPA_VIDEO_FORMAT_RGBx ||
+ spa_video_format_.format == SPA_VIDEO_FORMAT_RGBA) {
+ uint8_t* tmp_src = queue_.current_frame()->data();
+ for (int i = 0; i < frame_size_.height(); ++i) {
+ // If both sides decided to go with the RGBx format we need to convert
+ // it to BGRx to match color format expected by WebRTC.
+ ConvertRGBxToBGRx(tmp_src, queue_.current_frame()->stride());
+ tmp_src += queue_.current_frame()->stride();
+ }
+ }
+}
+
+void SharedScreenCastStreamPrivate::ConvertRGBxToBGRx(uint8_t* frame,
+ uint32_t size) {
+ for (uint32_t i = 0; i < size; i += 4) {
+ uint8_t tempR = frame[i];
+ uint8_t tempB = frame[i + 2];
+ frame[i] = tempB;
+ frame[i + 2] = tempR;
+ }
+}
+
+SharedScreenCastStream::SharedScreenCastStream()
+ : private_(std::make_unique<SharedScreenCastStreamPrivate>()) {}
+
+SharedScreenCastStream::~SharedScreenCastStream() {}
+
+rtc::scoped_refptr<SharedScreenCastStream>
+SharedScreenCastStream::CreateDefault() {
+ // Explicit new, to access non-public constructor.
+ return rtc::scoped_refptr(new SharedScreenCastStream());
+}
+
+bool SharedScreenCastStream::StartScreenCastStream(uint32_t stream_node_id,
+ int fd) {
+ return private_->StartScreenCastStream(stream_node_id, fd);
+}
+
+void SharedScreenCastStream::StopScreenCastStream() {
+ private_->StopScreenCastStream();
+}
+
+std::unique_ptr<DesktopFrame> SharedScreenCastStream::CaptureFrame() {
+ return private_->CaptureFrame();
+}
+
+std::unique_ptr<MouseCursor> SharedScreenCastStream::CaptureCursor() {
+ return private_->CaptureCursor();
+}
+
+absl::optional<DesktopVector> SharedScreenCastStream::CaptureCursorPosition() {
+ DesktopVector position = private_->CaptureCursorPosition();
+
+ // Consider only (x >= 0 and y >= 0) a valid position
+ if (position.x() < 0 || position.y() < 0) {
+ return absl::nullopt;
+ }
+
+ return position;
+}
+
+} // namespace webrtc
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/shared_screencast_stream.h b/third_party/libwebrtc/modules/desktop_capture/linux/shared_screencast_stream.h
new file mode 100644
index 0000000000..72411e5607
--- /dev/null
+++ b/third_party/libwebrtc/modules/desktop_capture/linux/shared_screencast_stream.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2022 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef MODULES_DESKTOP_CAPTURE_LINUX_SHARED_SCREENCAST_STREAM_H_
+#define MODULES_DESKTOP_CAPTURE_LINUX_SHARED_SCREENCAST_STREAM_H_
+
+#include <memory>
+
+#include "absl/types/optional.h"
+#include "api/ref_counted_base.h"
+#include "api/scoped_refptr.h"
+#include "modules/desktop_capture/desktop_frame.h"
+#include "modules/desktop_capture/mouse_cursor.h"
+#include "rtc_base/system/rtc_export.h"
+
+namespace webrtc {
+
+class SharedScreenCastStreamPrivate;
+
+class RTC_EXPORT SharedScreenCastStream
+ : public rtc::RefCountedBase {
+ public:
+ static rtc::scoped_refptr<SharedScreenCastStream> CreateDefault();
+
+ bool StartScreenCastStream(uint32_t stream_node_id, int fd);
+ void StopScreenCastStream();
+
+ // Below functions return the most recent information we get from a
+ // PipeWire buffer on each Process() callback. This assumes that we
+ // managed to successfuly connect to a PipeWire stream provided by the
+ // compositor (based on stream parameters). The cursor data are obtained
+ // from spa_meta_cursor stream metadata and therefore the cursor is not
+ // part of actual screen/window frame.
+
+ // Returns the most recent screen/window frame we obtained from PipeWire
+ // buffer. Will return an empty frame in case we didn't manage to get a frame
+ // from PipeWire buffer.
+ std::unique_ptr<DesktopFrame> CaptureFrame();
+
+ // Returns the most recent mouse cursor image. Will return an nullptr cursor
+ // in case we didn't manage to get a cursor from PipeWire buffer. NOTE: the
+ // cursor image might not be updated on every cursor location change, but
+ // actually only when its shape changes.
+ std::unique_ptr<MouseCursor> CaptureCursor();
+
+ // Returns the most recent mouse cursor position. Will not return a value in
+ // case we didn't manage to get it from PipeWire buffer.
+ absl::optional<DesktopVector> CaptureCursorPosition();
+
+ ~SharedScreenCastStream();
+
+ protected:
+ SharedScreenCastStream();
+
+ private:
+ SharedScreenCastStream(const SharedScreenCastStream&) = delete;
+ SharedScreenCastStream& operator=(const SharedScreenCastStream&) = delete;
+
+ std::unique_ptr<SharedScreenCastStreamPrivate> private_;
+};
+
+} // namespace webrtc
+
+#endif // MODULES_DESKTOP_CAPTURE_LINUX_SHARED_SCREENCAST_STREAM_H_
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc b/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc
deleted file mode 100644
index c43a1f1a0c..0000000000
--- a/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2018 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/desktop_capture/linux/window_capturer_pipewire.h"
-
-#include <memory>
-
-namespace webrtc {
-
-WindowCapturerPipeWire::WindowCapturerPipeWire()
- : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::kWindow) {}
-WindowCapturerPipeWire::~WindowCapturerPipeWire() {}
-
-// static
-std::unique_ptr<DesktopCapturer>
-WindowCapturerPipeWire::CreateRawWindowCapturer(
- const DesktopCaptureOptions& options) {
- return std::make_unique<WindowCapturerPipeWire>();
-}
-
-} // namespace webrtc
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_pipewire.h b/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_pipewire.h
deleted file mode 100644
index 7f184ef299..0000000000
--- a/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_pipewire.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2018 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_DESKTOP_CAPTURE_LINUX_WINDOW_CAPTURER_PIPEWIRE_H_
-#define MODULES_DESKTOP_CAPTURE_LINUX_WINDOW_CAPTURER_PIPEWIRE_H_
-
-#include <memory>
-
-#include "modules/desktop_capture/linux/base_capturer_pipewire.h"
-
-namespace webrtc {
-
-class WindowCapturerPipeWire : public BaseCapturerPipeWire {
- public:
- WindowCapturerPipeWire();
- ~WindowCapturerPipeWire() override;
-
- static std::unique_ptr<DesktopCapturer> CreateRawWindowCapturer(
- const DesktopCaptureOptions& options);
-
- RTC_DISALLOW_COPY_AND_ASSIGN(WindowCapturerPipeWire);
-};
-
-} // namespace webrtc
-
-#endif // MODULES_DESKTOP_CAPTURE_LINUX_WINDOW_CAPTURER_PIPEWIRE_H_
diff --git a/third_party/libwebrtc/modules/desktop_capture/mouse_cursor_monitor_linux.cc b/third_party/libwebrtc/modules/desktop_capture/mouse_cursor_monitor_linux.cc
index e569f6ef35..4a23ba59b2 100644
--- a/third_party/libwebrtc/modules/desktop_capture/mouse_cursor_monitor_linux.cc
+++ b/third_party/libwebrtc/modules/desktop_capture/mouse_cursor_monitor_linux.cc
@@ -17,6 +17,10 @@
#include "modules/desktop_capture/linux/mouse_cursor_monitor_x11.h"
#endif // defined(WEBRTC_USE_X11)
+#if defined(WEBRTC_USE_PIPEWIRE)
+#include "modules/desktop_capture/linux/mouse_cursor_monitor_pipewire.h"
+#endif // defined(WEBRTC_USE_PIPEWIRE)
+
namespace webrtc {
// static
@@ -44,6 +48,13 @@ MouseCursorMonitor* MouseCursorMonitor::CreateForScreen(
// static
std::unique_ptr<MouseCursorMonitor> MouseCursorMonitor::Create(
const DesktopCaptureOptions& options) {
+#if defined(WEBRTC_USE_PIPEWIRE)
+ if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland() &&
+ options.screencast_stream()) {
+ return std::make_unique<MouseCursorMonitorPipeWire>(options);
+ }
+#endif // defined(WEBRTC_USE_PIPEWIRE)
+
#if defined(WEBRTC_USE_X11)
return MouseCursorMonitorX11::Create(options);
#else
diff --git a/third_party/libwebrtc/modules/desktop_capture/screen_capturer_linux.cc b/third_party/libwebrtc/modules/desktop_capture/screen_capturer_linux.cc
index 57a2002ac7..b44ae35292 100644
--- a/third_party/libwebrtc/modules/desktop_capture/screen_capturer_linux.cc
+++ b/third_party/libwebrtc/modules/desktop_capture/screen_capturer_linux.cc
@@ -14,7 +14,7 @@
#include "modules/desktop_capture/desktop_capturer.h"
#if defined(WEBRTC_USE_PIPEWIRE)
-#include "modules/desktop_capture/linux/screen_capturer_pipewire.h"
+#include "modules/desktop_capture/linux/base_capturer_pipewire.h"
#endif // defined(WEBRTC_USE_PIPEWIRE)
#if defined(WEBRTC_USE_X11)
@@ -28,7 +28,7 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
const DesktopCaptureOptions& options) {
#if defined(WEBRTC_USE_PIPEWIRE)
if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) {
- return BaseCapturerPipeWire::CreateRawScreenCapturer(options);
+ return std::make_unique<BaseCapturerPipeWire>(options);
}
#endif // defined(WEBRTC_USE_PIPEWIRE)
diff --git a/third_party/libwebrtc/modules/desktop_capture/window_capturer_linux.cc b/third_party/libwebrtc/modules/desktop_capture/window_capturer_linux.cc
index ed03ba0291..3bc6577ca5 100644
--- a/third_party/libwebrtc/modules/desktop_capture/window_capturer_linux.cc
+++ b/third_party/libwebrtc/modules/desktop_capture/window_capturer_linux.cc
@@ -14,7 +14,7 @@
#include "modules/desktop_capture/desktop_capturer.h"
#if defined(WEBRTC_USE_PIPEWIRE)
-#include "modules/desktop_capture/linux/window_capturer_pipewire.h"
+#include "modules/desktop_capture/linux/base_capturer_pipewire.h"
#endif // defined(WEBRTC_USE_PIPEWIRE)
#if defined(WEBRTC_USE_X11)
@@ -28,7 +28,7 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
const DesktopCaptureOptions& options) {
#if defined(WEBRTC_USE_PIPEWIRE)
if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) {
- return BaseCapturerPipeWire::CreateRawWindowCapturer(options);
+ return std::make_unique<BaseCapturerPipeWire>(options);
}
#endif // defined(WEBRTC_USE_PIPEWIRE)
diff --git a/third_party/moz.build b/third_party/moz.build
index 8cf6f5d9f6..3335225f6b 100644
--- a/third_party/moz.build
+++ b/third_party/moz.build
@@ -58,6 +58,15 @@ with Files("libwebrtc/**"):
with Files("pipewire/**"):
BUG_COMPONENT = ("Core", "WebRTC")
+with Files("drm/**"):
+ BUG_COMPONENT = ("Core", "WebRTC")
+
+with Files("gbm/**"):
+ BUG_COMPONENT = ("Core", "WebRTC")
+
+with Files("epoxy/**"):
+ BUG_COMPONENT = ("Core", "WebRTC")
+
with Files('rlbox_wasm2c_sandbox/**'):
BUG_COMPONENT = ('Firefox Build System', 'General')
diff --git a/third_party/pipewire/libpipewire/mozpipewire.cpp b/third_party/pipewire/libpipewire/mozpipewire.cpp
index 1ecfc3196a..fbeeb8e5a7 100644
--- a/third_party/pipewire/libpipewire/mozpipewire.cpp
+++ b/third_party/pipewire/libpipewire/mozpipewire.cpp
@@ -69,11 +69,13 @@ static int (*pw_stream_connect_fn)(struct pw_stream *stream,
enum pw_stream_flags flags,
const struct spa_pod **params,
uint32_t n_params);
+static int (*pw_stream_disconnect_fn)(struct pw_stream *stream);
static struct pw_buffer* (*pw_stream_dequeue_buffer_fn)(struct pw_stream *stream);
static void (*pw_stream_destroy_fn)(struct pw_stream *stream);
static struct pw_stream* (*pw_stream_new_fn)(struct pw_core *core,
const char *name,
struct pw_properties *props);
+
static int (*pw_stream_queue_buffer_fn)(struct pw_stream *stream,
struct pw_buffer *buffer);
static int (*pw_stream_update_params_fn)(struct pw_stream *stream,
@@ -87,7 +89,10 @@ static int (*pw_thread_loop_start_fn)(struct pw_thread_loop *loop);
static void (*pw_thread_loop_stop_fn)(struct pw_thread_loop *loop);
static void (*pw_thread_loop_lock_fn)(struct pw_thread_loop *loop);
static void (*pw_thread_loop_unlock_fn)(struct pw_thread_loop *loop);
+static void (*pw_thread_loop_wait_fn)(struct pw_thread_loop *loop);
+static void (*pw_thread_loop_signal_fn)(struct pw_thread_loop *loop, bool wait_for_accept);
static struct pw_properties* (*pw_properties_new_string_fn)(const char *str);
+static const char* (*pw_get_library_version_fn)();
bool IsPwLibraryLoaded() {
static bool isLoaded =
@@ -99,6 +104,7 @@ bool IsPwLibraryLoaded() {
IS_FUNC_LOADED(pw_init_fn) &&
IS_FUNC_LOADED(pw_stream_add_listener_fn) &&
IS_FUNC_LOADED(pw_stream_connect_fn) &&
+ IS_FUNC_LOADED(pw_stream_disconnect_fn) &&
IS_FUNC_LOADED(pw_stream_dequeue_buffer_fn) &&
IS_FUNC_LOADED(pw_stream_destroy_fn) &&
IS_FUNC_LOADED(pw_stream_new_fn) &&
@@ -111,7 +117,10 @@ bool IsPwLibraryLoaded() {
IS_FUNC_LOADED(pw_thread_loop_stop_fn) &&
IS_FUNC_LOADED(pw_thread_loop_lock_fn) &&
IS_FUNC_LOADED(pw_thread_loop_unlock_fn) &&
- IS_FUNC_LOADED(pw_properties_new_string_fn));
+ IS_FUNC_LOADED(pw_thread_loop_signal_fn) &&
+ IS_FUNC_LOADED(pw_thread_loop_wait_fn) &&
+ IS_FUNC_LOADED(pw_properties_new_string_fn) &&
+ IS_FUNC_LOADED(pw_get_library_version_fn));
return isLoaded;
}
@@ -136,6 +145,7 @@ bool LoadPWLibrary() {
GET_FUNC(pw_init, pwLib);
GET_FUNC(pw_stream_add_listener, pwLib);
GET_FUNC(pw_stream_connect, pwLib);
+ GET_FUNC(pw_stream_disconnect, pwLib);
GET_FUNC(pw_stream_dequeue_buffer, pwLib);
GET_FUNC(pw_stream_destroy, pwLib);
GET_FUNC(pw_stream_new, pwLib);
@@ -148,7 +158,10 @@ bool LoadPWLibrary() {
GET_FUNC(pw_thread_loop_stop, pwLib);
GET_FUNC(pw_thread_loop_lock, pwLib);
GET_FUNC(pw_thread_loop_unlock, pwLib);
+ GET_FUNC(pw_thread_loop_signal, pwLib);
+ GET_FUNC(pw_thread_loop_wait, pwLib);
GET_FUNC(pw_properties_new_string, pwLib);
+ GET_FUNC(pw_get_library_version, pwLib);
}
return IsPwLibraryLoaded();
@@ -242,6 +255,15 @@ pw_stream_connect(struct pw_stream *stream,
params, n_params);
}
+int
+pw_stream_disconnect(struct pw_stream *stream)
+{
+ if (!LoadPWLibrary()) {
+ return 0;
+ }
+ return pw_stream_disconnect_fn(stream);
+}
+
struct pw_buffer *
pw_stream_dequeue_buffer(struct pw_stream *stream)
{
@@ -356,6 +378,23 @@ pw_thread_loop_unlock(struct pw_thread_loop *loop)
return pw_thread_loop_unlock_fn(loop);
}
+void
+pw_thread_loop_signal(struct pw_thread_loop *loop, bool wait_for_accept)
+{
+ if (!LoadPWLibrary()) {
+ return;
+ }
+ return pw_thread_loop_signal_fn(loop, wait_for_accept);
+}
+
+void
+pw_thread_loop_wait(struct pw_thread_loop *loop)
+{
+ if (!LoadPWLibrary()) {
+ return;
+ }
+ return pw_thread_loop_wait_fn(loop);
+}
struct pw_properties *
pw_properties_new_string(const char *str)
@@ -366,3 +405,12 @@ pw_properties_new_string(const char *str)
return pw_properties_new_string_fn(str);
}
+const char*
+pw_get_library_version()
+{
+ if (!LoadPWLibrary()) {
+ return nullptr;
+ }
+ return pw_get_library_version_fn();
+}
+